单片机编程题,请给出正确的编程语言,谢谢
已知80C51单片机的fosc=6MHz,用T1定时器工作方式1,进行40ms定时,由P1.7输出高电平40ms,低电平360ms的方波...
已知80C51单片机的fosc=6MHz,用T1定时器工作方式1,进行40ms定时,由P1.7输出高电平40ms,低电平360ms的方波
展开
3个回答
展开全部
ORG 0000H
AJMP START
ORG 000BH
AJMP INT0
START: MOV TMOD,#10H
SETB EA
SETB ET0
MOV TH0,#B1H
MOV TL0,#E0H ;40MS延时初始值
MOV R0,#01H ;R0用来标志中断里定时器应该赋谁(高低电平)的初值的值
SETB P1.7 ;起始输出高电平
SETB TR0
HERE: SJPM HERE ;等待中断
INT0: MOV A,R0
JNZ GAO
SETB P1.7
MOV TH0,#0B1H
MOV TL0,#0E0H
SETB TR0
INC R0
SJMP NEXT
GAO: CLR P1.7
MOV TH0,#0B9H
MOV TL0,#B0H ;36MS延时初值
SETB TR0
INC R0
CJNE R0,#11,NEXT ;十次36MS延时之后清R0
CLR R0
NEXT: RETI
自己看看对不对吧
用两个定时器的话(一个定时高电平一个定时周期或者一个定时高电平一个定时低电平),可以省掉R0的,程序会比较简单
AJMP START
ORG 000BH
AJMP INT0
START: MOV TMOD,#10H
SETB EA
SETB ET0
MOV TH0,#B1H
MOV TL0,#E0H ;40MS延时初始值
MOV R0,#01H ;R0用来标志中断里定时器应该赋谁(高低电平)的初值的值
SETB P1.7 ;起始输出高电平
SETB TR0
HERE: SJPM HERE ;等待中断
INT0: MOV A,R0
JNZ GAO
SETB P1.7
MOV TH0,#0B1H
MOV TL0,#0E0H
SETB TR0
INC R0
SJMP NEXT
GAO: CLR P1.7
MOV TH0,#0B9H
MOV TL0,#B0H ;36MS延时初值
SETB TR0
INC R0
CJNE R0,#11,NEXT ;十次36MS延时之后清R0
CLR R0
NEXT: RETI
自己看看对不对吧
用两个定时器的话(一个定时高电平一个定时周期或者一个定时高电平一个定时低电平),可以省掉R0的,程序会比较简单
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2009-11-25
展开全部
sdewageqaq32 241
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
汇编?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询