Welcome & Happy Holidays!
Trang 1 của 2 12 CuốiCuối
Kết quả 1 đến 10 của 19
  1. #1
    Ngày tham gia
    May 2016
    Bài viết
    0

    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.
    [ ]

    SDA EQU P3.7
    SCL EQU P3.6
    ORG 0000H
    JMP MAIN
    ORG 0030H
    MAIN:
    I2C_INIT CALL
    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
    //
    I2C_INIT CALL
    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 or 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. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    con này hình như kết nối phần cứng có liên quan đến dịa chỉ của nó đấy bạn, bạn kiểm tra lại.
    Mà bạn chuyển qua C làm chứ ASM thì ít người đủ kiên trì đọc

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Ý bạn nói là có phải 3 chân A0 A1 A2 không,3 chân đó minh chọn nối GND rồi chọn địa chỉ cứng là 0A0H với 0A1H,nhưng vẫn không hoạt động được,không biết có phải là nó có thêm điều kiện gì nữa không

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Code C đi bạn. ASM mình bỏ lâu lắm rồi.

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Mình không có code C à bạn,mình đang làm đồ án(khóa điện tử) và muốn lưu mật khẩu vào con này,phải viết bằng ASM à

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi minhhuelove
    Mình không có code C à bạn,mình đang làm đồ án(khóa điện tử) và muốn lưu mật khẩu vào con này,phải viết bằng ASM à
    Bạn tham khảo ở đây.code viết bàng c,bạn đăng kí để xem đc code.
    Interfacing Serial EEPROM with 8051 Microcontroller (AT89C51)
    Nếu bạn làm cho kịp đồ án thì bỏ tiền túi ra tầm vài triệu là xong.chúc thành công.

  7. #7
    Ngày tham gia
    Mar 2016
    Bài viết
    0
    Mình cảm ơn,đồ án thì mình làm xong rồi,nhưng nó chưa có lưu được mật khẩu khi mất điện,nếu xem con này không được thì mình chuyển sang dùng con DS1307,còn DS1307 thì mình mô phỏng được rồi,vì cũng có đứa làm cùng đề tài và dùng ds1307 rồi nên mình ko muốn làm trùng à

  8. #8
    Ngày tham gia
    May 2016
    Bài viết
    0
    thế code ASM thì khó đó bạn. BẠn bật i2cdebuger lên khiểm tra quá trình giao tiếp có lỗi gì khoonh? nếu mà có nhiều dấu hỏi thì giao tieps có vấn đề

  9. #9
    Ngày tham gia
    Sep 2015
    Đang ở
    http://khothamtraisan.com/tham-gia-re-b2224766.html
    Bài viết
    0
    Bạn xem lại địa chỉ của eeprom của bạn.
    MOV A, # 0D0H; DIA CHI SLAVE
    Địa chỉ để định danh con eeprom bắt đầu la chử A.
    Nếu A0,A1,A2 được nối GND thì địa chỉ định danh thiết bị cho eeprom của bạn la 0xA0
    Bạn lại sử dụng địa chỉ định danh tiết bị của bạn là 0x0D0.

  10. #10
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    MOV A, # 0A0H; DIA CHI SLAVE
    chính xác nó là vậy à,tại mình copy dán nhầm ở trên á,để mình sửa lại ở trên,tại lúc nãy mình chuyển qua mô phỏng cho con DS1307 nên mới dùng MOV A, # 0D0H; DIA CHI SLAVE à

 

 
Trang 1 của 2 12 CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •  
Múi giờ GMT +7. Bây giờ là 05:09 AM. Diễn đàn sử dụng vBulletin® Phiên bản 4.2.5.
Bản quyền của 2024 vBulletin Solutions, Inc. Tất cả quyền được bảo lưu.
Ban quản trị không chịu trách nhiệm về nội dung do thành viên đăng.