Tải bản đầy đủ (.pdf) (17 trang)

vi xử lý hệ thống điều khiển rtc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (470.17 KB, 17 trang )




KHOA CÔNG NGHỆ ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP




T
T
À
À
I
I


L
L
I
I


U
U


H
H
Ư
Ư




N
N
G
G


D
D


N
N


T
T
H
H
Í
Í


N
N
G
G
H
H

I
I


M
M


-
-


T
T
H
H


C
C


H
H
À
À
N
N
H
H



















S. HỆ THỐNG ĐIỀU KHIỂN RTC (REAL TIME CLOCK).
Giáo trình thực hành vi xử lý. 2 Biên soạn: Phạm Quang Trí

A. MỤC ĐÍCH:

• Thực hành lập trình ứng dụng trên máy tính, biên dịch chương trình, nạp vào vi điều khiển và sử dụng mô
hình thí nghiệm để kiểm chứng.
• Điều khiển thiết bị ngoại vi bằng các port của vi điều khiển.
• Khảo sát và sử dụng các loại RTC (đồng hồ thời gian thực) thông dụng trên thực tế.
• Tìm hiểu nguyên lý hoạt động một số thiết bị điều khiển ứng dụng RTC giao tiếp với vi điều khiển.

B. YÊU CẦU:


• Nắm vững tập lệnh của vi điều khiển MCS-51.
• Tham khảo trước nguyên lý hoạt động của các RTC thông dụng như: PCF8583, DS1307, … (Serial RTC)
và DS12887 (Parallel RTC).
• Thiết kế một số thiết bị điều khiển ứng dụng RTC giao tiếp với vi điều khiển.


S. HỆ THỐNG ĐIỀU KHIỂN RTC (REAL TIME CLOCK).
Bài 1: Chương trình điều khiển RTC DS12C887 hiển thị thời gian HH-MM-SS (giá trị ban đầu là 23-59-00)
trên bộ hiển thị LED 7 đoạn (RTC giao tiếp với vi điều khiển theo kiếu RAM ngoài).
Giáo trình thực hành vi xử lý. 3 Biên soạn: Phạm Quang Trí
1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J146 (ADD/DATA BUS) ở khối RTC.
• Dùng dây bus 8 nối J64 (PORT1) ở khối vi điều khiển với J4 (7SEG IN MUL) ở khối LED 7 đoạn.
• Dùng bốn dây bus 8 nối J5 (7SEG7 IN), J6 (7SEG6 IN), J7 (7SEG5 IN) và J8 (7SEG4 IN) ở khối LED 7
đoạn với J4 (7SEG IN MUL) ở khối LED 7 đoạn (ta nối chung các bus này lại với nhau thông qua khối
mở rộng).
• Dùng dây bus 8 nối J65 (PORT2 / ADDRESS) ở khối vi điều khiển với J2 (SEL LED IN) ở khối LED 7
đoạn.
• Dùng dây bus 2 nối J148 (WRITE/READ) ở khối RTC với J66 (PORT3/FUNCTION) ở khối vi điều khiển
(chú ý là ta chỉ nối 2 bit cao (P3.6 – RD\ và P3.7 – WR\) của J66 và J148 với nhau).
• Dùng dây bus 1 nối J150 (CTRL. P-RTC) ở khối RTC với J34 (SWITCH) ở khối công tắc và gạt công tắc
tương ứng ở vị trí OFF (vị trí +5V) (chú ý là ta chỉ nối chân RST\ của J150 và J34 với nhau).
• Dùng dây bus 1 nối J150 (CTRL. P-RTC) ở khối RTC với chân 30 – ALE của 89C51 (SOCKET 40PIN) ở
khối vi điều khiển (chú ý là ta chỉ nối chân ALE của J150 và chân 30 của 89C51).
• Dùng dây bus 2 nối J490 (CS RTC) ở khối RTC với J34 (SWITCH) ở khối công tắc và gạt hai công tắc
tương ứng ở vị trí ON (vị trí GND).
• Dùng hai dây bus 3 nối J110 (POWER) ở khối LED 7 đoạn và J147 (POWER) ở khối RTC với nguồn

+5V ở khối nguồn.
WRITE
READ
CTRL.
S-RTC
CTRL.
P-RTC
POWER
CS
RTC
ADD/DATA
BUS
PORT 0PORT 1PORT 3PORT 2
PORT 1PORT 3
40 PINS
20 PINS
3
8
3

1.2 Sơ đồ nguyên lý của hệ thống:

1.3 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN RTC DS12C887 HIEN THI THOI GIAN (23-59-00) TREN
;BO HIEN THI LED 7 DOAN (RTC GIAO TIEP KIEU RAM NGOAI VOI 89C51).
;***************************************************
;KET NOI: 8 LED -> PORT1
; SEL LED -> PORT2
; RTC BUS -> PORT0 (CHE DO RAM NGOAI)

; RESET, CS, AS, DS, RD/WR -> VCC(40), GND(20), ALE(30), RD(17), WR(16)
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI INT, CA, ACTIVE = 0
;***************************************************
;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 23H ;GIA TRI DAT CHO THOI GIAN HH-MM-SS = 23-59-00
MIN EQU 59H ;
SEC EQU 00H ;
S. HỆ THỐNG ĐIỀU KHIỂN RTC (REAL TIME CLOCK).
Bài 1: Chương trình điều khiển RTC DS12C887 hiển thị thời gian HH-MM-SS (giá trị ban đầu là 23-59-00)
trên bộ hiển thị LED 7 đoạn (RTC giao tiếp với vi điều khiển theo kiếu RAM ngoài).
Giáo trình thực hành vi xử lý. 4 Biên soạn: Phạm Quang Trí
;***************************************************
ORG 00H
SJMP MAIN
ORG 30H
MAIN:
MOV SP,#6FH ;VUNG NHO NGAN XEP 70H -> 7FH
ACALL SET_RTC ;KHOI DONG RTC
ACALL WRITE_HMS ;NAP THOI GIAN BAN DAU HH-MM-SS
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
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
MOVX @R0,A ;GHI VAO RTC
POP ACC
POP 00H
RET
;***************************************************
WRITE_HMS: ;CTC NAP GIA TRI THOI GIAN BAN DAU VAO RTC -> 23:59:00 (TU QUI DINH)
PUSH 00H
PUSH ACC
MOV R0,#REGSEC ;DIA CHI THANH GHI GIAY
MOV A,#SEC ;LAY GIA TRI DA QUI DINH
MOVX @R0,A ;GHI VAO RTC
MOV R0,#REGMIN ;DIA CHI THANH GHI PHUT
MOV A,#MIN ;LAY GIA TRI DA QUI DINH
MOVX @R0,A ;GHI VAO RTC
MOV R0,#REGHOUR ;DIA CHI THANH GHI GI0
MOV A,#HOUR ;LAY GIA TRI DA QUI DINH
MOVX @R0,A ;GHI VAO RTC
POP ACC
POP 00H
RET
;***************************************************

