|
你這個(gè)問(wèn)題,最后,解決了么? 如果解決了,可跳過(guò)后續(xù)內(nèi)容。
你這個(gè)單片機(jī),正式名稱(chēng)應(yīng)該是 IAP15W4K61S 吧。
STC 的 IAP系列,都是程序和Eeprom 共用空間的,即程序空間 = Eeprom空間 (物理上)。
那么,帶來(lái)一個(gè)問(wèn)題,對(duì)于,KEIL來(lái)講,你是只有程序空間,沒(méi)有Eeprom空間的。下面比較拗口,不知道我這樣描述,你是否能理解,盡我最大努力吧。
在ICE仿真的時(shí)候,你的程序,其實(shí)是在電腦上的,電腦上單步運(yùn)行,然后,把需要執(zhí)行的指令,通過(guò)串口傳給單片機(jī),然后,單片機(jī)收到后在單片機(jī)運(yùn)行,如果有返回值,則把返回值返回給電腦。即,程序在電腦,運(yùn)行在單片機(jī)。
那么,(重點(diǎn))問(wèn)題來(lái)了,你寫(xiě)一個(gè)數(shù)值到Eeprom, 指令傳輸給單片機(jī)后,單片機(jī)運(yùn)行后,他確確實(shí)實(shí)把這個(gè)值寫(xiě)到了單片機(jī)上的指定位置。此時(shí),有沒(méi)有返回值?有,寫(xiě)成功這個(gè)值回傳到電腦了,但是,沒(méi)有其他的返回值了。因?yàn)槭聦?shí)上,Eeprom操作時(shí),也不會(huì)有其他的返回值,所以,你電腦端(Keil),根本不會(huì)知道,你單片機(jī)的某個(gè)地址,發(fā)生了內(nèi)容變更。
而,你電腦上Memory 1 看到的,其實(shí)是你電腦上的為了執(zhí)行ICE仿真而做出來(lái)的“程序區(qū)”的內(nèi)容。和實(shí)際上單片機(jī)上的程序區(qū)內(nèi)容,是完全沒(méi)有任何關(guān)系的。事實(shí)上,你單片機(jī)上燒錄了仿真程序后,會(huì)占用6K容量,這一點(diǎn),你在仿真的時(shí)候,也無(wú)法在Keil的 地址區(qū)看到。
所以,這就是一個(gè)信息不對(duì)稱(chēng)問(wèn)題,而實(shí)際上,你只要多寫(xiě)一個(gè) IAP_CMD = 1 的讀程序,讀你寫(xiě)入的地址,存到一個(gè)變量,你就能發(fā)現(xiàn),IAP操作,其實(shí)是成功了。
不知道這么描述,是否能把我想表達(dá)的意思傳遞給你,如果能,就太好了。如果不能,我只能說(shuō)抱歉了,我已經(jīng)盡力了。 |
|