本人用心整理的51单片机定时器及中断图解,希望大家喜欢,如果有用可以收藏一下本帖
51单片机定时器与中断示意图(汪永海整理)部分细节展示(完整的pdf清晰版文档可在本帖附件下载):
定时器工作流程(LED闪烁)
1、TMOD=Ox01设置T0为工作模式1
2、TH0=0xdc、 Tl0=0x00TO赋初值,设置10毫秒
3、TR0=1打开定时器0
4、while(1)循环体
5、if(TF0==1)判断T0是否溢出
6、TF=0将中断标志位清零(软件清零)
7、TH0=0xdc、 Tl0=0x00定时器溢出后自动从零开始,这里重新附初值
8、cnt++计数变量自加1
9、if(cnt>=100)判断溢出是否达到100次
10、cnt=0计数变量清零
11、LED=~LED
定时值存储寄存器
(初始10ms)
1、时钟周期=1秒/晶振频率
2、机器周期=12*时钟周期
3、1秒=时钟周期*晶振频率=(机器周期/12)*频率=(110592/12)机器周期=921600机器周期
4、10ms=9216机器周期
5、也就是说设定10ms需要经过9216个机器周期
中断寄存器总开关EA=1打开及定时器0中断分开关EX=1打开的时候,一旦检测到TF0=1也就是定时器0溢出,程序直接执行中断函数
中断工作流程(LED闪烁)
1、TMOD=0x01 //设置T0为工作模式1
2、TH0=0xdc、 Tl0=0x00 //TO赋初值,设置10毫秒
3、TR0=1 //打开定时器0
4、EA=1 打开总中断
5、ET0=1 //打开定时器0中断分开关
6、while(1) 处理中断发生后的循环体
7、void name() interrupt 1注意格式和关键字,1是定时器T0中断优先级控制位
8、TH0=0xdc、 Tl0=0x00 //因定时器溢出后自动清零,要想继续按照设置的计时,需要重新附初值
9、cnt++ 计数变量自加1
10、if(cnt>=100)判断中断次数是否达到100次
11、cnt=0 计数变量清零
12、LED=~LED(按位取反)
完整的pdf格式文档51黑下载地址(清晰版):
51单片机定时器与中断示意图(汪永海整理).pdf
(92.64 KB, 下载次数: 624)
|