谁能给我一个PIC16f690 I2C slave的C程序吗?

2020-02-08 12:11发布

这个slave的I2C程序以前没有做过,有很多东西搞的还不是很明白,如果谁有的话,麻烦上传一个把,谢谢。
pic16f690@163.com
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
allen3161
2020-02-09 10:44
我自己写了一段程序如下;
void MW_initI2CPin(void)
{
        ANSEL = 0;//ANSEL;
        ANSELH = 0;//ANSELH | 0x04; //RB4

        RB4 =1;  //SDA
        RB6 =1;  //SCK       
        SSPMSK = 0;
        SSPCON = 0x36;//能I2C,使能时钟(非时钟延伸),从动模式, 7 位地址
        SSPADD = 0xA0;//地址寄存器
        SSPSTAT = 0x00;//
        SSPIF = 0;
        SSPIE = 1;//Enalbe SSP Interrupt
        PEIE    = 1;   
        GIE  = 1;
}
void MW_I2cDetect(void)
{
        unsigned char temp,data;
        static unsigned char num=10;
        if(SSPIF &&SSPIE)
        {
                SSPIF = 0;
               
#if 1
                temp = SSPSTAT &0x2D;
                if(bI2cOperatorCommand == 0xF0)
                {
                        bI2cOperatorCommand = 0x0F;
                        temp = 0x31;
                }
                switch(temp)
                {
                        case 0x09://S = 1, D_A = 0, R_W = 0, BF = 1
                                curI2SendAddr = SSPBUF;
                                break;
                        case 0x29://S = 1, D_A = 1, R_W = 0, BF = 1
                                               
                                break;
                        case 0x31:
                                break;
                        case 0x0c://S = 1, D_A = 0, R_W = 1
                                //MW_SlaveTransmit(I2csendData);
                                break;

                        case 0x2c://S = 1, D_A = 1, R_W = 1, BF = 0
                                break;
                        case 0x28://S = 1, D_A = 1, BF = 0
                        //iic error
                                break;
                        default:
                                break;
                }
#endif                                       
        }       
}

void interrupt timer1_isr(void)
{
        MW_I2cDetect();
}

在IIC master端发送读命令到slave端,现在的中断可以检查到0X0c,请问这个该怎么应答?

一周热门 更多>