新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > R8C/1B單片機的Flash編程/擦除掛起功能

R8C/1B單片機的Flash編程/擦除掛起功能

作者: 時間:2009-08-07 來源:電子產(chǎn)品世界 收藏
圖4EW1模式的擦除掛起設(shè)定

  在EW1模式下執(zhí)行擦除指令進行擦除時(典型值為200ms/1K字節(jié)塊),CPU雖處于HOLD狀態(tài),但可以接受中斷響應(yīng),實現(xiàn)分時擦除。利用這個工作原理,下面給出一個/1B單片機的應(yīng)用實例,利用Timer(定時器)中斷和擦除掛起功能實現(xiàn)對擦除時間的估算。

本文引用地址:http://m.butianyuan.cn/article/96982.htm

  使用TimerX定時1ms,擦除過程中每1ms掛起一次,進入中斷處理程序并調(diào)整計時變量g_Timers。在擦除結(jié)束后,g_Timers所存儲的就是擦除時間的估算值。

  例程如下。

  #include "sfr_r81b.h"

  unsigned int g_Timers;//總擦除時間計數(shù)變量

  /* 定時器X中斷處理函數(shù) */

  #pragma interrupt timerX_ISR

  void timerX_ISR(){

  g_Timers++;

  }

  /* 檢查DataFlash狀態(tài)寄存器 */

  unsigned char checkStatusRegister(){

  return fmr07|fmr06;

  }

  /* 清除DataFlash狀態(tài)寄存器 */

  void clearStatusRegister(){

  *((unsigned char *)0x2400) = 0x50;//執(zhí)行清除狀態(tài)寄存器軟件命令

  }

  /* 塊擦除 */

  unsigned char eraseBlock(unsigned int adr){

  unsigned char result="1";

  asm("FCLR I");//關(guān)中斷

  fmr01 = 0;

  fmr01 = 1;//進入CPU改寫模式

  fmr11 = 0;

  fmr11 = 1;//設(shè)置為EW1模式&nb



關(guān)鍵詞: 瑞薩 R8C Flash

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