|
#include<pic.h><br /> char i,j,k,a;<br /> void first()<br /> {<br /> TRISC=0xff;<br /> SSPADD=9;<br /> STAT_SMP=1;<br /> STAT_CKE=0;<br /> SSPCON=0B00111000;<br /> }<br /> void test()<br /> {<br /> SSPIF=0;<br /> while(SSPIF==0){;}<br /> }<br /> void cc()<br /> {<br /> SEN=1;<br /> test(); <br /> SSPBUF=0B10100000;<br /> while(ACKSTAT==1)<br /> {<br /> SEN=1;<br /> test(); <br /> SSPBUF=0B10100000;<br /> } <br /> SSPBUF=j;<br /> test(); <br /> for (i=1;i<17;++i)<br /> {<br /> SSPBUF=i;<br /> test(); <br /> j++;<br /> } <br /> PEN=1;<br /> test(); <br /> SSPIF=0;<br /> <br /> }<br /> void main()<br /> {<br /> <br /> first(); <br /> j=0b00000000;<br /> for (k=1;k<5;k++)<br /> {cc();<br /> for (a=1;a<200;a++) {asm("nop");}<br /> }<br /> for (i=1;i<100;i++) {;}<br /> SEN=1; <br /> test();<br /> SSPBUF=0B10100000;<br /> test();<br /> SSPBUF=0B00000000;<br /> test();<br /> RSEN=1;<br /> test();<br /> SSPBUF=0B10100001;<br /> test();<br /> <br /> FSR=0X30;<br /> for (i=1;i<65;i++)<br /> {<br /> RCEN=1;<br /> test();<br /> INDF=SSPBUF;<br /> if (i!=64) <br /> {ACKDT=0;<br /> ACKEN=1;} <br /> else<br /> {ACKDT=1;<br /> ACKEN=1;}<br /> test();<br /> FSR++;<br /> } <br /> PEN=1; <br /> test(); <br /> SSPIF=0; <br /> asm("nop");<br /> }<br /> <br />PIC16F873A + 24C16<br /><br />连续写4组16个数据,但只有第一组、第三组能够写成功,而二、 四组则无法写成功,<br /><br />请帮忙看看问题在哪??<br /><br />谢谢 |
|