Thông báo

Collapse
No announcement yet.

Cần giúp đỡ giao tiếp 8051 với eeprom 24C02

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Cần giúp đỡ giao tiếp 8051 với eeprom 24C02

    Mấy ngày nay loay hoay với con 24c02 này, datasheet thì đọc đi đọc lại nhiều lần mấy cái giản đồ xung cách gửi với nhận của nó.tìm hiểu code trên mạng và viết ra 1 đoạn code như bên dưới.mô phỏng với con 24c02( 24c02C trên proteus) thì không chạy được, nhưng khi mình đổi địa chỉ sang mô phỏng con ds1307 thì lại chạy ok,không hiểu tại sao sao?không biết code của em có bị sai chỗ nào không nữa. có bác nào giao tiếp với con này rồi giúp đỡ cho em với.(Bác nào có code và mô phỏng với con này thì cho em tham khảo được không)

    [code]
    SDA EQU P3.7
    SCL EQU P3.6
    ORG 0000H
    JMP MAIN
    ORG 0030H
    MAIN:
    CALL I2C_INIT
    CALL I2C_START
    MOV A,#0A0H ; DIA CHI SLAVE
    CALL I2C_SEND
    CALL I2C_ACK
    MOV A,#20H ; DIA CHI CAN GUI
    CALL I2C_SEND
    CALL I2C_ACK
    MOV A,#11 ;GIA TRI CAN GUI
    CALL I2C_SEND
    CALL I2C_ACK
    CALL I2C_STOP
    //
    CALL I2C_INIT
    CALL I2C_START
    MOV A,#0A0H
    CALL I2C_SEND
    CALL I2C_ACK
    MOV A,#20H; DIA CHI CAN DOC
    CALL I2C_SEND
    CALL I2C_ACK
    CALL I2C_RSTART
    MOV A,#0A1H
    CALL I2C_SEND
    CALL I2C_ACK
    CALL I2C_RECEIVE
    CALL I2C_NACK
    CALL I2C_STOP
    MOV P1,A
    KT:
    JMP KT
    JMP MAIN

    //--
    I2C_ACK:
    CLR SDA
    SETB SCL
    CLR SCL
    SETB SDA
    RET
    //-
    I2C_NACK:
    SETB SDA
    SETB SCL
    CLR SCL
    SETB SCL
    RET
    ;CAC THIET LAP I2C
    I2C_INIT:
    SETB SDA
    SETB SCL
    RET

    I2C_START:
    SETB SDA
    SETB SCL
    CLR SDA
    RET

    I2C_RSTART:
    CLR SCL
    SETB SDA
    SETB SCL
    CLR SDA
    RET

    I2C_STOP:
    CLR SCL
    CLR SDA
    SETB SCL
    SETB SDA
    RET

    I2C_SEND:
    MOV R7,#08
    LOOP:
    CLR SCL
    RLC A
    MOV SDA,C
    SETB SCL
    DJNZ R7,LOOP
    CLR SCL ;KIEM TRA ACK HOAC NACK
    SETB SDA ;
    SETB SCL ;( doan cho nao van con thac mac chua hieu ho lam gi)
    MOV C,SDA;
    CLR SCL ;
    RET

    I2C_RECEIVE:
    MOV R7,#08
    LOOP1:
    CLR SCL
    MOV C,SDA
    SETB SCL
    RLC A
    DJNZ R7,LOOP1
    CLR SCL
    SETB SDA
    RET
    END
    [/code]

  • #2
    Sau khi goi send tuc la ghi vao 24c02 thi ban nen delay khoan 10ms nhe..good luck

    Comment


    • #3
      Nguyên văn bởi mrlqueen Xem bài viết
      Sau khi goi send tuc la ghi vao 24c02 thi ban nen delay khoan 10ms nhe..good luck
      cảm ơn bạn nhé!
      ukm đúng rồi à,giữa khoảng gửi và nhận phải có một khoảng delay ít nhất là 5ms.mình đã làm được.

      Comment

      Về tác giả

      Collapse

      nho_be Tìm hiểu thêm về nho_be

      Bài viết mới nhất

      Collapse

      Đang tải...
      X