51单片机中的定时器及中断
51定时器
- 51内置两个定时器定时器0,与定时器1
- 定时器的模式由以下几个参数控制
-
c/t:0:计时器计数由单片机晶振产生的脉冲控制,1:计数由外部引脚 T i T_i Ti(i:为通配符,定时器1与定时器2的外部引脚不同)产生的脉冲信号控制。
-
启动控制:TRI&((!GATE)| I N T i INT_i INTi(低电平有效))可以看出当GATE为0时计时器计数由 T R i TR_i TRi控制;当GATE为1时,计数器的启动由TRi和外部引脚 I N T i INT_i INTi低电平控制
-
M1/M0:定时器的模式选择这两位共同决定了定时器的计数模式,但不要管记住当M1=0,M0=1时定时器采用十六位计数模式
-
以上的参数分别存在TMOD和TCON地址上,
#include <REGX52.h> TOMD|=0x01; TOMD&=0xfA; //将定时器模式设置为晶振计数,十六位计数器,由TR0控制 //TOMD不可寻址所以需要直接赋值 TR0=1;//打开计时器0计数开关 TF0=1;//打开计时器0的中断请求;
-
T L i TL_i TLi和 T H i TH_i THi可以控制计数器低八位和高八位的值,十六位计数器能记录 2 16 2^{16} 216-1也就是0~65534;而12m的晶振产生每 1 − 12 1^{-12} 1−12秒产生一个脉冲信号经过/12也就是1um产生一次脉冲让计数器计数,计数器最大约能记录6.5nm秒的时间就要触发中断,可以配置 T L i TL_i TLi和 T H i TH_i THi来实现定时器在6.5nm内的计时周期; T L i TL_i TLi控制低八位, T H i TH_i THi控制高八位
51单片机中断系统
-
51中内置了四个中断器,分别由5个中断源控制:计时器1中断,计时器0的中断,串口通信中断,两个外部中断。
-
两个定时器中断在定时器溢出时触发,两个外部中断由 I N T i INT_i INTi低电平触发( I T i IT_i ITi置0时低电平触发, I T i IT_i ITi置1时外部终端接口下降沿触发)。
-
串口通信中断在通信接受到数据时触发中断;
-
在中断模式IE选择中EA是中断的总开关,ES,ET1等等是各中断的开关。
-
中断优先级:在同一种中断请求中单片机会先将该中断开关断开,完成终端任务后再接上,也就是说同一时间同一种中断源不可能触发两次中断请求,不同的中断源可以同时触发中断:他们根据不同的中断优先级依次执行。
每个中断源分别有两个引脚接入了高优先级表和低优先级表俩个表中的各中断源优先级是一样的,但高优先级表比低优先级表优先级要高,我们可以通过IP的设置来自定义各中断源的优先级。