单片机知识,哪位给解答一下

来源:百度知道 编辑:UC知道 时间:2024/05/26 08:28:10
在8051单片机中,已知晶振频率为12MHZ,试编程使P1.0和P1.1引脚分别输出周期为5s和500ms的方波.(要求:用定时器T0工作方式1.因为500ms已超过最大定时时间,所以我的思路是将第二个的定时时间也设为1ms,和那个保持一致,这样可以使程序更简洁。用循环实现延时,延时250)谁帮帮我把代码写一下 谢谢了

;P1.0和P1.1引脚分别输出周期为5s和500ms的方波,用定时中断
;P1.0是2.5S取反一次,P1.1是0.25S取反一次,
;用定时器0做0.05S的定时,再做两个软件计数器,让0.05S跑50次和5次就到
;2.5S取反一次和0.25S取反一次
;**************************************************
TM1 EQU 5
TM2 EQU 50
ORG 0000H
AJMP START
ORG 000BH
AJMP TIME0
ORG 30H
START:
MOV P1,#0FFH
MOV R6,#00H ;软件计数器预清0
MOV R7,#00H
MOV TMOD,#00000001B ;定时/计数器0工作于方式1
MOV TH0,#3CH
MOV TL0,#0B0H ;即数15536,定时0.05ms
SETB EA
SETB ET0
SETB TR0 ;定时0开始运行
LOOP:
AJMP LOOP

TIME0: ;定时器0的中断处理程序
INC R6
INC R7 ;两个计数器都加1
MOV A,R6
CJNE A,#TM1,T_NEXT ;30H单元中的值到了5了吗?
T_L1:
CPL P1.1 ;到了,取反P11
MOV