#include<pic.h><br /> void first()<br /> {<br /> TRISC=0xff;<br /> SSPADD=9;<br /> STAT_SMP=1;<br /> STAT_CKE=0;<br /> SSPCON=0B00111000;<br /> <br /> }<br /> void test()<br /> {<br /> SSPIF=0;<br /> while(SSPIF==0){;}<br /> }<br /> void main()<br /> {<br /> char i;<br /> first(); <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 /> FSR=0X32;<br /> for (i=1;i<7;i++)<br /> {<br /> RCEN=1;<br /> test();<br /> INDF=SSPBUF;<br /> ACKDT=0;<br /> ACKEN=1;<br /> test();<br /> FSR++;<br /> } <br /> PEN=1; <br /> test();<br /> SSPIF=0;<br /> asm("nop");<br /> }<br /><br />用的是1片16f873a,1片24c16,<br />运行第一次,数据能够正常读出,发出停止位后,在test()中无法出来,而且BCLIF位被置“1”,暂停后reset,重新运行,即使将BCLIF位清零,在发送“起始位”时就陷入循环中,而且BCLIF又被置“1”。<br />只能断电后重新上电,然后再运行再读出数据,但仍然在发出停止位后陷入循环中。<br /><br /> 请大家帮忙看看问题在哪?<br /><br /> 万分谢谢!!!<br /> |
|