求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
展开
 我来答
做而论道
高能答主

推荐于2017-12-16 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部
从60秒到30秒再到90秒并循环倒计时显示。
----
有点不好理解。

从60秒到30秒,看来,是倒计时。
到了30之后,怎么办?是立即改为90吗?
到了90之后,再怎么办?是立即改为60吗?
更多追问追答
追问
是倒计时,就像红绿灯的倒计时那样。从60秒倒计时开始到01,之后变成30秒倒计时到01,之后,变成90秒倒计时到01,之后再到60秒,就跟前边的接上了
追答
轮流使用三种初始时间:60、90、30,分别倒计时到1。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wgq930
2013-03-09 · TA获得超过2262个赞
知道大有可为答主
回答量:4926
采纳率:51%
帮助的人:1937万
展开全部
开始就有逻辑问题.
要做多次倒计时,应该做些改动...
再把主要的部分作为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
如何编写呀?自己还是不知道如何编写...
追答
就是你原来的啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhxiufan
2013-03-09 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38386
国家科技进步奖

向TA提问 私信TA
展开全部
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
追问
您编写的程序到30秒的时候,不能跳转到90秒而是一直保持30秒循环,请问如何修改?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式