找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5667|回复: 0
收起左侧

PCF8563编程问题,请大侠指点

[复制链接]
ID:20973 发表于 2010-1-10 23:19 | 显示全部楼层 |阅读模式

最近在做一个pcf8563的时钟电路,i2c总线读写,同时i2c总线上还挂了一片AT24c02,同样的i2c总线读写程序,在读写AT24c02没有任何问题,但是读写pcf8563时却读出来是乱码

以下是8563的读写程序

void Write8563(unsigned char address,unsigned char mdata)  //在8563的口地址为address的寄存器中写mdata
{
   I2C_Start();
   I2C_Write(0xa2); /*写命令*/
   I2C_Write(address); /*写地址*/
   I2C_Write(mdata); /*写数据*/
   I2C_Stop();
}
unsigned char Read8563(unsigned char address) //在8563的口地址为address的寄存器中读一个8bit数据
{
   unsigned char rdata;
   I2C_Start();
   I2C_Write(0xa2); /*写命令101000A(1)W(0)*/
   I2C_Write(address); /*写地址*/
   I2C_Start();
   I2C_Write(0xa3); /*读命令101000A(1)R(1)*/
   rdata=I2C_Read();
   I2C_PutAck(1);
   I2C_Stop();
   return(rdata);
}

/*************************************
以下程序为AT24C02的读写函数
*************************************/
void Write24C02(unsigned char romaddress,unsigned char mdata)  //在24C02的地址为romaddress的寄存器中写mdata
{
   I2C_Start();
   I2C_Write(0xa0); /*写命令*/
   I2C_Write(romaddress); /*写地址*/
   I2C_Write(mdata); /*写数据*/
   I2C_Stop();
}
unsigned char Read24C02(unsigned char romaddress) //在24C02的口地址为romaddress的寄存器中读一个8bit数据
{
   unsigned char rdata;
   I2C_Start();
   I2C_Write(0xa0); /*写命令101000A(0)W(0)*/
   I2C_Write(romaddress); /*写地址*/
   I2C_Start();
   I2C_Write(0xa1); /*读命令101000A(0)R(1)*/
   rdata=I2C_Read();
   I2C_PutAck(1);
   I2C_Stop();
   return(rdata);
}

主程序中:读写24C02没有任何问题

 Write24C02(0x01,0x05);
 SoftDelay(10);//延时10ms
 TAB=Read24C02(0x01);

但是读写PCF8563却无法正常读写

 Write8563(0x03,TAB_T);
 SoftDelay(10);//延时10ms

TAB_T=Read8563(0x03);

TAB_T&=0x7f;

 

不知道pcf8563的读写到底和AT24C02有什么区别,请各位大侠不吝赐教!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表