READ_HMS: ;CTC DOC GIA TRI THOI GIAN TU RTC
PUSH 00H
PUSH ACC
MOV R0,#REGSEC ;DIA CHI THANH GHI GIAY
MOVX A,@R0 ;DOC TU RTC
MOV R4,A ;CAT VAO VUNG NHO (R4) DUNG DE HIEN THI LEN MAN HINH LED
MOV R0,#REGMIN ;DIA CHI THANH GHI PHUT
MOVX A,@R0 ;DOC TU RTC
MOV R5,A ;CAT VAO VUNG NHO (R5) DUNG DE HIEN THI LEN MAN HINH LED
MOV R0,#REGHOUR ;DIA CHI THANH GHI GIO
MOVX A,@R0 ;DOC TU RTC
MOV R6,A ;CAT VAO VUNG NHO (R6) DUNG DE HIEN THI LEN MAN HINH LED
POP ACC
POP 00H
RET
;****************************************************
;CTC GIAI MA TU SO BCD NEN SANG MA 7 DOAN (4 SO BCD NEN) DUNG CHO HIEN THI DONG HO.
;***************************************************
;LED: ANODE CHUNG, 7 DOAN: DP (MSB) -> A (LSB)
;GIA TRI GIAI MA: 0 -> 9
;***************************************************
;NAME: BCD8TO7SEG_CLOCK.
;INPUT: R7 = DAU CACH THOI GIAN (NAP SAN TRONG CTC)
; R6 = SO BCD NEN (CHUC GIO - GIO / CHUC NGAY - NGAY).
; R5 = SO BCD NEN (CHUC PHUT - PHUT / CHUC THANG - THANG).
; R4 = SO BCD NEN (CHUC GIAY - GIAY / CHUC NAM - NAM).
S. HỆ THỐNG ĐIỀU KHIỂN RTC (REAL TIME CLOCK).
Bài 1: Chương trình điều khiển RTC DS12C887 hiển thị thời gian HH-MM-SS (giá trị ban đầu là 23-59-00)
trên bộ hiển thị LED 7 đoạn (RTC giao tiếp với vi điều khiển theo kiếu RAM ngoài).
Giáo trình thực hành vi xử lý. 5 Biên soạn: Phạm Quang Trí

;OUTPUT: 67H,66H = MA 7 DOAN (CHUC GIO - GIO / CHUC NGAY - NGAY).
; 65H = MA DAU CACH THOI GIAN.
; 64H,63H = MA 7 DOAN (CHUC PHUT - PHUT / CHUC THANG - THANG).
; 62H = MA DAU CACH THOI GIAN.
; 61H,60H = MA 7 DOAN (CHUC GIAY - GIAY / CHUC NAM - NAM).
;***************************************************
BCD8TO7SEG_CLOCK:
PUSH DPH ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH DPL
PUSH ACC

MOV DPTR,#CODE7SEG ;DIA CHI VUNG MA 7 DOAN
MOV R7,#0AAH ;VI TRI MA CUA HAI DAU CACH THOI GIAN TRONG BANG MA
MOV A,R4 ;LAY SO BCD CAN GIAI MA
ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 60H,A ;CAT BCD HANG GIAY / NAM VAO O NHO
MOV A,R4 ;LAY SO BCD CAN GIAI MA
ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 61H,A ;CAT BCD HANG CHUC GIAY / CHUC NAM VAO O NHO
MOV A,R5 ;LAY SO BCD CAN GIAI MA
ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 63H,A ;CAT BCD HANG PHUT / THANG VAO O NHO
MOV A,R5 ;LAY SO BCD CAN GIAI MA
ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG

MOV 64H,A ;CAT BCD HANG CHUC PHUT / CHUC THANG VAO O NHO
MOV A,R6 ;LAY SO BCD CAN GIAI MA
ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 66H,A ;CAT BCD HANG GIO / NGAY VAO O NHO
MOV A,R6 ;LAY SO BCD CAN GIAI MA
ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 67H,A ;CAT BCD HANG CHUC GIO / CHUC NGAY VAO O NHO
MOV A,R7 ;LAY SO BCD CAN GIAI MA
ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 62H,A ;CAT DAU CACH HANG PHUT VA GIAY VAO O NHO
MOV A,R7 ;LAY SO BCD CAN GIAI MA
ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 65H,A ;CAT DAU CACH HANG GIO VA PHUT VAO O NHO
POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP DPL
POP DPH
RET
;***************************************************
CODE7SEG: ;VUNG CHUA MA 7 DOAN (0 -> 9)
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;SO 0 -> 9
DB 0BFH ;DAU CACH THOI GIAN
;***************************************************
;CTC QUET HIEN THI LED 7 DOAN (8 LED 7 DOAN).
;***************************************************

