1、,单片机定时中断过程,电子信息工程,目录,方式0,工作方式0的逻辑结构框图,方式0为13位计数器,方式0的最长定时=例:设晶振频率:6MHz,T=4ms计算得初值为X=719216进制 X=1C18H=1110000011000BTH0=0E0H,THL=18H,org 0000hreset:ljmp main ;转主程序org 000bh ;T0的中断入口ljmp itop ;转T0中断的处理程序ITOPorg 0100hmain:mov sp,#60h ;设堆栈指针mov tmod,#00h acall ptomo ;调用子程序PTOMOhere:ajmp here ;自身跳转,模拟主程序
2、ptomo:mov tl0,#18h ;T0初始化,T0置初值,程序,mov th0,#0e0hsetb tr0 ;启动T0setb et0 ;允许T0中断setb ea ;CPU开放中断retitop:mov tl0,#18h ;T0中断服务子程序,T0置 初值mov th0,#0e0hcpl p1.0 ;P1.0取反reti,电路图及仿真结果,电路图,仿真图,方式1,工作方式1的逻辑结构框图,方式1和方式0的差别仅在于计数器的位数不同,方式1为16位的计数器,方式1的最长定时=例:设晶振频率为6MHz,周期T=40ms经计算得初值X=55536 X=D8F0H=11011000111100
3、00 TH0=0D8H TL0=0F0H,程序,org 0000hreset:ljmp main ;上电,转主程序org 000bh ;T0的中断入口ljmp itop ;转T0中断处理程序ITOPorg 0100hmain:mov sp,#60h ;设堆栈指针mov tmod,#01h ;设循环次数acall ptomohere:ajmp here ;ptomo:mov tl0,#0f0h,mov th0,#0d8hsetb tr0setb et0setb earetitop:mov tl0,#0f0hmov th0,#0d8hcpl p1.0reti,方式1的电路图及仿真,电路图,仿真图,
4、方式2,方式2的逻辑结构框图,定时器/计数器方式2为自动恢复初值(常数自动装入)8位的定时器/计数器,方式2的最长定时=例:设晶振频率为6MHz,周期T=2ms 经计算得初值X=06H TL0=06H TH0=06H,程序,org 0000hreset:ljmp main ;复位入口转主程序org 000bhljmp itop ;转T0中断服务程序org 0100hmain:mov sp,#60h ;主程序入口,设堆栈 指针mov tmod,#02hacall ptomohere:ajmp here,ptomo:mov tl0,#06hmov th0,#06hsetb tr0setb et0s
5、etb earetitop:cpl p1.0reti,方式2的电路图及仿真图,电路图,仿真图,由仿真图可以看出,仿真结果与实际的计算值半个周期相差2.5us,方式3,上图中第一个图是T0工作在方式3时T1为方式0/1的工作示意图上图中第二个图是T0工作在方式3时T1为方式2的工作示意图当T1工作在方式3时,T1的控制字中M1、M0=11时,T1计数停止,方式3的最长定时例: 设晶振频率为6MHz,周期T=400us 计算得初值X=156=9CH,程序,org 0000hljmp main ;跳主程序org 000bh ;T0中断口ljmp itoporg 0100h ;主程序入口main:mov tmod,#03hacall ptomohere:ajmp here,ptomo:mov tl0,#9chsetb tr0setb et0setb earetitop:mov tl0,#9ch ;TH0中断服务程序, TL0重新装入初值cpl p1.0 ;P1.0位取反 输出reti,方式3的电路图及仿真图,电路图,仿真图,由仿真图可以看出,仿真结果与实际的计算值半个周期相差12us,谢谢观看!,