第2章 构建C51集成开发环境

单片机的程序设计可以采用汇编语言和C51语言。目前,C51语言得到了广泛应用。对于单片机程序的开发,一般采用Keil公司的µVision系列的集成开发环境。µVision系列开发工具目前的最新版本是KeilµVision,支持汇编语言以及C51语言程序设计。KeilµVision编译器完成对程序的编译、连接等工作,并最终生成可执行文件。本章主要介绍如何构建一个C51的集成开发环境,包括硬件和软件的建立、项目的编译、程序的仿真以及下载等。

2.1 51系列单片机的最小硬件系统

51系列单片机的最小硬件系统是指能让单片机正常工作的最小硬件电路。对于8051系列单片机及其兼容的型号,其电路的最小系统大致相同,这里以AT89S52为例,介绍典型的51系列单片机最小硬件电路,如图2.1所示。该电路图中所使用的元器件的参数及数量如表2.1所示。

第2章 构建C51集成开发环境 - 图1

图 2.1 单片机最小系统图

第2章 构建C51集成开发环境 - 图2

该电路能够让单片机程序顺利运行。其中,P0端口放置了10kΩ的上拉电阻,外接24MHz晶振,通过两个30pF的电容接地来构成振荡电路,同时采用了手动加上电复位电路。AT89S52单片机工作需要5V的电压,对于其他一些类型的单片机可能需要3.3V或者更低的工作电压。整个电路的关键部分是单片机的时钟振荡电路和复位电路,下面分别进行介绍。

2.1.1 时钟振荡电路

时钟振荡电路用于产生单片机正常工作时所需要的时钟信号。51系列单片机可以采用两种方式的时钟振荡电路:内部振荡电路和外部振荡电路。下面分别介绍这两种方式。

1.内部振荡电路

内部振荡电路采用单片机内部振荡器来产生工作所需的时钟。51系列单片机内部包含一个高增益的单级反相放大器,引脚XTAL1和XTAL2分别为片内反相放大器的输入端口和输出端口。当单片机工作于内部时钟模式的时候,只需在XTAL1引脚和XTAL2引脚连接一个晶体振荡器或者陶瓷振荡器,并通过两个电容后接地即可,如图2.2所示。

使用时,对于电容的选择有一定的要求。

❑当外接晶体振荡器的时候,接地电容一般选择C1=C2=30±10pF。

❑当外接陶瓷振荡器的时候,接地电容一般选择C1=C2=40±10pF。

在实际的硬件电路板设计时,应该保证外接的振荡器和电容尽可能靠近单片机的XTAL1和XTAL2引脚。这样可以减少寄生电容的影响,使振荡器能够稳定可靠地为单片机CPU提供时钟信号。如果振荡器连接不当,会导致电路不起振,没有时钟信号产生。

第2章 构建C51集成开发环境 - 图3

图 2.2 内部时钟模式

2.外部振荡电路

外部振荡电路是采用外部振荡器产生时钟信号直接供单片机使用。对于不同结构的单片机,外部振荡电路的方式有所不同,如图2.3所示。

对于普通的8051单片机,外部时钟信号由XTAL2引脚接入后直接送到单片机内部的时钟发生器,而引脚XTAL1则应直接接地。这里需要注意,由于XTAL2引脚的逻辑电平不是TTL信号,因此建议外接一个上拉电阻。

对于CMOS型的80C51、80C52、AT89S52等单片机,其内部的时钟发生器的信号取自于反相放大器的输入端。因此,外部的时钟信号应该接到单片机的XTAL1引脚,而XTAL2引脚悬空即可。

第2章 构建C51集成开发环境 - 图4

图 2.3 外部振荡电路

另外,无论采用内部振荡电路还是外部振荡电路,振荡电路的频率应该满足单片机的工作频率要求,比如对于AT89S52单片机,其工作频率为0~33MHz。