8051单片机结构学习简说
2015-05-30郭鹏等
郭鹏等
摘要:要学好用好单片机,就必须了解和掌握单片机的基本结构。本文以8051单片机为例简要说明单片机结构学习的几个基本要点。
关键词:单片机 结构
单片机的学习对入门者而言有一定的难度。难度之一就在于学习者先要了解单片机的结构。尤其是单片机外部引脚和存储空间。
1 单片机引脚
单片机引脚是单片机与外部连接的桥梁,不管是单片机与外部进行信息交互还是实施控制,单片机都要依靠引脚。因此必须掌握引脚名称、功能和使用方法。
面对经典“DIP-40”封装的8051单片机,初学者总感到麻烦。实际上,8051单片机引脚分布很有规律。从类型上说,其管脚分为4类,一句话就可说明:8051单片机引脚包含”两个电源引脚、两个时钟引脚、四个控制引脚和四八三十二个IO引脚。”
两个电源引脚:如同常规集成电路一样,芯片右下角为电源负,左上角为电源正。
两个时钟引脚:单片机依靠精确的时钟信号才能自动有序运行程序,协调各部件完成指定功能,没有时钟信号,单片机无法工作。单片机内部有时钟电路,通过时钟引脚外接不同的晶振,就可设置出不同振荡频率的时钟信号。两个时钟引脚中有一个是单片机时钟电路的时钟信号输出端。多单片机系统中,可通过这个引脚也引入外部时钟信号保证多单片机系统的时序统一。
四个控制引脚:EA引脚。PSEN引脚和ALE引脚都和存储扩展有关,存储器学习时了解较好。先了解复位引脚。必须明白单片机启动信号就是该引脚施加持续两个机器周期以上的高电平信号。基于此了解复位电路的构建才能明细根本。
最后一句四八三十,是为方便初学者掌握剩余的32个引脚都是单片机的I/O引脚,且分布在四个I/O口中,每个I/O口分配8个引脚。这样做的一个主要原因是,这样可使I/O口以字节为信息单位输入或输出信息。单片机I/O口在构建三大总线时,应注意P0口用于充当数据口,P0和P2口构建16位地址总线。P3口和相关控制引脚构建控制总线。因此用户应合理进行I/O资源分配。
2 单片机的存储结构
单片机的存储空间分为数据RAM和程序ROM两大部分。又都有片内片外之分。
2.1 程序存储空间
程序存储空间的构建有三种形式:仅片内ROM构成;片内ROM与片外ROM共同构成;仅片外ROM构成。程序存储空间的要点是不管程序存储空间如何构建,都是统一连续编码地址。单片机只要能正确找到程序存放的首存储单元地址,就能够开始自动执行程序。显然对于前两种形式,程序起始地址单元位于片内ROM,后一种程序起始单元地址位于片外ROM。
单片机作为硬件电路,它无法知道程序存储空间构建形式,那怎么识别程序起始单元地址是在片内ROM空间还是在片外ROM空间?很简单:控制引脚EA就用于程序起始位置指向。EA引脚接地时指向片外,接高电平则指向片内。初学者常常混淆,记忆的技巧是EA接地即EA为“0”状态,0表示没有,即没有用到片内ROM,程序仅存放于片外;反之则表明片内ROM有程序存放。
从使用者角度看,用户了解程序存储空间构建形式的主要意义在于硬件电路设计时,能根据ROM构建形式正确设置EA引脚。
2.2 数据存储空间
数据存储空间的构建有两种形式:仅片内RAM;片内RAM加片外RAM。片外RAM仅用于扩展数据存放空间。片内RAM很多存储单元有特殊意义,无可替代,因此不会出现仅有片外RAM的情况。
片内数据存储空间是学习的重点。8051片内数据存储空间共256个字节单元,一分两半,前128个字节单元称为用户RAM区,后128个字节单元为特殊功能寄存器区,该区域很多存储单元有特殊功能,如代表累加器A的E0H单元,代表P0口的80H单元等。P0口对应8个引脚,引脚高低电平状态对应的“1”、“0”二进制信息反映在80H 单元的8个对应位单元中,输出亦然。用户需要注意的是,由于片内RAM存储单元有限,在程序设计之初一定先要做好资源分配。即根据程序需要,提前分配指定或保留用户RAM区相关单元。
特殊功能寄存器区的存储单元一般掌握特殊功能寄存器名称及功能即可,不必记住其实际所在存储单元地址。但单片机复位后,一些特殊功能寄存器的初始值应用者必须掌握。如程序计数器PC复位后初值为零,PC值为单片机下一条待执行指令地址。因而复位后单片机自动到0000H单元开始执行首条指令。用户RAM区是使用者真正可以自行安排使用的存储空间。该区教材都会详述,这里不再说明。
数据存储空间与程序存储空间的地址编码方式不同。数据存储空间采用独立地址编码方式,即片内RAM与片外RAM各自起始单元地址均从0000H开始编码地址。
2.3 存储空间的容量
8031片内没有ROM,8051片内有4k字节ROM;8031和8051片内RAM均为256字节容量。用户可根据需要选择片外存储器,组合出所需大小的容量。
8051程序存储空间统一连续地址编码,且由16位的程序计数器PC访问,程序存储空间地址最多由16个二进制位编码,用十六进制表示时地址范围最大是:0000H~FFFFH,即64kb。因此片内ROM与片外ROM之和不大于64kb。
8051数据存储空间片内与片外独立编码地址。片外RAM最多可由P0口和P2口共同构建的16位地址总线访问,因而片外数据存储空间的地址编码最大范围也是:0000H~FFFFH,容量64kb。因此数据存储空间的总容量最大是片内256B加片外64kb。
初学者有时困惑于地址范围与容量的换算。困惑的
实质在于十六进制表达地址范围及空间大小的不习惯。
先说十进制表达的连续单元,比如地址编码为5~10,则
总共单元有”10-5+1”即6个单元。同样十六进制的连
续单元,若地址范围0000H~FFFFH,则存储单元有”FFFFH-0000H+1H”个即10000H个存储单元,换算为二进制是1 0000 0000 0000 0000B,即216個字节存储单元。210为1kb,所以总容量为64kb。
参考文献:
[1]韩守玺.在单片机教学中应让学生在应用中学习编程[J].职业教育研究,2007(03).
[2]刘珊.关于单片机教学改革的探讨[J].九江职业技术学院学报,2007(01).
[3]赵安邦.关于单片机教学的研究[J].科技信息(学术研究),2008(34).
[4]王岳圆.单片机教学刍议[J].中国校外教育(理论),2008(07).