1、刘鸿健刘鸿健 主编主编化学工业出版社化学工业出版社第一节 自动控制概述第二节 微型计算机基础第三节 单片机的组成第四节 单片机指令系统第五节 单片机中断、定时器/计数器、串行通信第六节 汽车单片机程序设计原理 学习要求熟悉自动控制系统的概念、组成和工作原理,掌握开环控制和闭环控制的特点,了解常用自动控制系统的分类和计算机控制系统的组成。熟悉微型计算机和单片机的概念,了解MCS-51单片机的组成和引脚,熟悉指令系统,熟悉单片机的中断、定时器/计数器和串行通信。掌握单片机程序设计基本方法,熟悉汽车单片机有关程序的设计原理。第一节第一节 自动控制概述自动控制概述一、自动控制的基本概念一、自动控制的基
2、本概念1.1.自动控制的基本方法自动控制的基本方法自动控制系统有两种最基本的形式,即开环控制和闭环控制。复合控制是将开环控制和闭环控制适当结合的控制方式,可用来实现复杂且控制精度较高的控制任务。(1)开环控制开环控制是指控制装置与被控对象之间只有顺向作用而没有反向联系的控制过程。即被控量(系统输出)不影响系统控制的控制方式称为开环控制。所以,在开环控制中,不对被控量进行任何检测,在输出端和输入端之间不存在反馈联系。开环控制系统一般由控制器、执行元件和控制对象组成,如图1-1所示。下面以汽油发动机喷油自动控制为例说明。图1-1 开环控制系统方框图(2)闭环控制若系统输出量通过反馈环节返回来作用于
3、控制部分,形成闭合环路,则这样的控制称为闭环控制系统,又称为反馈控制。闭环控制的方框图如图1-2所示。闭环控制的特点是在控制器和被控对象之间,不仅存在着正向作用,而且还存在着反馈作用,即系统的输出信号对被控制量有直接影响。在闭环控制中,被控量时刻被检测,并通过反馈通道送回到比较元件,与给定值进行比较。闭环控制从原理上提供了实现高精度控制的可能性。图1-2 闭环控制系统方框图 2.自动控制的分类由于控制技术的广泛应用以及控制理论自身的发展,使得控制系统具有各种各样的形式,从不同的角度出发,分类的方式也不相同。以下简介常见的几种分类。(1)按输入信号特征分类定值控制系统:给定信号(给定值)为一常值
4、的控制系统称为定值控制系统。这类控制系统的任务是保证在扰动作用下使被控变量始终保持在给定值上。汽车发动机的缸温控制是定值即定温控制,一般缸温设定在80OC,当缸温超过设定温时,发动机ECU或温控器将起动冷却液循环和风扇散热。随动控制系统:给定信号是一个未知变化量的闭环控制系统称为随动控制系统。这类控制系统的任务是保证在各种条件下系统的输出(被控变量)以一定精度跟随给定信号的变化而变化,所以这类控制系统又称为跟踪控制系统。发动机点火提前角的控制是典型的高精度、随动控制。它的给定信号是随机信号,就是发动机的转速信号,发动机转速随喷油量和负荷量等因素的变化而变化;发动机转速越高,点火提前角就越大;这
5、是一个闭环控制,检测反馈元件是发动机曲轴转速传感器。程序控制系统:给定信号是一个按一定时间程序变化的时间函数的闭环控制系统称为程序控制系统。汽车喷漆烤漆房的温度控制是程序,其升温、保温、降温过程都是按照预先设定的规律进行控制的。(2)按变量分类单变量控制系统:如果只有一个被控变量和一个控制作用来控制被控对象,则称该系统为单变量控制系统,又称为单输入单输出系统。多变量控制系统:如果一个控制系统中的被控变量多于一个,控制作用也多于一个,而且各控制回路相互之间有耦合关系,则称这类控制系统为多变量控制系统,也称为多输入多输出控制系统。汽车发动机电控系统就是一个多变量控制系统,它有多个输入信号,如发动机
6、转速信号、空气流量信号、缸温信号等;它要输出多个变量,如喷油量、点火提前角等去控制发动机。(3)按控制装置分类常规控制器:一般多指采用模拟电路来实现的控制器。简单的控制常采用这种控制器,线路简单,成本低。计算机控制器:复杂的、多变量的、随动的自动控制系统多采用以计算机为核心的控制器。现代汽车中各电控单元都是采用以单片机为核心的控制器。3.对控制系统的基本要求(1)稳定性:稳定性是指系统被控量偏离给定值而振荡时,系统抑制振荡的能力。对于稳定的系统,随着时间的增长,被控量将趋近于希望值。图1-3(a)所示的系统是稳定的,图1-3(b)所示的系统是不稳定的,可见稳定性是保证系统正常工作的先决条件。图
7、1-3 自动控制系统稳定性示意图(a)稳定系统 (b)不稳定系统(2)快速性:快速性是指被控量趋近希望值的快慢程度。快速性好的系统,它的过渡过程时间就短。图1-4所示的系统,其快速性要比系统好。稳定性和快速性是反映系统动态过程好坏的尺度。图1-4 自动控制系统快速性示意图(3)准确性:准确性是指过渡过程结束后被控量与希望值接近的程度。工程上常常从稳、快、准三个方面来评价自动控制系统的总体性能。二、计算机控制技术1.计算机控制技术概念如果把自动控制系统的控制器用计算机来代替,这样就可以构成计算机控制系统。如果计算机是微型计算机,就组成微型计算机控制系统,其基本框图如图1-5所示。在微型计算机控制
8、系统中,只要运用各种指令,就能编出符合某种控制规律的程序。微处理器执行这样的程序,就能实现对被控参数的控制。在计算机控制系统中,由于计算机的输入和输出信号都是数字信号,而大部分被控对象的被控参数和控制量都是模拟信号,因此在这样的控制系统中,需要有将模拟信号转换为数字信号的AD转换器,以及将数字信号转换为模拟信号的DA转换器。计算机控制系统的控制过程通常可归结为以下三个步骤:(1)数据采集:对被控参数的瞬时值进行检测、采集,并将数据传送给计算机。(2)实时决策:对采集的数据按程序进行分析,与内存数据比较,决定下一步控制过程。(3)实时控制:并按已定的控制规律,适时地对执行单元发出控制信号。上述过
9、程不断重复,使整个系统能够按照一定的性能指标进行工作,并且对被控参数和设备本身出现的异常状态及时监督并做出迅速处理。应用微型计算机控制是一个实时控制系统,它包括硬件和软件两部分。发动机的运行过程是连续进行的,图1-5 微型计算机控制系统基本框图 2.计算机控制的特点计算机控制系统有两个类别,一类是通用计算机控制系统,适用于高速、大量的数值计算,系统配置多,体积大。另一类是以单片机为主的嵌入式计算机控制系统,它具有微型、嵌入和专用的特点。它以很小的“微型”体积“嵌入”控制对象的载体中,其配置的硬件和软件以适用控制对象为度,系统是“专用”的。在制造工业、过程控制、通讯、仪器、仪表、家用电器、汽车、
10、船舶、航空、航天、军事装备等方面均采用有嵌入式计算机控制技术。现代汽车控制系统均采用单片机控制系统。单片机控制系统具有以下特点:(1)适合多变量控制。汽车发动机电控系统是一多变量控制系统。(2)适合数据比较、查找控制。发动机点火提前角度的确定是根据发动机转速和负荷等工况信息,查找内存中的数据确定的。(3)适合计数控制。发动机点火提前角度的控制执行是靠计数控制实现的。(4)适合实时随动控制。汽车的加速控制是实时随动控制,只有脚踏加速踏板,发动机的转速随即提高,这是实时控制喷油量实现的。(5)改变控制模式容易。通过修改软件或内存数据,可以比较容易改变控制模式。(6)适合网络化控制。现代轿车有发动机
11、电控单元、防抱死制动电控单元、动力转向电控单元、主动悬架电控单元、防碰撞电控单元、导航电控单元等几十种电控单元,可以联网控制。第二节第二节 微型计算机基础微型计算机基础一、计算机的发展概况人类在对客观世界的“数量”认识上,从记数、计数到计算,经历了漫长的历史阶段,即从手工计算阶段、机械计算阶段,一直发展到现今的电子计算机计算阶段。电子计算机的发展常以电子器件为标志划分为四个阶段。第一代计算机(1945年-1958年),以电子管作为逻辑元件。主要用于科学和工程计算;运算速度每秒几千次至几万次。第二代计算机(1958年-1964年),以晶体管作为逻辑元件,用磁芯做主存储器。体积缩小、功耗降低,提高
12、了速度和可靠性;每秒运算可达几十万次。第三代计算机(1964年-1971年),以集成电路作为基础器件。体积、功耗、价格等进一步降低;用半导体存储代替了磁芯存储器;运算速度每秒可达几十万次到几百万次;在软件方面,操作系统日臻完善。计算机设计思想已逐步走向标准化、模块化和系列化,应用范围更加广泛。第四代计算机(1971年至今),采用大规模集成电路和超大规模集成电路。用集成度更高的半导体芯片做主存储器;运算速度可达每秒百万次至亿次。计算机网络的研究进展迅速;系统软件的发展不仅实现了计算机运行的自动化,而且正在向智能化方向迈进;各种应用软件层出不穷,极大地方便了用户。现代计算机正在向以下四个方面发展。
13、(1)巨型化:随着科学技术发展的需要,许多部门要求计算机有更高的速度、更大的存储容量,从而使计算机向巨型化发展。(2)微型化:计算机体积更小、重量更轻、价格更低、更便于应用于各个领域,尤其是适用仪器仪表、家用电器、通信工具的数字化和智能化,工业控制的自动化等。(3)网络化:计算机网络是计算机技术和通信技术互相渗透、不断发展的产物。计算机连网可以实现计算机之间通信和资源共享。对于社会,加速社会信息化的进程。对工业机器群或生产线可实现计算机联网控制。(4)多媒体化:现代计算机可以集文字、声音、图形、图像和视频处理为一体,使人们面对有声有色、图文并茂的信息交流环境。二、微型计算机和单片机电子计算机高
14、速发展到今天,通常可分为巨型机、大型机、中型机、小型机和微型机五类。它们在系统结构和基本工作原理方面并无本质的区别,只是在体积、性能和应用领域方面有所不同。微型计算机简称微机,是计算机的一个重要分类。微型计算机不但具有其它计算机快速、精确、程序控制等特点,最突出的是它还具有体积小、重量轻、功耗低、价格便宜等优点。个人计算机简称PC(Personal Computer)机,是微型计算机中应用最为广泛的一种,目前,它已经像普通家用电器一样深入到了家庭和社会生活的各个方面。图1-6是关于微型计算机系统组成的示意图。图1-6 微型计算机系统组成 1.微处理器微处理器就是传统计算机的CPU,是集成在同一
15、块芯片上的具有运算和逻辑控制功能的中央处理器,它是构成微型计算机系统的核心部件。2.微型计算机以微处理器为核心,再配上存储器、输入和输出接口电路(简称I/O接口)和中断系统等构成的整体,称为微型计算机。它们可集中装在同一块或数块印刷电路板上,一般不包括外围设备和软件。3.微型计算机系统这是指以微型计算机为核心,配上输入设备和输出设备、电源和软件等,构成能独立工作的完整计算机系统。软件系统是微机系统所使用的各种程序的总称。人们通过它对整机进行控制并与微机系统进行信息交换,使微机按照人的意图完成预定的任务。4.单片微型计算机单片微型计算机简称单片机。单片机是将微处理器、存储器、I/O接口和中断系统
16、集成在同一块芯片上,具有完整功能的微型计算机,这块芯片就是其硬件。在实际应用中,通常很难将单片机直接和被控对象进行电气连接,必须外加输入电路、输出电路和操作开关等,才能构成一个单片机应用系统。三、计算机中的数制和码制为了了解单片机的基本工作原理,首先简介计算机中的数制和码制。对计算机中的数据、地址和指令等的描述,常用到二进制数和十六进制数。(1)二进制数 在计算机内部的基本工作电路是组合逻辑电路和时序逻辑电路,是按高低电平和二进制规律工作。计算机处理和存储的信息都是二进制信息,并以8位二进制数为一个单位,称为一个字节(Byte,简写B)。对于一个较大的信息,可以用若干个字节组成。以二进制数表示
17、的数据或指令,是计算机可以直接使用的,故称为机器数,也称机器码。(2)十六进制数在对计算机输入数据、指令码时,如采用二进制数,则因位数太多,使用比较麻烦。在单片机上常用十六进制数表示二进制数。十六进制数是微型计算机软件编程时常采用的一种数制,其主要特点是:十六进制数由16个数符构成:0、1、2、9、A、B、C、D、E、F,其中A、B、C、D、E、F分别代表十进制数的10、11、12、13、14、15。十六进制数进位规则是“逢十六进一”。一般在数的后面加一个字母H表示是十六进制数。8位二进制数“0000000011111111”,可用2位十六进制数“00HFFH”一一对应来表示,这样操作的位数就
18、减少了。当然,十六进制数进入计算机后要经专门的电路和软件再转为二进制数供计算机使用。在人工输入数据时,如果数据是十进制数,一般应先人工转为十六进制数,然后再输入。第三节第三节 单片机的组成单片机的组成尽管各类单片机很多,但无论是从世界范围或是从全国范围来看,使用最为广泛的应属Intel公司生产的MCS-51系列单片机。基于这一事实,下面以应用最为广泛的MCS-51系列8位单片机(8031、8051、8751等)为研究对象,介绍单片机的硬件结构和工作原理。MCS-51系列又分为51和52两个子系列,并以芯片型号的最末位数字作为标志。其中,51子系列是基本型,而52子系列则属增强型。MCS-51单
19、片机的典型芯片是8031、8051、8751。8051内部有4 KB ROM,8751内部有4KB EPROM,8031内部无ROM;除此之外,三者的内部结构及引脚完全相同。因此,以8051为例,说明本系列单片机的内部组成、信号引脚和指令系统。一、MCS-51单片机的基本组成MCS-51单片机的基本组成如图1-7所示,从图中可看出,MCS-51单片机组成结构中包含CPU、片内存储器、4个并行I/O口、1个串行口、2个定时器/计数器、中断系统和时钟振荡器等功能部件。图1-7 8051单片机的基本组成 1.微处理器(CPU)微处理器是单片机的核心,如前面的的图1-6所示,其内含运算器和控制器。运算
20、器是计算机的运算部件,用于实现算术运算和逻辑运算,计算机的数据运算和处理都在这里进行。控制器是计算机的指挥控制部件,它控制计算机各部分自动、协调地工作。2.存储器存储器是计算机的记忆部件,用于存放程序和数据。存储器又分为片内存储器和片外存储器。片外存储器是片内存储器的扩展。1 KB1024B,1 MB1024KB,1 GB1024MB存储器可分为两类:随机存取存储器RAM和只读存储器ROM。3.定时/计数器8051共有2个16位的定时/计数器,以实现定时或计数功能,并以其定时或计数结果对计算机进行控制。4.并行I/O口8051共有4个8位的I/O口(P0、P1、P2、P3),以实现数据的并行输
21、入/输出。5.串行口MCS-51单片机有一个全双工的串行口,以实现单片机和其它设备之间的串行数据传送。该串行口功能较强,既可作为全双工异步通信收发器使用,也可作为同步移位器使用。6.中断控制系统MCS-51单片机的中断功能较强,以满足控制应用的需要。8051共有5个中断源,即外中断两个,定时/计数中断两个,串行中断一个。全部中断分为高级和低级共两个优先级别。7.时钟电路MCS-51芯片的内部有时钟电路,但石英晶体和微调电容需外接。时钟电路为单片机产生时钟脉冲序列。MCS-51芯片允许的晶振频率一般为6 MHz和12 MHz。从上述内容可以看出,MCS-51虽然是一个单片机芯片,但作为计算机应该
22、具有的基本部件它都包括,因此,实际上它已是一个简单的微型计算机了。8.内部总线总线是用于传送信息的公共途径。总线可分为数据总线、地址总线、控制总线。单片机内的CPU、存储器、I/O接口等单元部件都是通过总线连接到一起的。采用总线结构可以减少信息传输线的根数,提高系统可靠性,增强系统灵活性。二、MCS-51单片机的信号引脚MCS-51是标准的40引脚双列直插式集成电路芯片,引脚排列如图1-8所示。由于工艺及标准化等原因,芯片的引脚数目是有限制的,为了增加引脚的功能,有些引脚具有第二功能,带括号的符号是第二功能符号。图1-8 MCS-51引脚排列图 1.电源引脚VCC(40脚):芯片电源正极端,接
23、+5V电源;VSS(20脚):芯片电源负极端或接地端。2.时钟引脚XTAL1(19脚)和XTAL2(18脚):当使用芯片内部时钟时,外接石英晶体和微调电容;采用外部振荡器时,XTAL1接地,XTAL2为外部振荡信号的输入端。3.I/O口引脚8051共有4个8位的并行I/O口,即P0口、P1口、P2口、P3口。P0口:P0.0 P0.7(3932脚),8位双向I/O口线。此口在CPU的控制下,可以选为双向数据总线口,可以输出或输入数据;也可选为地址总线的低8位输出线口。P1口:P1.0 P1.7(18脚),8位双向I/O口线。仅有双向数据总线口功能。P2口:P2.0 P2.7(2821脚),8位
24、双向I/O口线。此口在CPU的控制下,可以选为双向数据总线口;也可选为地址总线的高8位输出线口。P3口:P3.0 P3.7(1017脚),8位双向I/O口线。双向数据总线口和第二功能口。第二功能口见表1-1。引脚第二功能符号与名称 引脚 第二功能符号与名称 P3.0RXD 串行数据接收端 P3.4T0 定时器/计数器0外部输入端 P3.1TXD 串行数据发送端 P3.5T1 定时器/计数器1外部输入端 P3.2外部中断0请求输入端 P3.6外部数据存储器写选通信号输出端 P3.3外部中断1请求输入端P3.7外部数据存储器读选通信号输出端INT0INT1WRRD表1-1 P3口各引脚与第二功能表
25、4.控制信号引脚ALE/(30脚):ALE是地址锁存控制信号。在访问外部存储器(RAM或ROM)时,ALE用于控制把P0口输出的低8位地址锁存起来,以实现低位地址和数据的隔离。此外,由于ALE是以晶振1/6的固定频率输出的正脉冲,因此,可作为外部时钟或外部定时脉冲使用。第二功能 是在对8751的EPROM编程时,是编程脉冲的输入端。(29脚):在访问外部程序存储器时,此端输出低电平,作为外部程序存储器的读选通信号。/VPP(31脚):为内部程序存储器和外部程序存储器的选择控制信号。1,访问内部程序存储器,并可延至外部程序存储器。0,访问外部程序存储器。第二功能VPP是在对8751的EPROM编
26、程时,是编程电压(21V)的输入端。PROGPROGPSENEAEAEARST/VPD(9脚):复位信号输入端,用以完成单片机的复位初始化操作。第二功能VPD是备用电源输入端,当主电源VCC端口断电期间,备用电源经VPD端向片内RAM供电,保证存储在RAM中的数据不至丢失。三、存储器和地址空间MCS-51单片机存储器结构采用哈佛型结构,即将程序存储器(ROM)和数据存储器(RAM)分开,它们有各自独立的存储空间、寻址机构和寻址方式。其典型结构如图1-9所示。1.程序存储器计算机的工作是按照事先编制好的程序命令序列一条条顺序执行的,程序存储器就是用来存放这些已编好的程序和表格常数,它由只读存储器
27、ROM或EPROM组成。计算机为了有序地工作,设置了一个专用寄存器程序计数器PC,用以存放 将要执行的指令地址。每取出指令的个字节后,其内容自动 加,指向下一字节地址,使计算机依次从程序存储器取出指令予以执行,完成某种程序操作。由于MCS-51单片机的程序计数器为16位,因此,可寻址的地址空间为64 KB。8051程序存储器的空间地址使用有三种方法,如图1-9(a)所示。第一种方法:单独使用片内ROM。第二种方法:片内ROM+片外ROM。第三种方法:完全使用片外ROM。MCS-51单片机有6个程序的特殊入口地址,1个单片机复位入口和5个中断入口,如图1-9(a)中左侧所示,每一个入口有一个确定
28、的地址。单片机上电或复位后,程序从复位入口0000H开始执行。程序在执行过程中,5个中断源中如果有中断请求,程序则转到相应的中断入口地址,执行中断程序。图1-9 8051存储器的地址空间2.数据存储器MCS-51单片机片内、外数据存储器是两个独立的地址空间,分别单独编址,如图1-9(b)所示。片内数据存储器分为两部分:一部分是用户存储数据空间:共有128个字节,地址范围00H7FH。内有工作寄存器区(00H1FH)、位寻址区(20H2FH)和数据区存储区(30H7FH)。另一部分是专用寄存器空间:共有128个字节,地址范围80HFFH,内有特殊功能寄存器SFR。SFR呈离散分布。各有关区分述如
29、下。(1)工作寄存器区00H1FH存储单元为工作寄存器区。工作寄存器也称通用寄存器。工作寄存器分成4组,每组都有8个寄存器,用R0R7来表示。程序中每次指令只用1组。工作寄存器用于临时寄存8位数据,常用来存放程序需要的初始数据。(2)位寻址区20H2FH存储单元是位寻址区,即可按字节寻址,又可按位寻址。这16个单元共有168=128位,每一位都赋予了一个位地址,位地址编号00H7FH,位地址编号在位寻址指令中使用。位寻址区的每一位都可当作软件触发器或软件开关,由程序直接进行位处理。通常可以把各种程序状态标志、位控制变量存于位寻址区内。(3)数据存储区30H7FH数据存储区,也是用户RAM区,共
30、80个单元。由于工作寄存器区、位寻址区、数据存储区统是统一编址,使用同样的指令访问,这三个区的单元既有自己独特的功能,又可统一调度使用。因此,前两个区未使用的单元也可作为用户RAM单元使用,使容量较小的片内RAM得以充分利用。堆栈所需要的存储单元由设计者在数据存储区内选定。(4)特殊功能寄存器特殊功能寄存器SFR专用于控制、管理片内算术逻辑部件、并行I/O口、串行I/O口、定时器/计数器、中断系统等功能模块的工作。用户在编程时可以置数设定。在51系列单片机中,各专用寄存器(PC例外)与片内RAM统一编址,每个SFR占有一个存储单元,它们呈离散分布。寻址的方式有寄存器寻址、直接字节寻址和位寻址。
31、特殊功能寄存器(SFR)的名称、符号和地址见表1-2。特殊功能寄存器名称 SFR符号 地址 累加器 ACCE0HB寄存器 BF0H程序状态字 DSWD0H堆栈指针 SP81H数据寄存器指针(低8位)DPL82H数据寄存器指针(高8位)DPH83HP0口锁存器 P080HPl口锁存器 P190HP2口锁存器 P2A0H表1-2 特殊功能寄存器(SFR)的名称、符号和地址P3口锁存器 P3B0H中断优先级控制寄存器 IPB8H中断允许控制寄存器 IEA8H定时器/计数器方式选择寄存器 TMOD89H定时器/计数器控制寄存器TCON88H定时器/计数器0(高字节)TH08CH定时器/计数器0(高字节
32、)TL08AH定时器/计数器1(高字节)TH18DH定时器/计数器1(低字节)TL18BH串行控制寄存器SCON98H串行数据缓冲器SBUF99H电源控制寄存器 PCON87H片外数据存储器一般是16位编址,51单片机可扩展片外64 KB空间的数据存储器,地址范围为0000HFFFFH,它与程序存储器的地址空间是重合的,但两者的寻址指令和控制线不同。四、并行输入/输出端口MCS-51有4个并行输入/输出端口,分别命名为P0、P1、P2、P3。每个端口都由8位数据输出锁存器和驱动电路、8位数据输入缓冲器组成。每个端口的8位数据输出锁存器也是该端口的特殊功能寄存器,与端口的命名同名,也称为P0、P
33、1、P2、P3,见表1-2。CPU输出数据可以在8位数据输出锁存器中锁存,外来数据输入可以在8位数据输入缓冲器中得到缓冲。MCS-51单片机有不少指令可直接进行端口操作。1P0口(P0.0P0.7,第3932脚)(1)P0口结构P0口是一个三态双向口,可作为地址/数据分时复用口,也可作为通用I/O接口。其1位的结构原理如图1-10中所示。图中虚线的左侧为单片机内部电路,右侧为外部电路。P0口由8个这样的电路组成。锁存器起输出锁存作用,8个锁存器构成了特殊功能寄存器P0;场效应管V1、V2组成输出驱动器,以增大带负载能力;三态门1是引脚输入缓冲器;三态门2用于读锁存器端口;与门3、反相器4及转换
34、开关MUX构成了输出控制电路。图1-10 P0口的一位结构原理图P0口工作原理如下:(1)作为通用I/O接口的输出口当CPU向端口输出数据时,对“控制”端输出“0”电平信号,转换开关MUX把输出级V1与锁存器的端接通,同时因为与门3输出为“0”,使V2截止,此时,输出级是漏极开路电路。当写脉冲加在锁存器时钟端CLK上时,与内部总线相连的D端数据取反后出现在端,再经V1反相输出,在P0引脚上出现的数据正好是内部总线的数据。图中实箭头线为输出数据路径。在输出数据时,由于V2截止,输出级是漏极开路电路,要使信号正常输出,必须在P0口的引脚上外接上拉电阻,如图1-10中虚线的右侧所示。(2)作为通用I
35、/O接口的输入口P0口在输入数据时,由CPU先对锁存器的D端置“1”,此时锁存器的端为“0”,使输出级的两个场效应管V1、V2均截止,使引脚P0.x处于悬浮高阻状态。输入信号从引脚输入后,经三态门输入缓冲器1;“读引脚”信号使输入缓冲器1开通,输入信号进入内部总线。图中虚箭头线为输入数据路径。P0口是一个准双向口。(3)作为地址/数据总线输出在访问片外存储器时,需从P0口输出地址或数据信号,CPU对“控制”端输出高电平信号“1”,使转换开关MUX向上,把反相器4的输出端与V1接通,同时把与门3打开。当地址或数据为“1”时,经反相器4使V1截止,而经与门3使V2导通,P0.x引脚上出现相应的高电
36、平“1”;当地址或数据为“0”时,经反相器4使V1导通而V2截止,引脚上出现相应的低电平“0”。这样就将地址/数据的信号输出。P0口作为地址/数据分时复用总线时,输出的是地址信号,还是数据信号?主要由指令决定。在同一时刻,输出的只能是一种信号。可以分时输出两种信号。P0口作为地址总线时,输出的是16位地址线的低8位地址线。2P1口(P1.0P1.7,第18脚)P1口仅作为通用I/O口,其结构比P0口简单。把图1-10中的与门3、反相器4、转换开关MUX、场效应管V2去掉。锁存器的端直接与场效应管V1连接;外接上拉电阻移入单片机内部,就是P1口的结构。P1口仅具有数据输入/输出功能,是一个准双向
37、口。3P2口(P2.0P2.7,第2821脚)P2口的结构和功能与P0口基本相同,也是地址/数据分时复用口:一是作为通用I/O口,具有数据输入/输出功能,是一个准双向口;二是作为地址总线时,输出的是16位地址线的高8位地址线。4P3口(P3.0P3.7,第1017脚)P3口的一位结构如图1-11所示。P3口具有两种功能:一是作为通用I/O口,具有数据输入/输出功能,是一个准双向口;二是作为第二功能使用,其原理如下:第二功能输出原理:当P3口的某一位作为第二功能输出时,CPU将该位锁存器置“1”,使与非门3的输出状态只受“第二功能输出”信号控制。“第二功能输出”信号经与非门3和场效应管V1两次反
38、相后输出到P3.x的引脚上。第二功能输入原理:当P3口的某一位作为第二功能输入时,CPU将该位“第二功能输出”和锁存器均置“1”,场效应管V1截止,P3.x引脚上的输入信号经缓冲器4进入单片机内的相应控制电路。P3口各引脚的第二功能见表1-3。图1-11 P3口的一位结构 五、CPU时序单片机内各部件之间有条不紊的协调工作,其控制信号是在一种基本脉冲节拍的指挥下按一定时间顺序发出的,这些控制信号在时间上的相互关系就是CPU时序。而产生这种基本节拍的电路就是振荡器和时钟电路。1.振荡器和振荡周期(1)振荡器和振荡周期的意义振荡器的振荡频率是单片机中频率最高的、唯一的脉冲源,其振荡周期最短。单片机
39、中的所有控制信号脉冲、输出数据脉冲、输入数据脉冲(输入转换后)、地址脉冲、指令脉冲等都是来源于振荡器,由振荡器输出的脉冲经分频器分频得到。振荡器的振荡频率决定单片机的工作速度,振荡频率越高,单片机的工作速度越高。振荡器如果停止振荡,单片机也就停止工作。单片机常用的振荡器频率为6 MHz或12MHz。振荡脉冲波形如图1-13所示。(2)单片机振荡器单片机内部有一个石英振荡器的基本电路,由于石英晶体元件和电容器不能集成到单片机内,只能外接。如图1-12所示,外部电路与单片机的XTAL1和XTAL2引脚相连。在多单片机组成的网络系统中,为了使各单片机之间振荡脉冲信号同步,往往引入一个外部振荡器的信号
40、,外部振荡信号从XTAL2引脚输入。图1-12 内部振荡器的外部元件连接2.时钟周期振荡脉冲经二分频器分频后,得到二倍振荡脉冲周期的脉冲,称为时钟脉冲,对应的周期称为时钟周期,也称为状态周期,用S表示。两个振荡周期作为两个节拍分别称为节拍P1和节拍P2。在状态周期的前半周期P1有效时,通常完成算术逻辑操作;在后半周期P2有效时,一般进行内部寄存器之间的传输。时钟脉冲即S信号的波形如图1-13所示。3机器周期一个机器周期由6个状态周期(12个振荡周期)组成,6个状态周期用S1S6表示,每一状态周期的两个节拍用P1、P2表示,则一个机器周期的12个节拍就可用S1P1、S1P2、S2P1、S6P1、
41、S6P2来表示。4指令周期执行一条指令所占用的全部时间。一个指令周期通常由14个机器周期组成。若外接晶振频率为fosc=12 MHZ,则四个基本周期的具体数值为:(1)振荡周期=1/12 s (2)时钟周期=1/6 s (3)机器周期=1 s (4)指令周期=14 s单片机执行任何一条指令都分为取指令阶段和执行指令阶段。图1-13是 ALE信号与振荡器信号、时钟信号S的关系图。ALE是地址锁存控制引脚。ALE引脚上出现的信号是周期性的。每个机器周期ALE信号出现2次高电平,第一次出现在S1 P2和S2P1期间,第二次出现在S24P2和S5P1期间。图1-13 ALE信号与振荡器信号、时钟信号的
42、关系图 六、复位方式单片机在开机时或在工作中因干扰而使程序失控或工作中程序处于某种死循环状态等情况下都需要复位。复位的作用是使中央处理器CPU以及其他功能部件都恢复到一个确定的初始状态,并从这个状态开始工作。单片机的复位靠外部电路实现,信号由复位引脚RST输入,高电平有效,在振荡器工作时,只要保持RST引脚高电平两个机器周期,单片机即复位。复位后,PC程序计数器的内容为0000H,片内RAM中内容不变。复位电路一般有上电复位和手动开关复位,如图1-14所示。图1-14(a)为上电复位电路,上电复位是利用单片机上电初始对电容C充电,使RST引脚获得高电平而触发复位的。高电平触发时间持续10ms有
43、效。图1-14(b)为手动复位电路,手动复位是利用短暂按压按钮开关给RST引脚直接施加高电平触发复位的。此外,还有一种称为“看门狗”的自动复位电路,需要相应软件支持。其基本原理是通过一个周期性触发程序,每隔一定的时间(如1.6s),给RST引脚输入一个大于10ms的高电平脉冲,触发RST复位。当主程序受干扰发生程序“跑飞”或“死循环”时,在极短的时间内可以自动复位,不至于系统停机。自动复位电路特别适用干扰大、周期性循环工作的系统的实时监控,如对发动机的实时监控。图1-14 复位电路(a)上电复位电路 (b)手动复位电路第四节第四节 单片机指令系统单片机指令系统指令是CPU用于控制功能部件完成某
44、一指定操作的命令。一台单片机所具有的所有指令的集合,就构成了指令系统。指令系统越丰富,说明CPU的功能越强。一台单片机能执行什么样的操作,是在单片机设计时有硬件电路确定的。一条指令对应着一种基本操作。不同类型的单片机有不同的机器语言。一、单片机语言单片机的指令描述形式有两种:机器语言形式和汇编语言形式。1.机器语言由于计算机只能识别二进制数,所以计算机中所有的指令和数据都是用二进制代码来表示。用二进制代码表示的指令称为机器指令或机器码,又称为机器语言。为了书写和输入程序方便,机器语言的二进制代码常用十六进制代码表示。采用机器语言编写的程序称之为目标程序。目标程序的十六进制代码指令经相关的硬件电
45、路可以转为二进制代码指令,直接输入给单片机的程序存储器运行。用机器语言在编写程序、分析程序和输入程序等方面效率较低。2.汇编语言由于机器语言不便被人们识别、记忆、理解和使用,因此给每条机器语言指令赋予助记符号来表示,这就形成了汇编语言。助记符号多用英文字母和数字组成。也就是说,汇编语言是便于人们识别、记忆、理解和使用的一种指令形式,它和机器语言指令一一对应,也是由计算机的硬件特性所决定的。采用汇编语言编写的程序称之为源程序。汇编语言在编写程序、分析程序和输入程序等方面效率较高。但汇编语言程序不能被单片机直接识别并执行,必须经过一个中间环节把它翻译成机器语言程序,这个中间过程叫做汇编。汇编有两种
46、方式:机器汇编和手工汇编。手工汇编是编程员把汇编语言指令逐条翻译成机器语言指令,然后输入单片机。机器汇编是用专门的编译程序,在PC计算机上进行翻译,翻译后的机器语言经专用通信线路传输给单片机。这种方式在编写程序、分析程序和输入程序等方面效率较高。3.高级语言除了汇编语言,还有高级语言,如BASIC、PASCAL、C语言等,可以用来对单片机编程。高级语言接近自然语言(英语)和数学语言的算法语言,具有直观、通用等特点。相对于高级语言,机器语言和汇编语言属于低级语言。用低级语言编写程序需要完全了解CPU硬件结构,对程序设计人员要求较高,且程序不能移植。但高级语言程序不能被单片机直接识别并执行,所以也
47、需要编译程序将高级语言“翻译”为机器语言,因此用高级语言的速度慢,且占用内存空间大。具体用哪一级语言对单片机编程和控制,由系统的复杂程度、所编程序的大小、机器的内存和编程者所熟悉的语言而决定。对嵌入式单片机控制系统,主要使用汇编语言编程,由机器语言直接控制单片机,所占内存小,运行速度快,效果好。对有上位计算机(如PC机或工业计算机)控制、由单片机组成的控制系统,用高级语言易于编程、调试、修改和监控。二、MCS-51单片机指令系统MCS-51单片机指令系统共有111条指令。其中有49条单字节指令、46条双字节指令和16条三字节指令。按功能可以划分为以下5类:数据传送指令(28条),算术运算指令(
48、24条),逻辑运算指令(25条),控制转移指令(12条),位操作指令(17条),子程序调用、返回和空操作指令(5条)。1.汇编语言指令格式:指令系统中的指令描述了不同的操作,不同操作对应不同的指令。但结构上,每条指令通常由操作码和操作数两部分组成。汇编语言指令格式如下:格式:标号:操作码助记符 第一操作数 ,第二操作数 ;注释2.指令常用符号(1)Rn(n=07):表示八个通用寄存器R0R7。(2)Ri(i=0,1):表示两个寄存器R0、R1,它们常在间接寻址中作为8位地址指针。(3)#data:表示8位立即数,即包含在指令中的8位常数,如#30H。(4)#data16:表示16位立即数,即包
49、含在指令中的16位常数,如#2010H。(5)direct:表示片内RAM(含特殊功能寄存器)的直接地址。(6)addr11:表示11位目的地址。(7)addr16:表示16位目的地址。(8)rel:表示带符号的8位地址偏移量(9)bit:表示位地址。(10):作为寄存器的前缀,表示间接寻址。(11)():表示存储器单元的内容。(12)():表示以X单元的内容为地址的存储器单元内容。(13):表示将箭头左边内容送入箭头右边。(14)/:表示对该位操作数取反,但不影响该位的原值。3.寻址方式操作数是指令的重要组成部分,指出了参与操作的数据或数据的地址。寻找存放操作数的地址并将其提取出来的方式称为
50、寻址方式。一条指令采用什么样的寻址方式,是由指令的功能决定的。寻址方式越多,指令功能就越强。MCS-51指令系统共使用了7种寻址方式。(1)立即寻址操作数直接出现在指令中,紧跟在操作码的后面,作为指令的一部分与操作码一起存放在程序存储器中,可以立即得到并执行,故称为立即寻址。汇编指令中,在一个数的前面冠以#符号作前缀,就表示该数为立即寻址。例如指令:MOVA,#30H指令中30H就是立即数。指令的功能是将立即数30H传送到累加器A中。(2)直接寻址直接寻址是指在指令中直接给出操作数所在存储单元的地址。该指令的功能是从该地址中直接获取操作数。例如指令:MOV A,40H该指令中40H为操作数的直