51系列单片机晶振频率12MHz,要从p2.0引脚输出一个连续的10Hz方波信号,试编写相应的程序。

我自己解答:
Fosc=12MHz,机器周期为1µs,方波周期为0.1s。半个周期用时0.05s。
方波半周期=0.05/1µ= 5×10^4 个机械周期
初值X=65536-50000=15536=3CB0H
实际X’=3CB0H-06H=3C05H
程序如下:
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN: MOV TMOD,#01H
SETB P2.0
MOV A,#01H ;
MOV A,#01H ;拖两个周期
LOOP:CPL P2.0 ;一个周期
MOV THO,#3CH ;一个周期
MOV TL0,#05H ;一个周期
SETB TR0 ;一个周期
JB TF0,LOOP ;2个周期
END
现在我想问这程序对不?TF0为1溢出中断时,要不要重设TMOD?TR0是否会变回0?
解答最好给出正确程序。谢谢。。。。。
请回答全部的问题,本人小白。
拜谢,,,,

程序如下:
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:
MOV TMOD, #01H
MOV TL0, #0B0H
MOV TH0, #3CH
SETB TR0

LOOP:
JNB TF0, LOOP ;2个周期.
MOV TL0, #0B3H ;一个周期.
MOV TH0, #3CH
CPL P2.0
CLR TF0
SJMP LOOP

END
----------
上述程序,经过KEIL软件调试,是符合要求的。
指令:CPL P2.0 ,确实是每隔50000机器周期,执行一遍。
温馨提示:答案为网友推荐,仅供参考
相似回答