找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2922|回复: 4
收起左侧

无符号字符变量超出255

[复制链接]
ID:98591 发表于 2016-1-3 11:49 | 显示全部楼层 |阅读模式
在弄i2c的eeprom,写进去的跟读出来的数不一样,用4位数码管显示的,读取的eeprom值进行了强制类型转换,还是超出255,下面是程序一部分,数码管显示的是a694,第四位显示4是检测eeprom有回复。数码管是正常的。
void display_led(uchar x,uchar y)//x表示数码管位,从左到右:0-3;y为要显示的数字
{
        P2=~(0x01<<x);
        P3=table[y];
        delay(10);
        P2=0xff;
        P3=0xff;//数码管消隐
}
void main()
{
        uchar x,a,b,c;
        bit y=1;
        delay(15000);
        y=eewrite(0x0f,1);//eeprom的地址0x0f处写入1
        delay(60000);
        delay(60000);

        while(1)
        {
                x=0;       
                x=(uchar)eeread(0x0f);//读取0x0f地址的值
                a=x/100;
                b=x%100/10;
                c=x%10;
                display_led(0,a);
                display_led(1,b);
                display_led(2,c);

                if(y==0)
                {
                        display_led(3,4);
                }
                else
                        display_led(3,9);
                delay(100);
        }

}

回复

使用道具 举报

ID:98591 发表于 2016-1-3 11:51 | 显示全部楼层
具体的eeprom程序没全贴出来,也不需要全部,就看主函数里面那个x的赋值,不知道怎么会这样
回复

使用道具 举报

ID:98591 发表于 2016-1-3 19:08 | 显示全部楼层
是数码管显示两种数字合在一起造成的视觉误差
回复

使用道具 举报

ID:101702 发表于 2016-1-4 09:17 | 显示全部楼层
先看读出来的数据是否正确把
回复

使用道具 举报

ID:98591 发表于 2016-1-10 17:19 | 显示全部楼层
搞好了,另一个问题:会显现两种不同的数字是因为我读完了并且发了应答信号过去就发停止信号,这个停止信号无法停止eeprom,我试过一个停止信号后多加一个停止信号就正常,或者停止信号前不要发应答信号。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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