基于P89C51RD2单片机系统远程程序下载的实现

分享到:
点击量: 214978
P89C51RD2芯片特点简介

  P89C51RD2是8 位80C51 单片机的派生产品,它们在完全保留80C51 指令系统和硬件结构的大框架外,进行了多方面的加强、扩展、翻新和**,在*大限度地利用原有的结构的方方面面,可以说做到了****。P89C51RD+将原有的对外部数据和程序存储器的16 位寻址机制加以利用,把片上的RAM 扩展到1k 字节,片上的FLASH EPROM 扩展到64k字节,满足当今用嵌入式**语言对片上大存储器容量的需要。因为FLASH 存储器的采用使在ISP 在系统中编程乃至IAP 在运行中编程等先进技术有了实现的可能。芯片上免费提供BOOTROM 固件并且巧妙地解决了固件和FLASH 的地址覆盖问题和一些具体实现细节问题,使它们的实现变得简单。

主要特点:
时钟频率0~33MHz
双DPTR 指针
新增加片内16 位寻址ERAM 扩展RAM
模块PCA 支持上下沿捕捉PWM 输出软件定时器看门狗定时器等模式
全双工UART 串行口新增硬件帧检错和地址自动识别电路
嵌套中断系统增强为7 源4 优先级

为降低EMI 无必要不开放ALE 脚上的信号
支持0 钟频模式空闲模式下电模式和ONCE 仿真模式等
支持ISP/IAP编程

P89C51RD2芯片几种编程方式的比较

1.通过专用编程器对芯片进行编程。目前国内支持对89C51RD2芯片编程的编程器有

西尔特公司SUPERPRO 系列编程器(并口)
润飞公司810编程器(并口)
炜煌公司WH-500A编程器(串口)
优点:编程快速,适于开发中应用
缺点:CPU必须从目标板中拔出,编程后再插入目标板,比较繁琐,只能本地编程,不能远程下载程序。

2. 在系统中编程ISP。ISP是(In System Programming )是Lattice半导体公司首先提出来的一种我们能在产品设计、制造过程中的每个环节,甚至在产品卖给*终用户以后,具有对其器件、电路板或整个电子系统的逻辑和功能随时进行组态或重组能力的*新技术。

对P89C51RD2单片机系统而言,即当MCU安装在用户板上时,允许通过串口下载用户程序。

优点:CPU不必从目标板中拔出;
下位机软硬件简单设置即可进入编程模式;
通过串口可实现本地或远程下载;

缺点:编程过程中不能出错,否则可能只能通过编程器进行编程;下载速度较慢。

3.在应用中编程IAP。 IAP是In ApplIcation Programming 的缩写。

优点:CPU不必从目标板中拔出。通过串口可实现本地或远程下载;

缺点:下位机需要编制各编程功能子程序,编程过程中不能出错,否则可能只能通过编程器进行编程;
下载速度较慢。

ISP/IAP编程的实现
STATUS BYTE 和BOOT VECTOR寄存器的说明
  P89C51RD2有两个特殊的FLASH 寄存器STATUS BYTE 和BOOT VECTOR。 注意它们不在SFR中,在FLASH 空间里。上电复位RST腿由有效正电平转入下降沿时,P89C51Rx+自动检查STATUS BYTE 的内容,如果是0 则转去0000H 地址,开始执行程序,这是正常运行方式。如果不是0, 则去BOOT VECTOR 寄存器取其内容做为程序计数器的高字节,低字节固定为00H。芯片出厂时给BOOT VECTOR 寄存器预置为缺省值0FCH 相当于0FC00H 地址。

  如果BOOT VECTOR 中的地址既非0FCH 又非自己编程程序的页界高地址,则上电复位的话程序必将飞溢。这时**解决问题的办法只能使用商用编程器对BOOT VECTOR 的内容进行并行地改写。还有一点要注意当对FLASH 进行擦除时FLASH 寄存器STATUS BYTE 和BOOT VECTOR也同时被擦除,所以必需对它们从新编程。还有BOOT VECTOR 未被擦除前STATUS BYTE 无法被擦除。