;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG O NHO CUA RAM.
;***************************************************
;NAME: DISP7SEGMUL8.
;INPUT: 67H,66H = MA 7 DOAN (CH TRIEU - TRIEU).
; 65H,64H = MA 7 DOAN (TR NGAN - CH NGAN).
; 63H,62H = MA 7 DOAN (NGAN - TRAM).
; 61H,60H = MA 7 DOAN (CHUC - DON VI).
;OUTPUT: P1 = 7 DOAN LED - DP (MSB) -> A (LSB).
S. HỆ THỐNG ĐIỀU KHIỂN RTC (REAL TIME CLOCK).
Bài 1: Chương trình điều khiển RTC DS12C887 hiển thị thời gian HH-MM-SS (giá trị ban đầu là 23-59-00)
trên bộ hiển thị LED 7 đoạn (RTC giao tiếp với vi điều khiển theo kiếu RAM ngoài).
Giáo trình thực hành vi xử lý. 6 Biên soạn: Phạm Quang Trí
; P2 = CHON LED - LEFT (MSD) -> RIGHT (LSD).
;***************************************************
DISP7SEGMUL8:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#7FH ;MA QUET
MOV R0,#67H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P1,@R0 ;XUAT MA HIEN THI
MOV P2,A ;XUAT MA QUET
LCALL DELAYLED
MOV P2,#0FFH ;CHONG LEM
DEC R0 ;LAY MA HIEN THI KE TIEP
RR A ;CHUYEN SANG LED KE TIEP
CJNE R0,#5FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP ACC

RET
;****************************************************
DELAYLED: ;CTC TAO THOI GIAN TRE 2.5MS
PUSH 00H
PUSH 01H
MOV R1,#5
DEL:
MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
END
1.4 Lưu chương trình và biên dịch chương trình.
1.5 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.
1.6 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt động.
1.7 Nạp chương trình vào vi điều khiển.
1.8 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.
1.9 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 3)

S. HỆ THỐNG ĐIỀU KHIỂN RTC (REAL TIME CLOCK).
Bài 2: Chương trình điều khiển RTC DS12C887 hiển thị thời gian HH-MM-SS (giá trị ban đầu là 23-59-00) và
DD-MM-YY (giá trị ban đầu là 28-02-06) trên bộ hiển thị LED 7 đoạn (RTC giao tiếp với vi điều khiển
theo kiếu RAM ngoài).

Giáo trình thực hành vi xử lý. 7 Biên soạn: Phạm Quang Trí
1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Sơ đồ nguyên lý của hệ thống:
• Sơ đồ nguyên lý của hệ thống tương tự như Bài 1.
1.3 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN RTC DS12C887 HIEN THI THOI GIAN HMS (23-59-00) VA DMY (28-02-06)
;TREN BO HIEN THI LED 7 DOAN (RTC GIAO TIEP KIEU RAM NGOAI VOI 89C51).
;***************************************************
;KET NOI: 8 LED -> PORT1
; SEL LED -> PORT2
; RTC BUS -> PORT0 (CHE DO RAM NGOAI)
; RESET, CS, AS, DS, RD/WR -> VCC(40), GND(20), ALE(30), RD(17), WR(16)
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI INT, CA, ACTIVE = 0
;***************************************************
;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
REGDATE EQU 07H ;THANH GHI NGAY
REGMONTH EQU 08H ;THANH GHI THANG
REGYEAR EQU 09H ;THANH GHI NAM
HOUR EQU 23H ;GIA TRI DAT CHO THOI GIAN HH-MM-SS = 23-59-00
MIN EQU 59H ;
SEC EQU 00H ;

DATE EQU 28H ;GIA TRI DAT CHO THOI GIAN DD-MM-YY = 28-02-06
MONTH EQU 02H ;
YEAR EQU 06H ;
;***************************************************
ORG 00H
SJMP MAIN
ORG 30H
MAIN:
MOV SP,#6FH ;VUNG NHO NGAN XEP 70H -> 7FH
ACALL SET_RTC ;KHOI DONG RTC
ACALL WRITE_HMS ;NAP THOI GIAN BAN DAU HH-MM-SS
ACALL WRITE_DMY ;NAP THOI GIAN BAN DAU DD-MM-YY
MP1:
ACALL DELAY_SCAN_HMS ;XU LY DOC - GIAI MA - DELAY - QUET HIEN THI GIA TRI HH-MM-SS
ACALL DELAY_SCAN_DMY ;XU LY DOC - GIAI MA - DELAY - QUET HIEN THI GIA TRI DD-MM-YY
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
MOVX @R0,A ;GHI VAO RTC
POP ACC
POP 00H
RET
;***************************************************

WRITE_HMS: ;CTC NAP GIA TRI THOI GIAN BAN DAU VAO RTC -> 23:59:00 (TU QUI DINH)
PUSH 00H
PUSH ACC
MOV R0,#REGSEC ;DIA CHI THANH GHI GIAY
MOV A,#SEC ;LAY GIA TRI DA QUI DINH
S. HỆ THỐNG ĐIỀU KHIỂN RTC (REAL TIME CLOCK).
Bài 2: Chương trình điều khiển RTC DS12C887 hiển thị thời gian HH-MM-SS (giá trị ban đầu là 23-59-00) và
DD-MM-YY (giá trị ban đầu là 28-02-06) trên bộ hiển thị LED 7 đoạn (RTC giao tiếp với vi điều khiển
theo kiếu RAM ngoài).
Giáo trình thực hành vi xử lý. 8 Biên soạn: Phạm Quang Trí
MOVX @R0,A ;GHI VAO RTC
MOV R0,#REGMIN ;DIA CHI THANH GHI PHUT
MOV A,#MIN ;LAY GIA TRI DA QUI DINH
MOVX @R0,A ;GHI VAO RTC
MOV R0,#REGHOUR ;DIA CHI THANH GHI GI0
MOV A,#HOUR ;LAY GIA TRI DA QUI DINH
MOVX @R0,A ;GHI VAO RTC
POP ACC
POP 00H
;***************************************************
WRITE_DMY: ;CTC NAP GIA TRI THOI GIAN BAN DAU VAO RTC -> 28-02-06 (TU QUI DINH)
PUSH 00H
PUSH ACC
MOV R0,#REGYEAR ;DIA CHI THANH GHI NAM
MOV A,#YEAR ;LAY GIA TRI DA QUI DINH
MOVX @R0,A ;GHI VAO RTC
MOV R0,#REGMONTH ;DIA CHI THANH GHI THANG
MOV A,#MONTH ;LAY GIA TRI DA QUI DINH
MOVX @R0,A ;GHI VAO RTC
MOV R0,#REGDATE ;DIA CHI THANH GHI NGAY

