STC单片机有专门的EEPROM控制寄存器,控制其读写,以下是子程序,定义部分可以参考数据手册。;—写参数到EEROM—PARAPUT:MOVDPTR,#LCALLIAP_EraseMOVDPTR,#MOVR,#MOVR,#PARAPUT,MOVA,R,LCALLIAP_WRITEINCR,INCDPTRDJNZR,PARAPUT。EA接地,就完全从片外来读。调用及跳转,都是通过改变PC地来实现的,PC值改到哪里,处理器下一次就从哪里读指令。片外eeprom可不可以直接调用rom里的程序,就是片外中的指令中,CALL或JMP这条执行后,PC改成rom里的地址了。下一次,处理器就用这个PC去读取片内的指令了。写片外EEPROM。
不会影响到其他程序。单片机也是顺序执行的。挡你执行到EEPROM的程序的时候进之前关闭EA。出来之后打开EA。目的是为了不让中断影响到EEPROM的操作。那是肯定可以随便擦写的啊,还用问么,EEPROM本来就是给单片机掉电后程序运行需要保存的数据,你设置一个值后写入EEPROM,你把电关掉,下次再开机就读EEPROM这个值出来就行了。EEPROM可以拼命的读,但不能拼命的写,它的写寿命次数只有,,读是无限次的。EEPROM不像RAM那样读写那么简单。
简单的方式:变化一次写一次,无论是否掉电,再次上电先读eeprom复杂的方式按照如图连接。对iicEEPROM进行写入操作时,IC内部有个自循环写时序大约,S(不同的芯片可能略有差异),如果在这个时序尚未结束之前,执行读操作,读出的数据只能是先前有效的写操作记录的数据,因为单步调试操作的时间远大于,S,iic的自循环写时序已经结束,所以读出的数据是正确的。建议在写操作之后延时。
看对应的eeprom的datasheet上面标注的时序要求,根据这个来控制各个连接的脚位的高低电平,那么最基本的通讯应该能够实现。前提是各管脚输入输出要配置正确,片选等功能也要正确开启哦,硬件电路设计要正确。你是用的是哪一款打片机?根据你的描述有两种可能:a、数据写入没有成功,所以读不出来数据;b、数据读出程序不对。所以问题就出在读写程序上面,如果第二次以后都是可以读的,那就肯定是第一次写入没有成功。
暂无评论内容