主要是利用I2C总线。数据没有写进去。基于IIC总线。不知道哪里出错了。停留在前面,PORTB=0x55,都没有执行到。
#include<pic.h>
#define uchar unsigned char
#define uint unsigned int
void init()
{
TRISB=0x00;
TRISC=0x00;
}
void delay(uchar x)
{
uint i;
for(i=0;i<x;i++);
}
void iic_init()
{
TRISC3=1;
TRISC4=1;
SSPCON=0x28;
SSPCON2=0x00;
SSPSTAT=0x80;
SSPADD=0x02;
GIE=0;
SSPEN=1;
}
void checksend()
{
while(!SSPIF);
SSPIF=0;
}
void checkackstat()
{
while(ACKSTAT);
ACKSTAT=1;
}
void WriteOneChar(uchar addr,uchar dat)
{
SEN=1;
delay(80);
checksend();
SSPBUF=0xa0;
checksend();
checkackstat();
SSPBUF=addr;
checksend();
checkackstat();
SSPBUF=dat;
checksend();
checkackstat();
PEN=1;
checksend();
}
void main()
{
uchar i;
init();
iic_init();
WriteOneChar(0x05,0xaa);
PORTB=0x55; |