MOV A,#DATE ;LAY GIA TRI DA QUI DINH
MOVX @R0,A ;GHI VAO RTC
POP ACC
POP 00H
RET
;***************************************************
READ_HMS: ;CTC DOC GIA TRI THOI GIAN GIO-PHUT-GIAY TU RTC
PUSH 00H
PUSH ACC
MOV R0,#REGSEC ;DIA CHI THANH GHI GIAY
MOVX A,@R0 ;DOC TU RTC
MOV R4,A ;CAT VAO VUNG NHO (R4) DUNG DE HIEN THI LEN MAN HINH LED
MOV R0,#REGMIN ;DIA CHI THANH GHI PHUT
MOVX A,@R0 ;DOC TU RTC
MOV R5,A ;CAT VAO VUNG NHO (R5) DUNG DE HIEN THI LEN MAN HINH LED
MOV R0,#REGHOUR ;DIA CHI THANH GHI GIO
MOVX A,@R0 ;DOC TU RTC
MOV R6,A ;CAT VAO VUNG NHO (R6) DUNG DE HIEN THI LEN MAN HINH LED
POP ACC
POP 00H
RET
;***************************************************
READ_DMY: ;CTC DOC GIA TRI THOI GIAN NGAY-THANG-NAM TU RTC
PUSH 00H
PUSH ACC
MOV R0,#REGYEAR ;DIA CHI THANH GHI NAM
MOVX A,@R0 ;DOC TU RTC
MOV R4,A ;CAT VAO VUNG NHO (R4) DUNG DE HIEN THI LEN MAN HINH LED
MOV R0,#REGMONTH ;DIA CHI THANH GHI THANG
MOVX A,@R0 ;DOC TU RTC

MOV R5,A ;CAT VAO VUNG NHO (R5) DUNG DE HIEN THI LEN MAN HINH LED
MOV R0,#REGDATE ;DIA CHI THANH GHI NGAY
MOVX A,@R0 ;DOC TU RTC
MOV R6,A ;CAT VAO VUNG NHO (R6) DUNG DE HIEN THI LEN MAN HINH LED
POP ACC
POP 00H
RET
;****************************************************
;CTC GIAI MA TU SO BCD NEN SANG MA 7 DOAN (4 SO BCD NEN) DUNG CHO HIEN THI DONG HO.
;***************************************************
;LED: ANODE CHUNG, 7 DOAN: DP (MSB) -> A (LSB)
;GIA TRI GIAI MA: 0 -> 9
;***************************************************
;NAME: BCD8TO7SEG_CLOCK.
;INPUT: R7 = DAU CACH THOI GIAN (NAP SAN TRONG CTC)
; R6 = SO BCD NEN (CHUC GIO - GIO / CHUC NGAY - NGAY).
; R5 = SO BCD NEN (CHUC PHUT - PHUT / CHUC THANG - THANG).
S. HỆ THỐNG ĐIỀU KHIỂN RTC (REAL TIME CLOCK).
Bài 2: Chương trình điều khiển RTC DS12C887 hiển thị thời gian HH-MM-SS (giá trị ban đầu là 23-59-00) và
DD-MM-YY (giá trị ban đầu là 28-02-06) trên bộ hiển thị LED 7 đoạn (RTC giao tiếp với vi điều khiển
theo kiếu RAM ngoài).
Giáo trình thực hành vi xử lý. 9 Biên soạn: Phạm Quang Trí
; R4 = SO BCD NEN (CHUC GIAY - GIAY / CHUC NAM - NAM).
;OUTPUT: 67H,66H = MA 7 DOAN (CHUC GIO - GIO / CHUC NGAY - NGAY).
; 65H = MA DAU CACH THOI GIAN.
; 64H,63H = MA 7 DOAN (CHUC PHUT - PHUT / CHUC THANG - THANG).
; 62H = MA DAU CACH THOI GIAN.
; 61H,60H = MA 7 DOAN (CHUC GIAY - GIAY / CHUC NAM - NAM).
;***************************************************
BCD8TO7SEG_CLOCK:

PUSH DPH ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH DPL
PUSH ACC
MOV DPTR,#CODE7SEG ;DIA CHI VUNG MA 7 DOAN
MOV R7,#0AAH ;VI TRI MA CUA HAI DAU CACH THOI GIAN TRONG BANG MA
MOV A,R4 ;LAY SO BCD CAN GIAI MA
ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 60H,A ;CAT BCD HANG GIAY / NAM VAO O NHO
MOV A,R4 ;LAY SO BCD CAN GIAI MA
ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 61H,A ;CAT BCD HANG CHUC GIAY / CHUC NAM VAO O NHO
MOV A,R5 ;LAY SO BCD CAN GIAI MA
ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 63H,A ;CAT BCD HANG PHUT / THANG VAO O NHO
MOV A,R5 ;LAY SO BCD CAN GIAI MA
ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 64H,A ;CAT BCD HANG CHUC PHUT / CHUC THANG VAO O NHO
MOV A,R6 ;LAY SO BCD CAN GIAI MA
ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 66H,A ;CAT BCD HANG GIO / NGAY VAO O NHO
MOV A,R6 ;LAY SO BCD CAN GIAI MA
ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP

MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 67H,A ;CAT BCD HANG CHUC GIO / CHUC NGAY VAO O NHO
MOV A,R7 ;LAY SO BCD CAN GIAI MA
ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 62H,A ;CAT DAU CACH HANG PHUT VA GIAY VAO O NHO
MOV A,R7 ;LAY SO BCD CAN GIAI MA
ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 65H,A ;CAT DAU CACH HANG GIO VA PHUT VAO O NHO
POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP DPL
POP DPH
RET
;***************************************************
CODE7SEG: ;VUNG CHUA MA 7 DOAN (0 -> 9)
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;SO 0 -> 9
DB 0BFH ;DAU CACH THOI GIAN
;****************************************************
DELAY_SCAN_HMS: ;CTC TAO THOI GIAN TRE >> 10S CO GOI CTC DOC - GIAI MA - QUET HIEN THI
PUSH 00H
MOV R0,#200
MOV TMOD,#01H
LOOP_HMS:
MOV TH0,#HIGH(-50000)
MOV TL0,#LOW(-50000)
SETB TR0
SCAN_HMS: ;LIEN TUC GOI CTC DOC - GIAI MA - QUET HIEN THI TRONG LUC TIMER DANG CHAY
S. HỆ THỐNG ĐIỀU KHIỂN RTC (REAL TIME CLOCK).

