51微控制器定時器/計數器的使用程式與分析
阿新 • • 發佈:2019-01-24
定時器的使用能夠使延時更加的準確定時器/計數器由振盪器,12分頻電路,多路轉換開關MUX,16位的加1計數器T0和16位的T1暫存器組成。定時器/計數器的核心是16位的加1計數器。1、計數功能:對外部脈衝進行計數。外部脈衝通過T0(P3.4)、T1(P.5)兩個訊號引腳輸入,輸入的脈衝再負跳變時有效,進行加1計數,一個下降沿脈衝計數一次,並將技術的結果儲存在計數暫存器中。2、定時器功能:對微控制器內部進行的相關計數,即每個機器週期產生一個計數脈衝,每經過一個機器週期計數器加1.定時器/計數器的控制暫存器與工作方式1、定時器/計數器工作方式暫存器TMOD(一個不可以按位定址的8位特殊功能暫存器,89H,高四位-T1,低四位-T0)
含義我們稍後再說,,,2、定時器控制暫存器TCON(用來啟動進入工作狀態)
3、中斷允許控制器IE,,,本程式將簡單的利用定時器對時間進行控制,發光二極體按P1.0,P1.1,P1.2,,,,P1.7,P1.0,,,,的順序依次迴圈點亮。每次發光二極體點亮的時間精準的控制在1s。
後續在做補充
T1 | T1 | T1 | T1 | T0 | T0 | T0 | T0 | |
---|---|---|---|---|---|---|---|---|
TMOD | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
位符號 | GATE | C/T | M1 | M0 | GATE | C/T | M1 | M0 |
TCON | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|---|
位符號 | TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |
位地址 | 8FH | 8EH | 8DH | 8CH | 8BH | 8AH | 89H | 88H |
#include<reg51.h> unsigned int num=100; unsigned char x=0xfe; void timer1() interrupt 3 { num--; TH1=0x63; TL0=0x18; //重新設定初值 if(num==0) { if(x==0x7f) x<<=1; else { x<<=1; x++; } P1=x; num=100; } } void main() { TMOD=0x00; //設定定時器工作模式 TH1=0x63; TL0=0x18; //設定初值 EA=1; //總中斷允許 ET1=1; //定時器中斷允許 TR1=1; //定時開始 for(;;) { //迴圈等待定時器溢位 } }
後續在做補充