新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > PIC單片機之I2C(從模式)

        PIC單片機之I2C(從模式)

        作者: 時間:2013-05-30 來源:網絡 收藏

        7,使能中斷

        PIE1bits.SSP1IE = 1;//Enabe interrupt MSSP

        INTCONbits.PEIE = 1;

        INTCONbits.GIE = 1;

        如果你要使用只要使用下面的代碼:

        將void i2c_salve_interrupt_tx();void i2c_salve_interrupt_rx();放到中斷程序中,如下:

        void interrupt isr(void)

        {

        if(SSP1IE SSP1IF)

        {

        i2c_salve_interrupt_tx();

        i2c_salve_interrupt_rx();

        SSP1IF=0;

        }

        }

        將初始化函數init_i2c_slave();放到主函數中

        void main()

        {

        init_i2c_slave();

        }

        頭文件 :i2c_salve.h

        #ifndef __SALVE_H

        #define _I2C_SALVE_H

        void init_i2c_slave();

        void i2c_salve_interrupt_tx();

        void i2c_salve_interrupt_rx();

        #endif

        代碼:i2c_salve.c

        #include ;

        #define input 1

        #define RX_BUF_LEN 29

        #define while_delay 6000

        unsigned char i2c_address,word_address,Register[29];

        unsigned char RANDOM_READ,i2c_counter;

        extern unsigned char A_readflag;

        /*I2C SALVE */

        void init_i2c_slave()

        {

        TRISB6 = input;

        TRISB4 = input;

        SSP1CONbits.SSPM0 = 0;

        SSP1CONbits.SSPM1 = 1;

        SSP1CONbits.SSPM2 = 1;

        SSP1CONbits.SSPM3 = 0;// I2C slave mode ,7bit address

        SSP1CONbits.CKP = 1; // enable clock

        SSP1ADD =0xA0; //slave address is 0xa0

        SSP1CONbits.SSPEN=1;//enable I2c

        SSPSTAT=0;

        PIE1bits.SSP1IE = 1;//Enabe interrupt MSSP

        INTCONbits.PEIE = 1;

        INTCONbits.GIE = 1;

        }

        /*I2C salve mode interrupt */

        void i2c_salve_interrupt_tx()//master read

        {

        unsigned char Temp;

        unsigned int timercounter;

        Temp=SSP1STAT;

        Temp = 0x2D;

        if(SSP1STATbits.R_nW ==1)//Read operation.

        {

        A_readflag=0;

        SSP1IF = 0;

        i2c_address = SSP1BUF;

        i2c_counter = word_address;

        while(i2c_counter RX_BUF_LEN)

        {

        SSP1BUF=Register[i2c_counter];//send data

        SSP1CONbits.CKP=1;// enable colck

        timercounter=while_delay;

        單片機相關文章:單片機教程


        單片機相關文章:單片機視頻教程


        單片機相關文章:單片機工作原理




        關鍵詞: PIC單片機 I2C 從模式

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 云霄县| 泰来县| 灵宝市| 河源市| 若尔盖县| 瑞金市| 舟山市| 九江县| 蒲江县| 陇南市| 柞水县| 阆中市| 乃东县| 合水县| 奎屯市| 寻甸| 临泽县| 思茅市| 武宁县| 若羌县| 通江县| 昆山市| 乌拉特前旗| 方城县| 望奎县| 富顺县| 洪洞县| 西充县| 托克逊县| 武鸣县| 琼结县| 武邑县| 明水县| 松溪县| 揭东县| 广水市| 罗田县| 开封市| 凤山县| 灵宝市| 灌南县|