用汇编语言在c51单片机上实现6(时分秒)位倒计时程序,能够调节设置时间,并能暂停,终止,继续

最好有电路图及管脚说明,多谢各位大神!!!邮箱[email protected]
在线等

     ORG   0000H
     JMP   BEGIN
 ORG 000BH
 LJMP T0INT
 ORG 001BH
 LJMP T1INT
LEDD EQU 30H
LEDC EQU 36H
SECC EQU 37H
MINC EQU 38H
HOUR EQU 39H
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
DB 0B6H ;"5" 05H
DB 0BEH ;"6" 06H
DB 0E0H ;"7" 07H
DB 0FEH ;"8" 08H
DB 0F6H ;"9" 09H
DB 0EEH ;"A" 0AH
DB 3EH ;"B" 0BH
DB 9CH ;"C" 0CH
DB 7AH ;"D" 0DH
DB 9EH ;"E" 0EH
DB 8EH ;"F" 0FH
DB 00H ;" " 10H
;          DB    3FH,06H,5BH,4FH,66H ;12345
;          DB    6DH,7DH,07H,7FH,     ;6789
;---------------------------------------
DELAY:  
MOV   R6,#25
DLY01:  
MOV   R7,#100
        DJNZ  R7,$
        DJNZ  R6,DLY01
        RET
;---------------------------------------
BEGIN:  
MOV SP,#5FH
MOV TMOD,#11H
MOV TH0,#3CH
MOV TL0,#0B0H
MOV TH1,#0F4H
MOV TL1,#48H
MOV LEDC,#6
MOV R0,#LEDD
CLR A
INIT:
MOV @R0,A
INC R0
DJNZ LEDC,INIT
SETB ET1
SETB TR1
MOV P2,#0
MOV TCNT,#0
MOV HOUR,#0
MOV MINC,#0
MOV SECC,#0
SETB ET0
SETB EA
LOOP:
JB P1.0,LOOP1
LCALL DELAY
JB P1.0,LOOP1
JNB P1.0,$
INC HOUR
MOV A,HOUR
CJNE A,#24,LOOPH
LOOPH:
JC LOOPH1
MOV HOUR,#0
LOOPH1:
LCALL DISHOUR
SJMP LOOP

LOOP1:
JB P1.1,LOOP2
LCALL DELAY
JB P1.1,LOOP2
JNB P1.1,$
MOV A,HOUR
JNZ LOOPH2
MOV HOUR,#23
SJMP LOOPH3
LOOPH2:
DEC HOUR
LOOPH3:
LCALL DISHOUR
SJMP LOOP

LOOP2:
JB P1.2,LOOP3
LCALL DELAY
JB P1.2,LOOP3
JNB P1.2,$
INC MINC
MOV A,MINC
CJNE A,#60,LOOPM
LOOPM:
JC LOOPM1
MOV MINC,#0
LOOPM1:
LCALL DISMIN
SJMP LOOP

LOOP3:
JB P1.3,LOOP4
LCALL DELAY
JB P1.3,LOOP4
JNB P1.3,$
MOV A,MINC
JNZ LOOPM2
MOV MINC,#59
SJMP LOOPM3
LOOPM2:
DEC MINC
LOOPM3:
LCALL DISMIN
SJMP LOOP

LOOP4:
JB P1.4,LOOP5
LCALL DELAY
JB P1.4,LOOP5
JNB P1.4,$
INC SECC
MOV A,SECC
CJNE A,#60,LOOPS
LOOPS:
JC LOOPS1
MOV SECC,#0
LOOPS1:
LCALL DISSEC
LJMP LOOP

LOOP5:
JB P1.5,LOOP6
LCALL DELAY
JB P1.5,LOOP6
JNB P1.5,$
MOV A,SECC
JNZ LOOPS2
MOV SECC,#59
SJMP LOOPS3
LOOPS2:
DEC SECC
LOOPS3:
LCALL DISSEC
LJMP LOOP

