User Tag List

+ Trả lời chủ đề
Hiện kết quả từ 1 tới 1 của 1

Chủ đề: Giao tiep I2C giua 2 PIC 16f877a

  1. #1
    svBK's Newbie
    Tham gia ngày
    Oct 2012
    Bài gửi
    1

    Mặc định Giao tiep I2C giua 2 PIC 16f877a

    Chào các cậu. tớ đang học CCS C và đến phần giao tiếp I2C. Tình hình là tớ đã truyền được dữ liệu từ con master xuống con slave. nhưng bây giờ tớ muốn truyền dữ liệu từ con slave (bài toán ngược lại..và lúc nay slave ko nhận dữ liệu từ master) đến con master và cụ thể là chỉ truyền 1 byte cho dễ. tớ có tham khảo code trong help của CCS C và trên diễn đàn PIC việt nam nhưng tớ vẫn chưa làm được. đây là code mẫu của tớ:

    PHP Code:
    ////code cho con master..

    #include <16f877a.h>
    #use delay (clock = 4000000)

    #use i2c (master, sda = pin_c4, scl = pin_c3)
    #define slave_address 0x10

    void read_i2c()
    {
       
    int8 value;
       
    i2c_start();//Master tạo tín hiệu Start
       
    i2c_write(slave_address 1);//Gửi địa chỉ và bít hướng R/W = 1 (Mode read) đến Slave
       
    value i2c_read();// Đọc dữ liệu byte thứ nhất (truong hop nay slave chi gui co 1 byte..^^..cho don gian
       
    i2c_stop();// Master tạo tín hiệu Stop
       
    return value;//ham tra ve gia tri da truyen tu slave den master
    }

    void main()
    {
       
    int8 a;
       
    set_tris_b(0);
       
    read_i2c();
       
    output_b(a);//xuat gia tri ra portB để kiểm tra kết quả..

    PHP Code:
    //code cho con slave

    #include <16f877a.h>
    #use delay (clock = 4000000)

    #use i2c (slave, sda = pin_c4, scl = pin_c3, address = 0x10)

    int8 value 0x01;
    #INT_SSP
    //ham doc ve byte address va ghi du lieu ra bus để truyền cho con master..
    void write_i2c()
    {
       
    int8 state;
       
    state i2c_isr_state();
       if(
    state >= 0x80)
          
    i2c_write(value);//thuc hien viec ghi du lieu ra bus
    }

    void main()
    {
       
    enable_interrupts(global);
       
    enable_interrupts(INT_SSP);
       
    set_tris_b(0);
       
    output_b(value);///hien thi tren port B de kiem tra gia tri..

    sau khi mô phỏng trên protues thi minh chi thay co moi led o con slave sang..còn led bên con master ko sáng..các ngõ ra ở port ở trang thái mức thấp (ko co tín hiệu ra).để led sang thi cac ngõ ra ở các pin của các port tuong ứng ở mức cao. Mong các cậu giải thích hộ tớ..thân..
    Lần sửa cuối bởi 1973; 03-11-2012 lúc 05:50 PM Lý do: cho code vào thẻ php

+ Trả lời chủ đề

Thông tin chủ đề

Users Browsing this Thread

Hiện có 1 người đọc bài này. (0 thành viên và 1 khách)

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


About svBK.VN

    Bách Khoa Forum - Diễn đàn thảo luận chung của sinh viên ĐH Bách Khoa Hà Nội. Nơi giao lưu giữa sinh viên - cựu sinh viên - giảng viên của trường.

Follow us on

Twitter Facebook youtube