Chương2 :Các chương trình phục vụ cho RTC
1. SEND_START (Gửi điều kiện START)
2. SEND_STOP (Gửi điều kiện STOP)
3. SCL_HIGH (đưa SCL lên mức cao)
4. SEND_BYTE (gửi byte vào RTC)
5. READ_BYTE (đọc byte từ RTC)
6. READ_CLOCK (đọc giờ từ RTC)
7. SET_CLOCK (cài đặt giờ RTC)
8. READ_RAM (đọc 56 byte từ RTC)
9. SET_RAM (ghi 56 byte vào RTC)
10. OSC_CONTROL (Điều khiển bộ dao động trong
RTC)
11. SQW_CONTROL_1HZ (xuất xung 1Hz ở chân 7 của RTC)
12. SQW_CONTROL_4KHZ(xuất xung 4.096KHz ở chân 7 của
RTC)
13. SQW_CONTROL_8KHZ(xuất xung 8.192Hz ở chân 7 của
RTC)
14. SQW_CONTROL_32KHZ(xuất xung 32.768Hz ở chân 7 của
RTC)
15. ALARM_TEST (kiểm tra báo thức)
;START CONDITION
SEND_START:
CLR NO_START
JB _2W_BUSY,SEND_START_ERROR
SETB _2W_BUSY
CLR ACK
JNB SCL,SEND_START_ERROR
JNB SDA,SEND_START_ERROR
SETB SDA
LCALL SCL_HIGH
LCALL DELAY
CLR SDA
LCALL DELAY;
CLR SCL
RET
SEND_START_ERROR:
SETB NO_START
RET
;===============================================
;STOP CONDITION
SEND_STOP:
CLR SDA
LCALL SCL_HIGH
LCALL DELAY
SETB SDA
NOP
JNB SDA,$
CLR _2W_BUSY
RET
;================================================
;SEND BYTE
;DUA GIA TRI TRONG THANH GHI A VAO DS1307
SEND_BYTE:
MOV BITCOUNT,#8H
SEND_BYTE_LOOP:
JNB ACC.7,LEVEL_LOW
SETB SDA
AJMP SEND_BITS
LEVEL_LOW:
CLR SDA
SEND_BITS:
; NOP
; NOP
; NOP
LCALL SCL_HIGH
LCALL DELAY
CLR SCL;KET THUC 1 XUNG NHIP
RL A
DJNZ BITCOUNT,SEND_BYTE_LOOP
SETB SDA;CAU HINH DE NHAN XUNG ACK
NOP
LCALL SCL_HIGH
; NOP
; NOP
; NOP
CLR ACK
JNB SDA,SEND_BYTE_COMPLISH
SETB ACK
SEND_BYTE_COMPLISH:
LCALL DELAY
CLR SCL
LCALL DELAY
RET
;=============================================\
;DOC GIA TRI VAO A
READ_BYTE:
MOV BITCOUNT,#8H
MOV A,#00H
SETB SDA
READ_BITS:
LCALL SCL_HIGH
; NOP
; NOP
; NOP
MOV C,SDA
RLC A;DUA SDA VAO THANH GHI A
CLR SCL
; NOP
NOP
; NOP
DJNZ BITCOUNT,READ_BITS
JB LAST_READ,NOT_ACK;NEU LA LAN DOC CUOI
CUNG THI KHONG GUI ACK