第1章 8051单片机C语言程序设计概述

开发8051 单片机系统时,使用C 语言会使开发周期大为缩短,开发效率大幅提高,程序可读性好且易于移植,所以使用C 语言开发单片机系统已经成为必然趋势。本书给出了100 余个在Keil μVision3 下编写的单片机C 语言程序案例,这些案例同时给出了Proteus 下的仿真电路。读者阅读本书需要已经学习了8051 单片机C 语言程序设计技术,本章仅介绍使用C 语言设计单片机系统必须参考和重点掌握的内容,这些内容会给读者阅读、调试、研究本书案例及进行设计实训提供帮助。

1.1 8051单片机引脚

图1-1给出了8051单片机的几种不同封装形式及引脚分布,本节将对单片机4个双向I/O端口引脚、控制引脚、晶振及电源引脚进行简要介绍。

图1-1 8051单片机不同封装形式及引脚图

8051的4个双向I/O端口功能如下所述。

(1)P0端口具有双重功能,它可用做I/O端口,连接输入/输出设备,但需要外接上拉电阻,P0端口还能用做数据总线(D0~D7)和低8位地址总线(A0~A7)复用端口,低8位地址与数据分时使用P0端口,低8位地址由ALE(Address Latch Enable,地址锁存允许)信号的下降沿锁存到外部地址锁存器中,然后传送8位数据。本书有关2764、6264和8255的案例中使用了P0端口的第二重功能。

(2)P1端口是通用I/O端口,每一位都能作为I/O接口线使用,本书有关独立按键或键盘矩阵按键的案例中,按键多数连接在P1端口。

(3)P2端口具有双重功能,它可以作为I/O端口,连接输入/输出设备,在扩展外部存储器或扩展I/O接口时,P2端口作为系统扩展时16位地址总线的高8位(A8~A15)使用,低8位地址由P0端口提供。本书有关存储器扩展和接口扩展的案例使用了P2端口的第二重功能。

(4)P3端口具有双重功能,功能一与P1端口相同,作为功能二使用时,P3.0~P3.7分别对应于RXD、TXD、INT0、INT1、T0、T1、WR及RD,第3章基础程序设计中有关串口、外部中断及定时/计数器的案例分别涉及前6位,第4章硬件应用中关于存储器扩展和接口扩展的案例连接了最后2位WR和RD,这2位实际上用于控制总线。

8051的控制引脚有RST,ALE/PROG,PSEN,EA/VPP,本书多数案例中的RST(Reset)引脚连接了系统复位外围电路,只有部分案例未在RST引脚连接复位电路,但这并不影响Proteus的仿真,ALE引脚在存储器扩展和I/O接口扩展案例中用到,另外,由于本书所有案例程序都绑定在8051内部程序ROM中,案例中EA全部连接高电平。

XTAL1,XTAL2引脚在本书多数案例中连接12MHz晶振,在串口通信案例中本书选择的是11.0592MHz晶振。Proteus缺省晶振连接时不影响仿真运行,频率可在芯片属性中直接设置。主电源引脚VSS,VCC分别接GND和+5V,Proteus仿真时电源已默认连接,仿真电路原理图中它们全部缺省。当然,在实际硬件环境中,电源与晶振部分不能缺省。