保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

基于P89C51RD2 IAP功能的数据存取与软件升级


的32KB闪存空间由BLOCK3和BLOCK4两块组成,每一块为16KB,足可以存储10天的数据量。在实际操作中,将BLOCK3和BLOCK4轮流使用,当10天的数据量存满其中一块时,通过程序跳转到另一块中,在使用前先将该块擦除。这样BLOCK3和BLOCK4每过20天便分别被擦除和重写1次。对有关地址定义如下:
  
  ADDR_LEQU30H;被编程数据的低8位地址
  
  
  
  
  ADDR_LEQU31H;被编程数据的高8位地址
  
  DATA_TEMPEQU32H;被编程数据
  
  ADDR_L,ADDR_H和DATA_TEMP的具体地址可以根据用户程序的实际情况进行定义;AUXR1,PGM_MTP的定义同前。有关子程序为:
  
  擦除BL0CK3
  
  ERSBLOCK3:;BLOCK3擦除
  
  MOVAUXR1,#20H;AUXR1的位ENBOOT=1,寻址到固件
  
  MOVR0,#11;晶振为11.0592MHz,取11
  
  MOVR1,#01H;R1=01H,块擦除
  
  MOVDPTR,#8000H;擦除BLOCK3
  
  LCALLPGM_MTP;调用,无返回参数
  
  RET
  
  擦除BL0CK4
  
  EPSBLOCK4:;BLOCK4擦除
  
  MOVAUXR1,#20;AUXR1的位ENBOOT=1,寻址到固件
  
  MOVR0,#11;晶振为11.0592MHz,取11
  
  MOVR1,#01H;RI=01H,块擦除
  
  MOVDPTR,#0C000H;擦除BLOCK4
  
  LCALLPGM_MTP;调用,无返回参数
  
  RET
  
  字节编程
  
  WRDATA:
  
  MOVAUXR1,#20H;AUXR1的位ENBOOT=1,寻址到固件
  
  MOVR0,#11;晶振为11.0592MHz,取11
  
  MOVR1,#02H;R1=02H,字节编程功能
  
  MOVDPH,ADDR_H;高8位地址
  
  MOVDPL,ADDR_L;低8位地址
  
  MOVA,DATA_TEMP;被编程数据
  
  LCALLPGM_MTP;调用,返回参数ACC=0,调用成功,非0调用失败
  
  RET
  
  读闪存字节内容
  
  RDDATA:
  
  MOVAUXR1,#20H;AUXR1的位ENBOOT=1,寻址到固件
  
  MOVR0,#11;晶振为11.0592MHz,取11
  
  MOVR1,#03H;R1=03H,读闪存字节内容
  
  MOVDPL,ADDR_L;低8位地址
  
  MOVDPH,ADDR_H;高8位地址
  
  LCALLPGM_TEMP;调用,返回参数ACC中为读出字节内容
  
  RET
  
  将上述4个子程序结合实际情况灵活运用,便可以实现数据的有效存储,而且这些数据在掉电后是不丢失的,完全达到系统要求。
  
  4.2IAP功能应用于仪器升级
  
  利用P89C51RD2固有的ISP功能,在所设计的仪器中增加1个拨码开关,便可以实现智能仪器的软件升级。对操作人员的要不高,原理简单易行。具体方法请见参考文献4。
  
  文献4所讨论的ISP功能与远程升级,实质上是在复位过程中,用相应的硬件控制使程序指针跳转到BootROM空间的0FC00H处。整个过程由ISP程序模块来控制,而用户程序由于是被升级程序,故完全失去了控制权,编程完毕,需要人工复位并使指针切换到用户程序空间中方可使新程序起作用。这给智能仪器升级带来了麻烦,如果巧妙地利用P89C51RD2的IAP功能,则可以使仪器升级变得更加简单。
  
  前面已经指出,ISP和IAP是一脉相承的,ISP功能的实现调用了IAP功能的子程序。所以完全可以利用IAP功能来设计自己的ISP程序,这样,就可以不必在闪存空间和BootROM空间之间跳来跳去。
  
  由于用户程序一般不会超过48KB,故可将B

《基于P89C51RD2 IAP功能的数据存取与软件升级(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/175330.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。