PCF8951模块 C51代码
时间: 2023-09-15 10:23:19 浏览: 116
C51学习代码
下面是使用C语言编写的PCF8951模块的C51代码示例:
```c
#include <reg52.h>
#include <intrins.h>
sbit SDA = P2^0; //定义SDA
sbit SCL = P2^1; //定义SCL
void IIC_Start()
{
SDA = 1;
SCL = 1;
_nop_();
_nop_();
_nop_();
_nop_();
SDA = 0;
_nop_();
_nop_();
_nop_();
_nop_();
SCL = 0;
}
void IIC_Stop()
{
SDA = 0;
SCL = 1;
_nop_();
_nop_();
_nop_();
_nop_();
SDA = 1;
_nop_();
_nop_();
_nop_();
_nop_();
}
unsigned char IIC_SendByte(unsigned char dat)
{
unsigned char i;
for (i = 0; i < 8; i++)
{
SDA = dat & 0x80;
dat <<= 1;
SCL = 1;
_nop_();
_nop_();
_nop_();
_nop_();
SCL = 0;
}
SDA = 1;
SCL = 1;
_nop_();
_nop_();
_nop_();
_nop_();
if (SDA)
{
return 1;
}
SCL = 0;
return 0;
}
unsigned char IIC_ReadByte()
{
unsigned char i;
unsigned char dat = 0;
SDA = 1;
for (i = 0; i < 8; i++)
{
dat <<= 1;
SCL = 1;
_nop_();
_nop_();
_nop_();
_nop_();
dat |= SDA;
SCL = 0;
}
return dat;
}
void PCF8951_Init()
{
IIC_Start();
IIC_SendByte(0x90);
IIC_SendByte(0x00);
IIC_Stop();
}
void PCF8951_Write(unsigned char addr, unsigned char dat)
{
IIC_Start();
IIC_SendByte(0x90);
IIC_SendByte(addr);
IIC_SendByte(dat);
IIC_Stop();
}
unsigned char PCF8951_Read(unsigned char addr)
{
unsigned char dat;
IIC_Start();
IIC_SendByte(0x90);
IIC_SendByte(addr);
IIC_Start();
IIC_SendByte(0x91);
dat = IIC_ReadByte();
IIC_Stop();
return dat;
}
void main()
{
unsigned char temp;
PCF8951_Init();
PCF8951_Write(0x00, 0x55);
temp = PCF8951_Read(0x00);
while (1);
}
```
注意,以上代码仅作为示例,使用前请根据实际情况进行修改。
阅读全文