Bài 2: Chương trình điều khiển RTC DS12C887 hiển thị thời gian HH-MM-SS (giá trị ban đầu là 23-59-00) và
DD-MM-YY (giá trị ban đầu là 28-02-06) trên bộ hiển thị LED 7 đoạn (RTC giao tiếp với vi điều khiển
theo kiếu RAM ngoài).
Giáo trình thực hành vi xử lý. 10 Biên soạn: Phạm Quang Trí
ACALL READ_HMS ;DOC GIA TRI THOI GIAN HH-MM-SS TU RTC
ACALL BCD8TO7SEG_CLOCK ;GIAI MA BCD SANG MA 7 DOAN (DUNG CHO DONG HO)
ACALL DISP7SEGMUL8 ;GOI CTC QUET HIEN THI
JNB TF0,SCAN_HMS
CLR TR0
CLR TF0
DJNZ R0,LOOP_HMS
POP 00H
RET
;***************************************************
DELAY_SCAN_DMY: ;CTC TAO THOI GIAN TRE >> 6S CO GOI CTC DOC - GIAI MA - QUET HIEN THI
PUSH 00H
MOV R0,#200
MOV TMOD,#01H
LOOP_DMY:
MOV TH0,#HIGH(-30000)
MOV TL0,#LOW(-30000)
SETB TR0
SCAN_DMY: ;LIEN TUC GOI CTC DOC - GIAI MA - QUET HIEN THI TRONG LUC TIMER DANG CHAY
ACALL READ_DMY ;DOC GIA TRI THOI GIAN DD-MM-YY TU RTC
ACALL BCD8TO7SEG_CLOCK ;GIAI MA BCD SANG MA 7 DOAN (DUNG CHO DONG HO)
ACALL DISP7SEGMUL8 ;GOI CTC QUET HIEN THI
JNB TF0,SCAN_DMY
CLR TR0
CLR TF0
DJNZ R0,LOOP_DMY

POP 00H
RET
;***************************************************
;CTC QUET HIEN THI LED 7 DOAN (8 LED 7 DOAN).
;***************************************************
;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG O NHO CUA RAM.
;***************************************************
;NAME: DISP7SEGMUL8.
;INPUT: 67H,66H = MA 7 DOAN (CH TRIEU - TRIEU).
; 65H,64H = MA 7 DOAN (TR NGAN - CH NGAN).
; 63H,62H = MA 7 DOAN (NGAN - TRAM).
; 61H,60H = MA 7 DOAN (CHUC - DON VI).
;OUTPUT: P1 = 7 DOAN LED - DP (MSB) -> A (LSB).
; P2 = CHON LED - LEFT (MSD) -> RIGHT (LSD).
;***************************************************
DISP7SEGMUL8:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#7FH ;MA QUET
MOV R0,#67H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P1,@R0 ;XUAT MA HIEN THI
MOV P2,A ;XUAT MA QUET
LCALL DELAYLED
MOV P2,#0FFH ;CHONG LEM
DEC R0 ;LAY MA HIEN THI KE TIEP
RR A ;CHUYEN SANG LED KE TIEP
CJNE R0,#5FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI

POP ACC
RET
;****************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS
PUSH 00H
PUSH 01H
MOV R1,#5
DEL:
MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
S. HỆ THỐNG ĐIỀU KHIỂN RTC (REAL TIME CLOCK).
Bài 2: Chương trình điều khiển RTC DS12C887 hiển thị thời gian HH-MM-SS (giá trị ban đầu là 23-59-00) và
DD-MM-YY (giá trị ban đầu là 28-02-06) trên bộ hiển thị LED 7 đoạn (RTC giao tiếp với vi điều khiển
theo kiếu RAM ngoài).
Giáo trình thực hành vi xử lý. 11 Biên soạn: Phạm Quang Trí
POP 01H
POP 00H
RET
END
1.4 Lưu chương trình và biên dịch chương trình.
1.5 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.
1.6 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt động.
1.7 Nạp chương trình vào vi điều khiển.
1.8 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.
1.9 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.
2 Bài tập:

(xem thêm trong phần hướng dẫn và phần bài tập của Bài 3)


S. HỆ THỐNG ĐIỀU KHIỂN RTC (REAL TIME CLOCK).
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).
Giáo trình thực hành vi xử lý. 12 Biên soạn: Phạm Quang Trí
1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J146 (ADD/DATA BUS) ở khối RTC.
• Dùng dây bus 8 nối J64 (PORT1) ở khối vi điều khiển với J4 (7SEG IN MUL) ở khối LED 7 đoạn.
• Dùng bốn dây bus 8 nối J5 (7SEG7 IN), J6 (7SEG6 IN), J7 (7SEG5 IN) và J8 (7SEG4 IN) ở khối LED 7
đoạn với J4 (7SEG IN MUL) ở khối LED 7 đoạn (ta nối chung các bus này lại với nhau thông qua khối
mở rộng).
• Dùng dây bus 8 nối J65 (PORT2 / ADDRESS) ở khối vi điều khiển với J2 (SEL LED IN) ở khối LED 7
đoạn.
• Dùng dây bus 2 nối J148 (WRITE/READ) ở khối RTC với J66 (PORT3/FUNCTION) ở khối vi điều khiển
(chú ý là ta chỉ nối 2 bit cao (P3.6 – RD\ và P3.7 – WR\) của J66 và J148 với nhau).
• Dùng dây bus 1 nối J150 (CTRL. P-RTC) ở khối RTC với J34 (SWITCH) ở khối công tắc và gạt công tắc
tương ứng ở vị trí OFF (vị trí +5V) (chú ý là ta chỉ nối chân RST\ của J150 và J34 với nhau).
• Dùng dây bus 1 nối J150 (CTRL. P-RTC) ở khối RTC với chân 30 – ALE của 89C51 (SOCKET 40PIN) ở
khối vi điều khiển (chú ý là ta chỉ nối chân ALE của J150 và chân 30 của 89C51).
• Dùng dây bus 2 nối J490 (CS RTC) ở khối RTC với J34 (SWITCH) ở khối công tắc và gạt hai công tắc
tương ứng ở vị trí ON (vị trí GND).
• Dùng dây bus 3 nối J76 (MONOENTARY SW) ở khối nút nhấn với J66 (PORT3/FUNCTION) ở khối vi
điều khiển (chú ý là ta chỉ nối 3 bit thấp của J76 và J66 với nhau).
• Dùng ba dây bus 3 nối J110 (POWER) ở khối LED 7 đoạn, J76 (POWER) ở khối nút nhấn và J147
(POWER) ở khối RTC với nguồn +5V ở khối nguồn.

