我想把一个int型数据拆分成两个char型数据,再分别写入24C02,然后读取出来再重组。下面的程序只能实现低8位的存取。高8位一直是0,请大家看看是哪里不对。
void write_add(uint km) //写入数据
{
VH=km/256;
VL=km%256;
start(); //开始信号
write_byte(0xa0); //地址和控制字
respons(); //延时
write_byte(1); //储存数据的地址
respons();
write_byte(VH); //写入数据VH
respons();
stop();
delayms(5);
start();
write_byte(0xa0); //地址和控制字
respons();
write_byte(2); //储存数据的地址
respons();
write_byte(VL); //写入数据VL
respons();
stop();
}
uchar read_add() //读取数据
{
uchar VH,VL;
start();
write_byte(0xa0); //地址与控制字。
respons();
write_byte(1); //发送储存单元地址
respons();
start(); //启动
write_byte(0xa1); //地址与控制字
respons();
VH=read_byte();
stop();
delayms(5);
start(); //总线启动
write_byte(0xa0); //地址码与控制字。
respons();
write_byte(2); //储存单元地址
respons();
start(); //启动
write_byte(0xa1); //地址与控制字。
respons();
VL=read_byte();
stop(); //发送I2C总线停止信号。
VDATE=VH*256+VL;
return VDATE; |