利用定时器T0产生定时脉冲。每隔2ms产生宽度为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。
方法一:
采用查询工作方式,编程如下:
ORG 0000H
AJMP MAIN
ORG 0100H
MAIN: CLR P1.0
MOV TMOD , #00H ;设定T0的工作方式
MOV TH0 , #0DDH ;给定时器T0送初值
MOV TL0 , #18H
SETB TR0;启动T0工作
LOOP: JNB TF0 , $;$为当前指令指针地址
CLR TF0
SETB P1.0;产生2µs正脉冲
CLR P1.0
MOV TH0 , #0DDH;重装载TH0和TL0
MOV TL0 , #18H
SJMP LOOP
END
方法二:
采用中断工作方式,编程如下:
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP T0INT
ORG 0100H
MAIN:CLR P1.0
MOV TH0 , #0DDH ;给定时器T0送初值
MOV TL0 , #18H
MOV IE , #82H;允许T0中断
SETB TR0;启动T0
SJMP $
中断服务程序:
ORG 0300H
T0INT: SETB P1.0
CLR P1.0
MOV TH0 , #0DDH;重装载TH0和TL0
MOV TL0 , #18H
RETI
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』