BOOT ROM固件的说明

  菲利浦公司为P89C51Rd2在片内提供了一个名叫引导ROM.BOOT ROM 的1K 字节的固件。固件上有引导装载程序可以接收主机经串口传来的命令和数据。如经PC 机的RS232 口还有对FLASH 进行串行擦除和写入等多种子程序。这个固件是放在64K 程序存储器的***的与片内FLASH 地址0FC00H~0FFFFH 相覆盖。需要用特殊功能寄存器AUXR1 的ENBOOT 位进行固件和FLASH 之间的切换。
ENBOOT=1 地址在0FC00H 0FFFFH 范围寻址到固件;
ENBOOT=0 地址在0FC00H 0FFFFH 范围寻址到FLASH。
  如果系统寻址到0FC00H且进入固件,则系统进入系统进入ISP 运行状态,准备接受上位机通过串口传送的命令,而进行相应的擦除、编程等操作。

  BOOT ROM 固件中已经固化有上述擦除和编程等子程序,所以应用程序也可来调用各功能子程序。为了调用的方便,给各种功能子程序一个共用的函数,调用入口名为PGMMTP,地址为0FFF0H ,输入参数为(R0、R1、R2、DPTR、ACC),输出参数在ACC中。

进入BOOT ROM固件进行编程操作的方式
1.硬件方式:
方式1:在RST转入下降沿时:
◆PSEN 腿被拉到低电平
◆ALE 腿浮空
◆EA 腿的电压>高电平+5Vih
结果:ENBOOT 位的被置1,CPU寻址到FC00H,进入BOOT ROM,系统进入ISP 运行状态,准备接受上位机通过串口传送的命令,而进行相应的擦除、编程等操作。
方式2:在RST转入下降沿时:

STATUS BYTE=非00值,BOOT VECTOR=0FCH
结果:ENBOOT 位的被置1,CPU寻址到FC00H,进入BOOT ROM,系统进入ISP 运行状态,准备接受上位机通过串口传送的命令,而进行相应的擦除、编程等操作。

2.软件方式:

方式3:系统正常运行时,
STEP1: 使ENBOOT=1(SETB AUXR1.5),
SETP2: 关闭中断。(CLR EI)
SETP3: 使程序跳转到0FC00H(LJMP 0FC00H)
结果:系统进入ISP 运行状态,准备接受上位机通过串口传送的命令,而进行相应的擦除、编程等操作。
方式4:编制下位机各编程功能子程序(…CALL PGMMTP…)
系统正常运行时,按照具体要求,进入IAP状态,接受上位机通过串口传送的命令,调用相应的功能子程序,进行相应的擦除、编程等操作。

对P89C51RD2芯片进行远程编程的实现

  如前所述,本地下载的直接实现,对上位机可使用菲利普公司提供的免费下载软件:WinISP ,下载网址为http://www.semiconductors.philips.com/。对下位机可采用方式1或3即可。

  若要实现远程下载,则可以编写Windows 图形界面的通用ISP 程序,从而使主机侧的工作变成只需用鼠标点击就可轻松地完成各种记录的发送。当然上位机要编入MODEM连接或INTERNET连接的操作程序。下图为可进行本地串口连接、MODEM连接或INTERNET连接的DEMO界面。

下位机可采用方式3。

应用过程举例:

STEP1:上位机控制端通知远程下位机设备端,用户程序要进行升级,请连接好串口(232/485/MODEM/INTERNET);
STEP2:上位机控制端通过下载软件将程序传送至下位机设备端;

STEP3:上位机控制端通知远程下位机设备端,用户程序升级完毕,请将设备关机重新启动后即完成升级。
当然,IAP方式也可实现远程下载,只不过需要开发人员自己动手编制下位机程序下载相关子程序。