各位大神帮帮小弟吧!
我想用PIC16F887的I2C通讯,可是搞了一天了,SDA,SCL根本没有任何波形出来!我的端口初始化如下:
OPTION=0X88; //禁止B口上拉,内部指令周期作为时钟源
OSCCON=0x67;
TRISB=0X00; //RB1口作为输出口
PORTB=0x00;
TRISC=0B00011000; //RC3,RC4输入端,其它全部为输出
PORTC=0X00;
TRISD=0XE4; //
PORTD=0x00;
TRISA=0XDD;
PORTA=0X00;
TRISE=0X06; //E端口全部设定为输入状态,用于检测NTC检测
PORTE=0X00;
INTCON=0X00;
CM1CON0=0;
CM2CON0=0;
CM2CON1=0;
CCP1CON=0;
ANSEL=0X00; //AN7为模拟输入端
ANSELH=0X00; //AN8,AN11为AD输入
TMR2=0;
T2CON=0;
T1CON=0;
然后寄存器配置是如下:
SSPSTAT=0B10000000;
SSPCON=0B00111000;
SSPCON2=0B00000000;
SSPADD=0X09;
程序是这样写的:
while(1)
{
SEN=1;
red_on;
while(SSPIF==0);
SSPIF=0;yellow_on;
SSPBUF=0B0001111; //移入地址
while(SSPIF==0);
SSPIF=0;green_on;
while(ACKSTAT==1); //等待从器件响应
SSPBUF=0x66; //移入数据
while(SSPIF==0);
SSPIF=0;
while(ACKSTAT==1);
PEN=1;
while(SSPIF==0);
SSPIF=0;
}//while结束点
配置位是下面这样的:
__CONFIG(LVPDIS&FCMEN&IESODIS&BORDIS&DUNPROTECT&UNPROTECT&MCLRDIS&PWRTDIS&WDTDIS&INTIO);
__CONFIG(WP2);
各位大神帮帮我吧!在线等!!!看看我到底哪里没弄好!跪谢!!! |