基于KEIL 51的单片机开发系统设计
扫描二维码
随时随地手机看文章
1.引言
近年来随着KEIL 51不断升级,高版本的KEIL 51编译器,尤其是Keil μVision2(基于Windows的C51集成编译环境)以其性能优越、使用方便,受到众多单片机爱好者的欢迎。KEIL 51以软件包的形式向用户提供包括C51交叉编译器、A51宏汇编、BL连接定位器等一系列工具和μVision2软件仿真器dScope51等开发平台。但是目前支持高版本KEIL 51编程的仿真器价格较高。为此提供了基于KEIL 51开发系统的设计方案。
2.硬件电路设计
基于KEIL 51开发环境设计开发系统电路原理如图1所示。在图1中存放程序的32K字节外部的数据存储器62256的 (输出允许脚),是将CPU的 和 信号相与后再与之连接,此时的外部数据存储器在 有效时,就相当于程序存储器,当然监控程序的存放地址空间不能与这种接法的外部数据存储空间相重复。这种接法的另一个作用是调试时可以在用户程序代码设置断点,监控程序修改用户程序代码在所有的断点处插入ACALL指令。
图1 基于KEIL 51环境的开发系统电路原理图
3.监控程序设计
开发系统的监控程序可用KEIL 51提供的INSTALL.BAT批处理文件生成,此文件在KEILC51MON51路径下,需在DOS环境下执行,语法如下:
INSTALL serialtype [xdatastart [codestart [BANK]PROMCHECK]]],[]为可选项。
命令中的参数解释如下:
serialtype:串行通信设置,现将有关MCS-51系列单片机的serialtype设置的含义列于表1中。
表1 MCS-51系列单片机的serialtype设置的含义
xdatastart:指定Monitor-51监控程序使用的外部存储单元的页号(一页为256字节),即所需要的硬件资源的第二页,取值为0~FF之间的十六进制数,缺省值为FF。例:xdatastart=FF,则X:0xFF00…X:FFFF(X表示外部数据存储单元)被Monitor-51监控程序存放内部变量,用户应用程序不能使用。
codestart:指定监控程序代码在程序存储器起始页数,即开始位置,取值为0~F0之间的十六进制数,缺省值为0。
BANK:可选项,为代码区分组的应用程序安排,应用程序不超过64K,一般不选此项。
PROMCHECK:可选项,Monitor-51监控程序在CPU复位时检查在程序存储区0地址处是EPROM还是RAM。
例:INSTALL 0 7F 0
这条指令将设置波特率为9600bps,内部定时器1为波特率发生器,要求CPU时钟为11.0592MHz,Monitor-51内部变量空间为:X:0x7F00…X:0x7FFF,Monitor-51监控程序代码的起始地址为:C:0x0000(C表示程序存储单元)。该命令生成一个 MON51.HEX,将其固化在AT89S52内部即可使用。
INSTALL.A51中修改项主要有两项:
(1)断偏移量设置:当Monitor-51监控程序在ROM中起始地址为0时,用户将无法使用MCS-51的中断功能。为此Monitor-51将所有的中断入口地址转移至高地址的RAM区(大于监控程序的长度),这样用户程序就可以使用中断功能了。当Monitor-51监控程序代码的起始地址不是0 时,中断偏移量设置无意义。
例:监控程序代码的起始地址为0,采用Von Neumann接法的外部数据存储器的起始地址为8000H,则中断偏移量必须设置成8000H,而用户用用程序将存放在8000H之后。INSTALL.A51中的INT_ADR_OFF定义如下:
INT_ADR_OFF EQU 8000H
(2)波特率修改:Monitor-51的波特率一般设置成9600bps或自适应。若要改变成其它波特率,如4800bps,则修改“InitSerial:”字中的定时器初始化值。
INSTALL.A51中还有许多其它设置,一般不做修改。
MON_BANK.A51是为代码区分组的应用程序安排的,此处不做讨论。
4. 开发过程中的几个问题
由于Monitor-51开发系统比较简单,占用了一些系统资源,有时给使用者带来了不便。实际编程中常要解决一下两个问题:
(1)串行接口功能:串行通信是MCS-51单片机经常要用到的功能,而这里选用的MCS-51系列单片机AT89S52只有一个串行通信口,在与PC机相连接的仿真状态时,串行口用于与PC机通信。若在应用程序中也用到串行口,就会发生冲突。解决方法一是用户程序装载完毕后,运行用户程序,再断开仿真板与PC机的串行通信线,这样串口就可以归用户程序使用了,当然这时PC机就不能在线调试了;另外,还可以选用其它的带两个串行口的MCS-51系列芯片。
(2)外部存储空间:用户程序越长,占用的外部数据存储空间将越大。解决的方法是对较长的程序进行分段调试。
参考文献
[1] 王建校、王建国.51系列单片机及C51程序设计[M].北京:科学出版社,2002.
[2] 徐维祥、刘旭敏.单片机微型计算机原理及应用[M].大连:大连理工大学出版社,2002.7.
[3] 马忠梅、籍顺心.单片机的C语言应用程序设计[M]. 北京:北京航天大学出版社,2003.11.