打印
[国产单片机]

24C02怎么读写int 型数据,

[复制链接]
1794|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

粉丝