资源预览内容
第1页 / 共226页
第2页 / 共226页
第3页 / 共226页
第4页 / 共226页
第5页 / 共226页
第6页 / 共226页
第7页 / 共226页
第8页 / 共226页
第9页 / 共226页
第10页 / 共226页
亲,该文档总共226页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第2章 MCS-51单片机介绍 第2章 MCS-51单片机介绍2.1 单片机概述单片机概述2.2 MCS-51单片机的基本结构单片机的基本结构2.3 MCS-51单片机的指令单片机的指令2.4 MCS-51单片机的并行接口单片机的并行接口2.5 中断中断2.6 定时定时/计数器计数器2.7 串行接口串行接口2.8 模拟通道接口模拟通道接口第2章 MCS-51单片机介绍 2.1 单单片片机机概概述述2.1.1 单片机的含义单片机的含义 单片机(Single Chip Micro Computer)也称为微控制器MCU(Micro Controller Unit)。它是采用超大规模集成电路技术把中央处理器(CPU)、一定容量的存储器(RAM/ROM等)、多种输入/输出(I/O)接口和中断系统、定时计数器等功能电路(可能还包括显示驱动电路、脉宽调制电路、A/D转换器等电路)集成到一块硅片上而构成的一个小而完善的计算机处理系统。简单地说,一个单片机就相当于一个微型的计算机。与计算机相比,单片机只缺少了I/O设备。 第2章 MCS-51单片机介绍 单片机具有功能强、体积小、成本低、功耗小、配置灵活等特点。以单片机为核心构成的控制系统,成本低廉且能够适应各种现场环境,具有实时、快速的外部响应,因而被广泛应用在工业控制、智能化仪器仪表、通信、家电、汽车等领域中。事实上,单片机是世界上数量最多的计算机。现代人类生活中,几乎所用的每件电子和机械产品中都会集成有单片机。手机、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中会有12部单片机;汽车上一般会配备40多部单片机;复杂的工业控制系统上甚至可能会有数百台单片机同时工作。 第2章 MCS-51单片机介绍 2.1.2 单片机的产品分类单片机的产品分类根据应用范围的不同,单片机可分为通用型单片机和专用型单片机两种。1. 通用型单片机通用型单片机通用型单片机是由单片机厂家生产的、供广大用户选择使用的、具有基本功能的芯片,其性能全面、适应性强、能够满足多种控制的需要。但使用时用户必须进行二次开发设计,即根据需要以通用单片机为核心配以其他外围电路、芯片,从而构成控制系统,同时还需要编写控制程序。 第2章 MCS-51单片机介绍 目前,世界上通用型单片机芯片的主要生产厂家有美国Intel公司、Motorola公司、荷兰Philips公司、德国Siemens公司、日本Toshiba公司、韩国的Samsung公司等。其中,Intel公司的单片机最具有代表性,应用也最广。自1976年起,Intel公司相继开发了MCS-48、MCS-51、MCS-96三大系列产品。此三大系列产品是我国目前的主流系列。在Intel公司对MCS-51系列单片机实行技术开放政策之后,许多公司,如Philips、Siemens、Atmel、华邦、LG等都以MCS-51中的8051为基核推出了许多各具特色且具有优异性能的单片机。以8051为基核推出的各种型号的兼容型单片机统称为51系列单片机。Intel公司MCS-51系列单片机中的8051是最基础的单片机型号。 第2章 MCS-51单片机介绍 2. 专用型单片机专用型单片机专用型单片机是专门针对某一类产品甚至是某一个产品而设计制造的单片机。此类型的单片机即不需要进行二次设计,也不用进行功能开发,一般由厂家与芯片制造商合作生产设计。例如全自动洗衣机、来电显示电话上的单片机都是专用型单片机。专用型单片机通用性差,但由于是专门针对某一控制系统设计的,因此其结构紧凑、资源优化、成本低,在其应用领域具有明显的综合优势。 第2章 MCS-51单片机介绍 2.1.3 单片机在汽车电子控制系统中的应用单片机在汽车电子控制系统中的应用在现代的汽车中,电子设备比比皆是,均已涉及汽车的各主要部件(见表1-1)。其控制装置中的单片机既有功能强大的16位机或32位机,也有低性能的8位机。例如,现代汽车发动机的功能越来越完善,其控制系统也越来越复杂。控制系统需要不断地采集各个传感器的信息,并按照预定的程序进行实时计算,所以对单片机的运算速度、数据字长、与外部设备的接口等方面不断提出新的要求。目前,发动机控制系统内单片机的总线频率已经提高到几十兆赫,机型多为16位机或32位机。Motorola公司生产的MC68HC912DG128A单片机就被德尔福等汽车电子企业选用在自己的电控单元的产品中。 第2章 MCS-51单片机介绍 再如,车身电子系统大量采用电子技术,其目标是提高驾驶舒适程度并为驾驶员提供车况信息。如空调系统、座椅调节系统、电动车窗、电动后视镜等,这些应用系统通常以较低的速率进行数据传输,但要求有大电流驱动模块来驱动电动机和执行机构。由于控制对象的数目众多,必须考虑成本,因而廉价的8位控制器就成了首选。另外,随着汽车上电子控制单元的增多,为节省导线、易于布线以及在各控制单元之间快速地传输信息,网络技术便成为了有效的手段。 第2章 MCS-51单片机介绍 2.2 MCS-51单片机的基本结构单片机的基本结构2.2.1 MCS-51单片机的性能介绍单片机的性能介绍MCS-51单片机的基本结构如图2-1所示。其内部具有以下硬件资源:(1) 8位的中央处理器(CPU)。CPU是单片机的核心,由运算器和控制器组成。MCS-51单片机的CPU能同时处理8位二进制数或代码,故称为8位机。(2) 256个字节的内部RAM(包括21个SFR)。RAM主要用于存储可读写的数据,因此又称为数据存储器。(3) 内部ROM。由于ROM通常用于存放程序、原始数据、表格等,所以又称为程序存储器。8051的内部有4 K字节的掩膜ROM和4 K字节的EPROM,而8031无片内ROM。 第2章 MCS-51单片机介绍 (4) 2个可编程的16位定时/计数器T0、T1,用于对外部脉冲进行计数,也可用来实现定时操作。(5) 4个8位的并行I/O口P0、P1、P2、P3,可用来实现数据的并行输入与输出。(6) 1个全双工异步串行接口,可用来实现单片机与其他设备之间的串行数据通信。该串行口功能较强,既可作为全双工异步通信收发器使用,也可作为同步移位器使用。(7) 5个中断源,包括3个内部中断与2个外部中断,可通过编程将其设置为两个优先级别。(8) 内部时钟电路,用于产生CPU正常工作所需的时钟信号。其中,石英晶体振荡器和微调电容需外接。 第2章 MCS-51单片机介绍 图2-1 MCS-51单片机的内部基本结构 第2章 MCS-51单片机介绍 2.2.2 MCS-51单片机的存储器单片机的存储器1. 存储器概述存储器概述存储器是计算机中不可缺少的重要部件,用于储存二进制信息。下面介绍一些有关存储器的基本概念。(1) 位:信息的基本单位是位(bit或b),表示一个二进制信息“1”或“0”。(2) 字节:在微型机中信息大多是以字节(Byte或B)形式存放的,一个字节由8个位组成(1 Byte=8 bit),通常称作一个存储单元。(3) 存储容量:存储器芯片的存储容量是指一片芯片所能存储的信息位数,例如8 K8位的芯片,其存储容量为810248位=65536位信息。 第2章 MCS-51单片机介绍 (4) 地址:地址表示存储单元所处的物理空间的位置,用一组二进制代码来表示。地址相当于存储单元的“单元编号”。CPU可以通过地址码访问某一存储单元,一个存储单元对应一个地址码。例如8051单片机有16位地址线,能访问的外部存储器的最大地址空间为64 K(65 536)字节,对应的16位地址码为0000HFFFFH。(5) 存取周期:是指存储器存放或取出一次数据所需的时间。存储容量和存取周期是存储器的两项重要性能指标。 第2章 MCS-51单片机介绍 2. 半导体存储器的分类半导体存储器的分类半导体存储器按读、写功能可以分为随机读/写存储器RAM(Random Access Memory)和只读存储器ROM(Read Only Memory)。RAM可以进行多次信息写入和读出,每次写入后,原来的信息将被新写入的信息所取代。另外,RAM在断电后再通电时,原存的信息会全部丢失,所以它主要用来存放临时数据。ROM的信息一旦写入后,便不能随机修改。在使用ROM时,只能读出信息,而不能写入,且在掉电后ROM中的信息仍然保留,所以它主要用来存放固定不变的程序和数据。ROM按生产工艺又可以分为以下几种: 第2章 MCS-51单片机介绍 (1) 掩膜ROM:其存储的信息在制造过程中采用一道掩膜工艺生成,一旦出厂,信息就不可改变。(2) 可编程只读存储器 PROM:其存储的信息可由用户通过特殊手段一次性写入,但只能写入一次。(3) 可擦除只读存储器:用户可以多次擦除其存储的信息,并可用专用的编程器重新写入新的信息。可擦除只读存储器又可分为紫外线擦除的EPROM、电擦除的EEPROM和Flash ROM。 第2章 MCS-51单片机介绍 3. 8051的内部数据存储器的内部数据存储器8051的内部RAM有256个单元,通常在空间上分为两个区:低128个单元(地址为00H7FH)的内部数据RAM块和高128个单元(地址为80H0FFH)的专用寄存器SFR块,见图2-2。 第2章 MCS-51单片机介绍 图2-2 8051内部的RAM配置 第2章 MCS-51单片机介绍 (1) 工作寄存器区(00H1FH)。工作寄存器区也称为通用寄存器,该区域共有4组寄存器,每组由8个寄存单元组成,各组均以R0R7作寄存器编号。在任一时刻,CPU只能使用其中的一组通用寄存器,称为当前通用寄存器组,具体使用哪组可由程序状态寄存器PSW中RS1、RS0位决定,见表2-1。通用寄存器为CPU提供了就近存取数据的便利,提高了工作速度,也为编程提供了方便。 第2章 MCS-51单片机介绍 第2章 MCS-51单片机介绍 (2) 位寻址区(20H2FH)。内部RAM的20H2FH地址段,共16个单元(计168=128位)为位寻址区,位地址为00H7FH,见表2-2。既可将位寻址区作为一般的RAM区进行字节操作,也可对单元的每一位进行位操作。 第2章 MCS-51单片机介绍 第2章 MCS-51单片机介绍 (3) 用户RAM区(30H7FH)。单元地址为30H7FH的80个单元为用户RAM区,在一般应用中把堆栈设置在该区域中。(4) 专用寄存器区(80H0FFH)。内部RAM的高128单元中分散有21个专用寄存器。表2-3为21个专用寄存器一览表。 第2章 MCS-51单片机介绍 第2章 MCS-51单片机介绍 第2章 MCS-51单片机介绍 下面介绍几个常用的专用寄存器。 累加器A(Accumulator)。累加器是最常用的一个8位专用寄存器,是运算器的重要组成部分,大多数运算操作都有它的参与。其既可存放操作数,又可存放运算结果。 寄存器B。寄存器B是8位寄存器,主要用于乘、除运算,同时也可作为一般的寄存器使用。 程序状态字PSW(Program Status Word)。程序状态字是8位寄存器,用于指示程序的运行状态信息。其中有些位是根据程序执行结果由硬件自动设置的,而有些位可由用户通过指令来设定。PSW中各标志位的名称及定义如下: 第2章 MCS-51单片机介绍 第2章 MCS-51单片机介绍 CY进(借)位标志位。在加减运算中,若操作结果的最高位有进位或有借位时,CY由硬件自动置1,否则清0。在位操作中,CY作为位累加器使用。 AC辅助进(借)位标志位。在加减运算中,当低四位向高四位产生进位或借位时,此标志位由硬件自动置1,否则清0。 F0用户标志位。由用户通过软件设定,用以控制程序转向。 RS1、RS0寄存器组选择位。用于设定当前通用寄存器组的组号,具体组号见表2-1。 第2章 MCS-51单片机介绍 OV溢出标志位。在有符号数(补码数)的加减运算中,若OV=1,表示加减运算的结果超出了累加器A的八位有符号数的表示范围(-128+127),产生溢出,因此运算结果是错误的。若OV=0,表示结果未超出累加器A的符号数的表示范围,运算结果正确。乘法运算时,若OV=1,表示结果大于255,结果分别存在累加器A、寄存器B中。若OV=0,表示结果未超出255,结果只存在累加器A中。除法运算时,若OV=1,表示除数为0。OV=0,表示除数不为0。 第2章 MCS-51单片机介绍 P奇偶标志位,表示累加器A中1的个数的奇偶性。在每个指令周期由硬件根据累加器A的内容的奇偶性对P自动置位或复位。P=1,表示累加器A中的内容有奇数个1。 数据指针DPTR(Data Pointer)。数据指针DPTR是唯一的一个供用户使用的16位寄存器,它由两个8位寄存器DPH与DPL组成。DPTR通常在访问外部数据存储器时作为地址指针使用,寻址范围为64 KB。 堆栈指针SP(Stack Pointer)。程序运行时需要一个连续的RAM块作为数据缓冲区,以暂时存放程序运行过程中的一些重要数据,此RAM块称为堆栈。 第2章 MCS-51单片机介绍 堆栈的主要功用是保护断点和保护现场。因为计算机无论执行的是中断程序还是子程序,最终都要返回主程序。在转去执行中断程序或子程序时,要把主程序的断点保护起来,以便能正确的返回。同时,也要将中断程序或子程序可能要用到的寄存器中的内容保护起来,即保护现场。堆栈指针SP用于指示栈顶单元地址,是一个8位寄存器。当系统复位后,SP的内容为07H。堆栈的最大特点是按“后进先出”的数据操作原则执行。MCS-51系列单片机的堆栈是向上生长型,即数据进栈时,SP的内容先自动加1后再向栈区写入数据;数据出栈时,SP所指示的栈区数据先弹出,然后SP的内容再自动减1。 第2章 MCS-51单片机介绍 4. 8051的内部程序存储器的内部程序存储器在介绍8051的内部程序存储器前,先介绍一个重要的专用寄存器程序计数器PC。PC(Program Counter)为一个16位的计数器,其存储的内容为单片机将要执行的指令机器码所在的存储单元的地址。PC具有自动加1的功能,即CPU以PC的当前值为地址从ROM中读取一个字节指令后,PC自动加1,以指向下一个ROM单元,当CPU再次以PC的当前值为地址进行指令读取时,读到的就是下一个ROM单元的内容,这样就实现了程序的自动按顺序执行。由于PC是不可寻址的,因此用户无法对它直接进行读写操作,但可以通过转移、调用、返回等指令改变其内容,以实现程序的转移。复位后,PC=0000H。 第2章 MCS-51单片机介绍 程序存储器主要用于存放程序及重要的数据。大多数51系列单片机的内部都配置有一定数量的程序存储器ROM,如8051芯片内有4 KB的掩膜ROM存储单元,AT89C51芯片内部配置了4 KB的FlashROM,它们的地址范围均为0000H0FFFH。内部程序存储器内有如下一些特殊单元,使用时要注意。 0000H单元:系统复位后,PC=0000H,即单片机从0000H单元开始执行程序。如果主程序不是从0000H单元开始存放,就必须在0000H0002H单元中存放一条无条件转移指令,以便转去执行指定的应用程序。 第2章 MCS-51单片机介绍 0003H单元:外部中断0的中断程序入口地址。 000BH单元:定时器/计数器0的中断程序入口地址。 0013H单元:外部中断1的中断程序入口地址。 001BH单元:定时器/计数器1的中断程序入口地址。 0023H单元:串行中断程序入口地址。在中断程序入口地址单元中应存放相应的中断服务程序,但8个单元通常难以存下一个完整的中断服务程序,因此往往需要在中断程序入口地址单元中存放一条无条件转移指令,以便转到中断服务程序真正的入口地址。 第2章 MCS-51单片机介绍 对程序存储器的操作作以下说明:(1) 程序指令的自主操作。CPU按照PC指针自动地从程序存储器中取出指令。(2) 用户使用指令对程序存储器中的常数表格进行读操作。此操作可用MOVC指令实现。 第2章 MCS-51单片机介绍 图2-3 MCS-51单片机的引脚图第2章 MCS-51单片机介绍 5. 8051的外部存储器的外部存储器因8051的内部程序计数器PC为16位计数器,同时8051共有16根地址线引脚,因此在8051单片机的外部可以分别扩展64 KB的ROM与64 KB的RAM。 第2章 MCS-51单片机介绍 2.2.3 MCS-51单片机的引脚功能介绍单片机的引脚功能介绍MCS-51单片机的引脚图见图2-3。下面对各引脚的作用进行介绍。1. 主电源引脚主电源引脚VCC和和VSSVCC为电源输入端,正常操作时接+5 V电源;VSS为接地线。第2章 MCS-51单片机介绍 2. 时钟振荡电路引脚时钟振荡电路引脚XTAL1、XTAL2XTAL1和XTAL2分别用作晶体振荡电路的反相器输入端和输出端。MCS-51单片机的时钟电路见图2-4。图2-4(a)中采用了芯片内部的一个高增益反向放大器、芯片外连的晶体振荡器和微调电容构成一个稳定的自激振荡器,这就是单片机的内部时钟电路。时钟电路产生的振荡脉冲经过二分频以后,才成为单片机的时钟信号。晶振的频率fosc通常在6 MHz12 MHz之间选择。1个机器周期=12个振荡周期=12/fosc。 第2章 MCS-51单片机介绍 图2-4 MCS-51单片机的时钟电路 第2章 MCS-51单片机介绍 第2章 MCS-51单片机介绍 4. 控制类引脚控制类引脚(1) RST/VPD(9脚)。RST为复位信号输入端。复位是单片机系统的初始化操作,在该引脚上输入持续2个机器周期以上的高电平时,单片机系统复位。系统复位后对专用寄存器的影响情况见表2-3。同时,复位操作还对单片机的个别引脚信号有影响,如把ALE和PSEN信号变为无效状态,即ALE=1,PSEN=1。复位操作对内部RAM不产生影响。复位电路见图2-5。 第2章 MCS-51单片机介绍 图2-5 MCS-51单片机的复位电路 第2章 MCS-51单片机介绍 第2章 MCS-51单片机介绍 第2章 MCS-51单片机介绍 2.3 MCS-51单片机的指令单片机的指令2.3.1 单片机的指令系统概述单片机的指令系统概述指令就是指挥计算机工作的命令。一台计算机能执行的全部指令称为该计算机的指令系统。指令系统全面描述了CPU的功能。指令系统是由生产厂家确定的,不同的CPU有不同的指令系统。编程语言是人机对话的工具,按使用层次可分为机器语言、汇编语言和高级语言。机器语言(二进制代码)能直接被机器识别,用其编写的程序运行效率高,但编程效率低,不便于阅读、书写和交流。引入助记符将机器语言符号化后就成为汇编语言,其指令直观易懂。用汇编语言编写的程序称为汇编语言程序。汇编语言程序必须经过汇编(机器汇编或手工汇编)成为机器语言后才能被机器执行。 第2章 MCS-51单片机介绍 例如将累加器A中的数据加9的指令,机器语言为0010 0100 0000 1001B,而汇编指令为ADD A,#09H。高级语言的编程效率高,但编写出的程序运行效率低。 第2章 MCS-51单片机介绍 2.3.2 汇编语言的语句格式汇编语言的语句格式汇编语言程序由一系列语句组成,一行为一个语句。汇编语言的语句格式如下:标号:操作码助记符操作数 ;注释1. 标号标号标号表示该指令代码第一字节的地址,是用户根据程序需要(该指令为子程序入口指令或程序转移的目标指令)而设定的符号地址。标号由英文字母、数字或下划线组成,但必须以英文字母开头,以“:”结束,一般包含18个字符。不能使用汇编语言中已经定义的符号(如助记符、寄存器符号等)作标号,一个标号在同一程序中只能定义一次。 第2章 MCS-51单片机介绍 2. 操作码助记符操作码助记符操作码助记符是表示指令操作功能的英文缩写,是语句的核心部分。每条语句都必须有操作码。3. 操作数操作数操作数表示指令的操作对象,其表示形式与寻址方式有关。一条指令中可以没有操作数,也可以有多个操作数,操作数和操作码之间以空格分隔,操作数之间以逗号分隔。4. 注释注释注释是编程者为方便程序的理解、交流而书写的解释性文字、符号,不属于语句的功能部分,既不产生代码,对汇编过程也不起作用。注释必须以“;”开始。 第2章 MCS-51单片机介绍 2.3.3 寻址方式寻址方式操作数是指令的一个重要组成部分,所谓的寻址方式就是确定操作数所在的位置(地址)的方法。MSC-51系列单片机共有七种寻址方式。1. 立即寻址立即寻址 立即寻址是指在指令中直接给出操作数的寻址方式。操作数作为指令的一个组成部分存放在程序存储器中。该操作数称为立即数。立即数前应加“”标记,如下面指令中的“#40H”:MOVA,40H该指令将立即数40H送累加器A中。 第2章 MCS-51单片机介绍 2. 直接寻址直接寻址直接寻址是在指令中直接给出操作数地址的寻址方式。这种寻址方式可对内部数据存储器进行访问。如下面指令中的“50H”:MOVA, 50H该指令把内部RAM中地址为50H的单元(直接寻址)中的内容送入累加器A中。 第2章 MCS-51单片机介绍 3. 寄存器寻址寄存器寻址寄存器寻址是指以指令指定的寄存器的内容作为操作数的寻址方式。指定的寄存器有工作寄存器R0R7、累加器A、数据指针DPTR。如下面指令中的“A、R2”:MOVA, R2该指令是将工作寄存器R2的内容送给累加器A。 第2章 MCS-51单片机介绍 4. 寄存器间接寻址方式寄存器间接寻址方式寄存器间接寻址是以指令中指定寄存器的内容作为地址取得操作数的方法。指定的寄存器有R0、R1、DPTR,使用时寄存器前面加“”标志。如下面指令中的“R0”:MOV A, R0 该指令的操作为将寄存器R0的内容(设(R0)=30H)作为地址,把片内RAM地址为30H的单元中的内容(设(30H)=48H)送入累加器A,指令执行后(A)=48H。 第2章 MCS-51单片机介绍 5. 基址加变址寻址基址加变址寻址基址加变址就是以DPTR或PC为基址寄存器,以A为变址寄存器,然后以两者内容相加形成的16位地址作为操作数地址。例如下面指令中的“A+DPTR”:MOVC A, A+DPTR该指令是把DPTR的内容作为基地址,把A的内容作为偏移量,再将两量相加形成16位地址,然后将该地址的程序存储器ROM单元中的内容送给累加器A。假设指令执行前为:(DPTR)=1100H,(A)=56H,ROM(1156H)=80H,则该指令执行后:(A)=80H。基址加变址寻址只能对程序存储器进行寻址。 第2章 MCS-51单片机介绍 6. 相对寻址相对寻址相对寻址方式只用于相对转移指令中。相对转移指令以当前PC的值(即本指令下面一条指令的首字节地址)与指令中给定的相对偏移量rel之和作为程序转移的目标地址。偏移量rel是8位二进制补码,转移范围位于当前PC值的-128+127个字节单元之间。例如下面的指令: JZ 30H ;当(A)=0时,则PC(PC)+2+rel,程序转移 ;当(A)0时,则PC(PC)+2,程序按原顺序执行 第2章 MCS-51单片机介绍 7. 位寻址位寻址位寻址是对内部RAM及专用寄存器的可寻址位的内容进行操作的寻址方式。可进行位寻址的空间有:(1) 片内RAM的20H2FH,共16个单元128位,其位地址编码为00H7FH。(2) 字节地址能被8整除的SFR(11个)。对这些寻址位,可以有以下几种表示方法: 直接位地址方式,如:0D5H; 位名称方式,如:F0; 点操作符方式,如PSW.5或0D0H.5;以上几种方式指的都是PSW中的第5位。例如指令:MOV C,07H 该指令属位操作指令,将内部RAM 20H单元的D7位(位地址为07H)的内容送给位累加器CY。 第2章 MCS-51单片机介绍 2.3.4 指令中符号的约定指令中符号的约定下面对汇编指令系统中指令的符号约定进行介绍。 Rn:当前选中的工作寄存器组的工作寄存器,n=07。 Ri:以R0或R1作寄存器间接寻址,“”为间址符,i=0、1。可以访问片内RAM的低128字节和片外RAM的低256字节。 DPTR:以数据指针DPTR的内容为地址的寄存器间接寻址,对外部RAM的64 K字节地址空间进行寻址。 direct:8位直接地址,可以是内部RAM单元地址(00H7FH),也可以是特殊功能寄存器地址(80HFFH)。 第2章 MCS-51单片机介绍 addr11:11位地址,短转移(AJMP)及短调用(ACALL)指令中用于构成转移目标地址,可在2 KB范围内转移。实际编程时用标号代替此指令。 addr16:16位地址,长转移(LJMP)及长调用(LCALL)指令中为转移目标地址,转移范围为64 KB。实际编程时用标号代替此指令。 bit:位地址,可以是内部RAM中所有的可寻址位。 rel:用于相对转移指令中,为8位二进制补码,表示偏移量为-128+127字节。实际编程时用标号代替此指令。 第2章 MCS-51单片机介绍 data:8位立即数。“”为立即数的标志。 data16:16位立即数。 /:位操作数取反操作的前缀,如“/bit”。 (X):X中的内容。 (X):由X间接寻址的单元中的内容。 :将箭头右边的内容送到箭头所指的单元。 第2章 MCS-51单片机介绍 2.3.5 MCS-51单片机指令系统的分类单片机指令系统的分类MCS-51单片机的指令系统共有111条指令,按功能分为五大类:数据传送类指令、算术运算类指令、逻辑运算类指令、位操作类指令、控制程序转移类指令。1. 数据传送类指令数据传送类指令MSC-51单片机的数据传送类指令如表2-4所示。 第2章 MCS-51单片机介绍 第2章 MCS-51单片机介绍 第2章 MCS-51单片机介绍 表2-4中:(1) MOV指令。MOV 目的操作数,源操作数该指令的功能是把源操作数所表示的数据传送到目的操作数指定的单元中,指令执行之后源操作数不发生改变。(2) PUSH、POP指令为堆栈操作指令。PUSH为入栈指令;POP为出栈指令。(3) XCH为字节交换指令,该指令的功能是将累加器A中的值与另一个操作数指示的数据互换位置。 第2章 MCS-51单片机介绍 (4) XCHD为半字节交换指令,该指令的功能是将累加器A中内容与源操作数的低4位互换,而高4位不变。(5) SWAP指令的功能是将累加器A中的高4位与低4位互换。(6) MOVX指令的功能是实现片外RAM(或扩展I/O)与累加器A之间的数据传送。注意:片外RAM只能采用寄存器间接寻址的方式访问。(7) MOVC指令的功能是从程序存储器中读取数据并送入累加器A,该指令可以访问片内ROM,也可以访问片外ROM。 第2章 MCS-51单片机介绍 2. 算术运算类指令算术运算类指令 第2章 MCS-51单片机介绍 第2章 MCS-51单片机介绍 表2-5中:(1) ADD为加法指令,功能是将源操作数与累加器A中的内容相加,结果存储在累加器A中。该操作不改变源操作数,但影响PSW中的CY、AC、OV、P,影响如下: 若最高位有进位,则CY置1,否则清0; 若低4位向高4位有进位,则AC置1,否则清0; 若第6位有进位而第7位无进位或第6位无进位而第7位有进位,则OV置1,否则清0。 第2章 MCS-51单片机介绍 (2) ADDC为带进位加法指令,功能是将源操作数、累加器A的内容、进位标志CY的值三者相加,结果存储在累加器A中。该指令对标志位的影响与ADD指令的相同。(3) INC为增量指令,功能是将操作数指示的数据加1,结果仍然存储在该操作数指示的单元中。该组指令除“INC A”指令影响P标志位外,不影响任何标志位。(4) SUBB为带进位减法指令,功能为用累加器A中的数据减去源操作数,再减去进位CY,差存储在累加器A中,该组指令影响PSW中的CY、AC、OV、P。(5) DEC为减量指令,功能是将操作数减1,结果仍然存储在该操作数指示的单元中。 第2章 MCS-51单片机介绍 (6) MUL为乘法指令,功能是将累加器A与寄存器B中的两个8位无符号数相乘,所得16位乘积存储在BA寄存器对中。(7) DIV为除法指令,功能是用累加器A中的数据除以寄存器B中的数据,运算后,商存于累加器A中,余数存于寄存器B中。注意,除数与被除数都为无符号数。(8) DA为十进制调整指令,功能是对累加器A中由上一条加法指令(加数和被加数均为压缩BCD码)所获得的结果进行调整。该指令需紧跟在ADD或ADDC指令后使用。 第2章 MCS-51单片机介绍 3. 逻辑运算类指令逻辑运算类指令 第2章 MCS-51单片机介绍 第2章 MCS-51单片机介绍 第2章 MCS-51单片机介绍 表2-6中:(1) ANL为逻辑与运算法指令,功能是将指令中的两个操作数指示的数据按位与运算,运算结果存储在第一个操作数指示的单元中。(2) ORL为逻辑或运算法指令,功能是将指令中的两个操作数指示的数据按位或运算,运算结果存储在第一个操作数指示的单元中。(3) XRL为逻辑异或运算法指令,功能是将指令中的两个操作数指示的数据按位异或运算,运算结果存储在第一个操作数指示的单元中。(4) CLR、CPL为累加器A的清零、取反指令。(5) RL、RR、RLC、RRC为循环移位指令。 第2章 MCS-51单片机介绍 4. 位操作类指令位操作类指令 第2章 MCS-51单片机介绍 表2-7中:(1) MOV为位传送指令,功能为将源操作数的值(可能为1或0)传送至目的操作数中。(2) SETB、CLR、CPL分别为置位、清0、取反指令,功能是将操作数的值置为1、0或者取反。(3) ANL、ORL为位逻辑运算指令。 第2章 MCS-51单片机介绍 5. 控制程序转移类指令控制程序转移类指令 第2章 MCS-51单片机介绍 第2章 MCS-51单片机介绍 第2章 MCS-51单片机介绍 第2章 MCS-51单片机介绍 第2章 MCS-51单片机介绍 表2-8中:(1) LJMP、AJMP、SJMP、JMP为无条件转移指令,指令中的操作数即为转移的目标。(2) JZ、JNZ指令为条件转移指令,转移的条件为累加器的值是否为0。(3) JC、JNC指令为条件转移指令,转移的条件为标志位CY的值是为0还是为1。(4) JB、JNB、JBC指令为条件转移指令,转移的条件为bit位的值为0还是为1。(5) CJNE为比较不相等转移指令,指令的功能是将第1、第2操作数的值(无符号数据)进行比较,若不相同则转移(转移的目标由第3操作数指示),若相同则顺序执行。(6) DJNZ为减1不为0转移指令,指令的功能是先将第1操作数的值减1,之后判断结果是否为0,若不为0则转移(转移的目标由第2操作数指示),若为0则顺序执行。(7) LCALL、ACALL指令为子程序调用指令,RET为子程序返回指令,RETI为中断返回指令。(8) NOP是空操作指令。 第2章 MCS-51单片机介绍 2.3.6 汇编伪指令汇编伪指令1. 汇编起始地址伪指令汇编起始地址伪指令ORG(Origin)格式:ORGaddr16功能:规定目标程序段的起始地址。ORG后面的16位地址表示此语句后的程序或数据块在程序存储器中的起始地址。例如:ORG1000HSTART:MOVA, 32H上述指令说明:START表示的地址为1000H,MOV指令从1000H存储单元开始存放数据。 第2章 MCS-51单片机介绍 2. 字节定义伪指令字节定义伪指令DB(Define Byte)格式:标号:DB data1,data2,data3,dataN功能:从指定的地址单元开始,存入规定好的8位数据表。例如: ORG1000HTAB1:DB01H,04H,09H,10H以上伪指令汇编后从1000H单元开始存放4个字节的数据平方表:(1000H)=01H,(1001H)=04H,(1002H)=09H,(1003H)=10H。 第2章 MCS-51单片机介绍 3. 字定义伪指令字定义伪指令DW(Define word)格式:标号:DWdata1,data2,dataN功能:从指定的地址单元开始,存入规定好的16位数据表。每个数据(16位)占用两个存储单元,其中高8位存入小地址单元,低8位存入大地址单元。常用于定义一个地址表。例如: ORG1000HTAB2:DW 1067H,765AH汇编后:(1000H)=10H,(1001H)=67H,(1002H)=76H,(1003H)=5AH。 第2章 MCS-51单片机介绍 4. 存储区定义伪指令存储区定义伪指令DS(Define Storage)格式:标号:DSX功能:从指定的地址单元开始,预留X字节单元作为备用。例如:ORG2000HDS 07HL2:MOV A,#00H汇编后,从2000H开始保留7个字节单元,从而MOV指令的地址为2007H。注意:DB、DW、DS伪指令只能对程序存储器进行赋值和初始化工作,不能用来对数据存储器进行赋值和初始化工作。 第2章 MCS-51单片机介绍 5. 赋值伪指令赋值伪指令EQU(Equate)格式:字符名EQU数或汇编符号功能:将右边的值赋给左边用户定义的字符。赋值后,字符在整个程序内有效,该伪指令一般放在程序的开始段。例如:TEMPEQUR0XEQU16第一条伪指令将TEMP等值为汇编符号R0,此后的指令中TEMP可以代替R0来使用。第二条指令表示指令中可以用X代替16来使用。注意使用EQU命令时必须先赋值后使用,字符名不能和汇编语言的关键字同名,如不能使用A、MOV、B等。 第2章 MCS-51单片机介绍 6. 位地址定义伪指令位地址定义伪指令BIT 格式:字符名BIT位地址功能:将位地址赋予所定义的字符名。7. 汇编结束伪指令汇编结束伪指令END格式:END功能:表示汇编语言源程序到此结束。 第2章 MCS-51单片机介绍 2.4 MCS-51单片机的并行接口单片机的并行接口1并行接口的结构并行接口的结构(1) P0口。P0口的结构见图2-6。P0口是功能最强的口,即可作为一般的I/O口使用,也可作为单片机外部数据线、低8位地址线使用。当P0口作为一般的I/O口输出时,由于端口各口线的输出电路是漏极开路电路,因此必须外接上拉电阻才能有高电平输出。当P0口作为一般的I/O口输入时,必须使电路中的锁存器写入高电平“1”,使场效应管FET截止、引脚处于“浮空”状态,才能做到高阻输入,以保证输入正确的数据。 第2章 MCS-51单片机介绍 图2-6 P0的内部结构 第2章 MCS-51单片机介绍 (2) P1口。P1口的结构见图2-7。P1口通常作为通用I/O口使用。作为输出口时,由于P1电路内部已经带有上拉电阻,因此无需外接上拉电阻;作为输入口时,也需先向锁存器写入“1”。 图2-7 P1的内部结构 第2章 MCS-51单片机介绍 (3) P2口。P2口的结构见图2-8。P2口既可作为通用I/O口使用,也可作为单片机外部的高8位地址线使用。 图2-8 P2的内部结构 第2章 MCS-51单片机介绍 (4) P3口。P3口的结构见图2-9。P3口既可作为通用I/O口使用,也可作为第二功能按需要来使用,见表2-9。 第2章 MCS-51单片机介绍 图2-9 P3的内部结构 第2章 MCS-51单片机介绍 第2章 MCS-51单片机介绍 (4) I/O口功能的自动识别。无论是P0、P2口的总线复用功能,还是P3口的第二复用功能,单片机都会自动选择,不需要用户通过指令选择。(5) I/O口的驱动特性。P0口的每一个I/O口可驱动8个LSTTL输入,而P1、P2、P3口的每一个I/O口只可驱动4个LSTTL输入。在使用时应注意口的驱动能力。 第2章 MCS-51单片机介绍 3并行接口的使用并行接口的使用在MCS-51单片机中,没有专门的输入/输出指令,而是将I/O接口与存储器一样看待,即使用访问存储器的指令来实现I/O接口的输入/输出功能。当向I/O口写入数据时,即通过相应引脚向外输出,而当从I/O口读入数据时,则将通过引脚将外部设备的状态信号输入到单片机内。 4个I/O口都可以进行位寻址,即可通过位操作指令实现一位口线的输入/输出。为了使用方便,用Pm表示某一个并行口,Pm.n表示m口的第n位口线。 第2章 MCS-51单片机介绍 1) 输出数据(1) 使用MOV指令输出字节数据,这是常用的输出方法,例如:MOV Pm,#dataMOV Pm,A(2) 使用位操作指令输出各位数据。外部设备的输入/输出线往往只有一根,此时使用位操作指令更方便。例如:MOV Pm.n,CSETB Pm.nCLR Pm.n 第2章 MCS-51单片机介绍 (3) 使用读修改写指令改变输出数据。有时控制系统的前后输出是有联系的,下一个输出必须根据前一个输出决定,此时需要使用读修改写指令,例如:ANL Pm,#dataORL Pm,ACPL Pm.n 第2章 MCS-51单片机介绍 2) 输入数据执行对端口进行读操作的指令时,可以从相应的口线上将外部设备的状态信息输入至单片机中。例如:(1) 字节数据输入MOV Pm,#0FFHMOV A,Pm该程序段执行后将从Pm端口中输入一个8位数据,送至A中存放。(2) 位数据输入SETB Pm.nMOV C,Pm.n该程序段执行后将从Pm端口的第n位口线上输入一位信息,并送至C中存放。 第2章 MCS-51单片机介绍 4并行接口的应用实例并行接口的应用实例1) 并行接口控制七段LED显示器图2-10为七段LED显示器,它由8个发光二极管构成各字段,内部结构有共阴极与共阳极两种。 第2章 MCS-51单片机介绍 图2-10 七段LED显示器 第2章 MCS-51单片机介绍 例例1 用8051控制共阳极七段LED显示器循环显示09十个数字,电路见图2-11。 图2-11 共阳极七段LED显示器的控制电路 第2章 MCS-51单片机介绍 程序如下:ORG0000HLJMP MAINORG 0100HTAB:DB0C0H,0F9H,0A4H,0B0H,99H;09显示码 DB92H,82H,0F8H,80H,90H MAIN: MOV R0,#0MOVDPTR,#TAB 第2章 MCS-51单片机介绍 LOOP:MOVA,R0MOVC A,A+DPTR;查表取显示码MOVP1,A;输出显示LCALLDELAY ;定时INCR0CJNE R0,#10,LOOPLJMPMAINDELAY: MOVR2,#0C8H;定时子程序LOOP1: MOVR3,#0FAHDJNZR3,$DJNZR2,LOOP1RETEND 第2章 MCS-51单片机介绍 2) 并行接口驱动步进电机步进电机因其转动角度与转速可精确控制而广泛应用于数字电路,特别是在计算机控制系统中作为执行机构,直接由计算机的数字信号驱动以实现精确控制。以三相步进电机为例,步进电机的控制包括以下三个方面。(1) 方向控制。给步进电机的三个励磁绕组A、B、C按照不同的顺序通电、断电,则可实现步进电机的正转或反转。 第2章 MCS-51单片机介绍 步进电机驱动方式通常有三种: 三相单三拍方式:ABC。其中,“三相”指A、B、C三个绕组,“单”指每次只有一相绕组通电,“拍”指从一种通电状态转到另一种通电状态。 三相双三拍方式:ABBCCA。 三相六拍方式:AABBBCCCA。假设按以上顺序通电,步进电机正转;若按相反方向通电,则步进电机反转。例如用单片机的P1.0、P1.1、P1.2分别控制步进电机的A、B、C相绕组(见图2-12),则各种驱动方式下的控制代码见表2-10表2-12。 第2章 MCS-51单片机介绍 第2章 MCS-51单片机介绍 第2章 MCS-51单片机介绍 第2章 MCS-51单片机介绍 图2-12 单片机控制三相步进电机的硬件电路 第2章 MCS-51单片机介绍 (2) 角度控制。步进电机每一拍前进一步,对应一个脉冲。通过控制通电脉冲数可精确控制电机转过的角度。(3) 速度控制。步进电机的运转速度由输入到A、B、C三相绕组脉冲的频率控制。 第2章 MCS-51单片机介绍 例例2 编程控制步进电机,控制电路见图2-12。对步进电机的要求如下: 步进电机以三相六拍方式工作。 步进电机转动的总步数存储在内部RAM的0FFH单元中。 转向标志存放在程序状态寄存器用户标志位F0(D5H)中,当F0为“0”时,步进机正转,反之步进机反转。 步进电机工作脉冲的频率为100 Hz。 系统晶振频率fosc为12 MHz。解 步进电机的控制流程如图2-13所示。 第2章 MCS-51单片机介绍 图2-13 步进电机的控制流程 第2章 MCS-51单片机介绍 程序清单如下:ORG0000HLJMP MAINORG0100HTAB6:DB01H,03H,02H,06H,04H,05H;正转控制代码TAB_6:DB05H,04H,06H,02H,03H,01H;反转控制代码DELAY:MOVR0,#100 ;延时0.01 sD_1:MOVR1,#48NOPDJNZR1,$DJNZR0,D_1RET 第2章 MCS-51单片机介绍 MAIN:JNBF0,CLW;判断转向MOVDPTR,#TAB_6 ;设置反转控制代码首地址LJMPCONCLW:MOVDPTR,#TAB6 ;设置正转控制代码首地址CON:MOVA,#0;设置控制代码偏移量LOOP:PUSHACC;保护控制代码偏移量MOVC A,A+DPTR ;取控制代码MOVP1,A;输出控制代码LCALL DELAY;延时0.01 sDJNZ0FFH,NEXT;判断转动步数是否达到要求LJMPFINISH;控制完成NEXT:POPACC;取控制代码偏移量INCA;偏移量加1CJNEA,#6,LOOP;偏移量=6?不等则继续LJMPCON ;偏移量=6时开始新一次循环FINISH:NOP ;程序结束END 第2章 MCS-51单片机介绍 2.5 中中 断断中断是日常生活中常见的现象。如你正在看书,突然电话铃响了,你首先会看完这一句并在书上做个标记,再放下书本去接电话,和来电话的人交谈完毕之后,放下电话,回来接着从做标记处继续看书。这就是生活中的“中断”现象,即正常的工作过程被外部的事件打断了。仔细研究一下生活中的中断,我们发现要实现中断需满足以下几点:第一,需要有能够引起中断处理的事件,即中断源。如:门铃响了,闹钟叫了,你烧的水开了,等等诸如此类的事件。 第2章 MCS-51单片机介绍 第二,对中断事件的紧急状态进行判断。设想一下,你正在看书,有客来访,同时电话又响了,你该怎么办呢?如果你在等一个重要的客人,你可能会先会见访客;如果你在等一个重要的电话,你一般会让访客稍等。这里涉及一个优先级的问题。优先级的问题不仅仅发生在两个中断同时产生的情况。也发生在一个中断已正在处理,又有一个中断产生的情况。若你正在接待访客时,电话又响了,你又该怎么办? 第2章 MCS-51单片机介绍 第三,中断的响应与处理。当有事件发生(如电话响了,访客来访)时,进行处理之前你需要记住书看到第几页第几行了,并做一下标记,然后再去处理不同的事情(因为处理完了,我们还要回来继续看书)。而且,电话铃响我们要到放电话的地方去,门铃响我们要到门那边去。也就是说不同的中断,我们要在不同的地点处理,而这个地点通常是固定的。 第2章 MCS-51单片机介绍 单片机中的中断过程也是如此。一个完整的中断过程包括以下几个步骤:(1) 由中断源提出中断申请。MCS-51单片机中一共有5个事件可引起CPU中断处理。(2) 中断判优。当几个中断源同时向CPU提出请求时,CPU通常根据中断源的轻重缓急进行排队,优先处理最紧急的中断请求源,暂时不被响应的中断请求则被挂起。MCS-51单片机的中断事件可以编程设置为两个优先级别,即同时可以实现两级中断嵌套。中断嵌套即为当CPU正在处理一个中断请求的时候,又发生了另一个优先级更高的中断请求,则CPU能够暂时中止原来的中断源的处理程序,而去处理优先级更高的中断请求;待处理完毕后,再回到原来的低优先级中断处理程序,这个过程称为中断嵌套。 第2章 MCS-51单片机介绍 (3) 中断响应。当把最紧急的事件发送给CPU后,CPU将自动保护断点(即保存下一条将要执行的指令的地址,通常是把这个地址送入堆栈)、寻找中断入口(5个中断源的处理程序有各自不同的且固定的入口地址)并跳转到该位置。以上工作是由计算机自动完成的,与编程者无关,但要求编程者将中断处理程序放在入口地址处,如果没把中断程序放在那儿,中断程序就不能被执行。(4) 执行中断处理程序。(5) 中断返回。完成中断处理后,就从中断处返回到主程序断点,继续执行原来的程序。 第2章 MCS-51单片机介绍 图2-14 MCS-51单片机的中断系统结构 第2章 MCS-51单片机介绍 第2章 MCS-51单片机介绍 IE0:外部中断0的中断申请标志位,由计算机根据情况自动置1或清0。 IT0:外部中断0的触发方式控制位,可由软件进行置位和复位。 第2章 MCS-51单片机介绍 第2章 MCS-51单片机介绍 第2章 MCS-51单片机介绍 2) 中断允许寄存器IE(0A8H) EA:中断允许总控制位。EA=1,CPU开放中断;EA=0,CPU屏蔽所有的中断请求。 ES:串行中断允许位。ES=1,允许串口中断;ES=0,禁止串口中断。 ET1:定时/计数器T1的中断允许位。ET1=1时,允许T1中断;ET1=0时,禁止T1中断。 第2章 MCS-51单片机介绍 EX1:外部中断1的中断允许位。EX1=1时,允许外部中断1中断;EX1=0时,禁止外部中断1中断。 ET0:定时/计数器T0的中断允许位。ET0=1时,允许T0中断;ET0=0时,禁止T0中断。 EX0:外部中断0的中断允许位。EX0=1时,允许外部中断0中断;EX0=0时,禁止外部中断0中断。 第2章 MCS-51单片机介绍 2中断优先级控制中断优先级控制MCS-51单片机的5个中断源的优先级别由中断优先级寄存器IP进行设定。中断优先级寄存器IP(0B8H)的各位含义如下。 PS:串行中断的优先级设定位。PS=1时,串口为高级中断;PS=0,串口为低级中断。 PT1:定时/计数器T1的中断优先级设定位。PT1=1时,T1为高级中断;PT1=0时,T1为低级中断。 第2章 MCS-51单片机介绍 PX1:外部中断1的中断优先级设定位。PX1=1时,外部中断1为高级中断;PX1=0时,外部中断1为低级中断。 PT0:定时/计数器T0的中断优先级设定位。PT0=1时,T0为高级中断;PT0=0时,T0为低级中断。 PX0:外部中断0的中断优先级设定位。PX0=1时,外部中断0为高级中断;PX0=0时,外部中断0为低级中断。 如果有多个中断源同时向CPU提出中断申请,则按照IP的设定,CPU先响应高级中断,再响应低级中断;如有几个同优先级的中断源同时向CPU提出中断申请,则按照自然优先级的顺序进行响应。自然优先级的顺序为:外部中断0(级别最高)定时/计数器T0外部中断1定时/计数器T1串口中断(级别最低)。 第2章 MCS-51单片机介绍 3中断响应中断响应MCS-51单片机工作时,CPU在每个机器周期中都会去查询一下各个中断标记,看它们是否是“1”,如果是1,就说明有中断请求了,之后按照优先级的顺序进行中断处理。但是当出现下列情况之一时,中断申请将被暂时封锁。(1) CPU正在处理一个同级或更高级别的中断请求。(2) 现行的机器周期不是当前正在执行指令的最后一个周期,即要保证把当前的指令执行完才能响应中断。 第2章 MCS-51单片机介绍 (3) 若当前正在执行的指令是返回指令(RETI)或访问IP、IE寄存器的指令,则CPU执行该指令后至少再执行一条指令才响应中断。如果正在访问IP、IE,则可能会开、关中断或改变中断的优先级,而中断返回指令则说明本次中断还没有处理完,所以都要等本指令处理结束再执行一条指令才可以响应中断。 第2章 MCS-51单片机介绍 中断响应的过程如下:(1) CPU响应中断时,首先设置优先级状态触发器,封锁同级中断与低级中断,同时中断标志位自动清0,如边沿触发方式下的外部中断标志IE0、IE1和定时器溢出标志TF0、TF1。但是串口的接收发送中断标志TI、RI只能由用户在中断程序中用指令清0。电平触发方式下的外部中断标志IE0、IE1是根据 、 引脚的电平变化而变化的,CPU无法直接干预,因此需在引脚外加硬件(如D触发器)使其自动撤销外部中断。(2) 将当前程序计数器PC的内容(即断点位置指令的地址)压入堆栈,然后将相应的中断入口地址送入PC,使程序跳转到中断入口处继续执行。中断程序的入口地址如表2-13所示。 第2章 MCS-51单片机介绍 第2章 MCS-51单片机介绍 4中断处理中断处理中断响应后,CPU将转入中断处理程序继续工作。中断处理程序的流程图见图2-15。 编写中断服务程序时应注意以下几点:(1) 中断服务程序必须定位在该中断源对应的入口地址上,或者可以在中断入口地址单元内放入一条无条件转移指令使CPU跳转到中断服务程序处(此时中断服务程序可灵活地安排在64 KB的程序存储器的任意位置)。(2) 在中断服务程序中,要注意使用软件保护现场,以免中断返回后,原寄存器、累加器中的信息已经丢失。(3) 要在执行当前中断程序时禁止更高优先级中断,可以先用软件关闭CPU中断或禁止某中断源的中断,在中断返回前再开放中断。 第2章 MCS-51单片机介绍 图2-15 中断程序的一般结构 第2章 MCS-51单片机介绍 5中断返回中断返回在中断服务程序的最后一行,应写上中断返回指令RETI。执行该指令时,将首先清除优先级状态触发器,开放同级与低级中断,然后从堆栈中取出断点地址送给PC,最终让CPU跳回到主程序断点位置继续运行。 第2章 MCS-51单片机介绍 6中断举例中断举例例例3 某汽车电子控制系统中,当冷却水温过高、过低或燃油液面高度过低、润滑油油压过低以及倒车时均要报警,其具体要求如下: 当水温过高时,应启动冷却风扇,点亮水温报警灯; 当水温过低时,风扇停转,水温报警灯熄灭; 当燃油液面高度过低时,点亮燃油报警灯; 当润滑油油压过低时,报警喇叭鸣叫,油压过低报警灯点亮,且该报警优先级最高; 当倒车时,倒车指示灯点亮。 第2章 MCS-51单片机介绍 图2-16 汽车电子控制报警系统 第2章 MCS-51单片机介绍 程序如下:ORG0000HLJMPMAINORG0003HSETBP1.3;油压过低报警SETBP1.4RETIORG0013HLJMPINTORG 0100H;主程序MAIN:MOVP1,#0;令所有报警灯熄灭CLRIT0;中断初始化第2章 MCS-51单片机介绍 CLRIT1MOVIE,#10000101BSETBPX0;省略电子控制系统的其他功能部分INT:MOVP0,#0FFH;输入脚锁存器置1MOVC,P0.3 ;倒车报警CPLCMOVP1.2,CMOVC,P0.2;燃油报警CPLCMOVP1.1,C JNBP0.0,TEM_HIGH;判断水温是否过高JNBP0.1,TEM_LOW;判断水温是否过低RETI 第2章 MCS-51单片机介绍 TEM_HIGH:SETB P1.0;水温过高报警SETBP1.5RETITEM_LOW:CLRP1.0;水温过低报警CLRP1.5RETIEND 第2章 MCS-51单片机介绍 2.6 定时定时/计数器计数器1定时定时/计数器的结构及工作原理计数器的结构及工作原理MCS-51单片机中的两个定时/计数器的结构功能类似,下面以T0为例说明定时/计数器的结构及工作原理。T0的结构如图2-17所示。 第2章 MCS-51单片机介绍 图2-17 方式0、方式1下定时/计数器T0的结构示意图 第2章 MCS-51单片机介绍 定时/计数器T0(T1)的核心部件为16位的、可预置初值的加1计数器,它实际上由两个独立的RAM单元TH0、TL0(TH1、TL1)组成。工作之前,需由用户对其预置一个初值,工作时在脉冲触发下将会自动加1计数。当计数器加满溢出时,其值突变为0,其溢出信号会使其中断标志位TF0(TF1)置1,从而向CPU提出中断申请。注意:不同的工作方式下加1计数器的工作长度不同。 第2章 MCS-51单片机介绍 1) 计数功能图中,当C/T= 1时,计数器与单片机的引脚T0即P3.4(T1即P3.5)接通,计数器对T0(T1)引脚输入的脉冲信号进行计数(下降沿触发),即定时器/计数器以计数方式工作。当工作在计数方式下时,CPU在每个机器周期会检测一次输入引脚。为确保外来信号被检测到,要求输入脉冲的高、低电平状态各要维持一个机器周期以上的时间。2) 定时功能图中,当C/T=0时,计数器的计数脉冲来自于单片机内部。每经过1个机器周期,计数器加1,这样就可以根据计数器中设置的初值计算出定时时间。 第2章 MCS-51单片机介绍 2定时定时/计数器的控制计数器的控制定时/计数器的功能以及工作方式是由TCON及TMOD控制的。1) 定时器的方式控制寄存器TMOD(89H) 第2章 MCS-51单片机介绍 第2章 MCS-51单片机介绍 第2章 MCS-51单片机介绍 图2-19 方式2下的T0结构第2章 MCS-51单片机介绍 第2章 MCS-51单片机介绍 2) 定时器的控制寄存器TCON(88H) 第2章 MCS-51单片机介绍 3) 定时器的初始化步骤(1) 根据控制要求设定TMOD,确定定时/计数器的功能、工作方式、启动方式。(2) 根据选定的工作方式与控制要求,计算加1计数器的初值。定时条件下,加1计数器的初值计算式为 其中,n取决于工作方式。方式0时,n=13;方式1时,n=16;方式2时,n=8。t为定时时间。(3) 在中断处理方式下,对定时/计数器开放中断,并设置优先级别。(4) 启动定时器工作。 第2章 MCS-51单片机介绍 3应用举例应用举例例例4 设单片机的晶振频率fosc为6 MHz,使用T0产生周期为2 ms的方波,由P1.0输出。试分别用方式0(查询方式)和方式1(中断方式)来实现。解解 (1) 方式0查询方式。要产生1 ms的方波,只需在P1.0脚交替输出宽度为1 ms的高、低电平即可。定时器的初始化过程如下: 设置TMOD。因为T0的工作方式为方式0,功能为定时,并由软件启动,所以TMOD=0000 0000B。 第2章 MCS-51单片机介绍 计算初值。晶振频率fosc为6 MHz,则 取计算出的初值的低5位送入TL0的低5位,其余送入TH0,则 第2章 MCS-51单片机介绍 令TR0=1,启动工作。参考程序如下:ORG0000HLJMP MAINORG0100HMAIN: MOV TMOD,#00H ;设置T0为定时功能、工作方式0MOV TL0,#0CH ;设置初值MOV TH0,#0F0HSETB TR0 ;启动定时器 第2章 MCS-51单片机介绍 LOOP: JNBTF0,LOOP ;查询是否溢出CPLP1.0 ;输出取反MOV TL0,#0CH ;重新设置计数初值MOV TH0,#0F0HCLRTF0 ;清除溢出标志LJMP LOOPEND 第2章 MCS-51单片机介绍 (2) 方式1中断方式。定时器的初始化过程如下: 设置TMOD。因为T0的工作方式为方式1,功能为定时,且由软件启动,所以 TMOD=0000 0001B。 计算初值。 则 第2章 MCS-51单片机介绍 开放中断,即EA=1,ET0=1。 启动工作,即令TR0=1。 参考程序如下:ORG0000HLJMP MAINORG000BHCPLP1.0;中断处理程序MOV TL0,#0CH;重新设置计数初值MOV TH0,#0F0HRETI 第2章 MCS-51单片机介绍 ORG0100HMAIN: MOV TMOD,#01H;设置T0为定时功能、工作方式1MOVTL0,#0CH;设置初值MOVTH0,#0FEHSETBEA ;开放中断SETBET0SETBTR0;启动定时器LJMP$END 第2章 MCS-51单片机介绍 例例5 利用定时器测定外部脉冲的频率。设被测脉冲的频率在10 kHz100 kHz之间。系统的晶振频率fosc为6 MHz。检测结果存入片内RAM的20H单元。解解 将被测脉冲送至单片机的T0引脚,由T0进行计数,其工作方式为方式1,并进行查询处理。而T1选择为定时功能,定时时间为1 ms,工作方式为方式1,并执行中断处理。 参考程序:ORG0000HLJMP MAIN ORG001BHCLRTR0 第2章 MCS-51单片机介绍 MOVIE,#0MOV20H,TL0 ;将频率(单位为kHz)存入缓冲单元20H单元RETIORG0100HMAIN:MOVTMOD,#00010101B ;T0为计数方式1,T1为定时方式1MOVTL1,#0CH;fosc=6MHz,定时1msMOVTH1,#0FEHMOVTL0,#0MOVIE,#10001000B;开放T1中断MOVTCON,#01010000B;启动T0、T1工作LJMP$END 第2章 MCS-51单片机介绍 2.7 串串 行行 接接 口口1串行通信与并行通信串行通信与并行通信计算机与外界的信息交换称为通信。常用通信方式有两种:并行通信与串行通信,见图2-20。 第2章 MCS-51单片机介绍 图2-20 串行通信与并行通信 第2章 MCS-51单片机介绍 并行通信的传送速度快、效率高,但传送多少数据位就需要多少根数据线,故成本高,适合于近距离通信;串行通信是逐位按顺序传送,最少仅需要一根传输线即可完成,成本低、速度慢,适合于远距离传送。MCS-51单片机中有一个全双工的异步通信接口,可以同时完成数据的串行发送与串行接收,其数据传输格式见图2-21。 第2章 MCS-51单片机介绍 图2-21 异步通信格式 第2章 MCS-51单片机介绍 MCS-51单片机的异步通信按字符传送,各字符传送的间隙为空闲位“1”,无固定的间隙长度。每个字符包括1个起始位0、8位或9位数据位(低位在前、高位在后)、1个停止位“1”。串行通信中,用每秒传送二进制数据位的数量表示传送速率,称为波特率。1波特=1 b/s(位/秒)。 第2章 MCS-51单片机介绍 2MCS-51单片机的串口结构及控制寄存器单片机的串口结构及控制寄存器MCS-51单片机的串口结构如图2-22所示。 图2-22 MCS-51单片机的串口结构 第2章 MCS-51单片机介绍 串口有两个缓冲寄存器SBUF(99H),一个是发送寄存器(用户只能写入),一个是接收寄存器(用户只能读出)。串行发送时,CPU向发送SBUF中写入数据,发送SBUF在移位时钟脉冲的作用下,由串行输出引脚TXD(P3.1)逐位输出。当该字符发送完毕后,自动将TI置1,以向CPU提出串行中断申请。串行输入时,数据通过RXD(P3.0)引脚在移位时钟的控制下逐位输入到输入移位寄存器中;接收完毕后,将数据送入接收SBUF,并将RI置1,同样向CPU提出串行中断申请。与串行通信有关的控制寄存器主要有串行控制寄存器SCON、电源控制寄存器PCON及IE、IP等。 第2章 MCS-51单片机介绍 SM0、SM1:串口工作方式选择位。串口工作方式的具体信息见表2-15。第2章 MCS-51单片机介绍 第2章 MCS-51单片机介绍 第2章 MCS-51单片机介绍 RB8:接收数据的第9位(D8)。在方式2和方式3中,由发送方发送的TB8的值将被接收方存储在RB8位中,其含义与TB8的相同。 TI:发送中断标志。当在方式0时,发送完第8位数据后,该位由硬件置位。在其他方式下,于发送停止位之前由硬件置位。因此TI=1表示“发送缓冲器SBUF已空”,帧发送结束。其状态既可供软件查询使用,也可用于请求中断。TI位必由软件清0。 RI:接收中断标志。当接收方接收到有效数据后,该位由硬件置位。因此RI=1表示帧接收结束。其状态既可供软件查询使用,也可以用于请求中断。RI位由软件清0。 第2章 MCS-51单片机介绍 2) 电源控制寄存器PCON(87H) SMOD:波特率倍增位。若SMOD=1,则串行口波特率加倍。 GF0、GF1:通用标志位,供用户使用。 PD:掉电保护位。若PD=1,则进入掉电保护方式。此时,只有内部RAM单元的内容被保存,其他包括中断系统在内的所有电路停止工作。只有复位的方法才可以使单片机由掉电方式恢复到正常的工作状态。 IDL:待机方式位。若IDL=1,则进入待机方式。此时,时钟电路仍然运行,并向中断系统、I/O接口和定时/计数器提供时钟,但不向CPU提供时钟,所以CPU不能工作。在待机方式下,可采取中断方法退出待机方式。在单片机响应中断时,IDL位被硬件自动清0。 第2章 MCS-51单片机介绍 3MCS-51单片机串口的工作方式单片机串口的工作方式1) 串行工作方式0方式0下,串行口作为同步移位寄存器使用,主要用于I/O口扩展等。方式0的波特率固定为fosc/12,串行数据由RXD(P3.0)端输入或输出,而TXD(P3.1)此时仅作为同步移位脉冲发生器输出移位脉冲。串行数据的发送和接收以8位为一帧,不设起始位和停止位,其格式为:第2章 MCS-51单片机介绍 方式0下输出数据时,向SBUF写入数据的指令为MOV SBUF, A此指令执行后,即可启动数据输出。当8位数据全部输出后,TI自动置1。方式0下输入数据时,使SCON中REN位置1的指令为SETB REN此指令执行后,即可启动数据输入。当接收到8位数据后,RI自动置1。在方式0工作时,往往需要外部有串入并出寄存器或并入串出寄存器配合使用,其多用于将串行口转变为并行口的使用场合,如图2-23所示。 第2章 MCS-51单片机介绍 图2-23 串口方式0的电路连接方法示意图 第2章 MCS-51单片机介绍 例例6 按图2-23(a)连接电路,试将A中数据从CD4094并行输出。解解 参考程序如下:MOVSCON, #00H;串行口工作方式0CLRP1.0 ;设置CD4094串行输入状态MOVSBUF,A ;启动串行输出JNBTI,$ ;等待串行输出完毕CLRTISETBP1.0 ;开启并行输出 第2章 MCS-51单片机介绍 2) 串行工作方式1方式1下的串口作为10位的异步通信接口使用,TXD为数据输出端,RXD为数据输入端。(1) 数据格式。方式1的串口数据格式如下:一帧有10个位,包括1位起始位“0”、8位数据位和1位停止位“1”。 第2章 MCS-51单片机介绍 (2) 波特率。方式1的波特率是可变的,计算公式为 式中,SMODPCON的最高位,可使用软件设定其值为1或为0;T1溢出频率就是T1在单位时间内溢出的次数。为减少误差及保证在通信期间波特率固定不变,通常将T1设定为工作方式2、定时功能,那么T1的溢出周期为 第2章 MCS-51单片机介绍 由此可得波特率的计算公式为 实际使用时总是先确定波特率,再计算定时器T1的初值,然后进行T1的初始化。根据上述波特率的计算公式,可得T1初值的计算公式为 第2章 MCS-51单片机介绍 (3) 方式1下数据的发送和接收。向发送SBUF写入发送数据的指令即可启动数据发送。在串行口由硬件自动在8位数据的前后加入起始位和停止位以组成一个完整的帧。在内部移位脉冲的作用下,数据由TXD端串行输出。发送完一帧数据后,TXD端维持空闲“1”状态,并将TI置1,以产生串行中断申请。接收数据从将SCON中的REN置1开始。当串行口采样到RXD端的电平从1向0跳变时,就认定这个0为起始位,随后在移位脉冲的控制下,把从RXD端输入的8位数据依次送入移位寄存器。当满足RI=0、SM2=0或接收到的停止位为1时,将接收到的8位数据送入接收SBUF中,停止位1送入RB8中,并使RI置1,以产生串口中断申请;否则,此次接收无效,也不置位RI。 第2章 MCS-51单片机介绍 例例7 利用单片机的串行口方式1,让甲机连接的开关控制乙机所连接的发光二极管,并实现双机通讯。电路见图2-24,fosc=6 MHz,要求波特率为1200 b/s。 图2-24 双机通信 第2章 MCS-51单片机介绍 解解 波特率约定为1200 b/s,SMOD值取0,T1选择工作方式2、定时功能,则T1的初值为 双方串口选择方式1、查询方式,则发送方SCON=40H,接收方SCON=50H。发送方程序如下:ORG0000HLJMP MAINORG0100H 第2章 MCS-51单片机介绍 MAIN: MOV TMOD,#20H;设置波特率及串口初始化MOV TL1,#243MOV TH1,#243SETB TR1MOV SCON,#40HLOOP: MOV P1,#0FFH;读入开关状态MOV SBUF,P1;发送WAIT:JNBTI,WAIT;发送完毕否CLRTILJMP LOOPEND 第2章 MCS-51单片机介绍 接收方程序如下:ORG0000HLJMPMAINORG0100HMAIN:MOVTMOD,#20H;设置波特率及串口初始化MOVTL1,#243MOVTH1,#243SETBTR1MOVSCON,#50HWAIT:JNBRI,WAIT;等待接收CLRRIMOVP1,SBUF;二极管显示LJMPWAIT END 第2章 MCS-51单片机介绍 3) 串行工作方式2方式2下的串口作为11位的异步通信接口使用。串口的数据格式如下:一帧数据有11个位,包括1位起始位“0”、8位数据位、1个附加第9位(D8)和1位停止位“1”。 附加第9位(D8)由软件置1或清零。发送前,先根据通信协议用软件设置TB8(如作奇偶校验位或地址帧/数据帧标志),然后将要发送的数据写入发送SBUF,启动发送(单片机能自动将TB8取出并作为第9位数据进行发送),发送完毕使TI置1。 第2章 MCS-51单片机介绍 接收时,使SCON中的REN置1即启动接收。当检测到RXD端有从1到0的跳变,便开始接收9位数据,并送入移位寄存器。当满足RI=0、SM2=0或接收到的第9位为1时,前8位数据送入SBUF,附加的第9位数据送入SCON中的RB8,RI置1;否则,这次接收无效,也不置位RI。方式2下波特率的计算方式为波特率=2SMODfosc/64。 4) 串行工作方式3方式3的波特率的计算方法与方式1的相同,其余计算过程与方式2的相同。 第2章 MCS-51单片机介绍 4多机通信原理多机通信原理单片机多机通信是指一台主机和多台从机之间的通信。MCS-51单片机的SCON中设有多机通信控制位SM2。当串行口以方式2或方式3工作时,若SM2=1,则仅当接收到的第9位数据为1时,才将数据送入接收缓冲器SBUF,并置位RI发出中断请求信号,否则将丢失信息;而当SM2=0时,无论第9位是0还是1,都能将数据装入SBUF,并产生中断请求信号。根据这个特性,便可实现主机与多个从机之间的串行通信。图2-25为MCS-51单片机多机通信系统的逻辑示意图。多机通信中,主机与各从机之间可实现全双工通信,而各从机只能与主机交换信息。 第2章 MCS-51单片机介绍 图2-25 MCS-51单片机的多机通信系统 第2章 MCS-51单片机介绍 多机通信的过程如下:(1) 所有从机串口设为方式2或方式3,SM2=1,串行中断开放。(2) 主机中设置TB8=1,然后先发送一帧地址信息,即希望与之通信的从机地址。(3) 所有从机均接收主机发送的地址,并进入各自中断服务程序,从而与本机地址比较。(4) 被寻址的从机确认后令自身的SM2=0,并向主机返回地址供主机核对;地址不符的从机仍保持SM2=1。 第2章 MCS-51单片机介绍 (5) 主机核对无误后,向被寻址从机发送命令(第9位设0),令其准备接收或发送数据。(6) 主从机之间进行数据传送,传送完后,该从机重新设定SM2=1。其他从机检测到主机发送的是数据而不是地址,则不予理睬,直到主机发送新的地址。(7) 重复步骤(2)(6)。 第2章 MCS-51单片机介绍 2.8 模拟通道接口模拟通道接口在计算机控制系统中,被检测或被控制的往往是一些连续变化的模拟量,如发动机水温信号、制动液液面高度信号等,而计算机只能处理二进制形式的数字量,因此检测到的模拟信号必须转换为数字信号(A/D转换)才能被计算机接收。同理,计算机输出的命令为数字量,常常需要转换成模拟信号(D/A转换)再传输给执行机构。转换过程如图2-26所示。 第2章 MCS-51单片机介绍 图2-26 计算机控制系统示意图 第2章 MCS-51单片机介绍 1MCS-51单片机的总线结构单片机的总线结构所谓总线,就是连接计算机的CPU与各部件的一组公共信号线。MCS-51单片机使用的是并行三总线结构:数据总线、地址总线和控制总线,见图2-27。 第2章 MCS-51单片机介绍 图2-27 MCS-51单片机的并行总线结构 第2章 MCS-51单片机介绍 (1) 数据总线DB(Data Bus)。数据总线用于传送数据信息(数据的含义是广义的,它可以是真正的数据,也可以是指令代码或状态信息)。它是双向三态形式的总线,既可以把CPU的数据传送到存储器或I/O接口等其他部件,也可以将其他部件的数据传送到CPU。但某一时刻只能有一个存储单元或外设与总线信号相通,其他单元尽管连接在数据总线上,但与数据总线的信息是隔离的。哪一个单元与数据总线相通,由地址总线控制。MCS-51单片机是8位CPU,因此其数据总线有8根,由P0口的8根口线担任。 第2章 MCS-51单片机介绍 (2) 地址总线AB(Address Bus)。地址总线用来传送地址信号,用于存储单元或外设的选择。地址只能从CPU传向外部存储器或I/O端口,所以地址总线总是单向三态的。CPU在地址总线上输出地址信息,经地址译码器选中的对应的数据单元会与数据总线信息相通。此时,是将数据单元的内容读到数据总线上还是将数据总线上的信息写入到数据单元,是由控制总线控制的。MCS-51的地址总线有16根,由P0(低8位地址线)、P2口(高8位地址线)线担任。 第2章 MCS-51单片机介绍 第2章 MCS-51单片机介绍 图2-28 P0口分时复用 第2章 MCS-51单片机介绍 2DAC0832芯片介绍芯片介绍1) DAC0832的结构DAC0832是常见的D/A转换器,它可以把8位数字量转换成模拟量输出,其内部结构及引脚图见图2-29。 第2章 MCS-51单片机介绍 图2-29 DAC0832的内部结构及引脚图 第2章 MCS-51单片机介绍 第2章 MCS-51单片机介绍 第2章 MCS-51单片机介绍 (3) D/A转换的结果采用电流形式输出。若需要相应的模拟电压信号,可通过一个高输入阻抗的线性运算放大器实现。运放的反馈电阻可通过Rfb端引用片内固有电阻,也可外接。(4) DAC0832中D/A转换器的结构如图2-30所示。 第2章 MCS-51单片机介绍 图2-30 T型电阻网络结构的n位D/A转换器 第2章 MCS-51单片机介绍 输出电压Vo为 第2章 MCS-51单片机介绍 2) DAC0832的工作方式(1) 单缓冲方式。单缓冲方式控制输入寄存器和DAC寄存器同时接收数据,或者只用输入寄存器而把DAC寄存器接成直通方式。此方式适用只有一路模拟量输出或几路模拟量异步输出的情形,见图2-31。 第2章 MCS-51单片机介绍 图2-31 DAC0832单缓冲连接方式 第2章 MCS-51单片机介绍 该图中,输入寄存器为缓冲状态,其地址为7FFFH;DAC寄存器为直通状态。单片机执行以下程序即可将A中数字量转换输出:MOVDPTR,#7FFFHMOVXDPTR,A 第2章 MCS-51单片机介绍 图2-32 锯齿波第2章 MCS-51单片机介绍 例例8 利用单缓冲方式生成一个锯齿波,波形如图2-32所示,电路见图2-31。程序如下:MOV A,#0LOOP: MOV DPTR,# 7FFFHMOVXDPTR,AINCALJMP LOOP 第2章 MCS-51单片机介绍 (2) 双缓冲方式。双缓冲方式先使输入寄存器锁存数据,再控制DAC寄存器锁存数据并启动转换,即分两次锁存输入数据。此方式适用于多个D/A转换器同步输出的情况,连接方式见图2-33。 第2章 MCS-51单片机介绍 图2-33 DAC0832双缓冲连接方式 第2章 MCS-51单片机介绍 例例9 利用图2-33所示电路输出二维波形,设X坐标存放在以30H开始的20个内存单元中,Y坐标存放在以50H为首的20个内存单元中。程序如下:MAIN:MOV R0,#30HMOV R1,#50HMOV R7,#20 第2章 MCS-51单片机介绍 LOOP:MOVA,R0MOVDPTR,# 7FFFHMOVX DPTR, A;X坐标送入1MOVA,R1MOVDPTR,# 0DFFFHMOVX DPTR,A;Y坐标送入2MOVDPTR,# 0BFFFHMOVX DPTR,A ;启动转换INCR0INCR1DJNZR7,LOOP 第2章 MCS-51单片机介绍 第2章 MCS-51单片机介绍 图2-34 DAC0832直通连接方式 第2章 MCS-51单片机介绍 3ADC0809芯片介绍芯片介绍1) ADC0809的结构ADC0809是常见的A/D转换器,可将8路模拟量中的任意一路转换成8位数字量输出,其内部结构及引脚图见图2-35。 第2章 MCS-51单片机介绍 图2-35 ADC0809的内部结构及引脚图 第2章 MCS-51单片机介绍 ADC0809是逐次逼近式A/D转换器,它由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8路模拟量分时输入,并共用A/D转换器进行转换。其转换结果为8位的数字量,存储在三态输出锁存器中,当OE端接收到高电平时,才可以从三态输出锁存器取走转换结果。 各引脚作用如下: D7D0:8位数字量输出引脚。 IN0IN7:8位模拟量输入引脚,信号范围为0 V5 V。 A、B、C:通道选择地址线。通道选择表如表2-16所示。 第2章 MCS-51单片机介绍 第2章 MCS-51单片机介绍 ALE:地址锁存允许信号输入端。在ALE接收到上升沿时,A、B、C地址线的状态送入地址锁存器中。 START:转换启动信号输入端。当START接收到上升沿时,所有内部寄存器清零;接收到下降沿时,开始进行A/D转换。在转换期间,START应保持低电平。 EOC:转换结束信号。当EOC输出高电平时,表明转换结束;否则,表明正在进行A/D转换。 OE:输出允许信号。当OE接收到高电平时,输出转换的数据;当OE接收到低电平时,输出数据线呈高阻状态。 CLK:时钟信号输入端。时钟信号的频率范围为10 kHz1200 kHz。 VCC:+5 V工作电压。 GND:接地端。 VREF(+)、VREF(-):参考电压输入端。VREF(+)+VREF(-)=VCC。 第2章 MCS-51单片机介绍 2) ADC0809的工作方式ADC0809工作时,应先输入3位地址,并使ALE=1,以便将地址存入地址锁存器中。此地址经译码器后选通8路模拟输入中的一路到比较器。START的上升沿将逐次逼近寄存器复位,下降沿则启动A/D转换;之后EOC输出信号变成低电平,指示转换正在进行;直到A/D转换完成,EOC才变为高电平,此时结果数据已存入锁存器。EOC信号也可用作中断申请。当OE输入高电平时,输出三态门打开,转换得到的数字量输出到数据总线上。 A/D转换后得到的数据应及时传送给单片机进行处理。数据传送的关键问题是要确认A/D转换是否完成,因为只有确认转换完成后,才能进行传送。确认转换是否完成可采用下述三种传送方式。 第2章 MCS-51单片机介绍 (1) 定时传送方式。对于一种A/D转换器来说,转换时间是已知的,例如ADC0809的转换时间为128s。可据此设计一个延时子程序,A/D转换启动后即调用此子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送。 (2) 查询方式。通过测试ADC0809的EOC端(转换结束信号)的状态,判断转换是否结束。(3) 中断方式。把转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。 第2章 MCS-51单片机介绍 图2-36 ADC0809与MCS-51单片机的接口电路图 第2章 MCS-51单片机介绍 例例10 分别以查询方式和中断方式对IN0的输入进行采样,并把结果存储在A中。解解 (1) 查询方式下的程序为MOVDPTR,#7FF8H;设置通道0地址MOVXDPTR,A;启动转换SETBP3.3JBP3.3,$ ;等待转换结束MOVDPTR,#7FFFH;设置输出锁存器地址MOVXA,DPTR;读入转换结果 第2章 MCS-51单片机介绍 (2) 中断方式下的程序为ORG0000HLJMPMAINORG0013HMOVDPTR,#7FFFH;设置输出锁存器地址MOVXA,DPTR;读入转换结果RETIORG0100HMAIN:SETBIT1SETBEASETBEX1MOVDPTR,#7FF8H;设置通道0地址,启动转换MOVXDPTR,ALJMP$END
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号