最近工作上遇到新的技術....
但對新人的我來說, 眼前看到的都是新技術.
這兩個星期我都在研究EEPROM.
EEPROM是個可讀寫的保留儲存器, 保存期限由"年"為單位.
如果想存一筆資料長久使用, 可以考慮EEPOMR.
C:此以IC690為範例
void Write_EE ( char, char, char, char ) ;
// 我有兩筆資料要輸入進去, 此為宣告, Write_EE () 內, 告訴程式你的資料型態.
void Read_EE ( char,char ) ;
// 宣告 資料讀取
volatile unsigned char Temp_A ; // 宣告 資料一
volatile
unsigned
char
Temp_B ;
// 宣告 資料二
volatile
unsigned
char
Address_A ;
// 宣告 EE位子一
volatile
unsigned
char
Address_B ;
// 宣告 EE位子二
void main ( void ) // 主程式
{
Address_A = 0x10E ; // DATH 的位子
Address_B = 0x10C ; // DAT 的位子
Temp_A = 2 ; // 資料一
Temp_B = 230 ; // 資料二
if ( SW == 1 ) {
Write_EE ( Address_A, Address_B, Temp_A, Temp_B ) ;
// 按下SW1 開始寫入資料
}
if ( SW == 2 || SW == 3 ) {
Read_EE ( char, char ) ;
// 按下 SW2 或 SW3 開始讀取資料
}
}
void Write_EE ( char Add_A, char Add_B, char DATA_H, char DATA )
{
EEADR = Add_B ; // Add_B = Address_B 存入的位子
EEDATA = DATA ; // Temp_B 存入到 DATA
EEADRH = Add_A ; // Add_A = Address_A 存入的位子
EEDATH = DATA_H ; // Temp_A 存入到 DATA_H
GIE = 0 ;
asm ( "nop" ) ;
asm ( "nop" ) ;
WREN = 1 ;
EECON2 = 0x55 ;
EECON2 = 0xAA ;
WR = 1 ;
while(WR) ;
GIE = 1 ;
WREN = 0 ;
}
// Write_EE存檔成功, 遇斷電時, 資料會安全的保存直到下一次的寫入.
void Read_EE ( char Add_B, char Add_A )
{
EEADR = Add_B ; // 資料一
EEADRH = Add_A ; // 資料二
RD = 1 ;
asm ( "nop" ) ;
asm ( "nop" ) ;
Temp_B = EEDATA ; // 存起來的值提給 Temp
Temp_A = EEDATH ;
}
// 其他處的網路範本為一個值得輸入, 用return 回傳值出去.
// 因為此為兩值, 為方便讀取, 用 等號 為傳值.
EE_Address, 是指儲存的EE位子.
如使用到 DATA, 在 EEADR 那寫入 DATA的位子, 例:690的DATA是 0x10C (16進位).
文章定位: