[国产单片机] 24C02怎么读写int 型数据,

[复制链接]
2358|2
 楼主| ys46501 发表于 2013-3-25 21:08 | 显示全部楼层 |阅读模式
我想把一个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;               
airwill 发表于 2013-3-25 21:42 | 显示全部楼层
看看函数定义:
uchar read_add()         //读取数据

那只能返回 8 位了, 并不说明没有读出来.
 楼主| ys46501 发表于 2013-3-25 21:51 | 显示全部楼层
airwill 发表于 2013-3-25 21:42
看看函数定义:
uchar read_add()         //读取数据

airwill大版,我爱你。一语道破啊。我折腾了一天也没发现。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

64

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部