DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 312|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-27 19:48:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

  
         
    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方式也可实现远程下载,只不过需要开发人员自己动手编制下位机程序下载相关子程序。
         
          [/td]
        [/tr]
      
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-8-27 23:31 , 耗时 0.083424 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表