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

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

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

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

关键词:51单片机

  (2)硬件进入模式

  如表2所列,将相应引脚设置为相应电平,在进行复位以后也可进入在线编程模式。值的注意的是,在芯片正常工作时应避免误入在线编程模式,否则后果不堪设想。表2中L代表低电平,X代表任意电平。

  

 

  3.3 W78E516B在线编程的实现

  (1)单片机引导区程序

  W78E516B在线编程逻辑主要在这部分程序中实现。在参考文献[2]中的最后有一个示例程序,它是从外部的SRAM中读取数据对64KB程序区进行编程。将其改写一下,变为从串口读入数据。对程序区进行更新,大致流程与示例程序相同,代码也大致相同。有兴趣的朋友可以自行阅读文献[2]中的程序源文件,在此只列出关键的更改处:

  ;使用24MHz晶振

  ;使用WAVE编译程序

  ;其中R3存有待写入数据字节数-1的高16位

  ;其中R4存有待写入数据字节数-1的低16位

  JMP PROG_D_64K

  PADJUEST:

  INC R2 ;将低位地址增加1

  CJNE R2,#00H,PROG_D_64K

  INC R1 ;低位进位时将高位增加1

  MOV SFRAH,R1 ;改变高位地址

  PROG_D_64K:

  MOV SFRAL,R2 ;将低位地址放入

  JNB RI,$ ;从串口接收一个待写入的字节

  MOV A,SBUF

  CLR RI

  MOV SFRFD,A ;将待写入的值放入

  MOV TCON,#10H ;开启定时器

  MOV PCON,#01H ;CPU进入IDLE状态(进行编程)

  CLR C ; 比较R3、R4,看是否写入完成

  MOV A,R4

  SUBB A,R2

  JNZ PADJUEST

  CLR C

  MOV A,R3

  SUBB A,R1

  JNZ PADJUEST

  (2)PC机程序

  PC机程序为单片机提供一个数据源。该数据是通过PC机的串口进行数据传输的。程序由VC6.0编写,串口通信使用的是VC自带的串口控件MSCOMM。由于MSCOMM的接收数据是以消息形式,同时在该程序中接收的数据量很小,而发送数据为阻塞模式,所以新开一个工作线程用于发送数据,而接收数据与主线程合并。程序整体采用状态机模式。单片机进行擦除、编程、校验等各个状态时,都通过串口向PC机发送状态字,PC机通过接收状态字来决定单片机现在的工作状态,并决定要向单片机提供的数据。同时主线程中有一定时器,假如在特定时间内单片机无应答,或应答有误,则报错,停止单片机的编程过程。值得注意的是,由于使用了MSCOMM控件,在未装VC6.0的机器上运行该程序要将源文件SYSTEM目录中的三个文件拷贝到system32系统目录下。程序主界面如图4所示。PC机与单片机通信的工作流程如图5所示。

  

 

  

 

  程序特色:

  ① 可以设定使用的串口与通信的波特率。(与其相应的4KB引导区中的程序也要相应修改)。

  ② 可以设定使单片机进入在线编程模式的字符命令。

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

  4 结 论

  使用并口模拟I2C程序可以方便地对板上的MTV230芯片进行在线编程,使用串口为W78E516B提供数据源也可方便地对其进行编程,两者均经过实践检验,程序完全达到预期目的。使用芯片的在线编程技术,方便了芯片程序的更新,降低了产品的维护成本。

0
顶一下
0
踩一下

相关文章

发表评论

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