TMOD : 控制定時器的工作方式。8個bit,高四位 bit 控制 T1,、低四位 bit 控制 T0。因為定時器有4種工作方式;TMOD = 0x00(工作方式0),TMOD = 0x01(工作方式0),TMOD = 0x02(工作方式2),TMOD = 0x03(工作方式3)。以上是控制低4位的,所以是對應著T0。
TR0:T0定時器 使能開關(guān),TR0 = 1,開始工作; =0停止工作。
ET0:T0定時器中斷開關(guān),定時時間一到,就會跑去中斷程序。ET0=1,中斷使能,=0失能。
EA : 中斷總開關(guān),你可以想象成電路的總電閘,EA=1,中斷使能; =0,中斷失能。
TH0,TL0 : T0定時器計數(shù)寄存器,組成16位的計數(shù),0x0000--0xFFFF(0--65535),只要TH0TL0=0xFFFF(65535),程序就會跑去中斷程序,在中斷程序中,我們要重新給TH0,TL0重新賦值的。
我們都知道通信從大的方面有兩種:串行和并行。串行的最大優(yōu)點是占用總線少,但是傳輸速率低;并行恰恰相反,占用總線多,傳輸速率高。市面上有很多這樣的芯片,有串入并出的(通俗講就是 一個一個進,最后一塊出來),有并入串出的(相對前者而言)。具體用哪種類型要根據(jù)我們得實際情況。比如利用單片機顯示數(shù)碼管單純的顯示一個數(shù)碼管如果僅僅是為了顯示 那么動用單片機一個端口(如P0或P1/P2/P3)那沒有什么,當然這里我說的數(shù)碼管是8段的(如果利用BCD類型 16進制數(shù)碼管那么只需四個即可)就拿51類型的單片機來說,總共32個I/O口,一般如果不是做太大的工程是完全夠用的,但有些時候你會恨單片機怎么不多長幾條“腿”,怎么省還是不夠用。這個時候就需要用到并轉(zhuǎn)串或者串轉(zhuǎn)并芯片來進行IO口的擴展,74HC165就是一種并行轉(zhuǎn)串行的芯片。
假如說,我們定時50毫秒,TH0,TL0對應著什么值呢? 上面我們說了,TH0,TL0,組成的16位計數(shù)器計數(shù)范圍是 0---65535 。50ms = 50 000us,我們只要讓 TH0 TL0 從(65535 - 50000)開始計數(shù),TH0,TL0就會不停的+1,直到TH0,TL0=65535,就是計數(shù)了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,定時器的程序。