目录

8051

8051是一种8位元的单芯片微控制器,属于MCS-51单芯片的一种,由英特尔(Intel)公司于1981年制造。Intel公司将MCS51的核心技术授权给了很多其它公司,所以有很多公司在做以8051为核心的单片机,如Atmel、飞利浦、深联华等公司,相继开发了功能更多、更强大的兼容产品。

8051单芯片是同步式的顺序逻辑系统,整个系统的工作完全是依赖系统内部的时钟信号,用以来产生各种动作周期及同步信号。在8051单片机中已内建时钟产生器,在使用时只需接上石英晶体谐振器(或其它振荡子)及电容,就可以让系统产生正确的时钟信号。

技术发展

8051的结构组成

总体结构

CPU组成

8051的CPU是一个8位的中央处理器,它的作用就是读入并分析每条指令,根据各条指令的功能控制单片机的各功能部件执行指定的操作。
CPU主要由以下几个部分组成:
(1)运算器
运算器由算术/逻辑运算单元ALU、累加器ACC、寄存器B、暂存寄存器、程序状态字寄存器PSW组成。
(2)控制器
控制器由指令寄存器IR、指令译码及控制逻辑电路组成。
(3)其他寄存器
程序计数器PC、数据指针DPTR、堆栈指针SP、工作寄存器R0~R7

存储器组织

存储器分为两类,一类是随机存储器(RAM),CPU运行时随时进行数据读写,但是断电后数据丢失,用来存放暂时性的输入输出数据、运算的中间结果或用作堆栈,所以也叫数据存储器。另一类是只读存储器(ROM),写入数据后不会随意改写,掉电后信息保留不变,用来存放程序或常数,所以也叫程序存储器。
8051有独立的数据存储器和程序存储器,而每一个存储器又分为片内存储器和片外存储器,之所以分片内和片外是因为8051核内部只有128字节的片内RAM和4K字节的片内ROM,这点资源相对于现在动辄上M字节的存储资源来说实在是少得可怜,远远不能满足越来越复杂的应用了,所以外扩存储器来解决。
(1)程序存储器
8051的程序计数器PC是16位的计数器,所以能寻址64KB的程序存储器地址范围,允许用户程序调用或转向64KB的任意存储单元。只读的程序存储器有4K 字节大小的片内ROM和64K字节大小的外扩ROM。
程序运行时,由EA引脚决定是运行片内ROM还是片外ROM。EA管脚接高电平时,CPU首先会在片内ROM取指令,当PC(程序计数器简称PC)的内容超过FFFH时会自动转到片外ROM中取指令,外部ROM从1000H开始编址。EA管脚接低电平时,单片机会自动转到片外ROM取指令(无视片内ROM)。外部ROM地址从1000H开始编址。

程序存储器低端的一些地址被固定用作特定的入口地址。单片机复位和中断后会跳转到相应的地址。

(2)数据存储器 8051核有128字节的片内RAM,地址范围00H~7FH,可直接寻址,8052版本又在此基础上增加了80H~FFH的高128字节RAM,增加的这一部分RAM仅能采用间接寻址方式。片外RAM可以外扩到64K字节。
片内RAM分为工作寄存器区、位寻址区、通用RAM区三部分。工作寄存器区位于片内低端00H~1FH共32个字节,分为4个工作寄存器组,每组8个单元。位寻址区共16个字节,对被寻址的位可以进行位操作。通用RAM区共80个字节,可做数据缓冲器使用。


特殊功能寄存器(SFR)

SFR是一组特殊功能的寄存器,共21个,它们与RAM区统一编址,地址空间为80H~FFH

引脚功能

MCS-51是标准的40引脚双列直插式集成电路芯片,引脚分地布请参照—-单片机引脚图:

这4个I/O口具有不完全相同的功能,大家可得学好了,其它书本里虽然有,但写的太深,初学者很难理解,这里都是按我自已的表达方式来写的,相信你也能够理解。

I/O口

P0口有三个功能

  1. 外部扩展存储器时,当做数据总线(如图1中的D0~D7为数据总线接口)
  2. 外部扩展存储器时,当作地址总线(如图1中的A0~A7为地址总线接口)
  3. 不扩展时,可做一般的I/O使用,但内部无上拉电阻,作为输入或输出时应在外部接上拉电阻。

P1口: 只做I/O口使用:其内部有上拉电阻。

P2口有两个功能

  1. 扩展外部存储器时,当作地址总线使用
  2. 做一般I/O口使用,其内部有上拉电阻;

P3口有两个功能 除了作为I/O使用外(其内部有上拉电阻),还有一些特殊功能,由特殊寄存器来设置,具体功能请参考我们后面的引脚说明。 有内部EPROM的单片机芯片(例如8751),为写入程序需提供专门的编程脉冲和编程电源,这些信号也是由信号引脚的形式提供的, 即:编程脉冲:30脚(ALE/PROG) 编程电压(25V):31脚(EA/Vpp)

ALE/PROG 地址锁存控制信号 在系统扩展时,ALE用于控制把P0口的输出低8位地址送锁存器锁存起来,以实现低位地址和数据的隔离。(在后面关于扩展的课程中我们就会看到8051扩展 EEPROM电路,在图中ALE与74LS373锁存器的G相连接,当CPU对外部进行存取时,用以锁住地址的低位地址,即P0口输出。ALE有可能是高电平也有可能是低电平,当ALE是高电平时,允许地址锁存信号,当访问外部存储器时,ALE信号负跳变(即由正变负)将P0口上低8位地址信号送入锁存器。当ALE是低电平时,

P0口上的内容和锁存器输出一致。关于锁存器的内容,我们稍后也会介绍。 在没有访问外部存储器期间,ALE以1/6振荡周期频率输出(即6分频),当访问外部存储器以1/12振荡周期输出(12分频)。从这里我们可以看到,当系统没有进行扩展时ALE会以1/6振荡周期的固定频率输出,因此可以做为外部时钟,或者外部定时脉冲使用。 PORG为编程脉冲的输入端

在8051单片机内部有一个4KB或8KB的程序存储器(ROM),ROM的作用就是用来存放用户需要执行的程序的,那么我们是怎样把编写好的程序存入进这个ROM中的呢?实际上是通过编程脉冲输入才能写进去的,这个脉冲的输入端口就是PROG。 PSEN 外部程序存储器读选通信号:在读外部ROM时PSEN低电平有效,以实现外部ROM单元的读操作。 1、内部ROM读取时,PSEN不动作; 2、外部ROM读取时,在每个机器周期会动作两次; 3、外部RAM读取时,两个PSEN脉冲被跳过不会输出; 4、外接ROM时,与ROM的OE脚相接。