|
這是我的代碼,下面貼出主函數(shù)。我預(yù)期的效果是我可以用AT24C02正常存取數(shù)據(jù),但是我發(fā)現(xiàn)case1的時候數(shù)碼管顯示000,這沒問題;case2的時候數(shù)碼管也顯示000,這就不對了。因為0x01這個位置存的是1,case3也沒有問題,case4讀出來數(shù)碼管顯示255,這也有問題。
我想的是,這個數(shù)碼管顯示不對,是不是因為這個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);
}
}
|
|