急需知答案 80C51单片机的时钟频率为12MHz,利用定时器T1和P1.0输出矩形脉冲,其波形图如下

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-09-10
51单片机的晶振频率为12MHz,利用定时器T1定时,在P1.0输出50HZ的方波。

ORG 0000HLJMP MAINORG 0030HMAIN: MOV TMOD,#00H MOV TH1,#(8192-5000)/32; MOV TL1,#(8192-5000)%32; SETB TR1 MOV R2,#20LOOP: JB TF1,$ MOV TH1,#(8192-5000)/32; MOV TL1,#(8192-5000)%32; CLR TF1 DJNZ R2,LOOP CPL P1.0 MOV R2,#20 SJMP LOOP END

org
00h
sjmp
start
org
01bh
mov
th1,#1eh
mov
tl1,#0ch
cpl
p1.1
inc
r2
mov
a,r2
anl
a,#11b
jnz
exit
cpl
p1.0
exit:reti
start:
setb
ea
setb
et1
setb
tr1
sjmp
$

用一个定时器定时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代码吗?

人家要完全的、完整的、详细的编写此程序的过程!
估计回答这个问题至少要个把小时。
其实一楼说的挺详细了。

波形呢?