|
用的竟然是汇编?我也是汇编搞定eeprom读写,我没碰到这种障碍,我的习惯不用 仿真,其实我也不会用仿真,我在开发板po口接八个指示灯,需要读取数据验证 发送到p0口看一下数值,这种实际方法让我扫除了很多编程路上的障碍 |
| 9#说的很对。的确如此。也意识到此点了。后期仿真时规避掉此了。谢谢。 |
yzwzfyz 发表于 2016-11-8 01:11 你这个问题,最后,解决了么? 如果解决了,可跳过后续内容。 你这个单片机,正式名称应该是 IAP15W4K61S 吧。 STC 的 IAP系列,都是程序和Eeprom 共用空间的,即程序空间 = Eeprom空间 (物理上)。 那么,带来一个问题,对于,KEIL来讲,你是只有程序空间,没有Eeprom空间的。下面比较拗口,不知道我这样描述,你是否能理解,尽我最大努力吧。 在ICE仿真的时候,你的程序,其实是在电脑上的,电脑上单步运行,然后,把需要执行的指令,通过串口传给单片机,然后,单片机收到后在单片机运行,如果有返回值,则把返回值返回给电脑。即,程序在电脑,运行在单片机。 那么,(重点)问题来了,你写一个数值到Eeprom, 指令传输给单片机后,单片机运行后,他确确实实把这个值写到了单片机上的指定位置。此时,有没有返回值?有,写成功这个值回传到电脑了,但是,没有其他的返回值了。因为事实上,Eeprom操作时,也不会有其他的返回值,所以,你电脑端(Keil),根本不会知道,你单片机的某个地址,发生了内容变更。 而,你电脑上Memory 1 看到的,其实是你电脑上的为了执行ICE仿真而做出来的“程序区”的内容。和实际上单片机上的程序区内容,是完全没有任何关系的。事实上,你单片机上烧录了仿真程序后,会占用6K容量,这一点,你在仿真的时候,也无法在Keil的 地址区看到。 所以,这就是一个信息不对称问题,而实际上,你只要多写一个 IAP_CMD = 1 的读程序,读你写入的地址,存到一个变量,你就能发现,IAP操作,其实是成功了。 不知道这么描述,是否能把我想表达的意思传递给你,如果能,就太好了。如果不能,我只能说抱歉了,我已经尽力了。 |
| 5楼:先谢过。我停一下中断试试。 |
ahshmj 发表于 2016-11-7 19:01 您所列的不在我求助之列! 比如光标停在第10条,我要跳过11-19不运行,将其拖到第20条开始运行,就办不到。或者拖到第9条再运行一次,就办不到。 |
|
前几天刚做过STC的EEPROM,发现有两个要点 1.写5A和A5之后(15F104为例)要相应延时给程序操作,否则会中断造成不成功 2.一定要停中断和定时,如果是定时器的我建议放到定时器里面 我也是找了好多天才发现,手册之中只是说了要延时,没说停中断 |
|
只能说明你对Keil uVision4不熟悉。 运行、运行至光标、插入断点等功能。 用stc的eeprom读写程序试一试? |
|
程序是用“Keil uVision4”调试的。 另外发现: “Keil uVision4”的debug,其调试运行指针,无法自由定位。即如果要将运行位置移动至另一个地方运行是办不到的。它只能按照程序的既定序列运行。这很不方便。而伟福的仿真程序是能办到的。 谁有这个问题(对于STC的仿真)的解决方法?这里请教了。 |
|
另外,将 MOV IAP_CMD, #3 ;擦除 改为: MOV IAP_CMD, #2 ;写入 发现写入数据,也未成功。 |