<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 單片機STC89C52RC內部EEPROM

單片機STC89C52RC內部EEPROM

作者: 時(shí)間:2016-11-26 來(lái)源:網(wǎng)絡(luò ) 收藏
單片機運行時(shí)的數據都存在于RAM(隨機存儲器)中,在掉電后RAM 中的數據是無(wú)法保留的,那么怎

樣使數據在掉電后不丟失呢?這就需要使用EEPROM 或FLASHROM 等存儲器來(lái)實(shí)現。

本文引用地址:http://dyxdggzs.com/article/201611/321811.htm

在傳統的單片機系統中,一般是在片外擴展存儲器,單片機與存儲器之間通過(guò)IIC 或SPI 等接口來(lái)進(jìn)行數據通信。

這樣不光會(huì )增加開(kāi)發(fā)成本,同時(shí)在程序開(kāi)發(fā)上也要花更多的心思。在STC 單片機中內置了EEPROM(其實(shí)是采用
ISP/IAP 技術(shù)讀寫(xiě)內部FLASH 來(lái)實(shí)現EEPROM),這樣就節省了片外資源,使用起來(lái)也更加方便。下面
就詳細介紹STC 單片機內置EEPROM 及其使用方法

STC 各型號單片機內置的EEPROM 的容量最小有2K,最大有16K,基本上很好地滿(mǎn)足項目的需要,更
方便之處就是節省了周邊的EEPROM 器件,達到節省成本的目的,而且內部EEPROM 的速度比外部的
EEPROM 的速度快很多。
STC 各型號單片機內置的EEPROM 是以512 字節為一個(gè)扇區,EEPROM 的起始地址=FALSH 容量值+1,
那么STC89C52RC 的起始地址為0x2000,第一扇區的起始地址和結束地址0x2000~0x21FF,第二扇區
的起始地址和結束地址0x2200~0x23FF,其他扇區如此類(lèi)推。
深入重點(diǎn):
?傳統的EEPROM 是電可擦可編程只讀存儲一種掉電后數據不丟失的存儲芯片。
? STC89C52RC 的EEPROM 是通過(guò)ISP/IAP 技術(shù)讀寫(xiě)內部FLASH 來(lái)實(shí)現EEPROM。
? STC89C52RC 的EEPROM 起始地址為0x2000,以512 字節為一個(gè)扇區,EERPOM 的大小為2K 字節。


STC89C52RC 與EEPORM 實(shí)現的寄存器有6 個(gè),分別是ISP_DATA、ISP_ADDRH、ISP_ADDRL
ISP_TRIG、ISP_CMD、ISP_CONTR。

1. ISP_DATA 寄存器
ISP_DATA 寄存器:ISP/IAP 操作時(shí)的數據寄存器。
ISP/IAP 從Flash 的數據在此處,向Flash 寫(xiě)的數據也須放在此處。
示例1:讀單個(gè)字節
UINT8 EEPROMRead(UINT16 addr)
{
……
return ISP_DATA;
}
示例2:寫(xiě)單個(gè)字節
void EEPROMWrite(UINT8 byte)
{
……
ISP_DATA=byte;
}

2.ISP_ADDRH、ISP_ADDRL 寄存器
ISP_ADDRH: ISP/IAP 操作時(shí)的地址寄存器高八位
ISP_ADDRL: ISP/IAP 操作時(shí)的地址寄存器低八位
示例1:設置地址
void EEPROMSetAddress(UINT16 Addr)
{
……
ISP_ADDRH=(UINT8)(Addr>>8);
ISP_ADDRL=(UINT8) Addr;
}

3.ISP_CMD 寄存器
ISP_CMD: ISP/IAP 操作時(shí)的命令模式寄存器,需要通過(guò)ISP_TRIG 命令觸發(fā)寄存器才能生效。

4.ISP_TRIG 寄存器
ISP/IAP 命令要生效即ISP_CMD 設置的命令要生效,必須通過(guò)ISP_TRIG 命令觸發(fā)寄存器進(jìn)行觸發(fā)。
觸發(fā)過(guò)程很特別,只需要連續二次對ISP_TRIG 寄存器賦值就可以的了,對ISP_TRIG 寄存器先寫(xiě)入
0x46,再寫(xiě)入0xB9 就完成命令觸發(fā)的過(guò)程。
示例1:命令觸發(fā)
void EEPROMCmdTrig(void)
{
……
ISP_TRIG=0x46;
ISP_TRIG=0xB9;
}
5.ISP_CONTR 寄存器
ISP_CONTR:ISP/IAP 控制寄存器
ISPEN:ISP/IAP 功能允許位。0:禁止ISP/IAP 編程改變Flash。
SWBS: 0:軟件選擇從用戶(hù)主程序區啟動(dòng)1:ISP 程序區啟動(dòng)
SWRST: 0:不操作1:產(chǎn)生軟件系統復位,硬件自動(dòng)清零
WT2、WT1、WT0:設置等待時(shí)間

假如STC89C52RC 的工作頻率為12MHz,那么機器周期為1us,參照表12-,EEPROM 的讀單個(gè)字
節、寫(xiě)單個(gè)字節、扇區擦除的所需要的時(shí)間大致如下:
讀單字節: 11*1us=11us
寫(xiě)單字節: 60*1us=60us
扇區擦除: 10942*1us=10.942ms
無(wú)論單片機運行在什么工作頻率下,EEPROM 的讀、寫(xiě)、擦除操作的所需要的時(shí)間分別約為10us、60us、
10ms。


深入重點(diǎn):
? STC89C52RC 與EEPORM 實(shí)現的寄存器有6 個(gè),分別是ISP_DATA、ISP_ADDRH、
ISP_ADDRL ISP_TRIG、ISP_CMD、ISP_CONTR。
? EEPROM 的命令觸發(fā)必須對ISP_TRIG 寄存器先寫(xiě)入0x46,再寫(xiě)入0xB9。
? 無(wú)論單片機運行在什么工作頻率下,EEPROM 的讀、寫(xiě)、擦除操作的所需要的時(shí)間分別約
為10us、60us、10ms,因而要對ISP_CONTR 設置好等待時(shí)間,否則數據容易出現問(wèn)題。


關(guān)鍵詞: 單片機STC89C52RC內部EEPRO

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>