用过STC单片机IAP功能的请进,请教向EEPROM区读写数据问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用过STC单片机IAP功能的请进,请教向EEPROM区读写数据问题相关的知识,希望对你有一定的参考价值。
我用的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;要和主函数中的对应起来,倒是不影响哈,呵呵
当然不对啦,51单片机的操作都以字节为单位,你传递的参数是int型,占两字节,当然会不正常啦,改成unsigned char就行了。
还有,读出的那个程序应该改成函数,通过返回的方式把值传递给主程序。
有其他问题直接找我,QQ:331660651,注明93182270 参考技术A 弊端:
1.读数据函数不明确,无定义类型,无返回值,主函数执行语句有误。
2.中断函数中调用了其它函数体,容易产生错误。
3.编写比较混乱,执行编译易出现错误。
PCB开源分享STC/IAP15W4K61S4开发板
【PCB开源分享】STC/IAP15W4K61S4开发板
简介
STC/IAP15W4K61S4开发板,是基于
STC/IAP15W4K61S4-30I-PDIP40
主控核心的单片机开发板,带自动冷启动功能,所有IO引脚双倍引出,板上带5V和3.3V供电。USB转串口采用的ch340G设计,兼容CH340C。ADC参考电压基于TL431提供的2.5V作为参考,安装CH340C可以省掉晶振和以及外围电容。主控保留外部晶振电路,可以根据个人需求是否启用外部晶振,如不需要可以不焊接晶振以及外围器件。
- 实物图
- 尺寸:
85.7cmX57.4cm
- STC-ISP检测信息
以上是关于用过STC单片机IAP功能的请进,请教向EEPROM区读写数据问题的主要内容,如果未能解决你的问题,请参考以下文章
51单片机 ,读写stc 内部EEPROM 中的数据,所谓 IAP 方法是怎么个原理?求解释,一定采纳
有谁用过STC90系列的单片机,2k的RAM该怎么用,我添加了stc90.h头文件,还是说我定义的DATA SEGMENT过大