色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > PIC單片機(jī)之I2C(從模式)

          PIC單片機(jī)之I2C(從模式)

          作者: 時(shí)間:2013-05-30 來(lái)源:網(wǎng)絡(luò) 收藏

          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;

          }

          }

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

          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;

          單片機(jī)相關(guān)文章:單片機(jī)教程


          單片機(jī)相關(guān)文章:單片機(jī)視頻教程


          單片機(jī)相關(guān)文章:單片機(jī)工作原理




          關(guān)鍵詞: PIC單片機(jī) I2C 從模式

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