51单片机定时器工作原理及用法
扫描二维码
随时随地手机看文章
TMOD : 控制定时器的工作方式。8个bit,高四位 bit 控制 T1,、低四位 bit 控制 T0。因为定时器有4种工作方式;TMOD = 0x00(工作方式0),TMOD = 0x01(工作方式0),TMOD = 0x02(工作方式2),TMOD = 0x03(工作方式3)。以上是控制低4位的,所以是对应着T0。
TR0:T0定时器 使能开关,TR0 = 1,开始工作; =0停止工作。
ET0:T0定时器中断开关,定时时间一到,就会跑去中断程序。ET0=1,中断使能,=0失能。
EA : 中断总开关,你可以想象成电路的总电闸,EA=1,中断使能; =0,中断失能。
TH0,TL0 : T0定时器计数寄存器,组成16位的计数,0x0000--0xFFFF(0--65535),只要TH0TL0=0xFFFF(65535),程序就会跑去中断程序,在中断程序中,我们要重新给TH0,TL0重新赋值的。
我们都知道通信从大的方面有两种:串行和并行。串行的最大优点是占用总线少,但是传输速率低;并行恰恰相反,占用总线多,传输速率高。市面上有很多这样的芯片,有串入并出的(通俗讲就是 一个一个进,最后一块出来),有并入串出的(相对前者而言)。具体用哪种类型要根据我们得实际情况。比如利用单片机显示数码管单纯的显示一个数码管如果仅仅是为了显示 那么动用单片机一个端口(如P0或P1/P2/P3)那没有什么,当然这里我说的数码管是8段的(如果利用BCD类型 16进制数码管那么只需四个即可)就拿51类型的单片机来说,总共32个I/O口,一般如果不是做太大的工程是完全够用的,但有些时候你会恨单片机怎么不多长几条“腿”,怎么省还是不够用。这个时候就需要用到并转串或者串转并芯片来进行IO口的扩展,74HC165就是一种并行转串行的芯片。
假如说,我们定时50毫秒,TH0,TL0对应着什么值呢? 上面我们说了,TH0,TL0,组成的16位计数器计数范围是 0---65535 。50ms = 50 000us,我们只要让 TH0 TL0 从(65535 - 50000)开始计数,TH0,TL0就会不停的+1,直到TH0,TL0=65535,就是计数了50000次,时间就是过了50ms。我们只要在中断程序里面,重新赋值给TH0,TL0=(65535 - 50000),定时器就会不停得每50ms中断一次了。
所以,TH0=(65535-50000)/256; TL0 = (65535-50000)%256 ;
好吧,T0程序例子,定时20ms的程序 :
TO 20ms 例子程序
说完了TO,T1该怎么办? 我开始的时候说了,TO,T1是一对双胞胎。大家把上面T0例子程序:
(TMOD = 0x01, ET0 ,TR0,TH0,TL0 ,interrput 1) 改为
(TMOD = 0x10, ET1 ,TR1,TH1,TL1 ,interrput 3) 这样就变成了T1,定时器的程序。