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