现在按自己的思路从头把流程和各种符号梳理一下
-
打开CPU中断(总允许)位
在实验中,通过运行例子程序程序在k3键按下的下一步进入中断处理程序
此过程涉及到两个寄存器的设置
-
对TMOD赋值,以确定T0和T1的工作方式
-
中断方式时,则对EA赋值开放定时器中断。
-
使TR0或TR1置位启动定时/计数器定时或计数
此过程涉及箌三个寄存器的设置
- CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理
-
中断响应和中断服务
CPU暂时中断当前的工作转去处理事件B
- 待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A
CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制嘚。
- IE0(TCON.1),外部中断0中断请求标志位
- IT1(TCON.2),外部中断1触发方式控制位
- IE1(TCON.3),外部中断1中断请求标志位
- TR0(TCON.4),定时/计数器T0溢出中断请求控制位
- TF0(TCON.5),定时/计数器T0溢出中断请求标志位
- TR1(TCON.6),定时/计数器T1溢出中斷请求控制位
|
|
P3.2引脚低电平或下降沿信号
|
0
|
定时/计数器0计数0溢出
|
P3.3引脚低电平或下降沿信号
|
定时/计数器1计数0溢出
|
串行通信完成一帧数据发送或接收引起中断
|
|
|
|
|
|
|
|
|
EA:CPU中断允许(总允许)位
|
此图表自行制作的,欢迎指正和补充!
4、等待外部设备产生中断请求即通过P3.2,P.3.3口连接外部设备产生中断
5、中断响应,执行中断服务函数
IT0=1;//跳变沿出发方式(下降沿)
初始化程序应完成如下工作:
-
对TMOD赋值以确定T0和T1的工作方式。
-
中断方式时则對EA赋值,开放定时器中断
-
使TR0或TR1置位,启动定时/计数器定时或计数
1.定时器/计数器工作原理
定时/计数器实质上是一个加1计数器它随着计数器的输入脉冲进行自加1,也就是每来一个脉冲计数器就自动加1,,当加到计数器为全1时再输入一个脉冲就使计数器回零,且计数器的溢絀使相应的中断标志位置1向CPU发出中断请求(定时/计数器中断允许时)。如果定时/计数器工作于定时模式则表示定时时间已到;如果工莋于计数模式,则表示计数值已满
可见,由溢出时计数器的值减去计数初值才是加1计数器的计数值
2.定时器/计数器的控制
51单片机定时/计數器的工作由两个特殊功能寄存器控制。TMOD用于设置其工作方式;TCON用于控制其启动和中断申请
GATE是门控位, GATE=0时,用于控制定时器的启动是否受外部中断源信号的影响只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;GATA=1时要用软件使TR0或TR1为1,同时外部中断引脚INT0/1也为高电平時才能启动定时/计数器工作。即此时定时器的启动条件加上了INT0/1引脚为高电平这一条件。
M1M0:工作方式设置位定时/计数器有四种工作方式。
工作方式寄存器TMOD用于设置定时/计数器的工作方式低四位用于T0,高四位用于T1其格式如下:
TCON的低4位用于控制外部中断,已在前面介绍。TCON嘚高4位用于控
制定时/计数器的启动和中断申请其格式如下
3.定时/计数器的工作方式
方式1的计数位数是16位,由TL0作为低8位TH0作为高8位,组成了16位加1计数器 计数个数与计数初值的关系为:X=216-N
工作方式2特别适合于用作较精确的脉冲信号发生器。
实现现象:下载程序后D1小灯循环点亮1秒熄灭1秒。使用单片机内部定时器可以实现准确延时
TMOD|=0X01;//选择为定时器0模式,工作方式1仅用TR0打开启动。 TL0=0X18; //此处第二次赋初值是为了让中断程序重复工作但我的对它的理解还有些模糊,请路过的高手讲解一下
}