51单片机定时器中断定时方式012的区别

51单片机定时方式0,1和2的区别:
首先采用Fsoc=12MHz晶振,其机器周期为12/Fsoc,即为1us; 定时方式0为13位定时/计数器,记满值为213=8192;定时方式1为16位定时/计数器,记满值为216=65536,16位初值分为高8位与低8位赋值,如采用定时器0,定时时间20ms,其高8位赋值TH0=(65536-20000/1)/256分析一下高8位赋值公式,由于51只有向上计数能力,因此可以假设先用65536填满,然后再减去要计时的时间20000,/1为除以机器周期,然后/256为把低8位(2^8=256)去掉,保留高8位;TL0=(65536-20000/1)%256,%256为对256进行取余,即把高8位去掉,保留低8位。由于其不具有重装初值功能 ,若要执行连续计时多个20ms,必须在定时器中断(T0对应 interrupt 1)中给其重新赋TH0 TL0初值,然后用一变量来统计次数,实现20ms的倍数定时。定时器0中断相关的寄存器有总中断开关(EA),定时器T0中断开关(ET0) 使能T0(TR0),TMOD为设置工作方式,如方式1为TMOD=0x01。 定时方式2 为具有自动重装初值能力的8位定时/计数器,其一个定时范围只有256us,以定时器0为例,其中TH0为定时初值,TL0为执行后自动重装的初值。 讲一下配置一个定时器中断的整个过程:1. 设置定时方式TMOD;2. 赋初值;3. 开总中断EA;4. 开定时器中断ET0、ET1;5. 使能中断TR0、TR1;6. 写中断服务函数,T0对应interrupt 1, T1对应interrupt 3;

工作方式1:51单片机定时器中断定时方式012的区别_第1张图片

工作方式2:51单片机定时器中断定时方式012的区别_第2张图片

对比两种方式,可以看到方式1需要在中断服务函数中重新赋初值,方可执行多次定时器中断,而方式2不需要,因为它每执行一次定时器中断后会将TL0的值作为初值进行自动重装。

你可能感兴趣的:(单片机)