**题目一
采用定时器/计数器T0对外部脉冲技术,每计数100个脉冲后,T0转为定时器工作方式。定时1ms后,又转为计数器工作方式,如此循环不止,假设单片机的晶振为6MHz。**
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP IT0P
MAIN: MOV TMOD, #06H ;计数器T0为计数方式2
MOV TL0, #156 ;计数100个脉冲的初值赋值
MOV TH0, #156
SETB GATE ;打开计数门
SETB TR0 ;启动T0,开始计数
SETB ET0 ;允许T0中断
SETB EA ;CPU开中断
CLR F0 ;设置下一轮定时方式标志位
WAIT: AJMP WAIT
IT0P: CLR EA ;CPU关中断
JB F0, COUNT ;F0=1,转计数方式设置
MOV TMOD, #00H ;定时器T0为定时方式0
MOV TH0, #0FEH ;定时1ms初值赋值
MOV TL0, #0CH
SETB EA
RETI
COUNT: MOV TMOD, #06H
MOV TL0, #156
SETB EA
RETI
END
**题目二
编写程序,要求使用T0,采用方式2定时,在P1.0输出周期为400us,占空比为10:1的矩形脉冲。**
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP IT0P
MAIN: MOV TMOD, #02H ;计数器T0为定时方式2
MOV TL0, #4AH ;定时364us初值赋值
SETB TR0 ;启动T0,开始计数
SETB ET0 ;允许T0中断
SETB EA ;CPU开中断
SETB P1.0
WAIT: AJMP WAIT
IT0P: CLR EA
CLR P1.0
MOV R0, #9
DLY: DJNZ R0, DLY ;延时36us
MOV TL0, #4AH ;定时364us初值赋值
SETB P1.0
SETB EA
RETI
END