利用單片機(jī)定時(shí)器T0產(chǎn)生定時(shí)脈沖編程
掃描二維碼
隨時(shí)隨地手機(jī)看文章
利用定時(shí)器T0產(chǎn)生定時(shí)脈沖。每隔2ms產(chǎn)生寬度為2個(gè)機(jī)器周期的正脈沖,由P1.0輸出此定時(shí)序列脈沖信號(hào)(設(shè)時(shí)鐘頻率為6MHZ)。
答:首先求出定時(shí)器T0初值。由于時(shí)鐘頻率為6MHZ,所以,機(jī)器周期為2μs。
因?yàn)椋簍=(213-T0初值)′機(jī)器周期
所以,當(dāng)t=2ms時(shí),則:(213-T0初值)′2′10-6=2′10-3
解得:T0初值=7096=11011101 11000B,其中將高8位11011101 B=DDH賦給TH0,低5位11000B=18H賦給TL0。
方法一:
采用查詢工作方式,編程如下:
ORG0000H
AJMPMAIN
ORG0100H
MAIN:CLRP1.0
MOVTMOD , #00H;設(shè)定T0的工作方式
MOVTH0 , #0DDH;給定時(shí)器T0送初值
MOVTL0 , #18H
SETBTR0;啟動(dòng)T0工作
LOOP:JNBTF0 , $;$為當(dāng)前指令指針地址
CLRTF0
SETBP1.0;產(chǎn)生2μs正脈沖
CLRP1.0
MOVTH0 , #0DDH;重裝載TH0和TL0
MOVTL0 , #18H
SJMPLOOP
END
方法二:
采用中斷工作方式,編程如下:
ORG0000H
AJMPMAIN
ORG000BH
AJMPT0INT
ORG0100H
MAIN:CLRP1.0
MOVTH0 , #0DDH;給定時(shí)器T0送初值
MOVTL0 , #18H
MOVIE , #82H;允許T0中斷
SETBTR0;啟動(dòng)T0
SJMP$
中斷服務(wù)程序:
ORG0300H
T0INT: SETBP1.0
CLRP1.0
MOVTH0 , #0DDH;重裝載TH0和TL0
MOVTL0 , #18H
RETI