程序用数码管显示时分秒,可是读出来全是FFF


,程序如下。
SCLK EQU P3.4
SIO EQU P3.5
RST EQU P3.6
LSA BIT P2.2
LSB BIT P2.3
LSC BIT P2.4
GPIO_DIG EQU P0
ORG 0
JMP MAIN
ORG 0040H
MAIN: MOV 30H,#00H
MOV 31H,#08H
MOV 32H,#00H
MOV 33H,#08H
MOV 34H,#08H
MOV 35H,#01H
MOV 36H,#08H
CALL INIT
MOV DPTR,#DIGDATA
DIS: CALL DISPLAY
SJMP DIS
DIGDATA:
DB 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07
DB 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71
;*************************************************
; 数码管显示子程序 *
;*************************************************
DISPLAY:
CALL RTIME
CLR LSA
CLR LSB
CLR LSC
MOV A,54H
ANL A,#0FH
MOVC A,@A+DPTR
MOV GPIO_DIG,A
CALL DELAY2MS
MOV GPIO_DIG,#000H
;----------- 第一个
SETB LSA
CLR LSB
CLR LSC
MOV A,54H
ANL A,#0F0H
RR A
RR A
RR A
RR A
MOVC A,@A+DPTR
MOV GPIO_DIG,A
CALL DELAY2MS
MOV GPIO_DIG,#000H
;----------- 第二个
CLR LSA
SETB LSB
CLR LSC
MOV GPIO_DIG,#40H
CALL DELAY2MS
MOV GPIO_DIG,#000H
;----------- 第三个
SETB LSA
SETB LSB
CLR LSC
MOV A,51H
ANL A,#0FH
MOVC A,@A+DPTR
MOV GPIO_DIG,A
CALL DELAY2MS
MOV GPIO_DIG,#000H
;----------- 第四个
CLR LSA
CLR LSB
SETB LSC
MOV A,51H
ANL A,#0F0H
RR A
RR A
RR A
RR A
MOVC A,@A+DPTR
MOV GPIO_DIG,A
CALL DELAY2MS
MOV GPIO_DIG,#000H
;----------- 第五个
SETB LSA
CLR LSB
SETB LSC
MOV GPIO_DIG,#40H
CALL DELAY2MS
MOV GPIO_DIG,#000H
;----------- 第六个
CLR LSA
SETB LSB
SETB LSC
MOV A,52H
ANL A,#0FH
MOVC A,@A+DPTR
MOV GPIO_DIG,A
CALL DELAY2MS
MOV GPIO_DIG,#000H
;------------ 第七个
SETB LSA
SETB LSB
SETB LSC
MOV A,52H
ANL A,#30H
RR A
RR A
RR A
RR A
MOVC A,@A+DPTR
MOV GPIO_DIG,A
CALL DELAY2MS
MOV GPIO_DIG,#000H
RET
;*************************************************
; 写字节子程序 *
;*************************************************
WRB: MOV 40H,#8
LPW: CLR SCLK
MOV A,B
RRC A
MOV B,A
MOV SIO,C
SETB SCLK
NOP
DJNZ 40H,LPW
RET
;*************************************************
; 读字节子程序 *
;*************************************************
RDB: MOV 40H,#8
LPR: CLR SCLK
MOV C,SIO
RRC A
SETB SCLK
DJNZ 40H,LPR
RET
;*************************************************
; DS1302初始化子程序 *
;*************************************************
INIT: CLR RST
CLR SCLK
SETB RST
MOV B,#8EH
CALL WRB
MOV B,#00H
CALL WRB
SETB SCLK
CLR RST
MOV R0,30H
MOV R7,#7
MOV R1,#81H
LOOP: CLR RST
CLR SCLK
SETB RST
MOV B,R1
CALL WRB
MOV A,@R0
MOV B,A
CALL WRB
INC R0
INC R1
INC R1
SETB SCLK
CLR RST
DJNZ R7,LOOP
CLR RST
CLR SCLK
SETB RST
MOV B,#8EH
CALL WRB
MOV B,#80H
CALL WRB
SETB SCLK
CLR RST
RET
;*************************************************
; 时间读取子程序 *
;*************************************************
RTIME:
MOV R7,#7
MOV R1,#81H
MOV R0,#50H
LPRT: CLR RST
NOP
CLR SCLK
NOP
SETB RST
MOV B,R1
CALL WRB
CALL RDB
MOV @R0,A
INC R0
INC R1
INC R1
SETB SCLK
NOP
CLR RST
NOP
DJNZ R7,LPRT
CLR RST
NOP
SETB SCLK
NOP
CLR SIO
NOP
SETB SIO
NOP
RET
;*************************************************
; 延时子程序 *
;*************************************************
DELAY20MS: ;误差 0us
MOV R6,#0D7H
DL0:
MOV R5,#2DH
DJNZ R5,$
DJNZ R6,DL0
NOP
NOP
RET
DELAY2MS: ;误差 0us
MOV R6,#04H
DL1:
MOV R5,#0F8H
DJNZ R5,$
DJNZ R6,DL1
NOP
RET
END




