求一个汇编语言的倒计时程序

供稿:hz-xin.com     日期:2025-01-12
单片机 我有一篇从99到0倒计时的汇编语言的程序, 求大家帮我加入3个开关, 如下图

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



这是一个倒计时案例,你可以参考一下:
ORG 0000HLJMP MAINORG 000BHLJMP T0ISRORG 0030HMAIN: MOV TMOD,#01H MOV TH0,#HIGH(65536-10000) MOV TL0,#LOW(65536-10000) SETB ET0 SETB EA MOV R0,#9 MOV R1,#9 MOV R2,#0 MOV R3,#9 CLR 00H CLR 01HLOOP: JB P1.0,LP01 JNB P1.0,$ SETB TR0 CLR 01H SJMP LOOP0LP01: JB P1.1,LP02 JNB P1.1,$ SETB 01H SJMP LOOP0LP02: JB P1.2,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,#TABLE MOVC A,@A+DPTR MOV R3,A SJMP LOOPT0ISR: CLR TR0 MOV TH0,#HIGH(65536-10000) MOV TL0,#LOW(65536-10000) SETB TR0 JB 01H,T0C INC R2T0C: CPL 00H MOV A,R3 JB 00H,T001 MOV P3,#0FDH MOV P2,A SJMP T002T001: MOV P3,#0FEH MOV P2,AT002: MOV A,R2 CJNE A,#100,T0E MOV R2,#0 MOV A,R0 JZ T003 DEC R0 SJMP T0ET003: MOV A,R1 JZ T004 DEC R1 MOV R0,#9T0E: RETIT004: CLR TR0 RETITABLE: ; 共阴极数码管显示代码表 DB 3FH,06H,5BH,4FH,66H ;01234 DB 6DH,7DH,07H,7FH,6FH ;56789
END

LED EQU P1.0
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV TMOD,#01H
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000)
SETB TR0
SETT ET0
SET EA
MOV R2,#5
MOV R3,#20
SJMP $
T0ISR:
CLR TR0
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000)
SETB TR0
DJNZ R3,T0E
MOV R3,#20
DJNZ R2,T0E
CLR LED
CLR TR0
T0E:
RETI
END

求用汇编语言编写9-0倒计时
- 使用循环结构(`LOOP`指令)进行倒计时,从'9'开始,每次调用`DELAY1`过程后递减DL寄存器中的字符,直到'0'。- `DELAY1`过程使用中断1Ah(系统调用)来暂停一段时间,实现延时效果。- 每次循环后,显示当前的字符和换行符。- 程序结束时,显示消息"the time is over!",然后退出。注意**:此...

求一个汇编语言的倒计时程序
LED EQU P1.0 ORG 0000H LJMP MAIN ORG 000BH LJMP T0ISR ORG 0030H MAIN:MOV TMOD,#01H MOV TH0,#HIGH(65536-50000)MOV TL0,#LOW(65536-50000)SETB TR0 SETT ET0 SET EA MOV R2,#5 MOV R3,#20 SJMP T0ISR:CLR TR0 MOV TH0,#HIGH(65536-50000)MOV TL0,#LOW(65536-50000)...

题目。写出一个60s倒计时的汇编语言
mov ds,ax ;... ;程序代码 mov SEC_60,60 mov SEC_1,0 mov Stop_Flag,0 mov ah,2ch int 21h mov SEC_1,dh ;--- loop:mov ah,1 int 16h jnz loop1 mov ah,0 int 16h mov al,Stop_Flag inc al and al,1 mov Stop_Flag,al loop1:mov al,Stop_Flag or al,1 jnz lo...

求C51单片机汇编语言控制两位数码管60秒倒计时的程序,最好能说明下思路...
TMOD=0x01;EA=1;ET0=1;TR0=1;TL0=-50000%256;TH0=-50000\/256;while(1){ if(sec==0)sec=60;display();} }

汇编语言 51单片机 倒计时器程序
这是一个倒计时案例,你可以参考一下:ORG 0000HLJMP MAINORG 000BHLJMP T0ISRORG 0030HMAIN: MOV TMOD,#01H MOV TH0,#HIGH(65536-10000) MOV TL0,#LOW(65536-10000) SETB ET0 SETB EA MOV R0,#9 MOV R1,#9 MOV R2,#0 MOV R3,#9 CLR 00H CLR 01HLOOP: JB P1...

求C51单片机汇编语言控制两位数码管倒计时程序,最好能说明下思路_百度...
MOV R4,#60 ;60S开始倒计时 SETBEA SETBET0 SETB TR0 MOV DPTR,#TABLE MAIN1:ACALLDISP AJMPMAIN1 DISP:MOV A,R4 MOV B,#10 DIV AB ;当前值除以10 MOV 20H,A ;得出的商送给十位 MOV 21H,B ;得出的余数送给个位 MOV A,20H ;十位显示 MOVC A,@A+DPTR ...

跪求用汇编语言编写的七段数码显示管60秒倒计时程序!!
JMP BEGIN ORG 000BH LJMP T0INT ORG 001BH LJMP T1INT LEDD EQU 30H LEDC EQU 36H SECC EQU 37H TCNT EQU 3AH ORG 0030H ;--- TABLE: ; 共阴极数码管显示代码表 DB 0FCH ;"0" 00H DB 60H ;"1" 01H DB 0DAH ;"2" 02H DB 0F2H ;"3" 03H DB 66H ;"4" 04H ...

...我的要求帮我编一个99倒计时到0的汇编语言的程序 ,不要用DIV的_百 ...
$ SETB TR0 CLR 01H SJMP LOOP0LP01: JB P1.1,LP02 JNB P1.1,$ SETB 01H SJMP LOOP0LP02: JB P1.2,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...

求下图倒计时秒表的汇编语言
以前做了一个,差不多类似,是正计时。KEYVALEQU 30H DATEQU 33H SCANLEDEQU 39H SEC1EQU 78H SEC2EQU 79H SEC_2EQU 7AH SEC_1 EQU 7BH DOTBIT 00H ORG 0000H LJMP MAIN ORG 0003H LJMP EXTINT0 ORG 000BH LJMP T0ISR;50ms定时 ORG 0013H LJMP EXTINT1 ORG 001BH LJMP T1...

倒计时3分钟在到30秒时开始有声音提示的单片机汇编语言程序!!!
需要外置芯片或者采用带pwm的单片机,或者需要用电阻配合搭个da,不然有程序也没有用