单片机, 请求大神按照我的要求帮我编一个99倒计时到0的汇编语言的程序 ,不要用DIV的

开关的话 能加的话 就加开始 暂停 和停止键吧

ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
    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 01H
LOOP:
 JB P1.0,LP01
 JNB P1.0,$
 SETB TR0
 CLR 01H
 SJMP LOOP0
LP01:
 JB P1.1,LP02
 JNB P1.1,$
 SETB 01H
 SJMP LOOP0
LP02:
 JB P1.2,LOOP0
 JNB P1.1,$
 CLR TR0
 MOV P3,#0FDH
 MOV P2,#0
 MOV P3,#0FEH
 MOV P2,#0
 SJMP MAIN
LOOP0:
 JB 00H,LOOP1
 MOV A,R0
 SJMP LOOP2
LOOP1:
 MOV A,R1
LOOP2:
 MOV DPTR,#TABLE
 MOVC A,@A+DPTR
 MOV R3,A
 SJMP LOOP
T0ISR:
    CLR TR0
    MOV TH0,#HIGH(65536-10000)
    MOV TL0,#LOW(65536-10000)
    SETB TR0
 JB 01H,T0C
 INC R2
T0C:
 CPL 00H
 MOV A,R3
 JB 00H,T001
 MOV P3,#0FDH
 MOV P2,A
 SJMP T002
T001:
 MOV P3,#0FEH
 MOV P2,A
T002:
 MOV A,R2
 CJNE A,#100,T0E
 MOV R2,#0
 MOV A,R0
 JZ T003
 DEC R0
 SJMP T0E
T003:
 MOV A,R1
 JZ T004
 DEC R1
 MOV R0,#9
T0E:
 RETI
T004:
 CLR TR0
 RETI
TABLE:      ; 共阴极数码管显示代码表
    DB    3FH,06H,5BH,4FH,66H ;01234
    DB    6DH,7DH,07H,7FH,6FH ;56789

 END

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-11-19

    ORG 0000H

START:

    MOV   39H, #0C0H

    MOV   38H, #0F9H

    MOV   37H, #0A4H

    MOV   36H, #0B0H

    MOV   35H, #99H

    MOV   34H, #92H

    MOV   33H, #82H

    MOV   32H, #0F8H

    MOV   31H, #80H

    MOV   30H, #90H

    MOV   P3, #0

    MOV   TMOD, #01H

    SETB  TR0

LP: MOV   R0, #30H

LP0:MOV   R1, #30H

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

    INC   R1

    CJNE  R1, #3AH, LP1

    INC   R0

    CJNE  R0, #3AH, LP0

    JMP   LP

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   R0, #39H

    MOV   R1, #39H

    MOV   R5, #01H

    JMP   LP2

DISP:

    MOV   P2, @R0

    SETB  P3.1

    DJNZ  R7, $

    DJNZ  R7, $

    CLR   P3.1

    MOV   P2, @R1

    SETB  P3.0

    DJNZ  R7, $

    DJNZ  R7, $

    CLR   P3.0

    RET

END


仿真截图如下:

本回答被提问者采纳

...我编一个99倒计时到0的汇编语言的程序 ,不要用DIV的
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 CL...

单片机,我有一个从99倒计时到00的汇编语言的程序,求好心人帮忙解释下这...
CLR P3.1 ;十位数位清0 MOV A, B ;个位数送A MOVC A, @A+DPTR ;查表 MOV P2, A ;结果送P2 SETB P3.0 ;个位数位置1 DJNZ R7, $ ;延时 DJNZ R7, $ ;延时 CLR P3.0 ;个位数位清0 RET TABLE:DB 0C0H, 0F9H, 0A4H, 0B0H, 99H DB 92H, 82H...

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

单片机高手们谁会用汇编语言实现0~99间的计数、暂停、清零程序。对初学...
MOV P0, A T0_1:MOV A, R1 ;显示个位 MOVC A, @A + DPTR MOV P2, A T0_E:RETI ;--- TAB: DB 3FH, 06H, 5BH, 4FH, 66H;0~4 DB 6DH, 7DH, 07H, 7FH, 6FH;5~9 ;---

篮球计分器程序(单片机汇编语言编写,不要C语言)
org 00h main:mov p1,#00h mov r1,#00h a1:call dis jb p3.2, j1 jb p3.3,j2 jb p3.4,j3 jmp a1 dis:mov a,r1 mov b,#10 div ab mov p1,a setb p2.0 call yanshi mov p1,b clr p2.0 call yanshi ret ji:call yanshi jnb p3.2,a1 inc r1 ret j2:call ...

求一个用汇编语言编写一个8051单片机的时钟程序(急急急啊)
USING 0 MOV SP, #(STACK-1) ;MOV P0,#0FFH MOV P2,#0FFH MOV TMOD,#011H ; 定时器0, 1工作模式1, 16位定时方式 MOV TH0,#0FCH MOV TL0,#017H MOV TH1,#0DCH CLR A MOV TL1,A MOV HOUR,#12 ;CLR A ;MOV MIN,A MOV SEC,A MOV ...

请懂单片机的高手用汇编语言帮我编以下要求的程序
ORG 0030H LJMP LP1 ORG 000BH MAIN:SETB EA SETB TR0 CLR IT0 MOV A,#01H MOV P1,A LP1: JB D0,LP2 忘了TCON的D0为是哪个单元了 你找下改了就好 我这你 看懂就好拉 LCALL YAN JB DO,LP2 RL A MOV P1,A RETI YAN: MOV R7,#250 延时子程序 不知道你的晶震是多少...

大神帮忙编制一个程序,用汇编语言。
PD EQU P1.7 ORG 0000H LJMP MAIN ORG 0030H MAIN:CLR PA CLR PB CLR PC CLR PD JNB PORTA,MAIN SETB PA JB PORTB,MAINB1 MAINB0:JNB PORTC,MAINC0 CLR PB SETB PC CLR PD JB PORTA,SJMP MAIN MAINC0:SETB PB SETB PC CLR PD JB PORTA,SJMP MAIN MAINB1:JB PORTC,MAINC1 SETB ...

单片机用汇编写两个数码管显示0到99循环的程序
2、数码管段选表。3、延时函数。4、uchar i; 变量i;wk = 1;打开位选,P0 = 0xf7;1111 0111第4位数码管显示,wk = 0;关闭位选。5、while(1) \/\/死循环效果{} 。6、dk = 1;\/\/打开段选,P0 = leddata[i];,dk = 0;\/\/关闭段选,delay(100);\/\/延时效果。7、选择效果,限制i值...

单片机 60秒倒计时
我是用汇编语言做的,如果显示的速度不理想 你改下延时程序段的数值就OK了,课堂上这个60S倒计时的课题用了很多方法做过 ORG 0000H LJMP START ORG 0100H START:MOV R0, #59 MOV DPTR, #TABLE LOOP:LCALL DISPLAY DEC R0 CJNE R0,#0,LOOP JMP START DISPLAY:MOV ...

相似回答