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