用过STC单片机IAP功能的请进,请教向EEPROM区读写数据问题
我用的STC12C5410AD单片机,现在想实现一个非易失性数据的读写。在我的程序中,有一个数据,在按下和单片机P3.2口外部中断0相连的按键时,想让单片机记住按键时候的...
我用的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; //对读出的数字稍作处理,下面的程序要用到
…………
…………
while(1)
{
…………
yaocundeshu=a/100;
data=data-baioding;
…………
}
}
void INT0_ISR() interrupt 0
{
IE0=0;
Sector_Erase();
Byte_Program(yaocundeshu);
Byte_Read(readresult);
biaoding=readresult/100.0; //biaoding是主函数要用到的数
}
yaocundeshu是要在中断0时保存的数,可是我的程序运行后为什么好像yaocundeshu没有存到EEPROM里啊,并且读也没有读出东西来。程序其他地方应该都没有问题,请只考虑IAP的使用方面,我对IAP操作的用法有什么不对的地方吗??
程序最底下这一行不太对,biaoding=readresult/100.0;改为biaoding=readresult/2;要和主函数中的对应起来,倒是不影响哈,呵呵 展开
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; //对读出的数字稍作处理,下面的程序要用到
…………
…………
while(1)
{
…………
yaocundeshu=a/100;
data=data-baioding;
…………
}
}
void INT0_ISR() interrupt 0
{
IE0=0;
Sector_Erase();
Byte_Program(yaocundeshu);
Byte_Read(readresult);
biaoding=readresult/100.0; //biaoding是主函数要用到的数
}
yaocundeshu是要在中断0时保存的数,可是我的程序运行后为什么好像yaocundeshu没有存到EEPROM里啊,并且读也没有读出东西来。程序其他地方应该都没有问题,请只考虑IAP的使用方面,我对IAP操作的用法有什么不对的地方吗??
程序最底下这一行不太对,biaoding=readresult/100.0;改为biaoding=readresult/2;要和主函数中的对应起来,倒是不影响哈,呵呵 展开
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
STM32F103是一款高性能的嵌入式芯片,由意法半导体(STMicroelectronics)公司生产。它是STM32系列芯片之一,具有紧凑、低功耗、高性能等特点,被广泛应用于嵌入式系统中。STM32F103的主要特点包括:1. 集成了A...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询