EEPROM数码读出 求解啊

2019-07-15 18:55发布

我用89c52跟at24c02用数码管读出24c02单个字节,当我用数码管读出来的时间发现用两位为选数码管显示的是乱的,但是用单个数码管却能读出来这是为什么啊
#include <reg52.h>
#include"i2c.h"
sbit ADDR0=P2^3;
sbit ADDR1=P2^2;
sbit ADDR2=P2^1;
sbit ADDR3=P2^0;
unsigned char code a[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
void delay1ms(void)   //误差 0us
{
    unsigned char a,b,c;
    for(c=1;c>0;c--)
        for(b=142;b>0;b--)
            for(a=2;a>0;a--);
}
void main()
{
      unsigned char dat;
   dat = E2ReadByte(0x02);    //读取指定地址上的一个字节
      //显示在液晶上
    dat++;                     //将其数值+1
    E2WriteByte(0x02, dat);    //再写回到对应的地址上

    while (1)
        {
        P0=a[dat%10];ADDR0=1;ADDR1=0;ADDR2=0;ADDR3=0;delay1ms();
        P0=a[dat/10%10];ADDR0=0;ADDR1=1;ADDR2=0;ADDR3=0;delay1ms();


        }
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。