Các anh có ai biết cách lập trình để giao tiếp với con DS1307 giúp em với. E mới học 8051 và đọc một số tài liệu về giao tiếp I2C, thử lập trình giao tiếp với DS1307 , thiết đặt giây va hiển thị sự thay đổi của nó sau mỗi giây nhưng khi chạy mô phỏng proteus nó không chạy. Có ai biết chỉ e vơi
Dưới đây là chương trình em viết:
Dưới đây là chương trình em viết:
Code:
SCL EQU 90H ; SCL=P1.0
SDA EQU 91H ; SDA=P1.1
ORG 00H
MAIN:
ACALL START ; CHI THI BAT DAU
MOV A,#0D0H ; DAT CHE DO GHI CHO DS1307
ACALL WRITE_READ_ADD
JB SDA,MAIN ; KIEM TRA BIT ack
MOV A,#0 ; GHI DIA CHI 0 VAO A
ACALL WRITE_READ_ADD
JB SDA,MAIN ; KIEM TRA BIT ack
MOV A,#15H ; GHI GIA TRI GIAY 15 VAO O NHO 00H CUA 1307
ACALL WRITE_READ_ADD
JB SDA,MAIN ; KIEM TRA BIT ack
ACALL STOP
LP:
ACALL START
MOV A,#0D0H
ACALL WRITE_READ_ADD
JB SDA,LP
MOV A,#0
ACALL WRITE_READ_ADD
JB SDA,LP
ACALL STOP ; TU NHĂN LP: DEN DAY DE DICH CON TRO DEN Ô NHO 00H CUA 1307
LP1:ACALL START
MOV A,#0D1H ; THIET LAP CHE DO DOC 1307
ACALL WRITE_READ_ADD
JB SDA,LP1 ; KIEM TRA BIT ack
ACALL READ_DATA ; GOI CHUONG TRINH CON DOC BYTE DU LIEU
ACALL STOP ; KET THUC DOC
MOV P2,A ; SAO GIA TRI DOC DC RA P2
SJMP LP ; LAP LAI QUA TRINH DOC O NHO 00H CUA 1307 VA HIEN THI RA P2
;=========================================
START: ;START DS1307
SETB SDA
SETB SCL
CLR SDA ; TAO SUON XUONG TREN SDA DE TAO CHI THI START
RET
;=========================================
STOP: ;STOP DS1307
CLR SDA
SETB SCL
SETB SDA ; TAO SUON LEN TREN SDA DE TAO CHI THI STOP
RET
;==========================================
WRITE_READ_ADD: ;WRITE DS1307
MOV R7,#8
LOOP1:
CLR SCL
JNB ACC.7,CLR_SDA ; NHAY NEU BIT MSB THANH GHI A BANG 0
SETB SDA
SJMP TIEP0
CLR_SDA:
CLR SDA
TIEP0:
SETB SCL ; CHUYEN BIT TREN SDA
RLC A ; QUAY TRAI THANH GHI A
DJNZ R7,LOOP1
CLR SCL ; XOA DE CHO DS1307 PHAN HOI BIT ack NO SE KEO SDA XUONG MUC 0
SETB SCL ; BIT ack TRUYEN DI TREN SDA
RET
;===========================================
READ_DATA:
MOV A,#0 ; DAM BAO KO CO DU LIEU TREN A
MOV R7,#8
LOOP2:
CLR SCL
JNB SDA,CLR_ACC0
SETB ACC.0
SJMP TIEP1
CLR_ACC0:
CLR ACC.0
TIEP1:
SETB SCL
RLC A
DJNZ R7,LOOP2
CLR SCL ; XOA DE THAY DOI TRANG THAI TREN SDA
SETB SDA ; TAO not-bit ack (MUC 1) DE BAO CHO 1307 KET THUC QUA TRINH
SETB SCL ; CHUYEN not-bit ack
RET
;===========================================
END

Comment