这是我参照16f877a写的16f1823 iic主模式程序。在proteus仿真时候发现错误,但是不知道怎么办?请大家看看我是不是从一开始就写错了!!求指点!!谢谢。。 
#include<pic.h> 
__CONFIG(0X3B31); 
#define uchar unsigned char 
#define uint unsigned int 
#define addr 0xaa 
const uchar data[4]={0b11100001,0b11010010,0b10110100,0b01111000}; 
uchar read_data[4]; 
void delay(uchar x) 
{ 
        char i,j; 
        for(i=x;i>0;i--) 
                for(j=110;j>0;j--); 
} 
void init() 
{ 
        TRISC=0x03; 
        PORTC=0x00; 
        SSP1CON1=0X38; 
        SSP1CON2=0; 
        SSP1CON3=0X60;; 
        SSP1STAT=0X80; 
        SSP1MSK=0; 
        SSP1ADD=9; 
         
} 
void write() 
{ 
        SSP1IF=0; 
        SEN=1; 
        while(!SSP1IF); 
                SSP1IF=0; 
        SSP1BUF=0XA0; 
        while(!SSP1IF); 
                SSP1IF=0; 
        SSP1BUF=addr; 
        while(!SSP1IF); 
                SSP1IF=0; 
 
                SSP1BUF=0b00111100; 
                while(!SSP1IF); 
                        SSP1IF=0; 
 
        PEN=1; 
        while(!SSP1IF); 
                SSP1IF=0; 
} 
void read() 
{ 
 
 
        SSP1IF=0; 
        SEN=1;      
        while(!SSP1IF); 
                SSP1IF=0;  
        SSP1BUF=0XA0; 
        while(!SSP1IF); 
                SSP1IF=0; 
        SSP1BUF=addr; 
        while(!SSP1IF); 
                SSP1IF=0; 
                RSEN=1;  
        while(!SSP1IF); 
                SSP1IF=0; 
        SSP1BUF=0XA1; 
        while(!SSP1IF); 
                SSP1IF=0; 
 
                RCEN=1; 
                  while(!SSP1IF);    
 
                read_data[0]=SSP1BUF; 
                while(!SSP1IF); 
                        SSP1IF=0; 
 
                        ACKDT=1; 
 
                ACKEN=1; 
                while(!SSP1IF); 
                        SSP1IF=0; 
 
        PEN=1; 
        while(!SSP1IF); 
                SSP1IF=0; 
} 
void disp() 
{ 
        uint i=0; 
        for(i=0;i<4;i++) 
        { 
                PORTC=read_data[i]; 
                delay(100); 
        } 
} 
void main() 
{ 
        init(); 
 
        write(); 
 
        delay(100); 
        read();         
 
 
        while(1) 
        { 
                PORTC=read_data[0];//disp(); 
        } 
} |   
     
  
 |