北京治疗白癜风费一般是多少钱 http://www.znlvye.com/bybl/zbyf/m/01:11
定时器中断,顾名思义就是在规定的时间内发送中断请求,要实现定时器中断,单片机需要能够正确地计算时间,单片机是如何进行计时的呢?
51单片机内部有两个16位可编程的定时器/计数器T0和T1,每个定时器/计数器由高8位和低8位寄存器组成,TL0为T0的低8位寄存器,TH0为T0的高8位寄存器,TL1为T1的低8位寄存器,TH1为T1的高8位寄存器。
T0和T1的主要作用就是计数,单片机加电或复位后,T0和T1都初始化为零,单片机一旦设置开启定时功能后,T0和T1便在晶振的作用下自动开始计数,当T0或T1计数溢出后,通过特定电路产生内部中断,向单片机发送定时器中断请求,T0或T1会自动清零。T0和T1计数加1的操作需要一个机器周期,假设单片机的时钟周期(晶振频率)为12MHZ,12个时钟周期为一个机器周期,一个机器周期的时间就是1μs(微秒),因此计满T0或T1需要2^16-1个数,需要μs,约为65.5ms。若希望定时器每间隔50ms发送1次中断请求,就需要给T0或T1一个初始值,初始值为μs与μs的差值,T0或T1在初值的基础上再计个数后,T0或T1溢出并发送中断请求,刚好是50ms,T0和T1清零后再次赋初值给T0和T1,准备下一次中断请求。
定时器的内部结构如下图所示:
TH1和TL1是T1的高位寄存器和低位寄存器,TH0和TL0是T0的高位寄存器和低位寄存器,每个寄存器的长度是8位,在机器周期的作用下,计数从低位寄存器开始,当低位寄存器计满后向高位寄存器进一位,直到把高位寄存器也计满,此时T0或T1溢出,设置TCON控制寄存器的TF0或TF1位为1,并发送定时器中断请求。
订阅解锁TA的全部专属内容