Mình làm đồ án với cái đồng hồ số dùng VDK 89C51 với RTC DS12C887 gặp chút rắc rối mong được mọi người giúp. Mình đọc thời gian từ DS12C887 thì phút và giờ nó nhảy loạn từng phèo hết chỉ có giây là chạy đúng. Em đã kiểm tra lại thì code xuất mã 7 đoạn rồi quét Led... không sai gì, em xóa đoạn code đọc giấy và phút đi thì giờ chạy đúng. Nói chung là chỉ chạy dc 1 cái thôi, phút và giây thì giây chạy đúng còn phút nhẩy loạn xì ngầu lên. Ai biết em làm sai chỗ nào chỉ em với nha
Đây là code đoạn giao tiếp với DS12C887:
$MOD51
;DINH NGHIA CAC THONG SO
;************************************************
REGA EQU 0AH ;THANH GHI A
REGB EQU 0BH ;THANH GHI B
REGSEC EQU 00H ;THANH GHI GIAY
REGMIN EQU 02H ;THANH GHI PHUT
REGHOUR EQU 04H ;THANH GHI GIO
HOUR EQU 50H ;O NHO CHUA GIO
MIN EQU 51H ;O NHO CHUA PHUT
SEC EQU 52H ;O NHO CHUA GIAY
MODE_KEY BIT P3.0 ;NUT CHON THONG SO CAN DIEU CHINH
INC_KEY BIT P3.1 ;TANG GIA TRI THOI GIAN
DEC_KEY BIT P3.2 ;GIAM GIA TRI THOI GIAN
;************************************************
ORG 00H
SJMP MAIN
ORG 30H
MAIN:
MOV SP,#6FH ;VUNG NHO NGAN XEP BAT DAU TU 70H - 7FH
ACALL SET_RTC ;KHOI DONG RTC
MP1:
ACALL READ_HMS
ACALL BCDTO7SEG
ACALL QUETHIENTHI
JB MODE_KEY,EXIT_MP1 ;KIEM TRA NUT MODE CO DUOC NHAN HAY KHONG
ACALL KEYPRESSED ;XY LY NUT NHAN
EXIT_MP1:
SJMP MP1
;************************************************
SET_RTC: ;THIET LAP RTC
PUSH 00H
PUSH ACC
MOV R0,#REGA
MOV A,#0A0H
MOVX @R0,A
MOV R0,#REGB
MOV A,#02H
MOVX @R0,A
POP ACC
POP 00H
RET
;************************************************
WRITE_HMS: ;GHI GIA TRI THOI GIAN THUC VAO RTC
PUSH 00H
PUSH ACC
MOV R0,#REGSEC
MOV A,SEC
MOVX @R0,A
MOV R0,#REGMIN
MOV A,MIN
MOVX @R0,A
MOV R0,#REGHOUR
MOV A,HOUR
MOVX @R0,A
POP ACC
POP 00H
RET
;************************************************
READ_HMS:
MOV R0,#00H
MOV R1,#20H
READ:
MOVX A,@R0
MOV @R1,A
INC R0
INC R0
INC R1
CJNE R0,#06H,READ
RET
;************************************************
............................
Đây là code đoạn giao tiếp với DS12C887:
$MOD51
;DINH NGHIA CAC THONG SO
;************************************************
REGA EQU 0AH ;THANH GHI A
REGB EQU 0BH ;THANH GHI B
REGSEC EQU 00H ;THANH GHI GIAY
REGMIN EQU 02H ;THANH GHI PHUT
REGHOUR EQU 04H ;THANH GHI GIO
HOUR EQU 50H ;O NHO CHUA GIO
MIN EQU 51H ;O NHO CHUA PHUT
SEC EQU 52H ;O NHO CHUA GIAY
MODE_KEY BIT P3.0 ;NUT CHON THONG SO CAN DIEU CHINH
INC_KEY BIT P3.1 ;TANG GIA TRI THOI GIAN
DEC_KEY BIT P3.2 ;GIAM GIA TRI THOI GIAN
;************************************************
ORG 00H
SJMP MAIN
ORG 30H
MAIN:
MOV SP,#6FH ;VUNG NHO NGAN XEP BAT DAU TU 70H - 7FH
ACALL SET_RTC ;KHOI DONG RTC
MP1:
ACALL READ_HMS
ACALL BCDTO7SEG
ACALL QUETHIENTHI
JB MODE_KEY,EXIT_MP1 ;KIEM TRA NUT MODE CO DUOC NHAN HAY KHONG
ACALL KEYPRESSED ;XY LY NUT NHAN
EXIT_MP1:
SJMP MP1
;************************************************
SET_RTC: ;THIET LAP RTC
PUSH 00H
PUSH ACC
MOV R0,#REGA
MOV A,#0A0H
MOVX @R0,A
MOV R0,#REGB
MOV A,#02H
MOVX @R0,A
POP ACC
POP 00H
RET
;************************************************
WRITE_HMS: ;GHI GIA TRI THOI GIAN THUC VAO RTC
PUSH 00H
PUSH ACC
MOV R0,#REGSEC
MOV A,SEC
MOVX @R0,A
MOV R0,#REGMIN
MOV A,MIN
MOVX @R0,A
MOV R0,#REGHOUR
MOV A,HOUR
MOVX @R0,A
POP ACC
POP 00H
RET
;************************************************
READ_HMS:
MOV R0,#00H
MOV R1,#20H
READ:
MOVX A,@R0
MOV @R1,A
INC R0
INC R0
INC R1
CJNE R0,#06H,READ
RET
;************************************************
............................
Comment