用过STC单片机IAP功能的请进,请教向EEPROM区读写数据问题

来源:百度知道 编辑:UC知道 时间:2024/07/01 07:19:31
我用的STC12C5410AD单片机,现在想实现一个非易失性数据的读写。在我的程序中,有一个数据,在按下和单片机P3.2口外部中断0相连的按键时,想让单片机记住按键时候的该数据,并且下次开机时保持该数据而不丢失。程序大体是
void Byte_Read(int x)
{
ISP_ADDRH=0x28;
ISP_ADDRL=0x00;
ISP_CONTR=0x8b;
ISP_CMD=0x01; //字节读指令
ISP_TRIG=0x46;
ISP_TRIG=0xB9;
_nop_();
x=ISP_DATA;
ISP_CONTR=0x00;
}

void Byte_Program(int y)
{
ISP_ADDRH=0x28;
ISP_ADDRL=0x00;
ISP_DATA=y;
ISP_CONTR=0x8b;
ISP_CMD=0x02; //编程指令
ISP_TRIG=0x46;
ISP_TRIG=0xB9;
_nop_();
ISP_CONTR=0x00;
}

void Sector_Erase(void)
{
ISP_ADDRH=0x28;
ISP_ADDRL=0x00;
ISP_CONTR=0x8b;
ISP_CMD=0x03; //扇区擦除指令
ISP_TRIG=0x46;
ISP_TRIG=0xB9;
_nop_();
ISP_CONTR=0x00;
}
main()
{
Byte_Read(readresult); //读出非易失性数据
biaoding=readresult/2; //对读出的数字稍作处理,下面的程序要用到

我用过STC的IAP功能。
当然不对啦,51单片机的操作都以字节为单位,你传递的参数是int型,占两字节,当然会不正常啦,改成unsigned char就行了。
还有,读出的那个程序应该改成函数,通过返回的方式把值传递给主程序。
有其他问题直接找我,QQ:331660651,注明93182270

弊端:
1.读数据函数不明确,无定义类型,无返回值,主函数执行语句有误。
2.中断函数中调用了其它函数体,容易产生错误。
3.编写比较混乱,执行编译易出现错误。