您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 24C64-EEPROM读写的C语言程序
/*24C64子程序*/bitI2C_Start(void);voidI2C_Stop(void);voidI2C_Ack(void);voidI2C_Nack(void);bitI2C_Send_Byte(uchar);ucharI2C_Receive_Byte(void);voidAT24C64_R(void*mcu_address,uintAT24C64_address,uintcount);voidAT24C64_W(void*mcu_address,uintAT24C64_address,uintcount);voidDelay_10_uS(void){chari=10;while(i--);}voidDelay_N_mS(uintn_milisecond)/*nmSdelay*/{uchari;while(n_milisecond--){i=37;while(i--);}}bitI2C_Start(void){/*启动I2C总线的函数,当SCL(SCK)为高电平时使SDA产生一个负跳变*/Delay_10_uS();I2C_SDA=1;Delay_10_uS();I2C_SCK=1;Delay_10_uS();if(I2C_SDA==0)return0;if(I2C_SCK==0)return0;I2C_SDA=0;Delay_10_uS();I2C_SCK=0;Delay_10_uS();return1;}voidI2C_Stop(void){/*终止I2C总线,当SCL为高电平时使SDA产生一个正跳变*/Delay_10_uS();I2C_SDA=0;Delay_10_uS();I2C_SCK=1;Delay_10_uS();I2C_SDA=1;Delay_10_uS();}voidI2C_Ack(void){Delay_10_uS();I2C_SDA=0;Delay_10_uS();I2C_SCK=1;Delay_10_uS();I2C_SCK=0;Delay_10_uS();}voidI2C_Nack(void){Delay_10_uS();I2C_SDA=1;Delay_10_uS();I2C_SCK=1;Delay_10_uS();I2C_SCK=0;Delay_10_uS();}bitI2C_Send_Byte(uchard){uchari=8;bitbit_ack;while(i--){Delay_10_uS();if(d&0x80)I2C_SDA=1;elseI2C_SDA=0;Delay_10_uS();I2C_SCK=1;Delay_10_uS();I2C_SCK=0;d=d1;}Delay_10_uS();I2C_SDA=1;Delay_10_uS();I2C_SCK=1;Delay_10_uS();bit_ack=I2C_SDA;I2C_SCK=0;Delay_10_uS();returnbit_ack;}ucharI2C_Receive_Byte(void){uchari=8,d;Delay_10_uS();I2C_SDA=1;while(i--){d=d1;Delay_10_uS();I2C_SCK=1;if(I2C_SDA)d++;Delay_10_uS();I2C_SCK=0;}returnd;}voidAT24C64_W(void*mcu_address,uintAT24C64_address,uintcount){DOG_WDI=!DOG_WDI;DOGTIME=0;while(count--){I2C_Start();/*I2C_Send_Byte(0xa0+AT24C64_address/256*2);*//*24C16USE*/I2C_Send_Byte(0xa0);I2C_Send_Byte(AT24C64_address/256);I2C_Send_Byte(AT24C64_address%256);I2C_Send_Byte(*(uchar*)mcu_address);I2C_Stop();Delay_N_mS(10);/*waitingforwritecycletobecompleted*/((uchar*)mcu_address)++;AT24C64_address++;}}voidAT24C64_R(void*mcu_address,uintAT24C64_address,uintcount){DOG_WDI=!DOG_WDI;DOGTIME=0;while(count--){I2C_Start();/*I2C_Send_Byte(0xa0+AT24C64_address/256*2);*//*24C16USE*/I2C_Send_Byte(0xa0);I2C_Send_Byte(AT24C64_address/256);I2C_Send_Byte(AT24C64_address%256);I2C_Start();/*I2C_Send_Byte(0xa1+AT24C64_address/256*2);*/I2C_Send_Byte(0xa1);*(uchar*)mcu_address=I2C_Receive_Byte();I2C_Nack();I2C_Stop();((uchar*)mcu_address)++;AT24C64_address++;}}
本文标题:24C64-EEPROM读写的C语言程序
链接地址:https://www.777doc.com/doc-5026520 .html