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