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