WRITE
READ
CTRL.
S-RTC
CTRL.
P-RTC
POWER
CS
RTC
ADD/DATA
BUS
PORT 0PORT 1PORT 3PORT 2
PORT 1PORT 3
40 PINS
20 PINS
3
8
3
MOMENTARY
SW
POWER
3

1.2 Sơ đồ nguyên lý của hệ thống:

1.3 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN RTC DS12C887 HIEN THI THOI GIAN,CO THE DIEU CHINH THOI GIAN
;TREN BO HIEN THI LED 7 DOAN (RTC GIAO TIEP KIEU RAM NGOAI VOI 89C51).
;***************************************************

;KET NOI: 8 LED -> PORT1
; SEL LED -> PORT2
; RTC BUS -> PORT0 (CHE DO RAM NGOAI)
; RESET, CS, AS, DS, RD/WR -> VCC(40), GND(20), ALE(30), RD(17), WR(16)
; MODE, INC, DEC (BUTTON) -> P3.0 - P3.2
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI INT, CA, ACTIVE = 0
;***************************************************
;DINH NGHIA CAC THONG SO
;***************************************************
REGA EQU 0AH ;THANH GHI A
REGB EQU 0BH ;THANH GHI B
REGSEC EQU 00H ;THANH GHI GIAY
S. HỆ THỐNG ĐIỀU KHIỂN RTC (REAL TIME CLOCK).
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).
Giáo trình thực hành vi xử lý. 13 Biên soạn: Phạm Quang Trí
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
MOVX @R0,A ;GHI VAO RTC
POP ACC
POP 00H
RET
;***************************************************
WRITE_HMS: ;CTC NAP GIA TRI THOI GIAN VAO RTC
PUSH 00H
PUSH ACC
MOV R0,#REGSEC ;DIA CHI THANH GHI GIAY
MOV A,SEC ;LAY GIA TRI DA QUI DINH
MOVX @R0,A ;GHI VAO RTC

MOV R0,#REGMIN ;DIA CHI THANH GHI PHUT
MOV A,MIN ;LAY GIA TRI DA QUI DINH
MOVX @R0,A ;GHI VAO RTC
MOV R0,#REGHOUR ;DIA CHI THANH GHI GI0
MOV A,HOUR ;LAY GIA TRI DA QUI DINH
MOVX @R0,A ;GHI VAO RTC
POP ACC
POP 00H
RET
;***************************************************
READ_HMS: ;CTC DOC GIA TRI THOI GIAN TU RTC
PUSH 00H
PUSH ACC
MOV R0,#REGSEC ;DIA CHI THANH GHI GIAY
MOVX A,@R0 ;DOC TU RTC
MOV R4,A ;CAT VAO VUNG NHO (R4) DUNG DE HIEN THI LEN MAN HINH LED
MOV R0,#REGMIN ;DIA CHI THANH GHI PHUT
MOVX A,@R0 ;DOC TU RTC
MOV R5,A ;CAT VAO VUNG NHO (R5) DUNG DE HIEN THI LEN MAN HINH LED
MOV R0,#REGHOUR ;DIA CHI THANH GHI GIO
MOVX A,@R0 ;DOC TU RTC
MOV R6,A ;CAT VAO VUNG NHO (R6) DUNG DE HIEN THI LEN MAN HINH LED
POP ACC
POP 00H
S. HỆ THỐNG ĐIỀU KHIỂN RTC (REAL TIME CLOCK).
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).
Giáo trình thực hành vi xử lý. 14 Biên soạn: Phạm Quang Trí
RET

;****************************************************
KEYPRESSED: ;CTC XU LY CAC NUT CHUC NANG
PUSH 00H
ACALL DELAYCHONGDOI ;CHONG DOI KHI NHAN NUT MODE
JNB MODE_KEY,KEYPRESSED ;KIEM TRA NUT MODE DA DUOC NHA? - CHUA -> KIEM TRA LAI
ACALL DELAYCHONGDOI ;CHONG DOI KHI NHA NUT MODE
MOV R0,#04H ;DUA GAI TRI CUA LED SECOND (R4) VAO DE XU LY
ACALL PROCESS_KEYPRESSED ;XU LY TANG/GIAM GIA TRI LED SECOND
MOV R0,#05H ;DUA GAI TRI CUA LED MINUTE (R5) VAO DE XU LY
ACALL PROCESS_KEYPRESSED ;XU LY TANG/GIAM GIA TRI LED MINUTE
MOV R0,#06H ;DUA GAI TRI CUA LED HOUR (R6) VAO DE XU LY
ACALL PROCESS_KEYPRESSED ;XU LY TANG/GIAM GIA TRI LED HOUR
POP 00H
RET
;****************************************************
PROCESS_KEYPRESSED: ;CTC XU LY KHI NHAN NUT - R0: DIA CHI THANH GHI CHUA GIA TRI THOI GIAN (R4,R5,R6)
PUSH 07H ;BIEN CHUA THOI GIAN TINH CUA SANG VA TAT LED DUOC CHON
PUSH 06H ;BIEN CHUA SO LAN SANG TAT CUA LED DUOC CHON
PUSH 50H ;O NHO TAM THOI
MOV R7,#200 ;GIA TRI LAP LAI (THOI GIAN) TRANG THAI TINH (SANG HOAC TAT) CUA LED
MOV R6,#10 ;GIA TRI LAP LAI QUA TRINH SANG - TAT CAC LED DUOC CHON
LOOP_ONOFF: ;VONG LAP CUA 1 TRANG THAI SANG - TAT
MOV 50H,@R0 ;CAT TAM GIA TRI THOI GIAN CAN DIEU CHINH
MOV @R0,#12H ;NAP MA LAM TAT LED VAO O NHO CHUA GIA TRI THOI GIAN DANG XU LY
LOOP_OFF: ;VONG LAP CUA THOI GIAN LAM TAT LED DANG DIEU CHINH
ACALL BCD8TO7SEG_CLOCK ;GIAI MA BCD SANG MA 7 DOAN (DUNG CHO DONG HO)
ACALL DISP7SEGMUL8 ;QUET HIEN THI
DJNZ R7,LOOP_OFF ;GIAM THOI GIAN TINH CUA LED DANG TAT
MOV R7,#200 ;GIA TRI LAP LAI (THOI GIAN) TRANG THAI TINH (SANG HOAC TAT)CUA LED
MOV @R0,50H ;TRA VE GIA TRI THOI GIAN DA CAT TAM

