找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1721|回復: 7
收起左側

單片機IAP記憶讀寫怎么知道從哪個地址開始寫入

[復制鏈接]
ID:1041297 發(fā)表于 2023-3-15 11:49 | 顯示全部樓層 |閱讀模式
單片機IAP記憶讀寫怎么知道從哪個地址開始寫入,請大家給我講講,謝謝
回復

使用道具 舉報

ID:277550 發(fā)表于 2023-3-15 12:15 | 顯示全部樓層
其實不難,看芯片手冊
回復

使用道具 舉報

ID:1041297 發(fā)表于 2023-3-15 15:52 | 顯示全部樓層
芯片手冊里的IAP沒看懂,所有跑來問
回復

使用道具 舉報

ID:155507 發(fā)表于 2023-3-15 16:07 | 顯示全部樓層
以51單片機為例:其存儲器分為三塊。
1、程序存儲器:可尋址空間64K,用于存放用戶的程序,CPU取指令只能在此空間。
2、外部分擴展存儲器:可尋址空間64K,用于存放數(shù)據(jù),CPU無法在此空間取指令。
3、內部分RAM:256字節(jié)。這里略去功能介紹。

問題來了:如果用戶弄了2K的EEPROM,如何讓它能被CPU尋址(訪問)到呢?
有兩種方案:
1、程序一般用不了64K的全部空間,于是在【程序存儲器】中挖出2K的空間,將它做成EEPROM。這是STC一種做法。例如:IAP15Fxxxx型號芯片。
由于程序存儲器通常只能在燒錄時寫入,而EEPROM卻需要在程序運行中,由程序讀、寫或擦除,為此STC又特意開發(fā)了一套寫、擦它的方式。但讀取仍可以用通用的指令進行,如:MOVC A, @A+DPTR。
這種方案好處是:無需單獨再做EEPROM,直接利用【程序存儲器】的FLASH空間當作EEPROM用,且大小空間比較自由靈活,用不完的FALSH空間可以隨便用。
這里有一個風險:比如:0000-11FFH放的是程序,如果你把此區(qū)域當作是EEPROM,對它進行寫、擦操作,則程序就被破壞掉了。所以這個方案需要你知道程度占多長?哪些區(qū)域是程序用不到的地方。
不過風險中,也有一個重要的好處:可以用程序,修改自己的程序!例如,程序在運行中就能進行自我升級:擦除原來的程序重新寫入新的程序!這是高級用法,就不在此介紹了。

2、在【外部分擴展存儲器】中挖出2K的空間,將它做成EEPROM,這是常用的方式,不多介紹了。
樓主用C語言寫程序,兩種方式無所謂好壞之分。但必須知道EEPROM的數(shù)據(jù)是在哪個區(qū)域,因為你在定義一個EEPROM中的數(shù)據(jù)變量時,需要用到。
如果不考慮在線或遠程升級程序,建議用第2種方式的EEPROM芯片,需要考慮的問題少,不易出錯。


回復

使用道具 舉報

ID:406082 發(fā)表于 2023-3-15 16:42 | 顯示全部樓層
你用的是STC15系列還是其它系列,前幾天我用了SYC15W204S,用IAP的時候EEPROM是從0000H開始的。
回復

使用道具 舉報

ID:1041297 發(fā)表于 2023-3-15 17:56 | 顯示全部樓層
mos03 發(fā)表于 2023-3-15 16:42
你用的是STC15系列還是其它系列,前幾天我用了SYC15W204S,用IAP的時候EEPROM是從0000H開始的。

HC89F0541
回復

使用道具 舉報

ID:1041297 發(fā)表于 2023-3-15 17:56 | 顯示全部樓層
mos03 發(fā)表于 2023-3-15 16:42
你用的是STC15系列還是其它系列,前幾天我用了SYC15W204S,用IAP的時候EEPROM是從0000H開始的。

請問你是怎么看它是從0000H開始的
回復

使用道具 舉報

ID:1034262 發(fā)表于 2023-3-16 10:05 | 顯示全部樓層
看手冊EEPROM那一章
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表