用一个定时器定时50us,也可以达到题目要求。
在我的空间里面有类似的问题和解答。
------------------------
ORG 0000H
SJMP START
ORG 001BH ;T1中断入口.
SJMP T1_INT
START:
MOV TMOD, #20H ;设置T1定时方式2
MOV TH1, #206 ;自动重新装入方式.
MOV TL1, #206 ;定时时间50us@12MHz
MOV IE, #10001000B ;开放总中断和T1中断.
SETB TR1 ;启动T1
MOV R2, #3 ;周期是3×50us
SJMP $ ;等着吧.
T1_INT:
SETB P1.0 ;输出高.
DJNZ R2, T1_END ;R2-1
CLR P1.0 ;减到0,就输出低电平.
MOV R2, #3
T1_END:
RETI ;中断返回.
END ;完.
一般做法是用两个定时器,第一段用一个定时,第二段用另一个定时。如果硬要用一个也可以,第一段定时中断之后改定时器初值,改成第二段时间的,反之亦然。会有点误差,但可以修正,反正我就经常这么干的
是要C代码吗?
人家要完全的、完整的、详细的编写此程序的过程!
估计回答这个问题至少要个把小时。
其实一楼说的挺详细了。
波形呢?