单片机 我有一篇从99到0倒计时的汇编语言的程序, 求大家帮我加入3个开关, 如下图

一个开关用来按下后 开始执行倒计时程序,其他两个用来暂停计时和停止计时(停止计时就显示00吧),求大神帮忙

ORG 0000HSTART: MOV R0,#20 MOV R4,#15LP0: MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H MOV DPTR,#TABLE SETB TR0LP1: JBC TF0,LP2 ACALL DISP AJMP LP1LP2: DJNZ R0,LP0

CLR TR0 MOV R0,#20 MOV A,R4 CJNE A,#0,DEC1 MOV R4,#15 AJMP JP1DEC1: DEC A
MOV R4,AJP1: ACALL DISP
AJMP LP0DISP: MOV A,R4
MOV B,#10
DIV AB MOV 20H,A MOV 21H,B MOV A,20H MOVC A,@A+DPTR MOV P2,A SETB P3.1 LCALL DELAY CLR P3.1 MOV A,21H MOVC A,@A+DPTR
MOV P2,A
SETB P3.0
LCALL DELAY
CLR P3.0
RET
DELAY: MOV R6,#10
DL0: MOV R5,#50 DJNZ R5,$ DJNZ R6,DL0 RET
TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H DB 92H,82H,0F8H,80H,90H END

程序写的可以,但是在硬软件资源使用上不科学。
1.位寻址寄存器20H~2FH应专做为寻址用,平时的字节寄存器应从30H开始不较好。
2.P3口各个引脚都有第二功能,能不用尽量不用。比如这次的电路:数码管a~g用P2口,位选用P1.0~P1.1,按键用P1.2~P1.4,完全够用。
3.汇编编程要适当添加注释,提高程序可读性!

我是在你的程序基础上改的,用注释标注了!

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-11-14
ORG 0000H
START:
MOV P3, #0
MOV DPTR, #TABLE
MOV TMOD, #01H
SETB TR0

LP0:MOV R4, #100
LP1:MOV R5, #20
LP2:MOV TH0, #3CH
MOV TL0, #0B0H
LP3:CALL DISP
JNB P1.0, K1
JNB P1.1, K2
JNB P1.2, K3
JNB TF0, LP3
CLR TF0
DJNZ R5, LP2
DJNZ R4, LP1
JMP LP0
K1: CALL DISP
JB P1.0, LP3
SETB TR0
JMP LP3
K2: CALL DISP
JB P1.1, LP3
CLR TR0
JMP LP3
K3: CALL DISP
JB P1.2, LP3
CLR TR0
MOV R4, #1
JMP LP3
;---------------------------
DISP:
MOV A, R4
DEC A
MOV B, #10
DIV AB
MOVC A, @A+DPTR
MOV P2, A
SETB P3.1
DJNZ R7, $
DJNZ R7, $
CLR P3.1
MOV A, B
MOVC A, @A+DPTR
MOV P2, A
SETB P3.0
DJNZ R7, $
DJNZ R7, $
CLR P3.0
RET
TABLE:
DB 0C0H, 0F9H, 0A4H, 0B0H, 99H
DB 92H, 82H, 0F8H, 80H, 90H
END追问

0

本回答被提问者和网友采纳

单片机 我有一篇从99到0倒计时的汇编语言的程序, 求大家帮我加入3个开...
程序写的可以,但是在硬软件资源使用上不科学。1.位寻址寄存器20H~2FH应专做为寻址用,平时的字节寄存器应从30H开始不较好。2.P3口各个引脚都有第二功能,能不用尽量不用。比如这次的电路:数码管a~g用P2口,位选用P1.0~P1.1,按键用P1.2~P1.4,完全够用。3.汇编编程要适当添加注释,提高...

单片机,我有一个从99倒计时到00的汇编语言的程序,求好心人帮忙解释下这...
START:MOV P3, #0 ;P3口清0 MOV DPTR, #TABLE ;表首地址送DPTR MOV TMOD, #01H ;定时器0设为模式1 SETB TR0 ;开启定时器 LP0:MOV R4, #100 ;R4赋值100 LP1:MOV R5, #20 ;R5赋值20 LP2:MOV TH0, #3CH ;定时器赋初值50毫秒定时参数 MOV TL0, #0B0H ...

...的要求帮我编一个99倒计时到0的汇编语言的程序 ,不要用DIV的_百度...
LOOP0 JNB P1.1,$ CLR TR0 MOV P3,#0FDH MOV P2,#0 MOV P3,#0FEH MOV P2,#0 SJMP MAINLOOP0: JB 00H,LOOP1 MOV A,R0 SJMP LOOP2LOOP1: MOV A,R1LOOP2: MOV DPTR,

求一个基于单片机的用汇编语言写的倒计时程序
刚写的程序,可以通过S0(功能键),S1(加键),S2(减键)设定初值,倒数为00-00-00时蜂鸣器响,通过八位LED显示;include<reg52.h> include<intrins.h> define uchar unsigned char define uint unsigned int uchar code wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};\/\/八位位选...

求解单片机完成用三个按键控制三个发光二极管的控制系统,汇编语言
KEY0 BIT P1.0KEY1 BIT P1.1KEY2 BIT P1.2LED0 BIT P1.4LED1 BIT P1.5LED2 BIT P1.6ORG 0000HLJMP MAINORG 0030HMAIN: JB KEY0,MAIN1 CLR LED0 SJMP MAINMAIN1: SETB LED0 JB KEY1,MAIN2 CLR LED1 SJMP MAINMAIN2: SETB LED1 JB KEY2,MAIN...

单片机,我有一个秒表00.0计时的汇编语言 程序 谁能帮我解释下这些程序...
50MS T0 中断 倒计时R4,R5,R6!数码管显示:R4,R5,R6 按键K1,开始...但没有看到K2的处理程序,没写完吧?

单片机用汇编写两个数码管显示0到99循环的程序
要实现单片机用汇编语言编写的数码管循环显示0到99的程序,首先,你需要创建一个新的项目并做好初始化准备工作。接着,创建一个数码管段选表,它将决定每个数码管的显示模式。延时函数在此过程中也至关重要,以控制数码管的刷新速度。定义一个名为i的uchar变量,初始化一个名为wk的标志位,用于控制...

如何用单片机汇编语言实现每次有3个指示灯亮?
通过一位 F 的16进制 转换为 2进制的 1111 然后移动一位 有三极管开关所改变。0的时候发光,1的时候变暗。所以一开始0FFH表示高8位为0;低8位为1111 1111,表示全暗,然后右移变为1111 1110亮第一个等。 以此类推

利用汇编语言编单片机程序,求大神帮助。。。
a 答案:ORG 0000H LJMP MAIN ORG 0100H MAIN: MOV A,#0FEH ;是开始键按下 则跑马灯开始运行 LL: MOV P1,A LCALL YS ;显示延时 RL A ;循环右移一位 CJNE A,#0FEH,LL ;不是最后一个,则转到LL继续显示下一个LED发光二极管亮 MOV A,#...

求C51单片机汇编语言控制两位数码管倒计时程序,从60秒到30秒再到90秒...
以下是现成的程序,但只能显示60秒倒计时循环显示,请高手帮忙改下,能实现从60秒到30秒再到90秒并循环倒计时显示。谢谢啦 查询方式: ORG 00H START: MOV R0,#20 MOV R4,#60 LP0: MOV TMOD,#01H MOV TH0,#3CH... 展开 秋天花谢了 | 浏览1741 次 |举报 我有更好的答案推荐...

相似回答