mcs51單片機計數(shù)器工作方式1 計數(shù)初值計算與定時編程舉例
方式1是16位計數(shù)結(jié)構(gòu)的工作方式,計數(shù)器由TH0全部8位和TL0全部8位構(gòu)成。與工作方式0基本相同,區(qū)別僅在于工作方式1的計數(shù)器TL1和TH1組成16位計數(shù)器,從而比工作方式0有更寬的定時/計數(shù)范圍。
當(dāng)為計數(shù)工作方式時,計數(shù)值的范圍是:
1~65536(216)
當(dāng)為定時工作方式時,定時時間計算公式為:
(216-計數(shù)初值)×晶振周期×12
或(216-計數(shù)初值)×機器周期
例題1:當(dāng)某單片機系統(tǒng)的外部晶振頻率為6MHz,則最小定時時間為:
[216-(216-1)]×1/6×10-6×12=2×10-6=2(ms)
最大定時時間為:
(216-0)×1/6×10-6×12=131072×10-6(s)=131072(ms)≈131(ms)
例題2:某單片機系統(tǒng)外接晶振頻率為6MHz,使用定時器1以工作方式1產(chǎn)生周期為500ms的等寬連續(xù)正方波脈沖,并在P1.0端輸出,但以中斷方式完成。
⑴計算計數(shù)初值
TH1=FFHTL1=83H
⑵TMOD寄存器初始化
TMOD=10H
⑶程序設(shè)計
主程序:
MOV TMOD,#10H;定時器1工作方式1
MOV TH1,#0FFH;設(shè)置計數(shù)初值
MOV TL1,#0A1H
SETB EA;開中斷
SETB ET1;定時器1允許中斷
LOOP:SETB TR1;定時開始
HERE:SJMP$;等待中斷
中斷服務(wù)程序:
MOV TH1,#0FFH;重新設(shè)置計數(shù)初值
MOV TL1,#0A1H
CPL P1.0;輸出取反
RETI;中斷返回