SCLK EQU P3.4
SIO EQU P3.5
RST EQU P3.6
LSA BIT P2.2
LSB BIT P2.3
LSC BIT P2.4
GPIO_DIG EQU P0
ORG 0
JMP MAIN
ORG 0040H
MAIN: MOV 30H,#00H
MOV 31H,#08H
MOV 32H,#00H
MOV 33H,#08H
MOV 34H,#08H
MOV 35H,#01H
MOV 36H,#08H
CALL INIT
MOV DPTR,#DIGDATA
DIS: CALL DISPLAY
SJMP DIS
DIGDATA:
DB 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07
DB 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71
;*************************************************
; 数码管显示子程序 *
;*************************************************
DISPLAY:
CALL RTIME
CLR LSA
CLR LSB
CLR LSC
MOV A,54H
ANL A,#0FH
MOVC A,@A+DPTR
MOV GPIO_DIG,A
CALL DELAY2MS
MOV GPIO_DIG,#000H
;----------- 第一个
SETB LSA
CLR LSB
CLR LSC
MOV A,54H
ANL A,#0F0H
RR A
RR A
RR A
RR A
MOVC A,@A+DPTR
MOV GPIO_DIG,A
CALL DELAY2MS
MOV GPIO_DIG,#000H
;----------- 第二个
CLR LSA
SETB LSB
CLR LSC
MOV GPIO_DIG,#40H
CALL DELAY2MS
MOV GPIO_DIG,#000H
;----------- 第三个
SETB LSA
SETB LSB
CLR LSC
MOV A,51H
ANL A,#0FH
MOVC A,@A+DPTR
MOV GPIO_DIG,A
CALL DELAY2MS
MOV GPIO_DIG,#000H
;----------- 第四个
CLR LSA
CLR LSB
SETB LSC
MOV A,51H
ANL A,#0F0H
RR A
RR A
RR A
RR A
MOVC A,@A+DPTR
MOV GPIO_DIG,A
CALL DELAY2MS
MOV GPIO_DIG,#000H
;----------- 第五个
SETB LSA
CLR LSB
SETB LSC
MOV GPIO_DIG,#40H
CALL DELAY2MS
MOV GPIO_DIG,#000H
;----------- 第六个
CLR LSA
SETB LSB
SETB LSC
MOV A,52H
ANL A,#0FH
MOVC A,@A+DPTR
MOV GPIO_DIG,A
CALL DELAY2MS
MOV GPIO_DIG,#000H
;------------ 第七个
SETB LSA
SETB LSB
SETB LSC
MOV A,52H
ANL A,#30H
RR A
RR A
RR A
RR A
MOVC A,@A+DPTR
MOV GPIO_DIG,A
CALL DELAY2MS
MOV GPIO_DIG,#000H
RET
;*************************************************
; 写字节子程序 *
;*************************************************
WRB: MOV 40H,#8
LPW: CLR SCLK
MOV A,B
RRC A
MOV B,A
MOV SIO,C
SETB SCLK
NOP
DJNZ 40H,LPW
RET
;*************************************************
; 读字节子程序 *
;*************************************************
RDB: MOV 40H,#8
LPR: CLR SCLK
MOV C,SIO
RRC A
SETB SCLK
DJNZ 40H,LPR
RET
;*************************************************
; DS1302初始化子程序 *
;*************************************************
INIT: CLR RST
CLR SCLK
SETB RST
MOV B,#8EH
CALL WRB
MOV B,#00H
CALL WRB
SETB SCLK
CLR RST
MOV R0,30H
MOV R7,#7
MOV R1,#81H
LOOP: CLR RST
CLR SCLK
SETB RST
MOV B,R1
CALL WRB
MOV A,@R0
MOV B,A
CALL WRB
INC R0
INC R1
INC R1
SETB SCLK
CLR RST
DJNZ R7,LOOP
CLR RST
CLR SCLK
SETB RST
MOV B,#8EH
CALL WRB
MOV B,#80H
CALL WRB
SETB SCLK
CLR RST
RET
;*************************************************
; 时间读取子程序 *
;*************************************************
RTIME:
MOV R7,#7
MOV R1,#81H
MOV R0,#50H
LPRT: CLR RST
NOP
CLR SCLK
NOP
SETB RST
MOV B,R1
CALL WRB
CALL RDB
MOV @R0,A
INC R0
INC R1
INC R1
SETB SCLK
NOP
CLR RST
NOP
DJNZ R7,LPRT
CLR RST
NOP
SETB SCLK
NOP
CLR SIO
NOP
SETB SIO
NOP
RET
;*************************************************
; 延时子程序 *
;*************************************************
DELAY20MS: ;误差 0us
MOV R6,#0D7H
DL0:
MOV R5,#2DH
DJNZ R5,$
DJNZ R6,DL0
NOP
NOP
RET
DELAY2MS: ;误差 0us
MOV R6,#04H
DL1:
MOV R5,#0F8H
DJNZ R5,$
DJNZ R6,DL1
NOP
RET
END