400-810-1218加入收藏夹|设为主页|广告服务|网币|登录|注册
当前位置:首页 >> 技术频道 >> 单片机开发

利用串口与并口实现51单片机的在线编程

来源:单片机及嵌入式系统应用 作者:张懿 发布时间:2009-05-26 10:09:07 发表评论

摘要:  详细说明利用并口模拟I2C总线协议,实现Myson MTV230芯片的在线编程(ISP)过程,以及利用PC机的串口通信实现Winbond W78E516B的在线编程(ISP)过程。

关键词:51单片机

  2.6 程序说明

  如前文所述,MTV230在进入在线编程模式后,就相当于一个I2C从设备,编程逻辑全都由在PC上运行的程序来实现。该程序采用VC6.0编写。编程程序的主界面如图2所示,主要模块如表1所列。由于用并口模拟I2C对单片机编程,会使该线程暂时处在阻塞状态,假如在主线程(UI)中实现该过程,则在对芯片编程时,程序的主界面就无法响应用户退出命令,所以采用了多线程程序结构,在一个工作线程实现该过程,使用户可以随时退出编程过程。

  

 

  表1所列的头三个类采用了层次设计结构:上层类调用下层类,下层类为上层类提供接口,这样设计保证了代码的最大可重用性。举例来说,假如有另一芯片同样是使用I2C接口进行在线编程,则只要重写MTVISP这个芯片的在线编程协议类就可以了;如果使用前面所述的并口实现方案1或3,只要重写最底层的Parallel类便可。

  

 

  程序工作线程的大致流程如图3所示。

  

 

  程序的特色:

  ① 可以自己设置I2C速度的高低,模拟I2C的并口地址,以及使用并口的引脚。

  ② 可以选择简单校验和完全校验,即对编程后的芯片是进行内部校验寄存器值的简单校验,还是将

  芯片中的内容全部读出与编程文件进行比较的完全校验。

  ③ 可以对芯片内的程序区、OSD区进行编程,还可以读出这两区的数据(只有对可以设定进入在线编 程模式的程序才可以)。

  ④ 进行烧写的文件支持二进制文件格式(*.bin)与Intel的Hex文件格式(*.hex)。

  3 利用串口对W78E516B在线编程的实现

  3.1 W78E516B简介

  W78E516B是由Winbound公司出品的基于52内核的高性能芯片,外部晶振可以达到40MHz,内部具有64KB的程序区与4KB的引导程序区,以及256B的RAM区和256B的AUX-RAM区。AUX-RAM区相当于外部存储区,进行寄存器设置后,用MOVX指令进行访问。在Keil编译器中,进行相应的设置便可使用pdata类型变量访问。

  3.2 W78E516B在线编程模式的进入

  W78E516B在线编程模式的进入可以分为两种模式:一种为软件模式,另一种为硬件模式。当芯片进入在线编程模式后,芯片会从现在的64KB程序区跳转到4KB的引导区的0x00地址处去执行程序。如前文所述,该类型芯片的在线编程逻辑都是由在这4KB引导区中的程序决定的,而上位机(PC)只是为在线编程提供一个数据源。

  (1)软件进入模式

  ① 向CHPERN寄存器依此写入0x87,0x59开启CHPCON寄存器的写模式。

  ② 关闭中断。

  ③ 向CHPCON写入0x03表示进行程序区编程。

  ④ 向CHPCRN写入0x00关闭CHPCON寄存器写模式。

  ⑤ 设置好定时器为延时12μs引发中断。

  ⑥ 将单片机转入空闲模式,开启中断。

  例如:将以下程序嵌入主循环中,当串口收到字符“A”时便进入在线编程模式:

  if(B_Temp==‘A’{//B_Temp中存放从串口接收到的数

  TR0=0; //停止定时器

  TH0=TL0=256-250; //设置定时器定时值

  CHPENR = 0x87; //开启CHPCON写模式

  CHPENR = 0x59;

  CHPCON|=0x03; //开启编程功能

  CHPENR=0x00; //关闭CHPCON写模式

  TR0=1; //开启定时器

  PCON=0x01; //转入空闲模式

  }

0
顶一下
0
踩一下

相关文章

发表评论

请自觉遵守互联网相关政策法规,作者管理后台可以删除恶意评论、广告和违禁词语。