您当前的位置:五五电子网电子知识单片机-工控设备PIC单片机PIC24F之EEPROM读写中断事件处理函数要点 正文
PIC24F之EEPROM读写中断事件处理函数要点

PIC24F之EEPROM读写中断事件处理函数要点

点击数:7161 次   录入时间:03-04 11:59:12   整理:http://www.55dianzi.com   PIC单片机
                    I2C1TRN = I2CRegs.RWAddr & 0xff;//发送EEPROM写低8位地址
                    I2CRegs.State = I2C_MT_ADDRL_ACK;//下次应该接收EEPROM写低8位地址应答信号
                    I2CRegs.Count = 0;//清空发送缓冲计数器
                }    
                else//收到NAck信号
                {
                    I2cExit();//错误的ACK信号    
                }    
                break;
            case I2C_MT_ADDRL_ACK://收到EEPROM写高低8位地址应答信号
                if (I2CRegs.TxCount)//写保护只在写入期间不保护,增加了对误写入的安全防护能力!!!
                {
                     WP = 0;//不写保护
                }
            case I2C_MT_DATA_ACK://收到应答信号
                if (!I2C1STATbits.ACKSTAT)//收到Ack信号
                {
                    if (I2CRegs.Count < I2CRegs.TxCount)//缓冲区未空
                    {
                        I2C1TRN = I2CRegs.TxBuffer[I2CRegs.Count ++];//继续发送数据    
                    }
                    else if (I2CRegs.Count == I2CRegs.TxCount)//缓冲区已空
                    {
                        if (I2CRegs.I2CAddr & 1)//应该开始接收数据
                        {
                            I2cReStart();//发送重复位命令
                        }
                        else//只写退出
                        {
                            I2cStop();//正常发送结束
                        }
                    }
                    else//干扰出错
                    {
                        I2cExit();//错误
                    }
                }    
                else//收到NAck信号(可能被写保护)
                {
                    I2cExit();//错误的ACK信号    
                }    
                break;
            case I2C_REP_START://收到ReStart信号
                I2C1TRN = I2CRegs.I2CAddr | I2C_READ;//发送器件读地址(通知从机可以说话)
                I2CRegs.State = I2C_MR_SLA_ACK;//下次应该接收器件写读地址应答信号
                break;
            case I2C_MR_SLA_ACK://收到器件读地址应答信号
                if (!I2C1STATbits.ACKSTAT)//收到Ack信号
                {
                    I2C1CONbits.RCEN = 1;//开始接收数据
                    I2CRegs.State = I2C_MR_DATA;//下次应该收接收数据
                }    
                else//收到NAck信号
                {

上一页  [1] [2] [3] [4]  下一页


本文关键字:暂无联系方式PIC单片机单片机-工控设备 - PIC单片机