LOOP6:
JB P3.1,LOOP7
LCALL DELAY
JB P3.1,LOOP7
JNB P3.1,$
CPL TR0
LOOP7:
LJMP LOOP
;---------------------------------------
T1INT:
PUSH ACC
CLR TR1
MOV TH1,#0F4H
MOV TL1,#48H
SETB TR1
MOV DPTR,#TABLE
MOV R0,#LEDD
MOV A,LEDC
T1INT0:
JNZ T1INT1
MOV P2,#01H
MOV A,@R0
MOVC A,@A+DPTR
CPL A
MOV P0,A
SJMP T1INTD
T1INT1:
DEC A
JNZ T1INT2
MOV P2,#02H
INC R0
MOV A,@R0
MOVC A,@A+DPTR
CPL A
MOV P0,A
SJMP T1INTD
T1INT2:
DEC A
JNZ T1INT3
MOV P2,#04H
INC R0
INC R0
MOV A,@R0
MOVC A,@A+DPTR
CPL A
MOV P0,A
SJMP T1INTD
T1INT3:
DEC A
JNZ T1INT4
MOV P2,#08H
INC R0
INC R0
INC R0
MOV A,@R0
MOVC A,@A+DPTR
CPL A
MOV P0,A
SJMP T1INTD
T1INT4:
DEC A
JNZ T1INT5
MOV P2,#10H
INC R0
INC R0
INC R0
INC R0
MOV A,@R0
MOVC A,@A+DPTR
CPL A
MOV P0,A
SJMP T1INTD
T1INT5:
DEC A
JNZ T1INTD
MOV P2,#20H
INC R0
INC R0
INC R0
INC R0
INC R0
MOV A,@R0
MOVC A,@A+DPTR
CPL A
MOV P0,A
T1INTD:
INC LEDC
MOV A,LEDC
CJNE A,#6,T1INT6
T1INT6:
JC T1INTE
MOV LEDC,#0
T1INTE:
POP ACC
RETI
;---------------------------------------
HBCD:
MOV B,#10
DIV AB 
SWAP A 
ORL A,B
RET 
;---------------------------------------
T0INT:
PUSH ACC
CLR TR0
MOV TH0,#3CH
MOV TL0,#0B0H
SETB TR0
INC TCNT
MOV A,TCNT
CJNE A,#20,T0INT1
T0INT1:
JC T0INTE
MOV TCNT,#0
MOV A,SECC
ORL A,MINC
ORL A,HOUR
JNZ T0INT2
SETB P3.0
CLR TR0
POP ACC
RETI
T0INT2:
MOV A,MINC
ORL A,HOUR
JNZ T0INT3
MOV A,SECC
CJNE A,#6,T0INT21
T0INT21:
JNC T0INT22
CPL P3.0
T0INT22:
DEC SECC
LCALL DISSEC
SJMP T0INTE
T0INT3:
MOV A,SECC
JZ T0INT31
DEC SECC
LCALL DISSEC
SJMP T0INTE
T0INT31:
MOV SECC,#59
LCALL DISSEC
MOV A,MINC
JZ T0INT32
DEC MINC
LCALL DISMIN
SJMP T0INTE
T0INT32:
MOV MINC,#59
LCALL DISMIN
DEC HOUR
LCALL DISHOUR
T0INTE:
POP ACC
RETI
;---------------------------------------
DISSEC:
MOV A,SECC
LCALL HBCD
PUSH ACC
ANL A,#0FH
MOV 30H,A
POP ACC
SWAP A
ANL A,#0FH
MOV 31H,A
RET
;---------------------------------------
DISMIN:
MOV A,MINC
LCALL HBCD
PUSH ACC
ANL A,#0FH
MOV 32H,A
POP ACC
SWAP A
ANL A,#0FH
MOV 33H,A
RET
;---------------------------------------
DISHOUR:
MOV A,HOUR
LCALL HBCD
PUSH ACC
ANL A,#0FH
MOV 34H,A
POP ACC
SWAP A
ANL A,#0FH
MOV 35H,A
RET
;---------------------------------------
        END
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-21
查询方式:
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,LP2
ACALL DISP:JBC TF0 BR /> 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;画商给了他10
MOV 21H;结果的余数了一点

MOV A,20H; 10
MOVC A,@ A + DPTR
MOV P0,A BR /> SETB P2.1
LCALL DELAY
CLR P2.1

MOV A,21H;数字显示
MOVC A,@ A + DPTR < / MOV P0,一个
SETB P2.0
LCALL DELAY
CLR P2.0
RET

DELAY:R6错误0US MOV#,10#

RET DL0:
MOV R5,#50

DJNZ R6 DL0

DJNZ R5
:DB 0C0H,0F9H,0A4H 0B0H,99H;的共阳极0-9显示的代码
DB 92H,82H,地址0F8H,80H,90H

END BR />
中断:
ORG 00H
AJMP MAIN
ORG 0B??H
的AJMP T0INT
ORG 30H

MAIN: BR /> MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H; 50MS中断
MOV R0,#20; 20次为1S
MOV R4,#60; 20世纪60年代开始倒计时
或SETB,如果目标是EA
或SETB时,如果目标是ET0
或SETB
MOV,目标是TR0 DPTR,#TABLE
MAIN1:
ACALL DISP
AJMP MAIN1

DISP:
MOV A,R4
MOV B,#10
DIV AB;电流值除以10
MOV 20H,A;产生的商给了他10
MOV 21H,B;其余得出了一点
/> MOV A,20H; 10显示
MOVC A,@ A + DPTR
MOV P0,一个
SETB P2.1
LCALL DELAY
CLR P2.1

MOV A,21H;单位显示
MOVC A,@ A + DPTR
MOV P0,一个
SETB P2.0
LCALL DELAY /> CLR P2.0
RET

T0INT:
MOV TH0,#3CH
MOV TL0,#0B0H
DJNZ R0,RTI
> MOV R0,#20
十二月R4
CJNE R4,#0,RTI
MOV R4,#60
RTI:
RETI

>延迟:错误0US
MOV R6,#10
DL0:
MOV R5,#50

DJNZ R6,DJNZ R5,DL0
RET

</ TABLE:
DB 0C0H,0F9H,0A4H,0B0H,99H,的共阳极0-9显示代码的
DB 92H,82H,地址0F8H ,80H 90H

完;本回答被提问者采纳
相似回答