LOOP_ON: ;VONG LAP CUA THOI GIAN LAM SANG LED DANG DIEU CHINH
ACALL BCD8TO7SEG_CLOCK ;GIAI MA BCD SANG MA 7 DOAN (DUNG CHO DONG HO)
ACALL DISP7SEGMUL8 ;QUET HIEN THI
JNB INC_KEY,INC_PRESS ;KIEM TRA NUT INC DUOC NHAN? - NHAN -> TOI CHUONG TRINH XU LY
JNB DEC_KEY,DEC_PRESS ;KIEM TRA NUT DEC DUOC NHAN? - NHAN -> TOI CHUONG TRINH XU LY
JNB MODE_KEY,MODE_PRESS ;KIEM TRA NUT MODE DUOC NHAN? - NHAN -> TOI CHUONG TRINH XU LY
SJMP NO_KEY ;NHAY KIEM TRA LAP LAI KHI KHONG CO NUT NAO DUOC NHAN
INC_PRESS:
INC @R0 ;TANG GIA TRI THOI GIAN
CHONGDOI_INC:
ACALL DELAYCHONGDOI ;CHONG DOI KHI NHAN NUT INC
JNB INC_KEY,CHONGDOI_INC ;CHO CHO DEN KHI NUT INC DUOC NHA RA
ACALL DELAYCHONGDOI ;CHONG DOI KHI NHA NUT INC
MOV R7,#200 ;NAP LAI THOI GIAN TINH CUA LED DANG SANG VI CO NHAN NUT INC
MOV R6,#10 ;NAP LAI SO LAN SANG - TAT CUA LED VI CO NHAN NUT INC
SJMP LOOP_ON ;NHAY KIEM TRA LAP LAI SAU KHI DA XU LY NUT INC
DEC_PRESS:
DEC @R0 ;GIAM GIA TRI THOI GIAN
CHONGDOI_DEC:
ACALL DELAYCHONGDOI ;CHONG DOI KHI NHAN NUT DEC
JNB DEC_KEY,CHONGDOI_DEC ;CHO CHO DEN KHI NUT DEC DUOC NHA RA
ACALL DELAYCHONGDOI ;CHONG DOI KHI NHA NUT DEC
MOV R7,#200 ;NAP LAI THOI GIAN TINH CUA LED DANG SANG VI CO NHAN NUT DEC
MOV R6,#10 ;NAP LAI SO LAN SANG - TAT CUA LED VI CO NHAN NUT DEC
SJMP LOOP_ON ;NHAY KIEM TRA LAP LAI SAU KHI DA XU LY NUT DEC
MODE_PRESS:
ACALL DELAYCHONGDOI ;CHONG DOI KHI NHAN NUT MODE
JNB MODE_KEY,MODE_PRESS ;CHO CHO DEN KHI NUT MODE DUOC NHA RA
ACALL DELAYCHONGDOI ;CHONG DOI KHI NHAN NUT MODE
SJMP EXIT_PROCESS ;NHAY THOAT RA KHI NUT MODE DUOC NHAN LAN NUA

NO_KEY:
DJNZ R7,LOOP_ON ;GIAM THOI GIAN TINH CUA LED DANG SANG
DJNZ R6,LOOP_ONOFF ;GIAM SO LAN LED DA SANG - TAT
EXIT_PROCESS: ;THOAT XU LY NUT NHAN
POP 50H
POP 06H
S. HỆ THỐNG ĐIỀU KHIỂN RTC (REAL TIME CLOCK).
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).
Giáo trình thực hành vi xử lý. 15 Biên soạn: Phạm Quang Trí
POP 07H
RET
;****************************************************
;CTC GIAI MA TU SO BCD NEN SANG MA 7 DOAN (4 SO BCD NEN) DUNG CHO HIEN THI DONG HO.
;***************************************************
;LED: ANODE CHUNG, 7 DOAN: DP (MSB) -> A (LSB)
;GIA TRI GIAI MA: 0 -> 9
;***************************************************
;NAME: BCD8TO7SEG_CLOCK.
;INPUT: R7 = DAU CACH THOI GIAN (NAP SAN TRONG CTC)
; R6 = SO BCD NEN (CHUC GIO - GIO / CHUC NGAY - NGAY).
; R5 = SO BCD NEN (CHUC PHUT - PHUT / CHUC THANG - THANG).
; R4 = SO BCD NEN (CHUC GIAY - GIAY / CHUC NAM - NAM).
;OUTPUT: 67H,66H = MA 7 DOAN (CHUC GIO - GIO / CHUC NGAY - NGAY).
; 65H = MA DAU CACH THOI GIAN.
; 64H,63H = MA 7 DOAN (CHUC PHUT - PHUT / CHUC THANG - THANG).
; 62H = MA DAU CACH THOI GIAN.
; 61H,60H = MA 7 DOAN (CHUC GIAY - GIAY / CHUC NAM - NAM).
;***************************************************

