PIC Vietnam

Go Back   PIC Vietnam > namqn

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Conversation Between namqn and cachep47
Showing Visitor Messages 1 to 2 of 2
  1. cachep47
    08-06-2010 11:48 PM
    cachep47
    Em cần một ví hoàn chỉnh về I2C cho PIC 16F877A về truyền và nhận ,Anh có thể giúp Em được không ? Em đang làm đồ án tốt nghiệp về nó mà, cần truyền đi 2 byte dữ liệu ? thanks !!!
  2. cachep47
    08-06-2010 11:44 PM
    cachep47
    Chào a namqn ! Anh kiểm tra hộ Em chương trình về I2C này được không ?
    Chương trình cho Mater: gửi dữ liệu đi và nhận dữ liệu về cho lên cổng B
    #include<16F877A.H>
    #include<def_877a.h>
    #fuses XT,NOWDT,NOPROTECT,NOLVP
    #use Delay(Clock=2000000)
    #use i2c(master, sda=PIN_C4, scl=PIN_C3,fast) //che do master, toc do
    #define SLAVE_ADDRESS 0xa0
    //toc do fast

    int8 read_I2C()
    {
    int8 value;

    i2c_start();
    i2c_write(SLAVE_ADDRESS + 1);
    value = i2c_read();
    i2c_stop();
    return value;
    }

    void write_I2C(int8 a)
    {
    i2c_start();
    i2c_write(SLAVE_ADDRESS);
    i2c_write(a);
    i2c_stop();
    }

    void main()
    {
    int8 value_write;
    int8 value_read;
    value_write=0;
    value_read=0;
    trisb=0;
    while(true)
    {
    value_read=read_I2C();//doc gia tri cua slave goi cho master
    delay_ms(100); //delay khoang 100ms

    portb=value_read;
    write_I2C(value_write);//goi du lieu cho master
    delay_ms(100);
    value_write++; //tang value_write len 1 sau moi lan lap
    }
    }



    Chương trình cho Slaver : Nhận dữ liệu về và gửi trả lai cho Mater
    #include <16F877A.H>
    #fuses XT,NOWDT,NOPROTECT,NOLVP

    #use delay(Clock=2000000)
    #use i2c(SLAVE, SDA=PIN_C4, SCL=PIN_C3, address=0x10, force_hw)

    int8 value =0;

    #INT_SSP
    void i2c_isr()
    {
    int8 state;

    state = i2c_isr_state();
    if(state < 0x80)
    value = i2c_read();
    if(state == 0x80){
    i2c_write(value);
    }
    }

    void main()
    {
    enable_interrupts(GLOBAL);
    enable_interrupts(INT_SSP);

    set_tris_b(0x00);
    while(1){
    output_b(value);
    }
    }

Múi giờ GMT. Hiện tại là 04:08 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam