CHƯƠNG TRÌNH ĐIỀU KHIỂN RTC DS12C887 HIỂN THỊ THỜI GIAN HH-MM-SS TRÊN...
Bài 3: Chương trình điều khiển RTC DS12C887 hiển thị thời gian HH-MM-SS trên bộ hiển thị LED 7 đoạn, có
thể điều chỉnh thời gian bằng các nút nhấn MODE, INC và DEC (RTC giao tiếp với vi điều khiển theo
kiếu RAM ngoài).
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
;NUT TANG GIA TRI THOI GIAN
DEC_KEY
BIT
P3.2
;NUT GIAM GIA TRI THOI GIAN
;***************************************************
ORG
00H
SJMP
MAIN
ORG
30H
MAIN:
MOV
SP,#6FH
;VUNG NHO NGAN XEP 70H -> 7FH
ACALL SET_RTC
;KHOI DONG RTC
MP1:
ACALL READ_HMS
;DOC GIA TRI THOI GIAN TU RTC
ACALL BCD8TO7SEG_CLOCK
;GIAI MA BCD SANG MA 7 DOAN (DUNG CHO DONG HO)
ACALL DISP7SEGMUL8
;QUET HIEN THI
JB
MODE_KEY,EXIT_MP1
;KIEM TRA NUT MODE KHONG DUOC NHAN? - KHONG -> THOAT
ACALL KEYPRESSED
;NEU NUT MODE DUOC NHAN -> XU LY NUT NHAN
EXIT_MP1:
;QUAY LAI TU DAU NEU NUT MODE KHONG DUOC NHAN
SJMP
MP1
SET_RTC:
;CTC THIET LAP CHE DO BAN DAU CHO RTC
PUSH
00H
PUSH
ACC
MOV
R0,#REGA
;DIA CHI THANH GHI A
MOV
A,#0A0H
;OSC = ON, SQW OUT = OFF
MOVX
@R0,A
;GHI VAO RTC
MOV
R0,#REGB
;DIA CHI THANH GHI B
MOV
A,#02H
;24H/12H = 24H, MODE = BCD
POP
ACC
POP
00H
RET
WRITE_HMS:
;CTC NAP GIA TRI THOI GIAN VAO RTC
MOV
R0,#REGSEC
;DIA CHI THANH GHI GIAY
MOV
A,SEC
;LAY GIA TRI DA QUI DINH
MOV
R0,#REGMIN
;DIA CHI THANH GHI PHUT
MOV
A,MIN
;LAY GIA TRI DA QUI DINH
MOV
R0,#REGHOUR
;DIA CHI THANH GHI GI0
MOV
A,HOUR
;LAY GIA TRI DA QUI DINH
READ_HMS:
;CTC DOC GIA TRI THOI GIAN TU RTC
MOVX
A,@R0
;DOC TU RTC
MOV
R4,A
;CAT VAO VUNG NHO (R4) DUNG DE HIEN THI LEN MAN HINH LED
MOV
R5,A
;CAT VAO VUNG NHO (R5) DUNG DE HIEN THI LEN MAN HINH LED
MOV
R0,#REGHOUR
;DIA CHI THANH GHI GIO
MOV
R6,A
;CAT VAO VUNG NHO (R6) DUNG DE HIEN THI LEN MAN HINH LED