求C51单片机汇编语言控制两位数码管倒计时程序,从60秒到30秒再到90秒并循环倒计时显示。
以下是现成的程序,但只能显示60秒倒计时循环显示,请高手帮忙改下,能实现从60秒到30秒再到90秒并循环倒计时显示。谢谢啦查询方式:ORG00HSTART:MOVR0,#...
以下是现成的程序,但只能显示60秒倒计时循环显示,请高手帮忙改下,能实现从60秒到30秒再到90秒并循环倒计时显示。谢谢啦
查询方式:
ORG 00H
START: MOV R0,#20
MOV R4,#60
LP0: MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
MOV DPTR,#TABLE
SETB TR0
LP1: JBC TF0,LP2
ACALL DISP
AJMP LP1
LP2: DJNZ R0,LP0
CLR TR0
MOV R0,#20
MOV A,R4
CJNE A,#0,DEC1
MOV R4,#60
AJMP JP1
DEC1: DEC A
MOV R4,A
JP1: ACALL DISP
AJMP LP0
DISP: MOV A,R4
MOV B,#10
DIV AB
;当前值除以10
MOV 20H,A
;得出的商送给十位
MOV 21H,B
;得出的余数送给个位
MOV A,20H
;十位显示
MOVC A,@A+DPTR
MOV P0,A
SETB P2.1
LCALL DELAY
CLR P2.1
MOV A,21H
;个位显示
MOVC A,@A+DPTR
MOV P0,A
SETB P2.0
LCALL DELAY
CLR P2.0
RET
DELAY: ;误差 0us
MOV
R6,#10
DL0:
MOV
R5,#50
DJNZ
R5,$
DJNZ
R6,DL0
RET
TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H ;共阳极0-9显示代码
DB 92H,82H,0F8H,80H,90H
END 展开
查询方式:
ORG 00H
START: MOV R0,#20
MOV R4,#60
LP0: MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
MOV DPTR,#TABLE
SETB TR0
LP1: JBC TF0,LP2
ACALL DISP
AJMP LP1
LP2: DJNZ R0,LP0
CLR TR0
MOV R0,#20
MOV A,R4
CJNE A,#0,DEC1
MOV R4,#60
AJMP JP1
DEC1: DEC A
MOV R4,A
JP1: ACALL DISP
AJMP LP0
DISP: MOV A,R4
MOV B,#10
DIV AB
;当前值除以10
MOV 20H,A
;得出的商送给十位
MOV 21H,B
;得出的余数送给个位
MOV A,20H
;十位显示
MOVC A,@A+DPTR
MOV P0,A
SETB P2.1
LCALL DELAY
CLR P2.1
MOV A,21H
;个位显示
MOVC A,@A+DPTR
MOV P0,A
SETB P2.0
LCALL DELAY
CLR P2.0
RET
DELAY: ;误差 0us
MOV
R6,#10
DL0:
MOV
R5,#50
DJNZ
R5,$
DJNZ
R6,DL0
RET
TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H ;共阳极0-9显示代码
DB 92H,82H,0F8H,80H,90H
END 展开
3个回答
展开全部
从60秒到30秒再到90秒并循环倒计时显示。
----
有点不好理解。
从60秒到30秒,看来,是倒计时。
到了30之后,怎么办?是立即改为90吗?
到了90之后,再怎么办?是立即改为60吗?
----
有点不好理解。
从60秒到30秒,看来,是倒计时。
到了30之后,怎么办?是立即改为90吗?
到了90之后,再怎么办?是立即改为60吗?
更多追问追答
追问
是倒计时,就像红绿灯的倒计时那样。从60秒倒计时开始到01,之后变成30秒倒计时到01,之后,变成90秒倒计时到01,之后再到60秒,就跟前边的接上了
追答
轮流使用三种初始时间:60、90、30,分别倒计时到1。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
开始就有逻辑问题.
要做多次倒计时,应该做些改动...
再把主要的部分作为1个子程序:LP1: ----
----
RET
还要自己调一下. 希望能帮助你.
START: MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
MOV DPTR,#TABLE
SETB TR0
LPP: MOV R0,#20
MOV R4,#60
ACALL LP1
MOV R0,#20
MOV R4,#30
ACALL LP1
MOV R0,#20
MOV R4,#90
SJMP LPP
LP1: JBC TF0,LP2
.....
JP1: ACALL DISP
RET
要做多次倒计时,应该做些改动...
再把主要的部分作为1个子程序:LP1: ----
----
RET
还要自己调一下. 希望能帮助你.
START: MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
MOV DPTR,#TABLE
SETB TR0
LPP: MOV R0,#20
MOV R4,#60
ACALL LP1
MOV R0,#20
MOV R4,#30
ACALL LP1
MOV R0,#20
MOV R4,#90
SJMP LPP
LP1: JBC TF0,LP2
.....
JP1: ACALL DISP
RET
更多追问追答
追问
请问您省略的这个子程序
LP1: ----
----
RET
如何编写呀?自己还是不知道如何编写...
追答
就是你原来的啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ORG 00H
START:
MOV R0,#20
MOV R4,#60
MOV R5,#0
LP0:
MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
SETB TR0
LP1:
JBC TF0,LP2
ACALL DISP
AJMP LP1
LP2:
DJNZ R0,LP0
CLR TR0
MOV R0,#20
MOV A,R4
CJNE A,#0,DEC1
INC R5
MOV DPTR,#TAB
MOV A,R5
CJNE A,#3,LP3
MOV R5,#0
LP3:
MOVC A,@A+DPTR
MOV R4,A
AJMP JP1
DEC1:
DEC A
MOV R4,A
JP1:
ACALL DISP
AJMP LP0
DISP:
MOV DPTR,#TABLE
MOV A,R4
MOV B,#10
DIV AB ;当前值除以10
MOV 20H,A ;得出的商送给十位
MOV 21H,B ;得出的余数送给个位
MOV A,20H ;十位显示
MOVC A,@A+DPTR
MOV P0,A
SETB P2.1
LCALL DELAY
CLR P2.1
MOV A,21H ;个位显示
MOVC A,@A+DPTR
MOV P0,A
SETB P2.0
LCALL DELAY
CLR P2.0
RET
DELAY: ;误差 0us
MOV R6,#10
DL0:
MOV R5,#50
DJNZ R5,$
DJNZ R6,DL0
RET
TABLE:
DB 0C0H,0F9H,0A4H,0B0H,99H ;共阳极0-9显示代码
DB 92H,82H,0F8H,80H,90H
TAB:
DB 60,30,90
END
START:
MOV R0,#20
MOV R4,#60
MOV R5,#0
LP0:
MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
SETB TR0
LP1:
JBC TF0,LP2
ACALL DISP
AJMP LP1
LP2:
DJNZ R0,LP0
CLR TR0
MOV R0,#20
MOV A,R4
CJNE A,#0,DEC1
INC R5
MOV DPTR,#TAB
MOV A,R5
CJNE A,#3,LP3
MOV R5,#0
LP3:
MOVC A,@A+DPTR
MOV R4,A
AJMP JP1
DEC1:
DEC A
MOV R4,A
JP1:
ACALL DISP
AJMP LP0
DISP:
MOV DPTR,#TABLE
MOV A,R4
MOV B,#10
DIV AB ;当前值除以10
MOV 20H,A ;得出的商送给十位
MOV 21H,B ;得出的余数送给个位
MOV A,20H ;十位显示
MOVC A,@A+DPTR
MOV P0,A
SETB P2.1
LCALL DELAY
CLR P2.1
MOV A,21H ;个位显示
MOVC A,@A+DPTR
MOV P0,A
SETB P2.0
LCALL DELAY
CLR P2.0
RET
DELAY: ;误差 0us
MOV R6,#10
DL0:
MOV R5,#50
DJNZ R5,$
DJNZ R6,DL0
RET
TABLE:
DB 0C0H,0F9H,0A4H,0B0H,99H ;共阳极0-9显示代码
DB 92H,82H,0F8H,80H,90H
TAB:
DB 60,30,90
END
追问
您编写的程序到30秒的时候,不能跳转到90秒而是一直保持30秒循环,请问如何修改?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询