串口与并口的51单片机在线编程
[09-12 17:54:38] 来源:http://www.88dzw.com 单片机学习 阅读:8684次
文章摘要: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程序区跳转到
串口与并口的51单片机在线编程,标签:单片机开发,单片机原理,单片机教程,http://www.88dzw.com3 利用串口对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; //转入空闲模式
}
(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所示。
Tag:单片机学习,单片机开发,单片机原理,单片机教程,单片机学习
《串口与并口的51单片机在线编程》相关文章
- › 串口与并口的51单片机在线编程
- › 利用串口与并口实现51内核单片机的在线编程
- 在百度中搜索相关文章:串口与并口的51单片机在线编程
- 在谷歌中搜索相关文章:串口与并口的51单片机在线编程
- 在soso中搜索相关文章:串口与并口的51单片机在线编程
- 在搜狗中搜索相关文章:串口与并口的51单片机在线编程
分类导航
最新更新