51单片机 汇编语言 两个七段共阳数码管 60S倒计时

求程序

C语言的我这里有。
以下是24倒计时的程序。你修改TABLE: 中的数据内容就可以达到你的要求的了。里面用到了两片7447芯片。。。
ORG 0000h
AJMP START
ORG 0030H
START: CLR P3.1 ;D1亮
JB P3.7,START ;按下K1倒计时启动
SETB P3.1 ;D1灭
CLR P3.0 ;D2亮
MOV TMOD,#01H ;设定时器TIMER0工作在模式1
MOV DPTR,#TABLE
NEXT: MOV A,#00H
MOVC A,@A+DPTR
MOV P1,A
MOV R3,#20 ;延时1秒
LCALL DELAY
INC DPTR ;数据指针加1
CJNE A,#0FFH,NEXT
MOV P1,#0FFH
SETB P3.0
LJMP START
; ****延时0.5秒子程序****
DELAY: SETB TR0 ;起动TIMER0开始计时
AGAIN: MOV TL0,#LOW(65536-50000) ;设定时器TL0的值
MOV TH0,#HIGH(65536-50000) ;设定时器TH0的值
LOOP2: JBC TF0,LOOP3 ;判断TF=1?,是则跳转至LOOP3,并清除TF0
JMP LOOP2 ;TF0不为1则跳转至LOOP2
LOOP3: DJNZ R3,AGAIN ;R3是否为0?不是则跳转至AGAIN
CLR TR0 ;是则停止TIMER0计数
RET
;*****显示数码表*****
TABLE:
DB 24H,23H,22H,21H,20H,19H,18H,17H,16H,15H,14H,13H
DB 12H,11H,10H,09H,08H,07H,06H,05H,04H,03H,02H,01H
DB 0FFH ;结束码
END
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-10-31
  ORG 0000H
  JMP BEGIN
    ORG 000BH
    LJMP T0INT
    ORG 001BH
    LJMP T1INT
LEDD EQU  30H
LEDC EQU 36H
SECC EQU 37H
TCNT EQU 3AH
    ORG 0030H
;---------------------------------------
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 SECC,#0
SETB ET0
SETB EA
MOV SECC,#60
LCALL DISSEC
SETB TR0
SETB TR1
LOOP:
SJMP $
;---------------------------------------
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:
MOV P2,#02H
INC R0
MOV A,@R0
MOVC A,@A+DPTR
CPL A
MOV P0,A
T1INTD:
INC LEDC
MOV A,LEDC
CJNE A,#2,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
DEC A
MOV SECC,A
JNZ T0INT2
MOV SECC,#60
T0INT2:
LCALL DISSEC
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
;---------------------------------------
TABLE:      
          DB    3FH,06H,5BH,4FH,66H ;12345
          DB    6DH,7DH,07H,7FH,     ;6789
;---------------------------------------
        END

第3个回答  2017-10-29
这首先要有仿真图,或开发板的原理图,否则怎么写程序。