|
这是我的代码,下面贴出主函数。我预期的效果是我可以用AT24C02正常存取数据,但是我发现case1的时候数码管显示000,这没问题;case2的时候数码管也显示000,这就不对了。因为0x01这个位置存的是1,case3也没有问题,case4读出来数码管显示255,这也有问题。
我想的是,这个数码管显示不对,是不是因为这个AT24C02的这几个寄存器存的就是0 0 1 255呢?
#include <REGX51.H>
#include "Delay.h"
#include <intrins.h>
#include "AT24C02.h"
#include "Smg.h"
#include "Key.h"
uchar address, Keynum, save_value=0,read_value,save_buf[3];
void main(void)
{
while(1)
{
Keynum = key_scan();
switch(Keynum)
{
case 0:break;
case 1:AT24C02_write_byte(0x00, 0x00);read_value = AT24C02_read_byte(0x00);break;
case 2:AT24C02_write_byte(0x01, 0x01);read_value = AT24C02_read_byte(0x01);break;
case 3:AT24C02_write_byte(0x02, 0x02);read_value = AT24C02_read_byte(0x02);break;
case 4:AT24C02_write_byte(0x03, 0x03);read_value = AT24C02_read_byte(0x03);break;
}
save_buf[0] = read_value/100;
save_buf[1] = read_value%100/10;
save_buf[2] = read_value%100%10;
smg_display(save_buf,6);
}
}
|
|