#define adress_1602 0x4e
unsigned char ack1;
unsigned char LCD_data=0x08;
void Start()
{
SDA1=1;
_nop_();
SCL1=1;
nop4();
SDA1=0;
nop4();
SCL1=0;
_nop_();
_nop_();
}
void Stop()
{
SDA1=0;
_nop_();
SCL1=0;
nop4();//>4us后SCL跳变
SCL1=1;
nop4();
SDA1=1;
_nop_();
_nop_();
}
void Write_A_Byte(unsigned char c)
{
unsigned char BitCnt;
for(BitCnt=0;BitCnt<8;BitCnt++) //要传送的数据长度为8位
{
if((c<<BitCnt)&0x80) SDA1=1; //判断发送位
else SDA1=0;
_nop_();
SCL1=1; //置时钟线为高,通知被控器开始接收数据位
nop4();
_nop_();
SCL1=0;
}
_nop_();
_nop_();
SDA1=1; //8位发送完后释放数据线,准备接收应答位
_nop_();
_nop_();
SCL1=1;
_nop_();
_nop_();
_nop_();
if(SDA1==1)
ack1=0;
else
ack1=1; //判断是否接收到应答信号
SCL1=0;
_nop_();
_nop_();
}
|