新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > R8C/1B单片机的Flash编程/擦除挂起功能

R8C/1B单片机的Flash编程/擦除挂起功能

作者:时间:2009-08-07来源:电子产品世界收藏
图4EW1模式的擦除挂起设定

  在EW1模式下执行擦除指令进行擦除时(典型值为200ms/1K字节块),CPU虽处于HOLD状态,但可以接受中断响应,实现分时擦除。利用这个工作原理,下面给出一个/1B单片机的应用实例,利用Timer(定时器)中断和擦除挂起功能实现对擦除时间的估算。

本文引用地址:http://www.eepw.com.cn/article/96982.htm

  使用TimerX定时1ms,擦除过程中每1ms挂起一次,进入中断处理程序并调整计时变量g_Timers。在擦除结束后,g_Timers所存储的就是擦除时间的估算值。

  例程如下。

  #include "sfr_r81b.h"

  unsigned int g_Timers;//总擦除时间计数变量

  /* 定时器X中断处理函数 */

  #pragma interrupt timerX_ISR

  void timerX_ISR(){

  g_Timers++;

  }

  /* 检查DataFlash状态寄存器 */

  unsigned char checkStatusRegister(){

  return fmr07|fmr06;

  }

  /* 清除DataFlash状态寄存器 */

  void clearStatusRegister(){

  *((unsigned char *)0x2400) = 0x50;//执行清除状态寄存器软件命令

  }

  /* 块擦除 */

  unsigned char eraseBlock(unsigned int adr){

  unsigned char result="1";

  asm("FCLR I");//关中断

  fmr01 = 0;

  fmr01 = 1;//进入CPU改写模式

  fmr11 = 0;

  fmr11 = 1;//设置为EW1模式&nb



关键词: 瑞萨 R8C Flash

评论


相关推荐

技术专区

关闭