十年專注單片機方案開發的方案公司英銳恩,分享單片機內部EEPROM讀寫操作步驟 。英銳恩現提供服務產品涉及主控芯片:8位單片機、16位單片機、32位單片機及各類運算放大器等。
從EEPROM中讀取數據步驟:
1、把地址寫入到地址寄存器EEADR中,注意該地址不能超過所用PIC1687X型號 單片機內部EEPROM實際容量。
2、把控制位EEPGD清零,以選定讀取對象為EEPROM數據存儲器。
3、把控制位RD置1,啟動本次讀操作。
4、讀取已經反饋到EEDATA寄存器中的數據。
寫EEPROM數據存儲器的操作步驟:
1、確保目前的WR=0;假如WR=1,表明一次寫操作正在進行,需要查詢等待。
2、把地址送入EEADR中,并且確保地址不會超出目標單片機內部EEPROM的最大地址范圍。
3、把準備燒寫的8位數據送入EEDATA中。
4、清除控制位EEPGD,以指定EEPROM作為燒寫對象。
5、把寫使能位WREN置1,允許后面進行寫操作。
6、清除全局中斷控制位GIE,關閉所有中斷請求。
7、執行專用的“5指令序列”,這5條指令是廠家規定的規定搭配,絲毫不能更改。用1條移動指令把55H寫入到W,用1條移動指令再把w中的55H轉入控制寄存器EECON2中,用1條移動指令把AAH寫入W,用1條移動指令再把W中的AAH轉入控制寄存器EECON2中
用ICD 2 在線調試的時候,這“5條指令序列”,必須全速執行,不能單步執行,否則無法寫入EEPROM數據
8、全局中斷控制位GIE置1,放開總中斷屏蔽位(如果打算利用EEIF中斷功能)。
9、清除寫操作允許位WREN,在本次寫操作沒有完畢之前禁止重開新的一次寫操作。
10、當寫操作完成時,控制位WR被硬件自動清零0,中斷標志位EEIF被硬件自動置1。
如果本次寫操作還沒有完成,那么可以用軟件查詢EEIF位是否為1,或者查詢WR位是否為0,來判定寫操作是否結束。