#include#define scl TRISC3 //定義時(shí)鐘線#define sda TRISC4 //定義數(shù)據(jù)線#define nop() asm("nop")//#define nop() asm("asm")#define uchar unsigned char#define uint unsigned int__CONFIG(0xf73a);uchar no,ack,c,data;uchar code[]={0xff,0x7f,0x5f,0x3f,0x1f,0X00}; //送往24LC04的數(shù)據(jù),也是PD口要顯示的數(shù)據(jù)//========================================================================//功能描述:初始化子程序//函數(shù)名稱:init();void init(){TRISC=0xff; //C口設(shè)為輸入,RC3為SCL線,RC4為SDA線PORTC=0x00;TRISB=0x00; //B口設(shè)為輸出,用來顯示IC24LC02中讀出的內(nèi)容PORTB=0x00;TRISD=0xff; //D口設(shè)為輸入,當(dāng)RD0口為低電平時(shí),開始寫,當(dāng)RD1口為低電來時(shí),開始讀。PORTD=0xff;}//========================================================================//功能描述:延時(shí)子程序//函數(shù)名稱:delay_250ms();void delay(){unsigned int d=24999;while(--d);}//========================================================================//功能描述:I2C啟動(dòng)程序//函數(shù)名稱:start_i2c();void start_i2c(){sda=1; //發(fā)送啟動(dòng)條件的數(shù)據(jù)信號(hào)nop();scl=1;nop();nop();nop();nop();nop(); //24LC02要求的建立時(shí)間sda=0; //發(fā)送起始信號(hào)nop();nop();nop();nop();scl=0; //鉗住I2C總線,準(zhǔn)備發(fā)送數(shù)據(jù)或接收數(shù)據(jù)nop();nop();}//========================================================================//功能描述:I2C停止程序//函數(shù)名稱:stop_i2c();void stop_i2c(){sda=0; //發(fā)送結(jié)束條件的數(shù)據(jù)信號(hào)nop();scl=1;nop();nop();nop();nop();sda=1;nop();nop();nop();nop();}//========================================================================//功能描述:字節(jié)傳送程序// Function: 將數(shù)據(jù)C發(fā)送出去,可以是地址,也可以是數(shù)據(jù),發(fā)完后等待回應(yīng),并對(duì)此狀態(tài)//位進(jìn)行操作(不應(yīng)答或非應(yīng)答都使ack=0 ),發(fā)送數(shù)據(jù)正常,ack=1;ack=0//表示被控器無應(yīng)答或損壞//函數(shù)名稱:send_byte(uchar c);void send_byte(uchar c){uchar bit_count;for(bit_count=0;bit_count<8;bit_count++){ if((c<