用PIC16F877的i2c向24c02写数据的问题
为何写不进数据呢,郁闷中~~~
初始化程序如下:
//数据传送函数
void SendByte(unsigned char Data)
{
SSPBUF=Data;
}
//I2c初始化函数
void InitialI2c(void)
{
TRISC3=1; //设置为输入
TRISC4=1;
SSPSTAT=0x00; //初始化SSPSTAT
SSPCON=0x08; //7位地址
SSPCON2=0x00;
SSPADD=0x09; //设定I2C 时钟频率
SSPEN=1; //SSP模块使能
SSPIF=0;
}
//i2c总线忙检测
void I2c_Idle(void)
{
while((SSPCON2 & 0x1f)|RW);//RW当传输完一个数据时,RW=0;
}
//标志位
void Flag_SSPIF(void)
{
while(!SSPIF); //当发送第九个脉冲时,SSPIF置1
SSPIF=0; //即等待ack应答信号
}
//写一个数据到 24c02的指定的地址
void WriteOneData(unsigned char Command,unsigned char Data)
{
SEN=1; //一旦启动,则使SSPIF置1
Flag_SSPIF();
SendByte(0xA0); //发送从机地址
Flag_SSPIF();
SendByte(Command);
Flag_SSPIF();
SendByte(Data);
Flag_SSPIF();
PEN=1;
Flag_SSPIF();
}
主程序如下:
#include"i2c.h"
#include"pic1687x.h"
void main(void)
{
InitialI2c();
I2c_Idle();
while(1)
{
WriteOneData(0x33,0xaa);
}
}
仿真波形如下: |