BCD8TO7SEG_CLOCK:
PUSH DPH ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH DPL
PUSH ACC

MOV DPTR,#CODE7SEG ;DIA CHI VUNG MA 7 DOAN
MOV R7,#0AAH ;VI TRI MA CUA HAI DAU CACH THOI GIAN TRONG BANG MA
MOV A,R4 ;LAY SO BCD CAN GIAI MA
ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 60H,A ;CAT BCD HANG GIAY / NAM VAO O NHO
MOV A,R4 ;LAY SO BCD CAN GIAI MA
ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 61H,A ;CAT BCD HANG CHUC GIAY / CHUC NAM VAO O NHO
MOV A,R5 ;LAY SO BCD CAN GIAI MA
ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 63H,A ;CAT BCD HANG PHUT / THANG VAO O NHO
MOV A,R5 ;LAY SO BCD CAN GIAI MA
ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 64H,A ;CAT BCD HANG CHUC PHUT / CHUC THANG VAO O NHO
MOV A,R6 ;LAY SO BCD CAN GIAI MA
ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 66H,A ;CAT BCD HANG GIO / NGAY VAO O NHO
MOV A,R6 ;LAY SO BCD CAN GIAI MA

ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 67H,A ;CAT BCD HANG CHUC GIO / CHUC NGAY VAO O NHO
MOV A,R7 ;LAY SO BCD CAN GIAI MA
ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 62H,A ;CAT DAU CACH HANG PHUT VA GIAY VAO O NHO
MOV A,R7 ;LAY SO BCD CAN GIAI MA
ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 65H,A ;CAT DAU CACH HANG GIO VA PHUT VAO O NHO
POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP DPL
POP DPH
RET
;***************************************************
S. HỆ THỐNG ĐIỀU KHIỂN RTC (REAL TIME CLOCK).
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).
Giáo trình thực hành vi xử lý. 16 Biên soạn: Phạm Quang Trí
CODE7SEG: ;VUNG CHUA MA 7 DOAN (0 -> 9)
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;SO 0 -> 9
DB 0BFH ;DAU CACH THOI GIAN
DB 0FFH ;MA LAM TAT CAC LED
;***************************************************
;CTC QUET HIEN THI LED 7 DOAN (8 LED 7 DOAN).
;***************************************************

;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG O NHO CUA RAM.
;***************************************************
;NAME: DISP7SEGMUL8.
;INPUT: 67H,66H = MA 7 DOAN (CH TRIEU - TRIEU).
; 65H,64H = MA 7 DOAN (TR NGAN - CH NGAN).
; 63H,62H = MA 7 DOAN (NGAN - TRAM).
; 61H,60H = MA 7 DOAN (CHUC - DON VI).
;OUTPUT: P1 = 7 DOAN LED - DP (MSB) -> A (LSB).
; P2 = CHON LED - LEFT (MSD) -> RIGHT (LSD).
;***************************************************
DISP7SEGMUL8:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#7FH ;MA QUET
MOV R0,#67H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P1,@R0 ;XUAT MA HIEN THI
MOV P2,A ;XUAT MA QUET
LCALL DELAYLED
MOV P2,#0FFH ;CHONG LEM
DEC R0 ;LAY MA HIEN THI KE TIEP
RR A ;CHUYEN SANG LED KE TIEP
CJNE R0,#5FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP ACC
RET
;****************************************************
DELAYLED: ;CTC TAO THOI GIAN TRE 2.5MS
PUSH 00H

PUSH 01H
MOV R1,#5
DEL:
MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
;****************************************************
DELAYCHONGDOI: ;CTC TAO THOI GIAN TRE 1MS DUNG DE CHONG DOI
PUSH 00H
PUSH 01H
MOV R1,#10
DEL1:
MOV R0,#50
DEL2:
ACALL BCD8TO7SEG_CLOCK ;GIAI MA BCD SANG MA 7 DOAN (DUNG CHO DONG HO)
ACALL DISP7SEGMUL8 ;QUET HIEN THI
DJNZ R0,DEL2
DJNZ R1,DEL1
POP 01H
POP 00H
RET
END
1.4 Lưu chương trình và biên dịch chương trình.
1.5 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.
1.6 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt động.
S. HỆ THỐNG ĐIỀU KHIỂN RTC (REAL TIME CLOCK).

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).
Giáo trình thực hành vi xử lý. 17 Biên soạn: Phạm Quang Trí
1.7 Nạp chương trình vào vi điều khiển.
1.8 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.
1.9 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển RTC DS12C887 hiển thị thời gian HH-MM-SS và DD-MM-YY
trên bộ hiển thị LED 7 đoạn (RTC giao tiếp với vi điều khiển theo kiếu RAM ngoài). Có thể điều chỉnh
thời gian và chuyển đổi hiển thị bằng các nút nhấn MODE, INC, DEC và DATE/TIME .
• Bài 2: Hãy viết chương trình điều khiển RTC DS12C887 hiển thị thời gian HH-MM-SS (thời gian thực) và
HH-MM-SS (thời gian báo thức) trên bộ hiển thị LED 7 đoạn (RTC giao tiếp với vi điều khiển theo kiếu
RAM ngoài). Có thể điều chỉnh thời gian (thực và báo thức) và chuyển đổi hiển thị bằng các nút nhấn
MODE, INC, DEC và TIME/ALARM. Khi đến giờ báo thức thì LED báo thức sẽ chớp tắt liên tục.
• Bài 3: Hãy viết chương trình điều khiển RTC DS12C887 hiển thị thời gian HH-MM-SS, DD-MM-YY
(thời gian thực) và HH-MM-SS, DD-MM-YY (thời gian báo thức) trên bộ hiển thị LED 7 đoạn (RTC giao
tiếp với vi điều khiển theo kiếu RAM ngoài). Có thể điều chỉnh thời gian (thực và báo thức) và chuyển đổi
hiển thị bằng các nút nhấn MODE, INC, DEC, TIME/DATE và TIME/ALARM. Khi đến ngày và giờ báo
thức thì có một LED báo thức sẽ chớp tắt liên tục.
• Bài 4: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

×