24h購物| | PChome| 登入
2010-08-24 10:35:31| 人氣121| 回應0 | 上一篇 | 下一篇

EEPROM

推薦 0 收藏 0 轉貼0 訂閱站台

最近工作上遇到新的技術....


但對新人的我來說, 眼前看到的都是新技術.


這兩個星期我都在研究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進位).


台長: 愛麗娜
人氣(121) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 數位資訊(科技、網路、通訊、家電) | 個人分類: 瘋子的精典工程 |

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文