新闻中心

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

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

作者:时间:2009-08-07来源:电子产品世界收藏

  sp;

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

  fmr40 = 0;

  fmr40 = 1;//允许中断擦除挂起

  asm("FSET I");//开中断

  g_Timers = 0;//计数值清零

  prex=0x32-1;tx=0x32-1;//定时值1ms

  txs=1;//定时器X开始计数

  *((unsigned char *)adr) = 0x20;//执行块擦除软件命令

  *((unsigned char *)adr) = 0xD0;

  while(fmr00 != 1){//判断擦除是否结束

  fmr41 = 0;//中断返回后继续擦除

  }

  txs=0;//定时器X停止计数

  fmr01 = 0;//退出CPU改写模式

  if(!checkStatusRegister()){//查看状态寄存器

  result = 0;//擦除成功

  }

  else //擦除失败

  clearStatusRegister();//清除状态寄存器

  return result;

  }

  /* 对MCU进行初始化 */

  void initMCU(){

  unsigned char i="0";

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

  //将CPU时钟切换为主时钟20MHz

  prcr = 1;//解除对cm0,cm1,ocd寄存器的写保护

  cm13 = 1;//接通 Xin-Xout

  cm15 = 1;//Xin-Xout驱动能力:高

  cm05 = 0;//Xin-Xout启动

  cm16 = 0;//无分频模式

  cm17 = 0;

  cm06 = 0;//使CM16,CM17有效

  while(1){//等待主时钟振荡稳定

  if(!ocd3){

  if(i>=10) break;

  else ++i;

  }

  }

  ocd2 = 0;//选择主时钟

  prcr = 0;//设定对cm0,cm1,ocd寄存器的写保护

  //设置定时器

  txmr=0x00;//定时器X设为定时器模式

  tcss=0x11;//选择计数源为f8

  txic=0x07;//定时器X中断优先级为7

  asm("FSET I");//开中断

  }

  /* 主函数 */

  void main(void)

  {

  unsigned char flag;

  initMCU();//对MCU进行初始化

  flag = eraseBlock(0x2400);//擦除大小为1kB的块A,块首地址为2400H

  while (1);

  }



关键词: 瑞萨 R8C Flash

评论


相关推荐

技术专区

关闭