标题: 无符号字符变量超出255 [打印本页]

作者: 小蜜蜂o    时间: 2016-1-3 11:49
标题: 无符号字符变量超出255
在弄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);
        }

}


作者: 小蜜蜂o    时间: 2016-1-3 11:51
具体的eeprom程序没全贴出来,也不需要全部,就看主函数里面那个x的赋值,不知道怎么会这样
作者: 小蜜蜂o    时间: 2016-1-3 19:08
是数码管显示两种数字合在一起造成的视觉误差
作者: mianmian001    时间: 2016-1-4 09:17
先看读出来的数据是否正确把
作者: 小蜜蜂o    时间: 2016-1-10 17:19
搞好了,另一个问题:会显现两种不同的数字是因为我读完了并且发了应答信号过去就发停止信号,这个停止信号无法停止eeprom,我试过一个停止信号后多加一个停止信号就正常,或者停止信号前不要发应答信号。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1