利用定時器T0產(chǎn)生定時脈沖。每隔2ms產(chǎn)生寬度為2個機器周期的正脈沖,由P1.0輸出此定時序列脈沖信號(設時鐘頻率為6MHZ)。
答:首先求出定時器T0初值。由于時鐘頻率為6MHZ,所以,機器周期為2μs。
因為:t=(213-T0初值)′機器周期
所以,當t=2ms時,則:(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;設定T0的工作方式
MOVTH0 , #0DDH;給定時器T0送初值
MOVTL0 , #18H
SETBTR0;啟動T0工作
LOOP:JNBTF0 , $;$為當前指令指針地址
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;給定時器T0送初值
MOVTL0 , #18H
MOVIE , #82H;允許T0中斷
SETBTR0;啟動T0
SJMP$
中斷服務程序:
ORG0300H
T0INT: SETBP1.0
CLRP1.0
MOVTH0 , #0DDH;重裝載TH0和TL0
MOVTL0 , #18H
RETI