《第一章 单片机系统硬件基础》由会员分享,可在线阅读,更多相关《第一章 单片机系统硬件基础(17页珍藏版)》请在金锄头文库上搜索。
1、-第第 1 1 章章 单片机系统硬件基础单片机系统硬件基础本章主要了解单片机的基本概念、 应用领域、单片机的最小系统以及其硬件资源, 重点学习和掌握单片机的外部接口和内部硬件资源,如单片机的引脚排列,内部寄存器功能等。本章共有 5 个小节, 分基本了解、 认真学习和掌握三个阶段, 学习过程由浅入深, 循序渐进,为单片机系统设计奠定良好的硬件基础。1.11.1 了解单片机了解单片机1.1.11.1.1 单片机的基本概念单片机的基本概念计算机系统的硬件是由 CPU、内存、内部功能单元和 I/O 接口电路等部分组成,每一部分至少需要一片集成电路构成,如图1-1-1 所示。单片机是微型计算机的一个分支
2、,它与计算机系统的主要区别在于其结构、组成以及应用领域不同。微型计算机系统输入设备输入接口电路CPU运 算 器控 制 器输出接口电路输出设备软件 ?系统存 储 器硬件系统图图 1-1-11-1-1 微型计算机系统组成示意图微型计算机系统组成示意图单片机就是单片微型计算机(Monolithic Microcomputer或 Single Chip Microcomputer)的简称,是指集成在一个芯片上的微型计算机,也就是把组成微型计算机的各种功能部件,包括 CPU、随机存取存储器RAM、只读存储器ROM、基本输入/输出(Input/Output)接口电路、定时/计数器、中断控制、系统时钟及系统
3、总线等部件都集成在一块芯片上,构成一个完整的微型计算机,从而实现微型计算机的基本功能。单片机内部结构示意图如图1-1-2所示。TINT定时器 / 计数器中断系统P0?P3并行I/O接口C P U存储器并行I/O接口TXDRXD图图 1-1-21-1-2 单片机内部结构示意图单片机内部结构示意图单片机实质上是一个芯片。 在实际应用中, 通常很难将单片机直接和被控对象进行电气连接,必须外加各种扩展接口电路、外部设备、被控对象等硬件以及软件, 才能构成一个单片机应用系统。图1-1-3 是一个由单片机设计的校园自动打铃定时器系统。由于单片机在自-动控制中应用得十分广泛,因此国外文献中一般都称为微控制器
4、( Microcontroller Unit) ,简称 MCU。数码管时间显示+5V单片机RQ电铃D键 盘继电器220V图图 1-1-31-1-3 校园自动打铃定时器校园自动打铃定时器单片机把微型计算机的主要部件都集成在一块芯片上, 使得数据传送距离大大缩短, 可靠性更高,运行速度更块。由于单片机属于芯片化的微型计算机, 各功能部件在芯片中的布局和结构达到最优化,抗干扰能力加强,工作亦相对稳定。因此,在工业测控系统中,使用单片机是最理想的选择。 单片机属于典型的嵌入式系统, 所以它是低端控制系统的最佳选择。1.1.21.1.2 单片机的发展过程单片机的发展过程单片机的出现主要是针对工业自动化生
5、产与控制领域, 单片机的设计是基于一个芯片上的计算机部件的集成化。 19761978 年为低性能单片机阶段, 最具有代表性的单片机是Intel公司于1976年开发的MCS-48系列单片机, 它采用了单片结构, 在一块芯片内含有8位CPU、定时/计数器、并行 I/O 口、RAM 和 ROM 等。早期的单片机字长大多是8 位或 4 位。 随着单片机应用范围不断扩大和电子技术的不断提高, Intel 公司于 1980 年开发出 MCS-51 系列单片机,这一类单片机带有串行 I/O 口,8位数据线、16 位地址线寻址范围可达 64KB、控制总线以及较丰富的指令系统等。Intel公司还在上世纪 80
6、年代后期推出了实时处理能力更强的16 位单片机。单片机的应用不仅仅只局限于自动控制领域。 进入上世纪九十年代后, 高性能单片机的嵌入功能在日常消费电子产品也得到了广泛的应用。 如 Intel i960 系列以及后来 ARM 公司的单片机系列, 32 位单片机迅速取代了 16 位单片机的高端地位,并且进入主流市场,形成一个独立的嵌入式结构体系。目前, 高端的 32 位单片机的主频已经超过300MHz,性能接近 90 年代中期的专用处理器,而且一些作为掌上电脑和手机使用的核心处理单片机可以直接运行专用的Windows 和 Linux 操作系统。使用单片机开发的应用系统具有体积小、 成本低、使用灵活
7、、性能好、易于产品化等特点,并且有强大的面向控制能力,使它在工业控制、机电一体化、智能仪表、计算机外围设备、家用电器、机器人、军事设备等方面得到了日益广泛的应用。1.1.3 511.1.3 51 系列单片机简介系列单片机简介Intel 公司的 MCS-51 系列是一种典型的 8 位单片机,并具有完善的结构和优越的性能,以及较高的性价比和较低的开发环境要求。因此,后来很多厂商或公司沿用或参考了 Intel公司的 MCS-51 内核,相继开发出了自己的单片机产品,如 PHILIPS、Dallas、ATMEL 等公司。MCS-51 系列单片机有 8031、8051 以及 8751 几个型号,其他公司
8、生产的基于该内核单片机型号很多,因此习惯上把采用MCS-51 内核的单片机统称为 51 或 C51 系列单片机。-PHILIPS 公司主要是在 MCS-51 基础上进行单片机的性能改善, 增加了高速 I/O 口, A/D转换器,PWM(脉宽调制)、WDT 等增强功能,并将低电压、微功耗、扩展串行总线(I2C)和控制网络总线(CAN)等功能加以完善,有低功耗,高速度和功能增强型等多种产品。ATMEL 公司推出的 AT89Cxx 系列兼容单片机,采用MCS-51 的总体结构和指令系统,完美地将 Flash(非易失闪存技术)、 EEPROM 与 80C51 内核结合起来, Flash 的可反擦写程序
9、存储器能有效降低开发费用, 并能使单片机作多次重复使用。 SIEMENS 公司也沿用 MCS-51的内核,相继推出了C500 系列单片机,在保持了与MCS-51 指令兼容的前提下,其产品的性能得到了进一步的提升, 特别是在抗干扰性能上, 电磁兼容和通信控制总线功能上独树一帜。其产品常用于工作环境恶劣的场合,亦适用于通信和家用电器控制领域。51 单片机是世界产量最大且应用最广泛的产品。我国的台湾WINBOND 公司也有自己的 51 单片机产品种类,表1-1-1 为常用的 51 单片机型号。由于其在性能价格比上占有很大优势,在未来相当长的时期内, MCS-51 系列及其兼容的 51 单片机系列仍是
10、电子产品开发与应用领域的主流器件。表表 1-1-11-1-1 为常用的为常用的 5151 单片机型号单片机型号公司ATMELWINBOND(华邦)STC单片机AT89Cxx系列、AT89Sxx系列、AT89C20系列等W78 系列,W77 系列(双串口增强型 51 系列)STC10Cxx 系列,STC12Cxx 系列,STC89Cxx 系列等1.1.41.1.4 单片机的应用单片机的应用单片机芯片级计算机系统, 具有数据运算和处理的能力, 使用单片机能够实现电路控制功能。单片机系统也是最典型的嵌入式系统, 它可以嵌入到很多电子设备的电路系统中, 实现智能化检测和控制。工业自动化控制是最早采用单
11、片机控制的领域之一。 单片机结合不同类型的传感器, 可实现电信号、湿度、温度、流量、压力、速度和位移等物理量的测量。在测控系统、工业生产机器人的过程控制、医疗、机电一体化设备和仪器仪表中有着广泛的应用。单片机系统具有体积小、功耗低、扩展灵活、 微型化和使用方便等优点,在家用电器方面也有着广泛应用。 单片机系统能够完成电子系统的输入和自动操作, 非常适合于对家用电器的智能控制。嵌入单片机的家用电器实现了智能化, 是传统型家用电器的更新换代, 现已广泛应用于全自动洗衣机、空调、电视机、微波炉、电冰箱以及各种视听设备中。另外,集中显示系统、动力监测控制系统、自动驾驶系统、通信系统和运行监视各种仪表等
12、装置中都离不开单片机。单片机在机器人、汽车、航空航天、 军事等领域也有广泛的应用。1.21.2 单片机内部结构单片机内部结构实际应用中的单片机有很多种类型, 不同公司生产的单片机在组成、 特性和指令系统等方面各不相同,甚至同一公司生产的不同系列的单片机产品也互不兼容。在51 系列不同类型的单片机中, 大都是在 MCS-51 架构基础上增加或增强了个别的功能, 其基本结构大同小异。如果熟练掌握了 51 单片机结构,再去了解其他单片机就会容易得多。51 单片机内部可以划分为CPU、 RAM、ROM/EPROM、并行口、 串行口、 定时/计数器、中断系统及特殊功能寄存器(SFR)等 8 个主要组成部
13、分,如图 1-2-1 所示。这些部件通过片内的单一总线相连,采用 CPU 加外围芯片的结构模式。各个功能单元都采用特殊功能寄存器集中控制的方式。下面简要介绍各个部件的主要功能。-T0时钟电 路T1ROMRAM定时/计数 器CPU并行接 口串行接 口中断系 统P0 P1 P2 P3TXDRXDINT0INT1图图 1-2-1 MCS-511-2-1 MCS-51 架构架构1.2.11.2.1 中央处理器(中央处理器(CPUCPU)中央处理器是单片机的核心, 主要功能是产生各种控制信号, 根据程序中每一条指令的具体功能,控制寄存器和输入/输出端口的数据传送,进行数据的算术运算、逻辑运算以及位操作等
14、处理。MCS-51 系列单片机的 CPU 字长是 8 位,能处理 8 位二进制数或代码,也可处理一位二进制数据。单片机的CPU 从功能上一般可以分为运算器和控制器两部分。一、控制器控制器由程序计数器 PC、指令寄存器、指令译码器、定时控制与条件转移逻辑电路等组成。其功能是对来自存储器中的指令进行译码, 通过定时电路,在规定的时刻发出各种操作所需的全部内部和外部的控制信号, 使各部分协调工作,完成指令所规定的功能。 各部分功能部件简述如下。(1)程序计数器 PC(Program Counter)程序计数器是一个 16 位的专用寄存器,用来存放下一条指令的地址,具有自动加1 的功能。当 CPU 要
15、取指令时,PC 的内容送地址总线上, 从存储器中去取出一个指令码后, PC内容自动加 1,指向下一个指令码,以保证程序按顺序执行。PC 是用来指示程序的执行位置, 在顺序执行程序时,单片机每执行一条指令, PC 就自动加 1,以指示出下一条要取的指令的存储单元的 16 位地址。也就是说,CPU 总是把 PC的内容作为地址,根据该地址从存储器中取出指令码或包含在指令中的操作数。 因此,每当取完一个字节后,PC 的内容自动加 1,为取下一个字节做好准备。由于51 系列单片机的寻址范围为 64K,所以,PC 中数据的编码范围为 0000HFFFFH,共 64K。单片机上电或复位时,PC 自动清 0,
16、即装入地址 0000H,这就保证了单片机上电或复位后,程序从 0000H地址开始执行。(2)指令寄存器 IR(Instruction Register)指令寄存器是一个 8 位寄存器用于暂存待执行的指令,等待译码。(3)暂存器 TMP用于暂存进入运算器之前的数据。(4)指令译码器 ID(Instruction Decoder)指令译码器是对指令寄存器中的指令进行译码,将指令变为执行此指令所需要的电信号。根据译码器的输出信号,再经定时电路定时产生执行该指令所需要的各种控制信号。(5)数据指针 DPTR(Data Pointer)数据指针是一个 16 位的专用地址指针寄存器, 主要用来存放 16
17、位地址, 作间址寄存器,访问片外 64K 字节的数据存储器和 I/O 端口及程序存储器。由两个独立的特殊功能寄存器-组成,分别为 DPH(高 8 位)和 DPL(低 8 位) ,占据 83H 和 82H 两个地址。DPTR 与 PC 不同,DPTR 有自己的地址,可以进行读写操作,而 PC 没有地址,不能对它进行读写操作,但可以通过转移、调用、 返回编程操作改变其内容,从而实现程序的转移。二、运算器运算器主要进行算术和逻辑运算。运算器由算术逻辑单元ALU、累加器ACC、程序状态字 PSW、BCD 码运算电路、通用寄存器B 和一些专用寄存器及位处理逻辑电路等组成。(1)算术逻辑单元 ALU(Ar
18、ithmetic Logic Unit)ALU 由加法器和其他逻辑电路等组成,完成数据的算术逻辑运算、循环移位、位操作等,参加运算的两个操作数,一个由 A 通过暂存器 2 提供,另外一个由暂存器 1 提供,运算结果送回 A,状态送 PSW。(2)累加器 ACC(Accumulator)累加器是一个 8 位特殊功能寄存器,简称A,通过暂存器与 ALU 传送信息,用来存放一个操作数或中间结果。(3)程序状态字 PSW(Program Status Word)PSW 也是一个 8 位的特殊功能寄存器,用于存储程序运行过程中的各种状态信息。(4)其他部件暂存器用来存放中间结果,B 寄存器用于乘法和除法
19、时,提供一个操作数,对于其他指令,只用作暂存器。(5)位处理器单片机能处理布尔操作数,能对位地址空间中的位直接寻址,进行清零、取反等操作,这种功能提供了把逻辑式 (随机组合逻辑)直接变为软件的简单明了的方法, 不需要过多的数据传送、字节屏蔽和测试分支,就能实现复杂的组合逻辑功能。位处理器是单片机的一个特殊组成部分,具有相应的指令系统,可提供17 条位操作指令。硬件上有自己的“累加器”和自己的位寻址 RAM、I/O 口空间,是一个独立的位处理器,位处理器和 8 位处理器形成完美的组合。1.2.21.2.2 存储器存储器单片机内部包含随机存取存储器RAM 和程序存储器 ROM, RAM 用于保存单
20、片机运行的中间数据; 单片机的 ROM 不只是用来装载程序,增强51 系列也可以在单片机运行过程中利用程序把数据存贮在 ROM 的部分空间内。51 系列单片机在系统结构上采用哈佛结构(Harvard architecture) ,即程序存储器和数据存储器的寻址空间是分开管理的。它共有4 个物理上独立的存储器空间, 即内部和外部程序存储器及内部和外部数据存储器。 从用户的角度看,单片机的存储器逻辑上分为三个存储空间,见图1-2-2 所示,即统一编址的 64KB 的程序存储器地址空间(包括片内 ROM 和外部扩展 ROM) ,地址从 0000HFFFFH;256B的片内数据存储地址空间(包括 12
21、8B 的片内 RAM 和特殊功能寄存器的地址空间) ;64KB的外部扩展的数据存储器地址空间。图中EA是单片机的程序扩展控制引脚。一、单片机的 RAM51 单片机芯片中共有 256 个字节的 RAM 单元,但其中 128 个字节被专用寄存器占用,能作为存储单元供用户使用的只是前 128B,用于存放可读写的数据。因此通常所说的内部数据存储器就是指前 128B,简称片内 RAM。在程序比较复杂,且运算变量较多而导致 51内部 RAM 不够用时,可根据实际需要在片外扩展,最多可扩展64KB,但在实际应用中如需要大容量 RAM 时,往往会利用增强型的 51 单片机而不再扩展片外 RAM。增强型的 51
22、系列单片机如 52 和 58 子系列分别有 256 B 和 512B 的 RAM。-地址0000H片内4kROMEA=10FFFH1000H片外60k扩展ROMEA=0FFFFH地址00H7FH80HFFH片内128BRAM特殊功能寄存器21个片外64KBRAM片外4k扩展ROMEA=0地址0000HFFFFH图图 1-2-2 511-2-2 51 单片机的存储器空间分布单片机的存储器空间分布51 单片机片内 128B RAM 根据功能又划分为工作寄存器区(地址00H1FH) ,位寻址区(地址 20H2FH) ,一般 RAM 区(地址 30H7FH)和堆栈区(地址 2FH 以后) ,其中位寻址
23、区共 16 字节 128 个单元。51 单片机共有 21 个特殊功能寄存器(Special Function Register,SFR) ,它是片内RAM的一部分。 特殊功能寄存器用于对片内各功能模块进行监控和管理, 是一些控制寄存器和状态寄存器,与片内 RAM 单元统一编址。二、内部程序存储器(内部ROM)51 单片机共有 4 KB 的 ROM,单片机的生产商不同,内部程序存储器可以是EEPROM或 Flash ROM。可根据实际需要在片外扩展,最多可扩展 64KB。增强型的 51 单片机内部ROM 空间可以达到 64KB,在使用时不须再扩展片外ROM。数据存储器、程序存储器以及位地址空间的
24、地址有一部分是重叠的,但在具体寻址时,可由不同的指令格式和相应的控制信号来区分不同的地址空间,因此不会造成冲突。1.2.31.2.3 单片机的其它部件单片机的其它部件51 单片机还有定时器/计数器,并行 I/O 口,串行口,中断系统,时钟电路等部件。51单片机有两个 16 位的定时/计数器,具有4 种工作方式,以实现定时或计数功能,并以其定时或计数结果对系统进行控制;51 单片机共有 4 个 8 位的 I/O 口(P0、P1、P2、P3 口) ,表现在单片机外部共有 32 条引脚,内部与寄存器连接,以实现数据的并行输入/输出。51 单片机有一个全双工的串行口,具有 4 种工作方式,以实现单片机
25、和其它设备之间的串行数据传送。该串行口功能较强, 既可作为全双工异步通信收发器使用, 也可作为同步移位器使用。为满足控制应用的需要,51 单片机的中断功能较强。51 单片机共有 5 个中断源,即外部中断两个,定时/计数中断两个,串行口中断一个。全部中断分为高级和低级两个优先级别。时钟电路为单片机产生时钟脉冲序列。51 单片机芯片的内部有时钟电路,但石英晶体和微调电容需外接,系统常用的晶振频率一般为6 MHz 或 12 MHz。从上面的介绍可以看出,51 系列单片机虽然只是一个芯片,但作为计算机应该具有的基本部件它都包含,实际上单片机就是一个基本的微型计算机系统。增强型 51 系列与 51 系列
26、单片机完全兼容,但内部资源在 51 基础上有所增加,如 52子系列片内 ROM 从 4 KB 增加到 8 KB,片内 RAM 从 128 B 增加到 256 B,定时/计数器从-2 个增加到 3 个, 中断源从 5 个增加到 6 个, 功能的增强大大拓展了 8 位单片机的应用空间。STC8951RC 系列为增强 51 系列单片机, 表 1-2-1 给出了 STC89 系列常用的几种单片机内部资源,由于此类型单片机支持串口在线下载,并且有低功耗、速度快、稳定可靠性、价格低等优点,因此本书实例将重点以STC8951 为例说明。表表 1-2-1 STC891-2-1 STC89 系列单片机内部资源系
27、列单片机内部资源STC89 系列型号STC89C51RCSTC89C52RCSTC89C58RDFlash4K8K32KSRAM5125121280E2PROM2K2K16K定时器333替换型号STC10F04XESTC10F08XESTC11F32XE1.31.3 单片机特殊功能寄存器单片机特殊功能寄存器特殊功能寄存器(Special Function Register)是通过专门规定而且具有特定用途的RAM部分, 它是单片机内部很重要的部件。 特殊功能寄存器能综合反映单片机系统内部的工作状态和工作方式,其中一部分作内部控制用,如定时器/计数器和串行口的控制,如果改变控制寄存器的状态就可以改
28、变其功能,使得单片机内部硬件的控制以可编程的形式体现。1.3.11.3.1 特殊功能寄存器特殊功能寄存器51 系列单片机内部堆栈指针SP、 累加器 A、 程序状态字 PSW 以及 I/O 锁存器、 定时器、计数器以及控制寄存器和状态寄存器等都是特殊功能寄存器, 和片内 RAM 统一编址,分散占用 80FFH 单元,共有 21 个,增强型的 52 系列单片机则有 26 个,表 1-3-1 列出了单片机的特殊功能寄存器名称、标识符和对应地址,其中含有52 系列的寄存器 T2,T2CON 等。在单片机 C 语言编程应用中,单片机的特殊功能寄存器标识符经常用到。下面只介绍其中部分寄存器,一些控制寄存器
29、会在单片机内部资源编程应用中详细介绍。表表 1-3-11-3-1 特殊功能寄存器特殊功能寄存器特殊功能寄存器并口 0堆栈指针数据指针(低 8 位)数据指针(高 8 位)电源控制寄存器定时/计数器控制定时/计数器方式控制定时/计数器 0(低 8 位)定时/计数器 1(高 8 位)定时/计数器 0(低 8 位)定时/计数器 1(高 8 位)并口 1串行口控制寄存器串行数据缓冲器并口 2中断允许控制寄存器并口 3中断优先控制寄存器定时/计数器 2 控制标识符P0SPDPLDPHPCONTCONTMODTL0TL1TH0TH1P1SCONSBUFP2IEP3IPT2CON(52)字节地址80H81H8
30、2H83H87H88H89H8AH8BH8CH8DH90H98H99HA0HA8HB0HB8HC8H-定时/计数器 2 自动重装载(低 8 位)定时/计数器 2 自动重装载(高 8 位)定时/计数器 2(低 8 位)定时/计数器 2(高 8 位)程序状态字累加器寄存器 BRCAP2L(52)RCAP2H(52)TL2(52)TH2(52)PSWACCBCAHCBHCCHCDHD0HE0HF0H一、累加器 ACC/A(Accumulator)累加器 A 为 8 位寄存器,是最常用的专用寄存器,功能较多,使用最为频繁。它既可用于存放操作数,也可用来存放运算的中间结果。51 系列单片机中大部分单操作
31、数指令的操作数就取自累加器, 许多双操作数指令中的一个操作数也取自累加器。 累加器有自己的地址,因而可以进行地址操作。在 C 语言编程中,如果想让累加器中的内容为十进制56,简单的语句为A = 56;在汇编语言中则要用的数据传输指令,命令格式为MOVA,#56;二、B 寄存器B 寄存器是一个 8 位寄存器,主要用于乘除运算。乘法运算时, B 提供乘数。乘法操作后,乘积的高 8 位存于 B 中。除法运算时,B 提供除数。除法操作后,余数存于 B 中。此外,B 寄存器也可作为一般数据寄存器使用。如:在C 语言中 B = 56;或 abc = B;abc 为用户自定义变量。三、程序状态字 PSW(P
32、rogram Status Word)程序状态字是一个 8 位寄存器, 用于存放程序运行中的各种状态信息。 其中有些位的状态是由程序执行结果决定,硬件自动设置的,而有些位的状态则使用软件方法设定。 PSW的位状态可以用专门指令进行测试,也可以用程序读出。一些条件转移程序可以根据 PSW特定位的状态,进行程序转移。PSW 各位标示符定义格式为PSW.7PSW.6PSW.5PSW.4PSW.3PSW.2PSW.1PSW.0CYACF0RS1RS0OVF1PPSW.7PSW.7为进/借位标志(Carry,CY) :表示运算是否有进位或借位。其功能有二:一是存放算术运算的进/借位标志,在进行加或减运算
33、时,如果操作结果的最高位有进位或借位时,CY 由硬件置“1”,否则清“0”;二是在位操作指令中,作位累加器使用。位传送、位与位或等位操作,操作位之一固定是进/借位标志位。PSW.6PSW.6为辅助进/借位标志位(Auxiliary Carry,AC) ,也半/借进位标志位。在进行加减运算中,当低 4 位向高 4 位进位或借位时,AC 由硬件置“1”,否则 AC 位被清“0”。在 BCD码的加法调整中也要用到AC 位。PSW.5PSW.5为用户标志位 F0(Flag 0) ,是一个供用户定义的标志位,需要利用软件方法置位或复位,用以控制程序的转向。PSW.4/PSW.3PSW.4/PSW.3为寄
34、存器组选择位 RS1/RS0(Register Selection) ,用于选择 CPU 当前使用的工作寄存器组,其对应关系如表1-3-2 所示。这两个选择位的状态是由程序设置的, 被选中的寄存器组即为当前寄存器组。 单片机上电或复位后,RS1/RS0=00,即默认的工作寄存器组是第0 组。PSW.2PSW.2为溢出标志位 OV(Overflow) 。在带符号数的加减运算中, OV=1 表示加减运算超出了累加器 A 所能表示的符号数有效范围(128127) ,即产生了溢出,表示 A 中的数据只是运算结果的一部分; OV=0 表示运算正确,即无溢出产生,表示 A 中的数据就是全-部运算结果。在乘
35、法运算中,OV=1 表示乘积超过 255,即乘积分别在 B 与 A 中;否则,OV=0,表示乘积只在 A 中。在除法运算中,OV=1 表示除数为 0,除法不能进行;否则,OV=0,除数不为 0,除法可正常进行。PSW.1PSW.1为用户标志位 F1(Flag 1) ,也是一个供用户定义的标志位,与F0 类似。PSW.0PSW.0为奇偶标志位 P(Parity) ,表示累加器A 中“1”的个数奇偶性。如果A 中有奇数个“1”,则 P 置“1”,否则置“0” ,即完全由累加器的运算结果中“1”的个数为奇数还是偶数决定。注意标志位 P 并非用于表示累加器 A 中数的奇偶性。凡是改变累加器A 中内容的
36、指令均会影响 P 标志位。P 标志对串行通信中的数据传输有重要的意义。 在串行通信中常采用奇偶校验的办法来校验数据传输的可靠性。表表 1-3-21-3-2 寄存器组的映射表寄存器组的映射表RS10011RS00101寄存器组第 0 组第 1 组第 2 组第 3 组片内单元00H07H08H0FH10H17H18H1FH四、数据指针 DPTR(Data Pointer)数据指针 DPTR 为 16 位寄存器。编程时, DPTR 既可以按 16 位寄存器使用,也可以按两个 8 位寄存器分开使用,即DPTR 的高位字节 DPH 和 DPTR 的低位字节 DPL。在系统扩展中,DPTR 作为程序存储器
37、和片外数据存储器的地址指针, 用来指示要访问的 ROM 和片外 RAM 的单元地址。由于 DPTR 是 16 位寄存器,因此,通过 DPTR 可寻址64KB 的地址空间。五、堆栈指针 SP(Stack Pointer)堆栈是一个特殊的存储区,用来暂存系统的数据或地址,它是按 “先进后出”或“后进先出”的原则来存取数据的,而系统对堆栈的管理是通过8 位的堆栈指针寄存器 SP 来是实现的,SP 总是指向最新的栈顶位置。堆栈的操作分为进栈和出栈两种。由于 MCS-51 系列单片机的堆栈设在片内 RAM 中,SP 是一个 8 位寄存器。系统复位后,SP 的初值为 07H,但堆栈实际上是从 08H 单元
38、开始的。由于 08H1FH 单元分别属于工作寄存器 13 区,20H2FH 是位寻址区,如果程序要用到这些单元,最好把SP 值改为2FH 或更大的值。一般在片内 RAM 的 30H7FH 单元中设置堆栈。SP 的内容一经确定,堆栈的位置也就跟着确定下来。 由于 SP 可初始化为不同值, 因此堆栈的具体位置是浮动的。六、P0P3P0P3 是和输出/输入有关的 4 个特殊寄存器,实际上是4 个锁存器。每个锁存器加上相应的驱动器和输入缓冲器就构成一个并行口,并且为单片机外部提供32 根 I/O 引脚,命名为 P0P3 口。前面在 1.2 节提到的程序计数器PC 是一个 16 位的加 1 计数器, 其
39、作用是控制程序的执行顺序,而其内容为将要执行指令的 ROM 地址,寻址范围是 64KB。它并不在片内 RAM的高 128B 内。1.3.21.3.2 特殊功能寄存器的位寻址特殊功能寄存器的位寻址不是所有的特殊功能寄存器都可以进行位的编程操作,对于没有定义位标识符的寄存器,用户无法访问。具有位定义的特殊功能寄存器位标识符见表 1-3-3 所示,其中 T2CON为增强 51 系列。表表 1-3-31-3-3 特殊功能寄存器位标识符和位地址表特殊功能寄存器位标识符和位地址表特殊功能寄存器MSB位地址LSB-D7PSWTCONTMODD7HCY8FHTF1GATESMOD9FHSM0/AFHEAB7H
40、P3.7A7HP2.797HP1.787HP0.7CFHTF2D6D6HAC8EHTR1C/T9EHSM1/AEH/B6HP3.6A6HP2.696HP1.686HP0.6CEHEXF2D5D5HF08DHTF0M19DHSM2BDHPT2ADHET2B5HP3.5A5HP2.595HP1.585HP0.5CDHRCLKD4D4HRS18CHTR0M09CHRENBCHPSACHESB4HP3.4A4HP2.494HP1.484HP0.4CCHTCLKD3D3HRS08BHIE1GATEGF19BHTB8BBHPT1ABHET1B3HP3.3A3HP2.393HP1.383HP0.3CBHEX
41、EN2D2D3HOV8AHIT1C/TGF09AHRB8BAHPX1AAHEX1B2HP3.2A2HP2.292HP1.282HP0.2CAHTR2D1D2HF189HIE0M1PD99HTIB9HPT0A9HET0B1HP3.1A1HP2.191HP1.181HP0.1C9HC/T2D0D1HP88HIT0M0IDL98HRIB8HPX0A8HEX0B0HP3.0A0HP2.090HP1.080HP0.0C8HCP/RL2PCONSCONIPIEP3P2P1P0T2CON特殊功能寄存器的位操作与RAM 的位寻址区操作一样, 通过编程可以进行地址寻址方式进行寄存器的每一位操作, 如果掌握了可以
42、位寻址的特殊功能寄存器的标识符, 编程应用就变得很简单,在 C 语言中,PSW = PSW&0x7f 与 CY = 0 结果一样。对于定时/计数器控制寄存器 TMOD,由于高 4 位和低 4 位标识符同名,只能采用字节操作。1.41.45151 单片机外引脚特性单片机外引脚特性根据电子系统应用要求不同,常用的 51 系列单片机有多种封装类型,如双列直插 DIP(Dual In-line Package) ,扁平型 SOP(Small Outline Package),四侧有引脚的 LQFP,PLCC等。根据提供的硬件资源多少,51 系列单片机片外引脚数量差别很大,有采用20 引脚的,也有 28
43、 引脚的,但 40 脚的双列直插式封装 DIP40 较多,图 1-4-1(a)为 DIP40 单片机封装外形引脚的分布,图1-4-1(b)为 40 引脚单片机的电路符号。40 个引脚按功能分为 4 个部分, 即电源引脚 (Vcc 和 Vss) 、 时钟引脚 (XTAL1和 XTAL2) 、 控制信号引脚 (RST、EA、PSEN和 ALE)以及 I/O 口引脚(P0P3) 。-1918393837363534333221222324252627281011121314151617XTAL1XTAL29RESETP0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0
44、.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD29PSEN30ALE31EA12345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7图图 1-4-1 511-4-1 51 系列单片机的引脚分布图系列单片机的引脚分布图(a)单片机 40 引脚分布(b)40 引脚单片机电路符号1.4.1 511.4.1 51 单片机的电源引脚单片机
45、的电源引脚40 脚 Vcc 为单片机电源正极引脚, 20 脚 Vss 为单片机的接地引脚。 在正常工作情况下,Vcc 接5V 电源,为了保证单片机运行的可靠性和稳定性,电源电压误差不超过0.5V。在移动的单片机系统中, 可以用 4 节镍镉电池或镍氢电池直接供电, 在实验情况下也可以用三节普通电池或计算机的 USB 总线接口电源供电。在嵌入式的单片机系统中,采用集成稳压器 7805 提供电源。图1-4-2 为简单的的单片机集成稳压电源,为了提高电路的抗干扰能力,电源正极与地之间接有 0.1 F 独立电容。+9-12V+5V78051000F 0.1F0.1F220F图图 1-4-21-4-2 单
46、片机集成稳压电源单片机集成稳压电源1.4.21.4.2 控制信号引脚控制信号引脚9 脚 RST/VPD 为复位/备用电源引脚。此引脚上外加两个机器周期的高电平就使单片机复位(Reset) 。单片机正常工作时,此引脚应为低电平。在单片机掉电期间,此引脚可接备用电源(5V) 。在系统工作的过程中,如果Vcc 低于规定的电压值,VPD 就向片内 RAM提供电源,以保持 RAM 内的信息不丢失。30 脚ALE/PROG为锁存信号输出/编程引脚,在扩展了外部存储器的单片机系统中,单片机访问外部存储器时,ALE 用于锁存低 8 位的地址信号。如果系统没有扩展外部存储器,ALE 端输出周期性的脉冲信号,频率
47、为时钟振荡频率的1/6,可用于对外输出的时钟。对于 EPROM 型单片机,此引脚用于输入编程脉冲。29 脚PSEN脚为输出访问片外程序存储器的读选通信号引脚。 在 CPU 从外部程序存储器取指令期间, 该信号每个机器周期两次有效。 在访问片外数据存储器期间, 这两次PSEN信号将不出现。31 脚EA/VPP用于区分片内外低 4KB 范围存储器空间。 该引脚接高电平时, CPU 访问片内程序存储器 4KB 的地址范围。若PC 值超过 4KB 的地址范围,CPU 将自动转向访问片外程序存储器; 当此引脚接低电平时, 则只访问片外程序存储器, 忽略片内程序存储器。 8031单片机没有片内程序存储器,
48、此引脚必须接地。对于EPROM 型单片机,在编程期间,此引脚用于加较高的编程电压Vpp,一般为12V。-1.4.31.4.3 单片机的单片机的 I/OI/O 端口引脚端口引脚单片机的 I/O 口是用来输入和控制输出的端口,DIP40 封装的 51 单片机共有 P0、P1、P2、P3 四组端口,分别与单片机内部P0、P1、P2、P3 四个寄存器对应,每组端口有8 位,因此 DIP40 封装的 51 单片机共有 32 个 I/O 端口。P0 口分别占用 3239 脚,依次命名为P0.0P0.7。P0 口是漏极开路型双向 I/O 口。在访问片外存储器时,P0 口分时作为低 8 位地址线和 8 位双向
49、数据总线用,此时不需外接上拉电阻。如果将 P0 口作为通用的 I/O 口使用,则要求外接上拉电阻或排阻,每位以吸收电流的方式驱动 8 个 LSTTL 门电路或其他负载。P0 口中任意一位电路原理如图1-4-3 所示。地址/数据控制&读锁存器V1VCC1P0.X引脚V2内部总线写锁存器QP0.X锁存器CPQDMUX读引脚图图 1-4-3 P01-4-3 P0 口中一位的结构口中一位的结构P1 口占用 18 脚, 分别是 P1.0P1.7, P1 口是一个带内部上拉电阻的8 位双向 I/O 口,每位能驱动 4 个 LSTTL 门负载。这种接口没有高阻状态,输入不能锁存,因而不是真正的双向 I/O
50、口。P2 口的 8 个引脚占用 2128 脚, 分别是 P2.0P2.7。 P2 口也是一个带内部上拉电阻的8 位双向 I/O 口。 在访问外部存储器时, P2 口输出高 8 位地址, 每位也可以驱动 4 个 LSTTL负载。P3 口的 8 个引脚占用 1017 脚,分别是 P3.0P3.7。P3 是双功能端口,作为普通I/O口使用时,同 P1、P2 口一样,作为第二功能使用时,引脚定义见表1-4-1。P3 口引脚具有的第二功能,能使硬件资源得到充分利用。表表 1-4-1 P31-4-1 P3 口的第二功能表口的第二功能表I/O 口线P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3
51、.7第二功能定义RXDTXDINT0INT1T0T1WRRD功能说明串行输入口串行输出口外部中断 0 输入端外部中断 1 输入端T0 外部计数脉冲输入端T1 外部计数脉冲输入端外部 RAM 写选通脉冲输出端外部 RAM 读选通脉冲输出端1.4.41.4.4 时钟引脚时钟引脚单片机有两个时钟引脚, 分别是 19 脚 XTAL1和 18 脚 XTAL2,用于提供单片机的工作时钟信号。单片机是一个复杂的数字系统,内部CPU 以及时序逻辑电路都需要时钟脉冲,所以单片机需要有精确的时钟信号。-单片机内部含有振荡电路, 19脚和18脚用来外接石英晶体和微调电容。 在使用外部时钟时,XTAL2则用来输入时钟
52、脉冲。见图 1-4-4所示,其中图 1-4-4(a)为晶体振荡电路,(b)为外部时钟输入电路。利用外部时钟输入时,要根据单片机型号XTAL1接地或悬空,并考虑时钟电平的兼容性。+5V单片机18单片机CP输入18XTAL2XTAL1XTAL2XTAL1191920VSS20VSS(a)晶体振荡电路(b)外部时钟输入电路图图 1-4-41-4-4 单片机时钟电路单片机时钟电路掌握单片机系统的结构组成是设计单片机应用系统的基础, 只有对单片机的硬件组成有一个全面的了解, 才能更好地去应用单片机系统所提供的硬件资源, 设计出性价比较高的实际应用系统。1.51.5 单片机最小系统单片机最小系统最小的单片
53、机系统由单片机芯片外加一些分立器件组成, 单片机的最小系统是单片机可以运行程序的基本电路, 也是一个微型的计算机系统, 复杂的单片机系统电路都是以单片机最小系统为基本电路进行扩展设计。1.5.11.5.1 单片最小系统组成单片最小系统组成VCC(+5V)IC STC89C5112345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD73938373635343332单片机的组成的最小系统见图1-5-1 所示, 图中单片机型号采用 STC8951RC
54、,电路包括电源、C3 4.7振荡电路、 复位电路, 512B 的 RAM 和 4KB ROMP2.0/A8219RESETP2.1/A92223P2.2/A1024P2.3/A11以及输入输出接口等。P2.4/A1225R1 5.1K2629P2.5/A1327PSENP2.6/A14一、晶体振荡电路30P2.7/A1528ALE31EA单片机内部的高增益的反相放大器与单片机10P3.0/RXD11P3.1/TXDP3.2/INT012的 XTAL1、 XTAL2引脚外接的晶体构成一个振荡P3.3/INT11319XTAL1P3.4/T014P3.5/T115电路作为 CPU 的时钟脉冲。见图
55、 1-5-2 所示。16P3.6/WR18XTAL2P3.7/RD17XTAL1为振荡电路入端, XTAL2为振荡电路输出CY 12MHz端, 同时XTAL2也作为内部时钟发生器的输入端。C1 30PC2 30P片内时钟发生器对振荡频率进行二分频,为控制器提供一个两相的时钟信号,产生CPU 的操作时序。51 单片机时钟电路的晶体常用的有6MHz,图图 1-5-1 511-5-1 51 单片机最小系统单片机最小系统12MHz,11.0592MHz等。电容 Cl 和 C2 对频率有微调作用,电容容量的选择范围为5PF30PF。在设计印刷电路时,晶振和电容的布局紧靠单片机芯片,以减少寄生电容。-S1
56、XTAL218振荡器时钟发生器S2P1P2P1P2时钟发生器P1P219XTAL1单片机图图 1-5-21-5-25151 系列单片机的时钟电路系列单片机的时钟电路二、复位电路单片机复位能使 CPU 和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作。复位后PC=0000H,单片机从第一个单元取指令。在实际应用中,无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位,所以必须弄清楚51 系列单片机复位的条件、复位电路和复位后状态。在单片机的 RST 引脚上有持续两个机器周期 (即 24 个振荡周期)的高电平即可让单片机进行复位操作,完成对 CPU 的初始化处理。如
57、果单片机的时钟频率为12 MHz,每机器周期为 1s,则只需让 RST 引脚保持 2s 以上高电平的就能复位。 复位操作是单片机系统正常运行前必须进行的一个环节。但如果 RST 持续为高电平,单片机就处于循环复位状态,无法执行用户的控制程序。+Vcc单片机9+Vcc单片机9RESTREST(a a)上电自动复位电路图)上电自动复位电路图(b b)手动复位电路图)手动复位电路图1-5-31-5-3 单片机复位电路单片机复位电路在实际应用中,复位操作通常有上电自动复位、 手动复位和看门狗复位三种方式。 上电复位要求接通电源后,自动实现复位操作。常用的上电自动复位电路如图1-5-3(a)图中所示。图
58、中电容和电阻电路对5V 电源构成微分电路,单片机系统上电后,单片机的 REST端会得到一个时间很短暂的高电平。在实际的单片机应用系统中,也可以采用1-5-3(b)电路进行按键手动复位,图 1-5-3(b)中,电容器采用电解电容,一般取4.710F;电阻取110K。单片机系统开始运行时必须先进行复位操作, 如果单片机运行期间出现故障, 也需要对单片机复位,使单片机状态被初始化。 看门狗复位是一种程序检测自动复位方式, 在增强型51 单片机中,如果单片机内部设计有看门狗部件,则可采用编程方法产生复位操作。单片机复位以后,除不影响片内 RAM 状态外,P0P3 口输出高电平,SP 赋初值 07H,程
59、序计数器 PC 被清 0。单片机内部多功能寄存器的状态都会被初始化。单片机的多功能寄存器复位状态见表 1-5-1 所示。表表 1-5-11-5-1 内部寄存器复位状态表内部寄存器复位状态表特殊寄存器ACC复位状态00H特殊寄存器TMOD复位状态00H-BPSWSPDPLDPHP0P3IPIE00H00H07H00H00HFFH00H00HTCONTH0TL0TH1TL1SCONSBUFPCON00H00H00H00H00H00H不定0XXXXXXXB1.5.21.5.2 单片机的工作时序单片机的工作时序51 系列单片机的工作时序共有 4 个,从小到大依次是节拍、状态、机器周期和指令周期。(1)
60、节拍与状态晶体振荡信号的一个周期称为节拍,用 P 表示,振荡脉冲经过二分频后,就是单片机的时钟周期,其定义为状态,用S 表示。 这样,一个状态就包含两个节拍,前半周期对应的节拍叫节拍 1,记作P1,后半周期对应的节拍叫节拍2,记作P2,见图 1-5-4 所示。CPU以时钟 P1、P2 为基本节拍,指挥单片机的各个部分协调工作。S1S2时钟ALE读操作码S1S2S3S4读操作码无效(废弃)S5S6S3S4S5S6S1S2S3S4S5S6P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2(a)单字节单周期指
61、令读操作码S1S2S3S4读第二字节S5S6三次读操作无效(废弃)S5S6S1S2S3S4S5S6(b)双字节单周期指令读操作码S1S2S3S4(c)单字节双周期指令图图 1-5-4 511-5-4 51 系列单片机的指令时序图系列单片机的指令时序图(2)机器周期51 系列单片机采用定时控制方式,具有固定的机器周期。一个机器周期的宽度为6 个状态,并依次表示为 S1S6。由于一个状态又包括两个节拍,因此,一个机器周期总共有12 个节拍,分别记作S1P1、S1P2、S6P2。实际上一个机器周期有12 个振荡脉冲周期,因此机器周期就是振荡脉冲信号的十二分频。当外接的晶体振荡脉冲频率为 12 MHz
62、 时,一个机器周期为 1s;当振荡脉冲频率为 6MHz 时,一个机器周期为2s。(3)指令周期单片机执行一条指令所需要的时间称为指令周期。指令周期是单片机最大的工作时序单位, 不同的指令所需要的机器周期数也不相同。 如果单片机执行一条指令占用一个机器周期,则这条指令为单周期指令, 如简单的数据传输指令; 如果执行一条指令需要两个机器周-期, 称为双周期指令, 如乘法运算指令。 单片机的运算速度与程序执行所需的指令周期有关,占用机器周期数越少的指令则单片机运行速度越快。 在 51 系列单片机的 111条汇编指令中,共有单周期指令、双周期指令和四周期指令三种。 四周期指令只有乘法和除法指令两条,
63、其余均为单周期和双周期指令。单片机执行单周期的时序见图 1-5-4(a)和(b)所示,其中(a)为单字节单周期指令, (b)为双字节单周期指令。单字节和双字节指令都在 S1P1 期间由 CPU 读取指令,将指令码读入指令寄存器,同时程序计数器 PC 加一。在 S4P2 期间,单字节指令读取的下一条指令会丢弃不用,但程序计数器 PC 值也加一;如果是双字节指令,CPU 在 S4P2 期间读取指令的第二字节,同时程序计数器 PC 值也加一。两种指令都在S6P2 时序结束时完成。单片机执行单字节双机器周期指令的时序见图1-5-4(c)所示,双周期指令在两个机器周期内产生四次读操作码操作,第一次读取操
64、作码,PC 自动加一,后三次读取都无效,自然丢弃,程序计数器PC 的值不会变化。1.5.31.5.3 单片机的工作模式单片机的工作模式根据单片机的工作状态, 单片机的工作模式分运行模式、 待机模式和掉电保护模式三种,单片机的工作模式可以利用编程或人为干预方式相互转换。 单片机的工作模式与电源有很大关系,在不同的工作环境和电源条件下,单片机工作模式也可以通过程序设定。一、运行模式单片机的运行模式是单片机的基本工作模式, 也是单片机最主要的工作方式。 单片机在实现用户设计的功能时通常采用这种工作模式。 在单片机运行期间,单片机一旦复位,程序计数器 PC 指针总是从 0000H 开始, 依次从程序存
65、储器中读取要操作的指令代码, 单片机开始顺序执行相关程序。单片机运行时, 程序执行在时钟脉冲作用下统一协调运行, 也可以通过单步脉冲作用下单步执行程序。 利用单片机的外部中断可以实现程序单步执行, 这种情况主要用于程序调试和检验程序运行结果。二、待机和掉电保护工作模式待机方式和掉电保护方式是两种单片机的节电工作方式。现在低功耗特性的51 系列单片机,在 Vcc=5V,fosc=12MHz 条件下,待机(休闲)方式时电流约2mA。掉电保护方式时电流小于 0.1 A。这两种工作方式特别适合以电池或备用电池为工作电源单片机系统。 两种低功耗工作方式由电源控制寄存器PCON 确定。PCON 的 8 位
66、格式为SMODGF1GF0PDIDL其中,SMOD 为波特率倍增位(在串行通信中使用) ;GF1、GF0 为通用标志位;PD 为掉电方式控制位,PD=1,进入掉电工作方式;IDL 为待机(休闲)方式控制位, IDL=1,进入待机工作方式。(1)待机(空闲)方式(Idle)待机方式的进入方法非常简单,只需使用指令将PCON 寄存器的 IDL 位置 1 即可。单片机进入待机方式时振荡器仍然运行,而且时钟被送往中断逻辑、 串行口和定时器/计数器,但不向 CPU 提供时钟,因此在此方式下 CPU 是不工作的。CPU 的现场(堆栈指针 SP、程序计数器 PC、PSW、ACC)以及除与上述三部件有关寄存器
67、外,其余的通用寄存器都保持原有状态不变,各引脚保持进入待机方式时的状态, ALE 和PSEN则保持高电平,中断系统正常工作。退出待机方式的方法有中断和硬件复位两种。 在待机方式下, 产生任何一个中断请求信号后,在单片机响应中断的同时,PCON.0 位(即 IDL 位)被硬件自动清 0,单片机退出待机方式进入到正常的工作状态。另一种退出待机方式的方法是硬件复位,在RST 引脚加上-两个机器周期的高电平即可,复位后的状态如前所述。(2)掉电保护方式(Power Down)掉电保护方式的进入类似于待机方式的进入, 只需使用指令将 PCON 寄存器的 PD 位置1 即可。进入掉电保护方式,单片机的一切
68、工作全部停止,只有片内RAM 单元的内容被保存。I/O 引脚状态和相关的特殊功能寄存器的内容相对应,ALE 和PSEN为逻辑低电平。退出掉电保护方式的方法只有通过硬件复位。复位后特殊功能寄存器的内容被初始化,但 RAM 的内容仍然保持不变。习习题题1. 51系列单片机的内部RAM和ROM容量是多少, 地址是如何分配的?STC89C51RC单片机的内部资源与 51 系列单片机有什么不同?2.单片机的 P0P3 口在功能上有什么区别?单片机复位后P0P3 口的状态如何?3.单片机晶振频率为 12MHz,则振荡周期、时钟周期、机器周期和指令周期分别为多少?4.单片机的 PSW 寄存器中各标志位有什么作用?5.DIP40 封装的 51 单片机的控制信号有哪些?各信号的作用如何?-