资源预览内容
第1页 / 共255页
第2页 / 共255页
第3页 / 共255页
第4页 / 共255页
第5页 / 共255页
第6页 / 共255页
第7页 / 共255页
第8页 / 共255页
第9页 / 共255页
第10页 / 共255页
亲,该文档总共255页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
单片机原理教程周欣Stillwatersrundeep.流静水深流静水深,人静心深人静心深Wherethereislife,thereishope。有生命必有希望。有生命必有希望第一章-1第一章第一章 绪 论本讲重点:本讲重点: 微处理器、微机和单片机的基本概念、单片机的发展、常用系列简介、应用。讲授内容:本章主要介绍单片机的结构特点、单片机的发展及常用系列和单片机的应用领域等。重点介绍单片机的特点以及在各领域中的应用。第一章-2回回 顾:顾:有关微型计算机的基础知识 硬件:微处理器,存储器,总线,I/O接口软件:系统软件,应用软件第一章-3第一节第一节 单片机的特点与发展概述单片机的特点与发展概述 一、微处理器、微机和单片机的概念一、微处理器、微机和单片机的概念微处理器(Microprocessor)微型计算机的控制和运算器部分;微型计算机(Microcomputer)有完整运算及控制功能的计算机,包括微处理器、存储器、输入/输出(I/O)接口电路以及输入/输出设备等; 单片机单片机(single chip microcomputer)(single chip microcomputer)直译为单片微型计算机,它将直译为单片微型计算机,它将CPUCPU、RAMRAM、ROMROM、定时器、定时器/ /计数器、输入计数器、输入/ /输出输出(I/O)(I/O)接口电路、中断、串行通接口电路、中断、串行通信接口等主要计算机部件集成在一块大规模集成电路芯片上,组成单片微型信接口等主要计算机部件集成在一块大规模集成电路芯片上,组成单片微型计算机简称单片机计算机简称单片机 。 单片机的形态只是一块芯片,但是它已具有了微型计单片机的形态只是一块芯片,但是它已具有了微型计算机的组成结构和功能。由于单片机的结构特点,在实际算机的组成结构和功能。由于单片机的结构特点,在实际应用中常常将它完全融入应用系统之中,故而也有将单片应用中常常将它完全融入应用系统之中,故而也有将单片机称为嵌入式微控制器机称为嵌入式微控制器(embedded microcon-troller)。 第一章-4单片机有单片机有2种基本结构形式:种基本结构形式:一种是在通用微型计算机中广泛采用的将程序存储器和数据存储器合用一个存储空间的结构,称称为为普普林林斯斯顿顿(Princeton)结结构构或或称称冯冯诺诺依依曼曼结构结构;另一种是将程序存储器和数据存储器截然分开,分别寻址的结构,称为哈佛(Har-vard)结构。Intel公司的MCS-51和80C51系列单片机采用的是哈哈佛佛结结构构。目前的单片机以采用程序存储器和数据存储器截然分开的结构较多。单单片片机机的的中中央央处处理理器器(CPU)和和通通用用微微处处理理器器基基本本相相同同,只只是是增增设设了了“面面向向控控制制”的的处处理理功功能能。例例如如:位位处处理理、查查表表、多多种种跳跳转转、乘乘除除法法运运算算、状态检测、中断处理功能等,增强了控制的实用性和灵活性。状态检测、中断处理功能等,增强了控制的实用性和灵活性。二、二、 单片机的一般结构及特点单片机的一般结构及特点1)存储结构为哈佛结构,将程序存储器和数据存储器分开;)存储结构为哈佛结构,将程序存储器和数据存储器分开;单片机结构特点小结:单片机结构特点小结:4)面向控制,位处理功能强。)面向控制,位处理功能强。3)芯片引脚具有复用功能;)芯片引脚具有复用功能;2)片内接口电路丰富,由特殊功能寄存器管理;)片内接口电路丰富,由特殊功能寄存器管理;第一章-5第一章-6三、单片机的发展过程三、单片机的发展过程概述概述 单单片片机机作作为为嵌嵌入入式式微微控控制制器器在在工工业业测测控控系系统统、智智能能仪仪器器和和家家用用电电器器中中得得到到广广泛泛应应用用。虽虽然然单单片片机机的的品品种种很很多多,但但其其中中最最具具有有代代表表性性的的是是Intel公公司司的的MCS-51系系列列单单片片机机,以以及及其其与与之之兼兼容容的的派派生生系系列列芯芯片片。Intel8位单片机的发展经历了以下位单片机的发展经历了以下3代:代:第一代:以1976年推出的MCS-48系列为代表。第二代:以MCS-51的8051为代表的单片机,第三代:以80C51系列为代表。一般根据控制应用需要一般根据控制应用需要: : 又可设计成通用单片机、专用单片机又可设计成通用单片机、专用单片机 按内部数据总线的宽度按内部数据总线的宽度: : 单片机分为单片机分为4 4位、位、8 8位、位、1616位及位及3232位等。位等。第一章-7第二节第二节 常用单片机系列简介常用单片机系列简介 一、一、ATMEL单片机单片机 ATMEL公司所生产的ATMEL89系列单片机(简称89系列单片机),就是基于Intel公司的MCS-5l系列而研制的,该公司的技术优势在于Flash存储器技术。 标准型单片机有:AT89C51,AT89LV51,AT89C52,AT89LV52; 低档型单片机有:AT89C1051和AT89C2051两种型号。它们的CPU内核和AT89C51是相同的,但并行I/O较少; 高档型单片机有:AT89S8252,这是一种可下载的Flash单片机。它和IBM微机通信进行下载程序十分方便。第一章-8二、二、PhilipsPhilips单片机单片机 Philips公司的的单片机都属于MCS-51系列兼容的单片机。从内部结构看可以划分为两大类,8位机与80C51兼容系列和16位机XA系列。Philips公司的的单片机8位机的主要产品型号有P80CXX、P87CXX和P89CXX系列,16位机的主要产品型号有PXACXX、PXAGXX和PXASXX等。三、三、Maxim-DallasMaxim-Dallas单片机单片机四、四、WinBondWinBond单片机单片机五、五、MotorolaMotorola单片机单片机六、其他公司的单片机六、其他公司的单片机1)NEC单片机; 2)东芝单片机;3)Epson单片机;4)PIC单片机Microchip公司第一章-9第三节第三节 单片机的应用领域及发展单片机的应用领域及发展 一、单片机在智能仪器中的应用一、单片机在智能仪器中的应用智能化仪器内部基本上都是用单片机进行信息控制与处理。特别是近年来出现的数字信号处理器DSP是一种速度极高的单片机,它在通信和高速信息处理中起了极大的作用,从而扩展了单片机在智能仪器中的应用。二、单片机在过程控制中的应用二、单片机在过程控制中的应用第一章-10三、单片机与三、单片机与e-Homee-Home 在家用网络系统HNS(homenetworkedsystem)中,对家用电器提出了“个性化”和“社会化”的要求。 家用电器的嵌入式结构有单核嵌入和双核嵌入2种。例如:一般电脑电饭煲,内部只有一个单片机,这种控制系统是单核嵌入;对于分体式空调,室内机与室外机中分别有1个单片机,为双核嵌入结构。四、单片机与四、单片机与InternetInternetInternet技术已经深入到日常生活和工作中。各类家用电器和智能装置,它们的“心脏”多是单片机,由于单片机芯片品种达数百种,其硬件结构和指令系统各不相同,不能像PC机那样通过标准的硬件接口和接口软件直接接入Internet网络。五、单片机的发展五、单片机的发展 1)强化指令功能 2)增加各种接口部件 3)提高专用程度第一章-11补充内容:补充内容:计算机系统中的数制、码制复习2、带符号数的表示法、带符号数的表示法3、原码、反码、补码、原码、反码、补码特点:特点:8位二进制数表示原码、反码、补码的范围(-127+127、-127+127、-128+127)补码的运算在在微微型型计计算算机机中中,带带符符号号数数用用补补码码表表示示,减减法法可可用用补补码码相相加加来来实实现,运算结果为补码。现,运算结果为补码。1、数制及其互换、数制及其互换 数制数制 基数基数 字符字符 二进制二进制 (B) 十进制十进制 (D) 十六进制十六进制 9 (H)第二章 1-1第二章第二章 MCS-51MCS-51单片机的硬件结构与工作原理单片机的硬件结构与工作原理主要内容:主要内容: 1.MCS-511.MCS-51单片机组成(结构、引脚功能)单片机组成(结构、引脚功能) 2.2.并行并行I/OI/O端口结构端口结构 3.3.储器组织与操作储器组织与操作 4.MCS-514.MCS-51单片机的中断系统单片机的中断系统 1 1)中断系统概述)中断系统概述 2 2)中断的处理过程)中断的处理过程重点理解:重点理解:1 . MCS-51系列单片机存储器结构特点系列单片机存储器结构特点2. 单片机特殊功能寄存器的作用单片机特殊功能寄存器的作用3. 不同场合下不同场合下单片机引脚的复用功能单片机引脚的复用功能4 . 单片机的位处理功能及其作用单片机的位处理功能及其作用第二章 1 -2一、一、MCSMCS5151单片微机的硬件组成单片微机的硬件组成 1、MCSCS5151系列单片机的主要特性系列单片机的主要特性 1)1)8位字长位字长CPUCPU和指令系统。和指令系统。 2) 12) 1个片内时钟振荡器和时钟电路。个片内时钟振荡器和时钟电路。 3) 64K3) 64K外部数据存储器的地址空间。外部数据存储器的地址空间。 4) 64K4) 64K外部程序存储器的地址空间。外部程序存储器的地址空间。 5) 325) 32条双向且分别可位寻址的条双向且分别可位寻址的I IO O口线。口线。 6) 1286) 128字节的片内字节的片内RAM(52RAM(52子系列为子系列为256256字节字节) )。 7) 27) 2个个1616位定时器计数器位定时器计数器(52(52子系列为子系列为3 3个个) )。 8) 8) 具有具有2 2个优先级的个优先级的5 5个中断源结构个中断源结构(52(52子系列有子系列有6 6个个) )。 9) 19) 1个全双工串行口。个全双工串行口。 10) 110) 1个布尔处理器。个布尔处理器。 第一节第一节 MCS-51MCS-51单片机的基本组成单片机的基本组成 第二章 1 -32. MCS2. MCS5151单单片机的内部片机的内部结结构构 时钟源T0T1P0P1P2P3TXDRXDINT0INT1时钟电路SFR和RAMROM定时/计数器CPU串行I/O口中断系统并行I/O口系统总线图21 MCS51单片机的功能模块框图 MCS51单片机的功能模块框图如图所示。 MCS-51单片机由单片机由8位位CPU、只读存储器、只读存储器EPROMROM、读写存储器、读写存储器RAM、并行、并行IO口、串行口、串行IO口、定时器计数器、中断系统、振荡器和时钟电路等部分组成。口、定时器计数器、中断系统、振荡器和时钟电路等部分组成。各部分之间通过内部总线相连。各部分之间通过内部总线相连。 第二章 1 -4MCSMCS5151的内部结构框图的内部结构框图 第二章 1 -5二、二、MCSMCS5151单片机的引脚功能单片机的引脚功能 40脚分三类:脚分三类:1、电源线和时钟信号线共、电源线和时钟信号线共4根根VCC,GND电源和地电源和地+5V电源供电电源供电, X1时钟振荡器输入端,内部振荡器输入端;时钟振荡器输入端,内部振荡器输入端; X2时钟振荡器输出端,内部振荡器输出端;时钟振荡器输出端,内部振荡器输出端;2、控制线、控制线4根根nRST复位信号,晶振工作后复位信号,晶振工作后2个机器周期的高电平复个机器周期的高电平复位位CPU. nALE地址锁存信号访问外部存储器时该信号地址锁存信号访问外部存储器时该信号锁存低锁存低8位地址;无位地址;无RAM时,时,ALE为晶振为晶振6分频;分频;uPSEN外部程序存储器读从程序存储器中取指令或读外部程序存储器读从程序存储器中取指令或读取数据时,该信号有效。取数据时,该信号有效。uEA程序存储器有效地址,程序存储器有效地址,EA=1从内部开始执行程序;从内部开始执行程序;EA=0从外部开始执行程序;从外部开始执行程序;u3、I/O口线口线32根根-MCS-51MCS-51系列单片机系列单片机P0P0、P1P1、P2P2、P3P3共共3232位,对应着芯片位,对应着芯片的的32根引脚。根引脚。第二章 1 -6三、振荡器、时钟电路及时序三、振荡器、时钟电路及时序 1.1.时钟电时钟电路路 MCS5l单单片片机机内内部部有有一一个个用用于于构构成成振振荡荡器器的的高高增增益益反反相相放放大大器器,引引脚脚XTALlXTALl和和XTAL2XTAL2分分别别是是反反相相放放大大器器的的输输入入端端和和输输出出端端,由由这这个个放放大大器器与与作作为为反反馈馈元元件件的的片片外外晶晶体体或或陶陶瓷瓷谐谐振振器器一一起起构构成成了了一一个个自自激激振振荡荡器器,如如图图2 24 4所所示示。这这种方式形成的种方式形成的时钟时钟信号称信号称为为内部内部时钟时钟方式。方式。图图2 25 5所示,所示,为为外部外部时钟时钟方式。方式。 第二章 1 -72. 2. 有关有关单片机单片机CPUCPU的的时时序序1 1)振荡周期)振荡周期 指指为为单单片片机机提提供供定定时时信信号号的的振振荡荡源源的的周周期期,若若为为内内部部产产生生方方式式时时,为为石石英晶体的振荡周期。英晶体的振荡周期。2 2)时钟周期)时钟周期 也也称称为为状状态态周周期期,用用S表表示示。时时钟钟周周期期是是计计算算机机中中最最基基本本的的时时间间单单位位,在在一一个个时时钟钟周周期期内内,CPUCPU完完成成一一个个最最基基本本的的动动作作。MCS51单单片片机机中中一一个个时时钟钟周周期期为为振荡周期的振荡周期的2 2倍。倍。3 3)机器周期)机器周期 完完成成一一个个基基本本操操作作(例例如如,取取指指令令、存存储储器器读读、存存储储器器写写等等)所所需需要要的的时间称为机器周期。时间称为机器周期。MCS51的一个机器周期含有的一个机器周期含有6 6个时钟周期。个时钟周期。4 4)指令周期)指令周期 完完成成一一条条指指令令所所需需要要的的时时间间称称为为指指令令周周期期。MCS5l的的指指令令周周期期含含1 14 4个个机机器器周周期期不不等等,其其中中多多数数为为单单周周期期指指令令,还还有有2 2周周期期和和4 4周周期期指指令令。4 4周周期期指指令令只只有乘、除两条指令。有乘、除两条指令。第二章 1 -8P1P2S1振荡周期时钟周期机器周期机器周期指令周期指令周期XTAL2(OSC)S2S3S4S5S6S1S2S4S5S3S6P1P1P1P1P1P1P1P1P1P1P1P2P2P2P2P2P2P2P2P2P2P2MCS-51单片机各种周期的相互关系 第二节第二节 并行并行I/OI/O接口接口 MCS5l单片机内有四个单片机内有四个8位并行位并行IO端口,为端口,为P0、P1、P2和和P3。每个。每个端口都是端口都是8位准双向位准双向IO口,共占口,共占32根引脚。每个端口都包含一个锁存器、根引脚。每个端口都包含一个锁存器、一个输出驱动器和一个输入缓冲器。一个输出驱动器和一个输入缓冲器。 一、并行一、并行I/O接口的内部结构接口的内部结构 IO口的每位锁存器均由D触发器组成,用来锁存输出的信息。在CPU的“写锁存器”信号驱动下,将内部总线上的数据写入锁存器中。 P0口某位的结构图 第二章 2 -1 当由P0口输入数据时,由于外部输入信号既加在缓冲输入端上,又加在驱动电路的漏极上。如果这时T2是导通的,则引脚上的电位始终被钳位在0电平上,输人数据不可能正确地读人。因此,在输入数据时,应先把P0口置1,使两个输出FET均关断,使引脚“浮置”,成为高阻状态,这样才能正确地插人数据。这就是所谓的准双向口。 P1口也是个准双向IO口,与P0口不同的是,没有多路开关MUX和控制电路部分。输出驱动电路只有一个FET场效应管,同时内部带上拉电阻,此电阻与电源相连。P1口可作通用双向IO口用,而不必再外接上拉电阻。 P2口在结构上比P0口少了一个输出转换控制部分,多路开关MUX的倒向由CPU命令控制,且P2口内部接有固定的上拉电阻。 P3口与Pl口的输出驱动部分及内部上拉电阻相同,但比P1口多了一个第二功能控制部分的逻辑电路由一个与非门和一个输入缓冲器组成 第二章 2 -2P3.0(P3.0(RXD) ):串行输入端。:串行输入端。P3.1(P3.1(TXD) ):串行输出端。:串行输出端。P3.2(P3.2(INTO) ):外部中断:外部中断0 0输入端,低电平有效。输入端,低电平有效。P3.3(P3.3(INT1) ):外部中断:外部中断1 1输入端,低电平有效。输入端,低电平有效。P3.4(P3.4(T0) ):定时计数器:定时计数器0 0外部事件计数输入端。外部事件计数输入端。P3.5(P3.5(T1) ):定时计数器:定时计数器1 1外部事件计数输入端。外部事件计数输入端。P3.6(P3.6(WR) ):外部数据存储器写选通信号,低电平有效。:外部数据存储器写选通信号,低电平有效。P3.7(P3.7(RD) ):外部数据存储器读选通信号,低电平有效。:外部数据存储器读选通信号,低电平有效。P3P3口每位的第二功能:口每位的第二功能:第二章 2 -3P0P3的功能及使用时的注意事项的功能及使用时的注意事项 1. 在无片外扩展存储器的系统中,这四个端口的每一位都可以作为准双向通用IO端口使用。在具有片外扩展存储器的系统中,P2口作为高8位地址线,P0口作为双向总线,分时作为低8位地址和数据的输入输出线。 2. P0口作为通用双向IO口用时,必须外接上拉电阻。 3. P3口除了作通用IO使用外,它的各位还具有第二功能。当P3口某一位用于第二功能作输出时,则不能再作通用IO使用。 4. 当P0P4端口用作输入时,为了避免误读,都必须先向对应的输出锁存器写入“l” ,使FET截止。然后再读端口引脚。 如:MOV P1,#0FFH MOV A, P1第二章 2 -4单片机的片外三总线结构单片机的片外三总线结构第二章 2 -5 第三节第三节 MCS-51MCS-51单片机的复位单片机的复位 MCS5l的RSTVPD引脚是复位输入端,其内的施密特触发器用来抑制噪声,它的输出在每个机器周期的S5P2由复位电路采样一次。在振荡器运行时,RST端至少要保持2个机器周期(24个振荡周期)为高电平,才完成一次复位。复位后片内各专用寄存器的状态如表21。 寄存器内容寄存器内 容PC00HTMOD00HA00HTCON00HB00HTH000HPSW00HTL000HSP07HTH100HDPTR0000HTL100HP0P30FFHSCON00HIP(XXX00000)BSBUF不变IE(0XX00000)BPCON(0XXXXXXX)B第二章 3 -1几种实用的复位电路几种实用的复位电路 第二章 3 -2第二章 4-14-1第四节第四节 MCS-51MCS-51存储器组织与操作存储器组织与操作 MCS51系列系列单单片机其存片机其存储结储结构特点是构特点是:将将程程序序存存储储器器和和数数据据存存储储器器分分开开,并并有有各各自自的的寻寻址址机机构构和和寻寻址址方方式式,这这种种结结构的构的单单片微机称片微机称为为哈佛型哈佛型结结构构单单片微机片微机。在物理上在物理上有有4 4个相互独立的存储空间:个相互独立的存储空间:片内和片外程序存储器;片内和片外数据存储器。片内和片外程序存储器;片内和片外数据存储器。 在逻辑上在逻辑上有三个彼此独立的地址空间:有三个彼此独立的地址空间: 1、片内外统一编地址的、片内外统一编地址的64KB程序存储器地址间;程序存储器地址间; 2、256字节的片内数据存储器地址空间;字节的片内数据存储器地址空间; 3、64KB片外数据存储器地址空间片外数据存储器地址空间外部ROM内部ROM(EA=1)外部ROM(EA=0)0000H0FFFH1000HFFFFH外部RAM(I/O口)0000H0FFFFH程序存储器(c)特殊功能寄存器区00H30H2FH0FFH工作寄存器区位寻址区20H1FH80H7FH0000H0FFFH内部数据存储器(a)外部数据存储器(b)一般RAM区 MCS5l系列存储器地址空间分配图 第二章 4-2一、一、 MCSMCS5151程序存储器地址空间程序存储器地址空间 7 7个特殊单元:个特殊单元: 0000H 0000H 复位后复位后,PC=0000H. ,PC=0000H. 开始执行程序开始执行程序 0003H 0003H 外部中断外部中断0 0 (INT0INT0)入口)入口 000BH 000BH 定时器定时器0 0中断(中断( TF0TF0)入口)入口 0013H 0013H 外部中断外部中断1 1(INT1INT1) 入口入口 001BH 001BH 定时器定时器1 1中断(中断( TF1TF1)入口)入口 0023H 0023H 串行口中断串行口中断TI/RITI/RI入口入口 002BH 002BH 定时计数器定时计数器2 2溢出或溢出或T2EXT2EX输入负跳变(输入负跳变(5252系列)系列) 程序存储器用于存放调试好的应用程序和表格常数。MCS5l采用16位的程序计数器PC和l6位的地址总线,64KB片内、外的程序存储器空间连续、统一 。第二章 4-3二、二、MCSMCS5151数据存数据存储储器地址空器地址空间间 数数据据存存储储器器地地址址空空间间由由内内部部和和外外部部数数据据存存储储器器空空间间组组成成。内内部部和和外外部部数数据存储器空间存在重叠。据存储器空间存在重叠。 通过不同指令来区别通过不同指令来区别 内部数据传送指令:MOV外部数据传送指令:MOVX1 1、工工作作寄寄存存器器区区( ) 分成分成4 4组,每组组,每组8 8个寄存器个寄存器R0-R7R0-R72 2、位寻址区(、位寻址区(20H 20H 2FH 2FH ) 既既可可进进行行字字节节寻寻址址,又又可可进进行行位位寻寻址址。这这1616个个单单元元共共有有168168128128位位, ,对对应位地址应位地址00H-7FH00H-7FH。3 3、通用、通用存储区(存储区(30H 30H 7FH7FH) 4 4、外部数据存储器外部数据存储器 00000000H-FFFFH H-FFFFH 范范围围为为64K64K字字节节,采采用用R0R0、R1R1或或DPTRDPTR寄寄存存器器间间址址方方式式访问。访问。 内部数据存储器在物理上又可分成三部分:低内部数据存储器在物理上又可分成三部分:低128字节字节RAM、高、高128字节字节RAM(仅仅80320852才有才有)和专用寄存器和专用寄存器(SFR)。 低低128字节字节RAM由工作寄存器区、由工作寄存器区、位寻址区和通用位寻址区和通用RAM区组成。区组成。内部数据存储器地址空间内部数据存储器地址空间80320852的高的高128字节字节RAM和专用和专用寄存器寄存器(SFR)空间重合,通过不同寻址空间重合,通过不同寻址方式区别方式区别第二章 4-4三、特殊功能寄存器地址空间三、特殊功能寄存器地址空间 共有共有2626个专用寄存器个专用寄存器SFRSFR,离散地分布在片内,离散地分布在片内RAMRAM的高的高128128字节地址字节地址80H80H0FFH0FFH中。中。 程程序序计计数数器器PCPC不不占占据据RAMRAM单单元元,在在除除PCPC外外的的专专用用寄寄存存器器SFRSFR中中,有有1212个个专专用用寄寄存存器器既可字节寻址,又可位寻址(字节地址为既可字节寻址,又可位寻址(字节地址为8 8的整倍数)。的整倍数)。标识符名称字节地址*Acc累加器E0H*BB寄存器F0H*PSW程序状态字D0HSP堆栈指针81HDPTR数据指针(DPH和DPL)82H,83H*P0口080H*P1口190H*P2口2A0H*P3口3B0H*IP中断优先级寄存器B8H*IE中断控制寄存器A8HTMOD定时器方式寄存器89H*TCON定时器控制寄存器88H标识符名称字节地址TH0计数器0高位8CHTL0计数器0低位8AHTH1计数器1高位8DHTL1计数器1低位8BH*SCON串行口控制98HSBUF串行数据缓冲器99HPCON电源控制97H位地址的表示法例: 位名称位名称 CY CY 、RS0RS0n 寄存器名加序号寄存器名加序号 PSW.7PSW.7n ACC.1 ACC.1 字节地址加序号字节地址加序号 20H.320H.3n 直接位地址直接位地址 00H00H第二章 1-191.1.累加器累加器ACCACC累累加器加器A A在大部分的算术运算中存放某个操作数和运算结果。在大部分的算术运算中存放某个操作数和运算结果。2.2.寄存器寄存器B B寄存器寄存器B B主要用于与累加器主要用于与累加器A A配合执行乘法和除法指令的操作。配合执行乘法和除法指令的操作。3.3.程程序序状状态态字字PSWPSW8 8位位寄寄存存器器,用用来来存存放放程程序序状状态态信信息息。某某些些指指令令的的执执行行结结果会自果会自动动影响影响PSWPSW的有关状的有关状态标态标志位,有些状志位,有些状态态位可用指令来位可用指令来设设置。置。 特殊功能寄存器特殊功能寄存器D7D6D5D4D3D2D1D0CyACF0RS1RS0OV-P:进位标志位:进位标志位:半进位标:半进位标 :用户标志位:用户标志位:工作寄存器组选择:工作寄存器组选择:溢出标志:溢出标志 P P :奇偶标志:奇偶标志RS1 RS0 寄存器组内部RAM地址 0 0 工作寄存器组0 00H07H 0 1 工作寄存器组1 08H0FH 1 0 工作寄存器组2 10H17H 1 1 工作寄存器组3 18H1FH第二章 1-204.4.堆栈指针堆栈指针SPSP 栈栈指指针针SPSP为为一一个个8 8位位专专用用寄寄存存器器,每每存存入入( (或或取取出出) )一一个个字字节节数数据据,SPSP就就自自动动加加1(1(或或减减1)1),SPSP始始终终指指向向新新的的栈栈顶顶。系系统统复复位位后后钱钱指指针针初初始始化化为为07H07H。5.5.数据指针数据指针DPTRDPTR 1616位位的的专专用用寄寄存存器器,由由高高位位字字节节DPHDPH和和低低位位字字节节DPLDPL组组成成。可可作作为为一一个个1616位寄存器使用,也可以作为位寄存器使用,也可以作为2 2个独立的个独立的8 8位寄存器位寄存器DPHDPH和和DPLDPL使用。使用。6.I/O6.I/O端口端口P0P0P3P3 专专用用寄寄存存器器P0P0P3P3分分别别是是I/OI/O端端口口P0P0P3P3的的锁锁存存器器。可可以以把把I/OI/O口口当当作作般般的的专专用用寄寄存存器器来来使使用用,没没有有专专门门设设置置的的口口操操作作指指令令,全全部部采采用用统统一一的的MOVMOV指令。指令。关于关于数据存储器数据存储器第二章 1-21 1 1)根据地址总线宽度,在片外可扩展的存储器最大容量为)根据地址总线宽度,在片外可扩展的存储器最大容量为64KB64KB,地址范围为,地址范围为0000H0000HFFFFHFFFFH。2 2)片外数据存储器片外数据存储器与与程序存储器程序存储器的操作使用不同的指令和的操作使用不同的指令和控制信号,允许两者的地址重复。因此,片外要扩展的数控制信号,允许两者的地址重复。因此,片外要扩展的数据存储器与程序存储器各为据存储器与程序存储器各为64KB64KB。3 3)片外数据存储器片外数据存储器与与片内数据存储器片内数据存储器的操作指令亦不同的操作指令亦不同( (对片外对片外RAMRAM用用MOVXMOVX指令指令) ),所以也允许两者的地址重复,所以也允许两者的地址重复,内部数据存储器的地址内部数据存储器的地址00 00 FFHFFH,外部扩展数据存储器,外部扩展数据存储器的地址可以从的地址可以从0000H 0000H FFFFHFFFFH。 注意:采用注意:采用R0、R1或或DPTR寄存器间址方式访问寄存器间址方式访问片外数据存储器片外数据存储器。当当采用采用R0、R1间址时只能访问低间址时只能访问低256字节,采用字节,采用DPTR间址可访问整个间址可访问整个64K字节空间。字节空间。MCS-51MCS-51及其及其5l5l子系列的其它成员都具有相同的中断结构。子系列的其它成员都具有相同的中断结构。 80518051有有5 5个个中中断断源源2 2个个外外部部中中断断源源INT0INT0和和INT1INT1,2 2个个片片内内定定时时器器计数器溢出中断源,计数器溢出中断源,1 1个片内串行口中断源。个片内串行口中断源。 分分为为两两级级高高级级中中断断和和低低级级中中断断。其其中中任任何何一一个个中中断断源源的的优优先先级级均均可可由软件设定为高级或低级,能实现两级中断服务程序嵌套由软件设定为高级或低级,能实现两级中断服务程序嵌套 。都是可屏蔽的,由软件设定。都是可屏蔽的,由软件设定。 第五节第五节 MCS-51MCS-51的中断系统的中断系统 中断允许寄存器IE控制中断优先级寄存器IP控制中断触发方式位IT控制第二章 3- -2一、一、MCSMCS5151的中断源的中断源 1.1.中断源中断源 1) 1) 外外部部中中断断0 0请请求求,由由P3.2P3.2引引脚脚输输入入。可可由由用用户户设设定定为为两两种种触触发发方方式式,(电电平平触触发发方方式式还还是是边边沿沿触触发发方方式式)。一一旦旦输输入入信信号号有有效效,则则向向CPUCPU申申请请中中断断,并并且且将将中中断断标标志志IE0IE0置置1 1。 2) 2) 外外部部中中断断1 1请请求求,由由P3.3P3.3引引脚脚输输入入。亦亦可可由由用用户户设设定定为为电电平平触触发发方方式式还还是是边边沿沿触触发发方方式式。一一旦旦输输人人信信号号有有效效,则向则向CPUCPU申请中断,并将中断标志申请中断,并将中断标志IE1IE1置置1 1。 3 3)片片内内定定时时器器T0T0溢溢出出中中断断请请求求。当当定定时时器器T0T0产产生生溢溢出出时时,T0T0中断请求标志中断请求标志TF0 TF0 置置1 1,请求中断处理。,请求中断处理。 4)4)片片内内定定时时器器T1T1溢溢出出中中断断请请求求。当当定定时时器器T1T1产产生生溢溢出出时时,T1T1中断请求标志中断请求标志TF1TF1置置l l,请求中断处理。,请求中断处理。 5)5)片片内内串串行行口口发发送送接接收收中中断断请请求求。当当通通过过串串行行口口发发送送或或接接收收完完一一帧帧串串行行数数据据时时,串串行行口口中中断断请请求求标标志志TITI或或RIRI置置1 1,请请求求中中断处理。断处理。 第二章 3- -32.2.中断请求标志中断请求标志 (1)TCON(1)TCON的中断标志的中断标志 TCONTCON是是专专用用寄寄存存器器,字字节节地地址址为为88H88H,它它锁锁存存了了外外部部和和的的中中断断请请求求标标志志及及T0T0和和T1T1的溢出中断请求标志的溢出中断请求标志TCONTCON 88H 88HD7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0TF1TF1TR1TR1TF0TF0TR0TR0IE1IE1IT1IT1IE0IE0IT0IT0 1)IT0 1)IT0:选择外部中断:选择外部中断0 0(INT0INT0)触发方式控制位。)触发方式控制位。 IT0=0 INT0IT0=0 INT0为电平触发方式为电平触发方式。 2)IE02)IE0:外部中断:外部中断0 0请求标志位。请求标志位。IE0IE01 1,外部中断,外部中断0 0向向CPUCPU申请中断。申请中断。 3)IT13)IT1:选择外部中断:选择外部中断1 1(INT1INT1)触发方式控制位。)触发方式控制位。 4)1E14)1E1:外部中断:外部中断1 1请求标志位。请求标志位。IE1IE11 1时,外部中断时,外部中断1 1向向CPUCPU申请中断。申请中断。 5)TF05)TF0:片片内内定定时时器器T0T0溢溢出出中中断断请请求求标标志志。T0T0被被启启动动后后,从从初初始始值值开开始始进进行行加加1 1计计数数,当当最最高高位位产产生生溢溢出出时时置置TF0TF01 1,向向CPUCPU申申请请中中断断,直直到到CPUCPU响响应应该该中中断断时时,才才由由硬件自动将硬件自动将TF0TF0清清0 0,也可由软件查询该标志,并用软件清,也可由软件查询该标志,并用软件清0 0。 6)TF16)TF1:片内定时器:片内定时器T1T1溢出中断请求标志,其操作功能与溢出中断请求标志,其操作功能与TF0TF0类同。类同。 第二章 3- -4 SCON SCON是串行口控制寄存器,与中断有关的是它的低两位是串行口控制寄存器,与中断有关的是它的低两位TITI和和RIRI。1) TI1) TI(SCON.1SCON.1):串行口发送中断标志位。每发送完一个串行帧,):串行口发送中断标志位。每发送完一个串行帧,由硬件置位由硬件置位TITI。CPUCPU响应中断时,不能清除响应中断时,不能清除TITI,TITI必须由软件清除。必须由软件清除。 2 2)RI(SCON.0)RI(SCON.0):串行口接收中断标志位,当允许串行口接收数据时,:串行口接收中断标志位,当允许串行口接收数据时,每接收完一个串行帧,由硬件置位每接收完一个串行帧,由硬件置位RIRI。同样,。同样,RIRI必须由软件清除。必须由软件清除。TIRISCON2)SCON2)SCON的中断标志的中断标志第二章 3-5二、二、MCSMCS5151的中断控制的中断控制 1 1、中断允许寄存器、中断允许寄存器IEIE中断的允许与开放中断的允许与开放第二章 3-62中断优先级寄存器IP 中断优先级控制中断优先级控制内部自然优先级:内部自然优先级:入口地址入口地址INT0高高0003HT0000BHINT10013HT1001BHTI/RI底底0023H第二章 3- -8中断中断处处理理过过程一般分程一般分为为三个三个阶阶段,即中断响段,即中断响应应、中断、中断处处理和中断返回理和中断返回。 三、响三、响应应中断的条件及中断的条件及过过程程 1.1.中断响应中断响应(1 1)中断响应的条件)中断响应的条件 1)有中断源发出请求信号)有中断源发出请求信号2)中断是开放的(总允许、源允许)中断是开放的(总允许、源允许)3)没有封锁(受阻),)没有封锁(受阻),受阻情况是: CPU正在执行同级或高一级的中断服务程序; 现行机器周期不是正在执行的指令的最后一个机器周期,即现行指令完成前不响应任何中断请求; 当前正在执行的是中断返回指令RETI或访问专用寄存器IE或IP的指令。也就是说,在执行RETI或是访问IE、IP的指令后,至少需要再执行条其他指令,才会响应中断请求。第二章 3- -9 2 2)中断响应过程)中断响应过程 进入中断响应周期。进入中断响应周期。CPUCPU在中断响应周期要完成下列操作:在中断响应周期要完成下列操作: 1)根据中断请求源的优先级高低,根据中断请求源的优先级高低,使相应的优先级状态触发器置使相应的优先级状态触发器置1。2)清相应中断请求标志位清相应中断请求标志位IE0、IE1、TF0或或TF13)保留断点,把保留断点,把PC内容内容压入堆压入堆保存。保存。4)把被响应的中断源服务把被响应的中断源服务程序程序入口地址入口地址送入送入PC,输入相应,输入相应中断服务程序。中断服务程序。第二章 3- -102.2.中断服务与返回中断服务与返回 在编写中断服务程序时加注意的几点:在编写中断服务程序时加注意的几点: 1)1)因因各各入入口口地地址址之之间间只只相相隔隔8 8个个字字节节,一一般般的的中中断断服服务务程程序序是是存存放放不不下下的的。所所以以通通常常在在中中断断入入口口地地址址单单元元处处存存放放条条无无条条件件转转移移指指令令,这这样样就可使中断服务程序灵活地安排在就可使中断服务程序灵活地安排在64KB64KB程序存储器的任何空间。程序存储器的任何空间。2)2)若若要要在在执执行行当当前前中中断断程程序序时时禁禁止止更更高高优优先先级级中中断断,可可先先用用软软件件关关闭闭CPUCPU中断,或禁止某中断源中断,在中断返回前再开放中断。中断,或禁止某中断源中断,在中断返回前再开放中断。 3)3)注意在保护现场和恢复现场。注意在保护现场和恢复现场。 4 4)中中断断服服务务程程序序的的最最后后一一条条是是返返回回指指令令RETIRETI,该该指指令令将将清清除除响响应应中中断断时时被被置置位位的的优优先先级级状状态态触触发发器器,然然后后自自动动将将断断点点地地址址从从栈栈顶顶弹弹出出,装装入入程序计数器程序计数器PCPC,使程序返回到被中断的程序断点处,继续向下执行。,使程序返回到被中断的程序断点处,继续向下执行。 第二章 3- -113.3.中断请求的撤除中断请求的撤除CPUCPU响响应应中中断断请请求求后后,在在中中断断返返回回(RETI)(RETI)前前,该该中中断断请请求求信信号号必必须须撤撤除除,否则会引起另外一次中断。否则会引起另外一次中断。注注意意:采采用用边边沿沿触触发发的的外外部部中中断断标标志志IE0IE0或或IElIEl和和定定时时器器中中断断标标志志TF0TF0或或TFlTFl,CPUCPU响应中断后能用硬件自动情除。响应中断后能用硬件自动情除。但但在在电电平平触触发发时时,IE0IE0或或IElIEl受受外外部部引引脚脚中中断断信信号号( (或或) )的的直直接接控控制制,CPUCPU无无法法控控制制IE0IE0或或IElIEl,需需要要另另外外考考虑虑撤撤除除中中断断请请求求信信号号的的措措施施,如如通通过过外外加加硬硬件件电电路路,并并配配合合软软件件来来解解决决;串串行行口口中中断断请请求求标标志志TITI和和RIRI也也不不能能由由硬硬件件自自动动清清除除,需需要要在在中中断断服服务务程程序序中中,用用软软件件来来清清除除相相应应的的中中断断请请求求标志标志。 小结:1、硬件构成、硬件构成 2、存储器组织、存储器组织 3、中断系统、中断系统第三章 6-24三、分支程序与循环程序设计三、分支程序与循环程序设计 课间休息第三章 1-1本章重点:本章重点:指令的寻址方式、功能、使用方法指令的寻址方式、功能、使用方法 程序设计的一般方法和技巧程序设计的一般方法和技巧讲授内容:MCS-51MCS-51单片机的寻址方式单片机的寻址方式 MCS-51MCS-51单片机指令分类单片机指令分类程序设计方法和算法分析程序设计方法和算法分析 应用程序设计举例应用程序设计举例第三章第三章MCS-51MCS-51单片机的指令系统与程序设计单片机的指令系统与程序设计第一节第一节 MCSMCS5151单片机的寻址方式单片机的寻址方式 MCS-51单单片片机机的的指指令令系系统统共共有有111条条指指令令,7种种寻寻址方式,共分为五大类址方式,共分为五大类 MCS-51MCS-51指令系统简介:指令系统简介:n1 1、指令所包含的内容、指令所包含的内容n操作码:规定指令的操作功能操作码:规定指令的操作功能n操作数:指令操作的具体对象(地址、数据)操作数:指令操作的具体对象(地址、数据)n2 2、指令格式、指令格式n 单字节指令:单字节指令:n 双字节指令:双字节指令:n 三字节指令三字节指令第三章 1-2在在MCS-51系列单片机的指令中,常用的符号:系列单片机的指令中,常用的符号: #data8#data8、#data16#data16:分别表示:分别表示8 8位、位、1616位立即数。位立即数。 directdirect:片片内内RAMRAM单单元元地地址址(8 8位位),也也可可以以指指特特殊殊功功能能寄寄存存器器的的地地址址或或符号名称。符号名称。 addr11addr11、addr16addr16:分别表示:分别表示1111位、位、1616位地址码。位地址码。 relrel:相对转移指令中的偏移量,为:相对转移指令中的偏移量,为8 8位带符号数(补码形式)。位带符号数(补码形式)。 bitbit:片内:片内RAMRAM中(可位寻址)的位地址。中(可位寻址)的位地址。 A A:累加器:累加器A A;ACCACC则表示累加器则表示累加器A A的地址。的地址。 RnRn:当前寄存器组的:当前寄存器组的8 8个工作寄存器个工作寄存器R0R0R7R7。 RiRi:可用作间接寻址的工作寄存器,只能是:可用作间接寻址的工作寄存器,只能是R0R0、R1R1。:间接寻址的前缀标志。:间接寻址的前缀标志。第三章 1-3第一节第一节 MCSMCS5151单片机的寻址方式单片机的寻址方式一、立即寻址一、立即寻址立立即即寻寻址址是是指指在在指指令令中中直直接接给给出出其其操操作作数数,该该操操作作数数称称为为立立即即数数。为为了了与与直直接接寻寻址址指指令令中中的的直直接接地地址址相相区区别别,在在立立即即数数前前面面必必需需加加上上前前缀缀“# #”。例如:例如:MOV R0,#30H寻址方式寻址方式二、直接寻址二、直接寻址直直接接寻寻址址是是指指在在指指令令中中直直接接给给出出存存放放数数据据的的地地址址(注注意意:不不是是立立即即数数,并并且且只只限限于于片片内内RAM范范围围)。直直接接寻寻址址只只能能访访问问特特殊殊功功能能寄寄存存器器、内内部部数据存储器和位地址空间。数据存储器和位地址空间。例如:例如:MOV A,30H 比较以上两指令的区别比较以上两指令的区别第三章 1-4 三、寄存器寻址三、寄存器寻址寄存器寻址是指指令中的操作数为寄存器中的内容。寄存器寻址是指指令中的操作数为寄存器中的内容。例如:例如:MOVA,R1第三章 1-5四、寄存器间接寻址四、寄存器间接寻址寄存器间接寻址是指指令中的操作数在寄存器的内容所指的地址单元中。寄存器间接寻址是指指令中的操作数在寄存器的内容所指的地址单元中。例如:例如:MOV R1,#30H;把立即数;把立即数30H送送R1寄存器寄存器 MOVA,R1;把;把30H单元中的数送到单元中的数送到A中中五、变址寻址五、变址寻址变变址址寻寻址址用用于于访访问问程程序序存存储储器器中中的的一一个个字字节节,该该字字节节的的地地址址是是:基基址址寄寄存存器(器(DPTR或或PC)的内容与变址寄存器)的内容与变址寄存器A中的内容之和。中的内容之和。例如:例如: MOV DPTR,#3000H ;立即数;立即数3000H送送DPTR MOV A,#02H ;立即数;立即数02H送送A MOVC A,A+DPTR ;取;取ROM中中3002H单元中的数送单元中的数送A 六、相对寻址六、相对寻址 以当前值为基准,加上相对偏移量以当前值为基准,加上相对偏移量relrel形成转移地址形成转移地址转转移移范范围围:以以当当前前值值起起始始地地址址,相相对对偏偏移移在在字字节节单元之间。单元之间。相对寻址方式为相对转移指令所采用。相对寻址方式为相对转移指令所采用。转移的目的地址为:转移的目的地址为:目的地址目的地址=转移指令所在地址转移指令所在地址+转移指令字节数转移指令字节数+rel第三章 1-6七、位寻址七、位寻址位位寻寻址址是是指指对对片片内内RAMRAM的的位位寻寻址址区区(20H2FH)、可可以以位位寻寻址址的的专专用用寄存器的各位,并进行位操作的寻址方式。寄存器的各位,并进行位操作的寻址方式。例如:例如:MOVC,00H;把;把20H单元中单元中D0位的值送位的值送C位位MOVP1.0,C;把把C位位中中的的值值送送P1口口的的D0位位SETB20H.0;把;把00H00H位置位置1 1位地址的表示方法位地址的表示方法位名称位名称 例:例:CY、RS0寄存器名加序号寄存器名加序号 例:例:ACC.1、P0.1字节地址加序号字节地址加序号 例:例:20H.3直接位地址直接位地址 例:例:00H、 07H第三章 1-7操作数的操作数的7 7种寻址方式和寻址的空间种寻址方式和寻址的空间寻址方式寻址方式相关寄存器相关寄存器寻址的空间寻址的空间立即寻址立即寻址程序存储器程序存储器ROM 直接寻址直接寻址片内片内RAM和和SFR寄存器寻址寄存器寻址R0R7,A,B,DPTRR0R7,A,B,DPTR寄存器间接寄存器间接寻址寻址R0,R1片内片内RAMR0,R1,DPTR片外片外RAM变址寻址变址寻址A+PC,A+DPTRROM区区相对寻址相对寻址PCROM区区位寻址位寻址可位寻址的可位寻址的SFR片内片内RAM20H2FH,SFR可寻址位可寻址位第三章 1-8MCSMCS5151汇编语言指令格式如下:汇编语言指令格式如下:标号:操作码标号:操作码 操作数操作数1 1,操作数,操作数2 2,操作数,操作数3 3 ;注释;注释 其其中中标标号号实实际际上上为为符符号号地地址址,表表示示这这条条指指令令在在程程序序存存储储器器中中的的存存放放首首地地址址,以以字字母母开开始始,后后可可跟跟1818个个字字母母或或数数字,但标号不能用操作码或专用符号。字,但标号不能用操作码或专用符号。操作码规定了指令的具体操作。操作码规定了指令的具体操作。指指令令中中的的操操作作数数为为指指令令的的具具体体操操作作对对象象,有有些些指指令令中中有有3 3个操作数,有些只有一个,有些无操作数,仅有操作码。个操作数,有些只有一个,有些无操作数,仅有操作码。第三章 2-1第二节第二节 MCSMCS5151单片机的指令分类单片机的指令分类第三章 2-2指令分类:指令分类:一、数据传送与交换类指令一、数据传送与交换类指令特点:特点:除第一操作数为除第一操作数为A的指令影响的指令影响P位外,其它并不影响标志位位外,其它并不影响标志位有三种传送指令有三种传送指令MOV片内片内RAM和特殊功能寄存器之间的传送和特殊功能寄存器之间的传送MOVX片外片外RAM与与ACC之间的传送之间的传送MOVC程序存储器的数据送程序存储器的数据送ACC 1用于片内用于片内RAM传送的指令(传送的指令(16条)条) 1 1)以累加器)以累加器CC 为目的操作数为目的操作数 ,n;.,direct;,Ri(R1,R0),#data第三章 2-32 2)以)以 RnRn 为目的操作数为目的操作数 n, An, A n, directn, direct n, #datan, #data 3 3)以直接地址为目的操作数)以直接地址为目的操作数 directdirect, directdirect,RnRn directdirect,#data#data directdirect,RiRi(R1R1,R0R0) directdirect,direct direct ; 4 4)以)以 寄存器间址寄存器间址 为目的操作数为目的操作数 Ri, directdirect; Ri, A A; Ri, #data#data5 5)1616位数据送数据指针位数据送数据指针 DPTRDPTR DPTRDPTR,#Ddata16#Ddata16例如例如:MOV30H,#7AH ;将立即数;将立即数7AH送片内送片内RAM 30H单元中单元中 MOVR0,#30H ;将立即数;将立即数30H送送R0寄存器寄存器 MOVA,R0 ;将;将R0指定的指定的30H中的数中的数7AH送送A中中MOV DPTR,#1000H ;将;将1000H送送DPTR寄存器寄存器MOVXDPTR,A练习:将练习:将R1R1中的内容送中的内容送R2R2第三章 2-42用于片外用于片外RAM传送的指令(共传送的指令(共4条)条) 片片外外RAM单单元元的的地地址址为为16位位,一一般般用用DPTR间间接接寻寻址址;也也可可使使用用Ri来来间接寻址(低间接寻址(低8 8位编址时)。位编址时)。1)外部外部RAM低低256256字节单元与之间的传送字节单元与之间的传送 MOVX,i MOVXi,)外部外部RAM单元与之间的传送单元与之间的传送 MOVX ,DPTR MOVX DPTR, 例例: : MOVDPTR,#2000HMOVX,DPTRDPTR ;将外部将外部RAM中中2000H单元内容单元内容A A思考:思考:将片内RAM 50H单元 内容 片外RAM 5000H单元第三章 2-53 3用于用于ROM传送的指令(共传送的指令(共2 2条)条)MOVC A,A+DPTR;(A)(A)+DPTR)(A)(A)+DPTR))MOVC A,A+PC ;(A)(A)+(PC)(A)(A)+(PC) 以以PC的当前值为基址,的当前值为基址,A为变址为变址例例3-1:在在ROM 1000H开开始始存存有有5个个字字节节数数,编编程程将将第第二二个个字字节节数数取取出出送片内送片内RAM 30H单元中。程序段如下:单元中。程序段如下: MOV DPTR,#1000H ;置;置ROM地址指针(基址)地址指针(基址)DPTR MOV A,#01H ;表内序号送;表内序号送A(变址)(变址) MOVC A,A+DPTR ;从;从ROM 1000H单元中取数送到单元中取数送到A MOV 30H,A ;再存入内;再存入内RAM 30H中中 ORG 1000H ;伪指令,定义数表起始地址;伪指令,定义数表起始地址TAB: DB 55H,67H,9AH,;在;在ROM 1000H开始的空间中定义开始的空间中定义5个个 ; 字节字节 第三章 2-6例例3-2:设设某某数数N已已存存于于20H单单元元(N10),查查表表求求N平平方方值值,存存入入21H单元。单元。 程序段如下:程序段如下: MOV A,20H;取数;取数N ADD A,#01;加查表偏移量;加查表偏移量 MOVC A,A+PC;查表;查表 NOP TAB:DB 00H,01H,04H,09 ;定义数表;定义数表 由于由于PC为程序计数器,总是指向下一条指令的地址在执行第二条指令为程序计数器,总是指向下一条指令的地址在执行第二条指令“MOVC A,A+PC”时,时,在查表前应在在查表前应在A累加器中加上该指令与表之间的偏累加器中加上该指令与表之间的偏移量。移量。 用用DPTR查表时,表格可放在查表时,表格可放在ROM的的64K范围(不用考虑偏移量)范围(不用考虑偏移量),用,用MOVCA,A+PC指令时则必须把表格就放在该条指令下面开始的指令时则必须把表格就放在该条指令下面开始的255个字个字节的空间中。节的空间中。第三章 2-74交换指令(共5条)其其中中3条条为为整整个个字字节节相相互互交交换换,XCHD指指令令为为低低4位位相相互互交交换换,SWAP为为ACC中的高、低中的高、低4位互换。位互换。1 1)字节交换)字节交换 XCH A, Rn ; (A)(Rn) A, Rn ; (A)(Rn) XCH A, direct A, directXCHA,Ri2)半字节交换)半字节交换XCHDA,Ri;SWAPA例:已知(例:已知(A)=34H,(,(R6)=29H,执行以下指令后,(执行以下指令后,(A)=?XCHA,R6SWAPA思考:用不同的方法实现片内思考:用不同的方法实现片内RAM(20H)R1R1第三章 2-7-25堆栈操作指令(共2条)堆堆栈栈是是在在内内RAM开开辟辟的的一一个个数数据据的的暂暂存存空空间间,遵遵守守“后后进进先先出出”原原则则操作,其地址指针为操作,其地址指针为SP,它指出栈顶的位置,复位时,它指出栈顶的位置,复位时SP=07H。入栈:入栈:PUSH direct ;SP先增先增1,再将数据压栈。,再将数据压栈。出栈;出栈;POP direct ;数据先出栈,再;数据先出栈,再SP减减1。例如,已知(例如,已知(A)=44H,(,(30H)=55H,执行,执行 MOVSP,#5FH ;栈起点设置为;栈起点设置为5FH PUSH ACC ;A中的中的44H压到压到60H中保存中保存 PUSH 30H ;30H中的中的55H压到压到61H中保存中保存 POP30H ;把;把61H中的中的55H弹出到弹出到30H POPACC ;把;把60H中的中的44H弹出到弹出到A中中【例例】 将片内将片内RAM 30H单元与单元与40H单元中的内容互换。单元中的内容互换。方法1(直接地址传送法): MOV31H,30H MOV30H,40H MOV40H,31H SJMP$方法2(间接地址传送法): MOVR0,#40H MOVR1,#30H MOVA,R0 MOVB,R1 MOVR1,A MOVR0,B SJMP$方法4(字节交换传送法): MOVA,30H XCHA,40H MOV30H,A SJMP$方法3(堆栈传送法): PUSH30H PUSH40H POP30H POP40H SJMP$第三章 2-8二、算术运算类指令二、算术运算类指令 算算术术运运算算类类指指令令有有加加、减减、乘乘、除除法法指指令令,增增1和和减减1指指令令,十十进进制制调调整整指指令令,共共24条条,使使用用时时应应注注意意判判断断各各种种结结果果对对哪哪些些标标志志位位(CY、OV、AC、P)产生影响。)产生影响。1.不带进位的加法指令不带进位的加法指令ADD(4条)条)ADD A,Rn;A(A)+(Rn)ADD A,direct;A(A)+(direct)ADD A,Ri;A(A)+(Ri)ADD A,#data;A(A)+data练习练习3-3 98H+75H分析各标志位的置位情况分析各标志位的置位情况加法和减法指令的第一操作数都加法和减法指令的第一操作数都是是A,并将运算结果放在,并将运算结果放在A中中2.带进位的加法指令带进位的加法指令ADDC(4条)条) ADDCA,Rn;A(A)+(Rn)+(CY)ADDCA,direct;A(A)+(direct)+(CY)ADDCA,Ri;A(A)+((Ri))+(CY)ADDCA,#data;A(A)+data+(CY)例如求例如求 5688H+2396H低字节用低字节用ADD指令,高字节用指令,高字节用ADDC指令指令第三章 2-93. 带借位减法指令带借位减法指令SUBB(4条)条)SUBBA,Rn;A(A)-(Rn)-(CY)SUBBA,direct;A(A)-(direct)-(CY)SUBBA,Ri;A(A)-((Ri))-(CY)SUBBA,#data;A(A)-data-(CY)减法只有带借位减法指令,在不须减借位时可先清减法只有带借位减法指令,在不须减借位时可先清CY。4.乘法指令乘法指令MUL(1条)条) MULAB;BA(A)(B) 5.除法指令除法指令DIV(1条)条) DIVAB;AA/B(商)(商)B余数余数说说明明:无无符符号号数数相相除除,当当除除数数(B)=0时时,结结果果为为无无意意义义,并并置置OV=1;CY位总是位总是0。说说明明:当当积积大大于于255(0FFH)时时,即即积积的的高高字字节节B不不为为0时时,置置OV=1,否则,否则OV=0;CY位总是位总是0。第三章 2-106.加1指令INC(5条)INCAINCRnINCdirectINCRiINCDPTR7.减减1指令(指令(4条)条) 注意:没有对注意:没有对DPTR DPTR 的减的减1 1操作指令操作指令 DECADECRnDECdirectDECRi 只只有有INC A 和和 DEC A这这两两条条指指令令影影响响影影响响P,其其他他不影响任何标志。不影响任何标志。 8.十进制调整指令十进制调整指令DAA(1条)条) ADD、ADDC指指令令都都是是对对8位位二二进进制制数数进进行行加加法法运运算算,当当两两个个BCD码码数数进进行行加加法法时时,必必须须增增加加一一条条DA A指指令令(对对其其结结果果进进行行调调整整),否否则则结结果果就就会出错。会出错。 注意:注意: DA A指令只能用于加法指令后指令只能用于加法指令后第三章 2-11三三.逻辑运算与循环类指令逻辑运算与循环类指令特点:是当特点:是当A A作目的操作数(第一操作数)时,影响作目的操作数(第一操作数)时,影响P P位;带位;带进位的移位指令影响进位的移位指令影响CyCy位,其余都不影响位,其余都不影响PSWPSW。第二节第二节 MCS-51 MCS-51 单片机的指令分类单片机的指令分类1. 逻辑逻辑“或或”运算指令运算指令ORL (6条)条)2. 逻辑逻辑“与与”运算指令运算指令ANL (6条)条)3. 逻辑逻辑“异或异或”运算指令运算指令XRL (6条)条) 此类指令都是按位操作,其中有此类指令都是按位操作,其中有4条指令的第一操作数都为条指令的第一操作数都为A。另外。另外两条指令的第一操作数为两条指令的第一操作数为direct,第二操作数为,第二操作数为A和和data。逻辑运算类指令:逻辑运算类指令:如:逻辑或指令格式:如:逻辑或指令格式:,n,direct,i,datadirect,direct,data用用AND指令可对指定位或指定的一些位进行屏蔽指令可对指定位或指定的一些位进行屏蔽(清零清零) 。 例如:例如:ANL A,#0FH;将;将A中的高中的高4位清零位清零 #0FH称为屏蔽字,屏蔽字中的称为屏蔽字,屏蔽字中的0对应于需要清对应于需要清0的位。的位。用用ORL指令可对一些指定位置指令可对一些指定位置1。例如:例如:ORL A,#80H 可将可将A中的最高位置中的最高位置1,其他位保持不变。,其他位保持不变。通过通过XRL指令用指令用“1”与某数的对应位异或,可将该位取反,与某数的对应位异或,可将该位取反,用用“0”与某数的对应位异或,可将指定位不变;与某数的对应位异或,可将指定位不变; 逻辑运算类指令的常用功能:逻辑运算类指令的常用功能: 求反指令(求反指令(1条)条) CPL A;对累加器;对累加器A的内容各位求反,结果送回的内容各位求反,结果送回A中,影响中,影响P位。位。 清清0指令(指令(1条)条) CLR A ;将累加器将累加器A的内容清的内容清0。第三章 2-12注意:两条指令仅对A有效 循环移位指令(循环移位指令(4条,条,仅对A有效) 其中有两条不带其中有两条不带CY位的逐位循环移位一次指令,不影响位的逐位循环移位一次指令,不影响PSW。两条带两条带CY位的逐位循环移位一次指令,仅影响位的逐位循环移位一次指令,仅影响CY位。位。第三章 2-13 RL ARL A;左移;左移 RR ARR A;右移;右移 RLC ARLC A;带进位;带进位CY的左移的左移 RRC ARRC A;带进位;带进位CY的右移的右移 CYRLD7D0D7D0CYRLCCYD7D0RRD7D0CYRRC例:将双字节数例:将双字节数(R2)()(R3)右移一位右移一位 CLRCMOVA,R2RRCAMOVR2,AMOVA,R3RRCAMOVR3,A分析执行过程分析执行过程第三章 2-14四、控制程序转移类指令四、控制程序转移类指令第三章 2-15 控制程序转移类指令主要功能是控制程序转移到新的控制程序转移类指令主要功能是控制程序转移到新的PC所指所指地址去执行程序。地址去执行程序。1.无条件转移指令(无条件转移指令(4条)条)(1)长转移指令长转移指令LJMP addr16 ;PCaddr16范围范围 64K64K(2)绝对转移指令绝对转移指令 AJMP addr11 ;PC100addr11 指令中包含有指令中包含有11位的目的地址(位的目的地址(a10 a9 a0),), PC 高高5位不变位不变 * *转移范围转移范围2K2K字节字节 目的地址必须和目的地址必须和 PC+2 PC+2 在同一页内在同一页内* *机器码为两字节机器码为两字节 a10 a9 a8 0 0 0 0 1a10 a9 a8 0 0 0 0 1 a7-a0 a7-a0 第三章 2-16(3)短(相对)转移指令短(相对)转移指令SJMPrel;PCPC+2+rel其其目目的的地地址址是是由由PC中中的的当当前前值值和和指指令令的的第第二二字字节节中中带带符符号号的的相相对对地地址址相相加加而而成成的的。因因此此本本指指令令转转移移的的范范围围为为:下下一一条条指指令令的的(128127)字节内,即本指令的字节内,即本指令的(-126-126+129+129)字节内。)字节内。 实际应用时,实际应用时,addr16、addr11、rel一般用符号地址形式。一般用符号地址形式。(4)间接转移指令(又称散转指令)间接转移指令(又称散转指令)JMPA+DPTR;PC(A)+(DPTR 目的地址由指针目的地址由指针DPTR和变址和变址A的内容之和形成,的内容之和形成,范围达范围达64K。第三章 2-162条件转移指令(条件转移指令(8条)条) 此类指令此类指令均为相对寻址均为相对寻址指令。指令。(1 1)累加器判零转)累加器判零转 JZrel;A=0转,转,PC=PC+2+relJNZrel;A0转转(2 2)CY位条件判转位条件判转 JCrel;CY=1转转PC=PC+2+relJNCrel;CY=0转转第三章 2-13(3 3)数值比较转)数值比较转 均为三字节均为三字节 CJNE ACJNE A,#data#data,relrel CJNE A CJNE A,directdirect,relrel CJNE Rn CJNE Rn,#data #data ,relrel CJNE Ri,#data, rel CJNE Ri,#data, rel指令功能为两数比较不相等指令功能为两数比较不相等 转移转移, ,操作过程为操作过程为第一数减第二数第一数减第二数 状态标志送状态标志送PSWPSW,但不改变原来,但不改变原来 的操作数的操作数注意:参与比较的数为无符号数第三章 2-14(4 4)可寻址位条件判转)可寻址位条件判转 (三字节)(三字节)JB bitJB bit,relrel; (bitbit)=1 =1 转转JNB bitJNB bit,rel rel ;(;(bitbit)=0 =0 转转JBC bitJBC bit,rel rel ;(;(bitbit)=1 =1 转,转, 并将该位清零并将该位清零(5)循环控制指令)循环控制指令DJNZ DJNZ Rn,relDJNZ Rn,rel DJNZ direct,rel DJNZ direct,rel; 指令功能是把源操作数减指令功能是把源操作数减1,结果送回原操作数中,再判,结果送回原操作数中,再判结果不为结果不为0就转到目的地去,否则继续下面一条指令执行。就转到目的地去,否则继续下面一条指令执行。 主要应用在循环结构的编程中,作循环结束控制用。主要应用在循环结构的编程中,作循环结束控制用。 第三章 2-15 例例2 2:比较两无符号数的大小 求R1、R2中较大的数,结果存R3 中。解:解: ORG0000HAJMPMAINORG0030HMAIN:MOVA,R1CJNEA,02H,NEXTNEXT:JC/JNCDONE(?)MOVA,R2DONE:MOVR3,ALP:SJMPJPEND条件转移指令的应用条件转移指令的应用:例例3-7:根据A中的数是大于/等于/小于64H这三种情况去执行三种不同的处理程序。第三章 2-163.子程序调用及返回指令(子程序调用及返回指令(4条)条)(1)长调用指令)长调用指令 LCALL addr16 ;PCPC+3,SPSP+1,(,(SP)PC710SPSP+1,(,(SP)PC158,PCaddr16(2)绝对调用指令)绝对调用指令 ACALL addr11;PCPC+2,SPSP+1,(SP)PC70SPSP+1,(,(SP)PC158,PC100addr1第三章 2-17(3)子程序返回指令)子程序返回指令RET;PC158(SP),),SPSP-1;PC70(SP),),SPSP-1从从堆堆栈栈中中弹弹出出(断断点点)地地址址值值给给PC(先先高高后后低低,栈栈指指针针减减2),使使程序从该程序从该PC值处开始执行程序。不影响值处开始执行程序。不影响PSW。(4)中断返回)中断返回 RETI ;PC158(SP),),SPSP-1;PC70(SP),),SPSP-1 除除具具有有RET指指令令的的所所有有功功能能外外,还还将将自自动动清清除除优优先先级级状状态态触触发发器器。RETI指令用在中断服务子程序中,作最后一条返回指令。指令用在中断服务子程序中,作最后一条返回指令。 注意:不能用注意:不能用RETRET指令代替指令代替RETI。 4空操作指令(空操作指令(1条)条)NOP;指令的执行时间为一个机器周期,占一个字节。指令的执行时间为一个机器周期,占一个字节。1.位传送指令(位传送指令(2条)条)MOVC,bit;C(bit)MOVbit,C;bitC指指令令中中必必须须有有一一个个位位操操作作数数是是布布尔尔累累加加器器C,另另一一个个才才可可以以是是直直接接可寻址的位。可寻址的位。例:例:MOV P1.5,C;把;把C中的值送到中的值送到P1.5口线输出口线输出2.位修改指令(位修改指令(6条)条)CLRC;C0CLRbit;(;(bit)0SETBC;C1SETBbit;(;(bit)1CPLC;C/CCPLbit;(;(bit)/(bit)第三章 2-18五、位操作类指令五、位操作类指令这组指令用来实现对位清这组指令用来实现对位清0,取反,置取反,置1,不影响其它标志,不影响其它标志位。位。第三章 2-19五、位操作类指令五、位操作类指令3.位逻辑运算指令(位逻辑运算指令(4条)条) 这组指令的第一操作数必须是这组指令的第一操作数必须是C,两位逻辑运算的结果送,两位逻辑运算的结果送C中,式中的斜杠是位取反,但并不影响操作数本身的值。中,式中的斜杠是位取反,但并不影响操作数本身的值。 ANLC,bit;CC(bit)ANLC,/bit;CC/(bit)ORLC,bit;CC(bit)ORLC,/bit;CC/(bit)第三章 3-1用汇编语言编写程序用汇编语言编写程序,一般可分为以下几个步骤:一般可分为以下几个步骤:1)分析题意分析题意,确定算法确定算法;2)设计程序流程图设计程序流程图;3)确定数据结构:合理地选择和分配内存单元以确定数据结构:合理地选择和分配内存单元以及工作寄存器及工作寄存器;4)编写源程序:编写源程序:5)上机调试程序。上机调试程序。第三节第三节 程序设计方法程序设计方法 MCS-51单片机汇编语言,包含两类不同性质的指令。单片机汇编语言,包含两类不同性质的指令。(1)基基本本指指令令:即即指指令令系系统统中中的的指指令令。它它们们都都是是机机器器能够执行的指令,每一条指令都有对应的机器码。能够执行的指令,每一条指令都有对应的机器码。(2)伪伪指指令令:汇汇编编时时用用于于控控制制汇汇编编的的指指令令。它它们们都都是是机器不执行的指令,无机器码机器不执行的指令,无机器码汇编语言的语句格式汇编语言的语句格式汇编语言一般由四部分组成。汇编语言一般由四部分组成。标号:标号:操作码操作码操作数操作数;注释;注释START: MOV A,30H;A(30H)第三章 3-2(1)(1)标号段标号段 标号是用户根据需要设定的符号地址。通常是在一段程标号是用户根据需要设定的符号地址。通常是在一段程序的入口或程序的转向点设置一个标号。使用标号便于程序的阅读、修序的入口或程序的转向点设置一个标号。使用标号便于程序的阅读、修改及转移指令的书写。改及转移指令的书写。标号由英文字母开头的标号由英文字母开头的1 18 8个字母数字串组成。个字母数字串组成。 标号以标号以“:”结束,且同一个标号名在一个程序中只能使用一次,不结束,且同一个标号名在一个程序中只能使用一次,不能重复定义。能重复定义。(2)(2)操作码段操作码段即指令系统中的助记符。它规定了语句执行的操作属性,即指令系统中的助记符。它规定了语句执行的操作属性,是不可缺少的。是不可缺少的。(3)(3)操作数段操作数段操作数用于给指令的操作提供具体数据和地址。操作数用于给指令的操作提供具体数据和地址。操作数可以是一项或用逗号分开的两项、三项,也可以是空白操作数可以是一项或用逗号分开的两项、三项,也可以是空白( (例如例如DA DA A A 指令指令) )。(4)(4)注释段注释段注释用于对语句或一段程序进行解释和说明,有利于交流注释用于对语句或一段程序进行解释和说明,有利于交流和阅读。注释的长度和阅读。注释的长度不限,但应尽量简明扼要。注释与操作数之间用不限,但应尽量简明扼要。注释与操作数之间用“;”分开。分开。第三章 3-3一、伪指令简介一、伪指令简介 1.ORG汇编起始地址伪指令汇编起始地址伪指令指令格式:指令格式:ORGmm为为十十六六进进制制数数或或十十进进制制。它它规规定定了了它它下下面面的的程程序序或或数数表表应应从从ROM的的m地地址址处处开开始始存存放放。一一个个汇汇编编语语言言源源程程序序中中,可可以以多多次次使使用用ORG命命令令,地址一般应从小到大,且不能使各程序段出现重叠现象。地址一般应从小到大,且不能使各程序段出现重叠现象。第三章 3-42 END 汇编结束伪指令汇编结束伪指令 指令格式:指令格式: END END指令用于终止源程序的汇编工作。一般一个源程序只能有一个指令用于终止源程序的汇编工作。一般一个源程序只能有一个END。 3 EQU 赋值伪指令赋值伪指令 指令格式:指令格式: 标号名称标号名称 EQU 汇编符号或数汇编符号或数 EQU是是将将一一个个数数或或汇汇编编符符号号赋赋予予规规定定的的标标号号名名称称,汇汇编编程程序序会会自自动动将将EQU右右边边的的数数或或汇汇编编符符号号(地地址址或或常常数数)赋赋给给左左边边的的标标号号名名称称。所所以以应应先定义后使用。先定义后使用。 第三章 3-64DB 定义字节伪指令定义字节伪指令指令格式:指令格式:标号:标号: DB 字字节节常常数数或或数数表表。表表明明从从该该标标号号地地址址单单元开始定义一个或若干个字节的数。例如:元开始定义一个或若干个字节的数。例如: ORG 1000H TAB:DB 12H,34H,56H;从;从1000H单元开始存放数单元开始存放数 DB 78H,9AH,00H;换行,仍要先写;换行,仍要先写DB5DW 定义字伪指令定义字伪指令指令格式:标号:指令格式:标号:DW字常数或字数表字常数或字数表类类似似DB,但但DW指指从从该该标标号号地地址址单单元元开开始始,存存放放一一个个或或若若干干个个字字的的数数。例如:例如: ORG 1500H TAB1:DW 1234H,9AH,10伪伪指指令令DW则则定定义义1500H1505H单单元元的的内内容容依依次次为为12H、34H、00H、9AH、00H、0AH。第三章 3-76DS 预留空间伪指令预留空间伪指令指令格式:指令格式:标号:标号: DS表达式表达式DS指定从标号地址单元开始,保留若干字节单元备用。例如:指定从标号地址单元开始,保留若干字节单元备用。例如: TAB2: DS100;通知汇编程序从;通知汇编程序从TAB2开始保留开始保留100个字节单元,以备源程序另用。个字节单元,以备源程序另用。7BIT 位地址符号伪指令位地址符号伪指令指令格式:指令格式:标号名称标号名称BIT位地址位地址一般用来将位地址赋给标号名称,以用户编程和程序阅读。例如:一般用来将位地址赋给标号名称,以用户编程和程序阅读。例如:M0 BIT20H.0MOVC, M0二、顺序程序设计二、顺序程序设计第三章 3-9练习:将练习:将30H单元内的两位单元内的两位BCD码拆开并转换成码拆开并转换成ASCII码,存码,存入入RAM31H、32H两个单元中。两个单元中。ORG1000H MOVA,30H ;取值;取值 ANLA,#0FH ;取低;取低4位位ADDA,#30H ;转换成;转换成ASCII码码MOV32H,A ;保存结果;保存结果MOVA,30H ;取值;取值SWAPA ;高;高4位与低位与低4位互换位互换ANLA,#0FH ;取低;取低4位(原来的高位(原来的高4位)位)ADDA,#30H ;转换成;转换成ASCII码码MOV31H,A ;保存结果;保存结果 SJMP$ 结束取数据低4位转换成ASCII码存ASCII码取数据高4位转换成ASCII码存ASCII码开始条件满足?AYN(a)条件满足?ABNY(b)(c)A0A1AnK=0K=1K=nK=?第三章 3-10三、分支程序与循环程序设计三、分支程序与循环程序设计 1.分支程序分支程序第三章 3-11三、分支程序与循环程序设计三、分支程序与循环程序设计 例例3-13:设:设X,Y均为带符号数,均为带符号数,存放在地址为存放在地址为M和和N单元中单元中,编程计算编程计算Y=f(x)1当当x0Y=0当当x=0-1当当x0,则跳转到,则跳转到NEXT1MOVA,#0FFH ;当;当X0,01H01H送送ANEXT2:MOV N,A ;存结果;存结果 SJMP $例例313程序清单:程序清单:第三章 3-14当程序出现多重分支时,常用无条件间接转移指令实现散转当程序出现多重分支时,常用无条件间接转移指令实现散转。JMP A+DPTRMOV DPTR,#JTAB ;转移指令表首地址送DPTRMOV A,NAMBER ;转移分支编号(04)送AMOV B , #03H MUL ABJMP A+DPTR下面是一个实现5种分支转移的程序:JTAB: LJMP CASE0 LJMP CASE1 LJMP CASE2 LJMP CASE3 LJMP CASE4第三章 3-162循环程序循环程序循环程序一般包括如下四个部分:循环程序一般包括如下四个部分:(1)初始化)初始化(2)循环体)循环体(3)循环控制)循环控制(4)结束)结束循环程序按结构形式,有单重循环与多重循环。循环程序按结构形式,有单重循环与多重循环。在多重循环中,只允许外重循环嵌套内重循环。在多重循环中,只允许外重循环嵌套内重循环。不不允允许许循循环环相相互互交交叉叉,也也不不允允许许从从循循环环程程序序的的外外部部跳跳入入循环程序的内部。循环程序的内部。 循循环环/ /结结束束控控制制常常有有两两种种结结构构:一一种种为为计计数数器器控控制制循循环环结结构;一种为条件控制循环结构。循环程序的一般结构如图构;一种为条件控制循环结构。循环程序的一般结构如图第三章 3-17例例3-15:在内:在内RAM40H开始存放了一串单字节数,串长度为开始存放了一串单字节数,串长度为8,编程求其中,编程求其中最大值并送最大值并送R7中。中。思路:对数据块中的数逐一两两相比较,较大值暂存于思路:对数据块中的数逐一两两相比较,较大值暂存于A中,直到整串比完,中,直到整串比完,A中的值就为最大值。中的值就为最大值。第三章 3-19 MOV R0,#40H ;数据块首址送地址指针;数据块首址送地址指针R0 MOV R2,#7 ;循环次数送;循环次数送R2 MOV A,R0 ;取第一个数,当作极大值;取第一个数,当作极大值LOOP:INC R0 ;修改地址指针;修改地址指针 MOVB,R0 ;暂存;暂存B中中 CJNE A,B,NEXT ;比较后产生标志(;比较后产生标志(CY)NEXT : JNC NEXT1 ;CY=0? MOVA,R0 ;更大数送;更大数送ANEXT1:DJNZR2,LOOP ;循环次数结束?循环次数结束? MOV R7,A ;存最大值;存最大值(1)单循环程序)单循环程序第三章 3-20练习:外部练习:外部RAM3000H开始有开始有 5050个数传送到内部个数传送到内部RAM30H开始的区域开始的区域算法分析:取地址指针算法分析:取地址指针DPTR=3000H、 R0=30H、计数器、计数器R7=50 MOV DPTP,#3000H MOV R0,#30H MOV R7,# 32HLOOP:MOVX A,DPTR MOV R0,A INC DPTR INC R0 DJNZ R7,LOOP SJMP $ END条件判断控制循环条件判断控制循环例例3-16:设设在在外外RAM的的TAB处处开开始始有有一一个个ASC字字符符串串,该该字字符符串串以以0结尾,编程把他们从结尾,编程把他们从80C51的的P1口输出。口输出。第三章 3-21 ORG0000H MOV DPTR,#TAB ;设字符串首地址指针;设字符串首地址指针SOUT:MOVX A,DPTR ;取字符;取字符 JZ NEXT ;整串结束则转;整串结束则转跳跳MOVP1,A INCDPTR ;修改地址指针;修改地址指针SJMPSOUT ;没结束继续取数发送;没结束继续取数发送 NEXT: ;结束处理;结束处理 ORG2000HTAB: DB XXH,XXH,定义定义ASC字符串字符串DB XXH,XXH,00H;以;以0结尾结尾END(2 2)多重循环)多重循环多多重重循循环环就就是是循循环环的的嵌嵌套套,既既一一个个循循环环程程序序包包含含了了其其他他循循环环程程序序,即即循循环环内内套套循循环环的的结结构构形形式式,也也称称多多重重循循环环。一一般般内内层层循循环环完完成成后后,外外层才执行一次,然后再逐次类推,层次分明。层才执行一次,然后再逐次类推,层次分明。 第三章 3-23外循环外循环中循环中循环内循环内循环外循环外循环内循环内循环外循环外循环内循环内循环内循环内循环(a)嵌套正确)嵌套正确(b)嵌套正确)嵌套正确(c)交叉不正确)交叉不正确第三章 3-24三、分支程序与循环程序设计三、分支程序与循环程序设计例例3-17:2ms延时程序延时程序,已知晶振频率为已知晶振频率为12MHZ,则机器周期为,则机器周期为1us。解:解:DELAY2ms:MOVR7,#10;1T DL1:MOV R6,#48;1T DL2:NOP;1T NOP;1T DJNZ R6, DL2;2T DJNZ R7, DL1;2T RET;2T该段程序耗时为该段程序耗时为: 1+1+(1+1+2)48+210+2 = 1953 (us)第三章 4-1四、子程序及其调用程序设计四、子程序及其调用程序设计所谓调用子程序,暂时中断主程序的执行,而转到子程序的入口地址去所谓调用子程序,暂时中断主程序的执行,而转到子程序的入口地址去执行子程序,子程序执行完后返回主程序继续执行。执行子程序,子程序执行完后返回主程序继续执行。子程序的形式与要求:子程序的形式与要求:1)名称、地址、功用()名称、地址、功用(标明子程序的入口地址或名称,以方便调用);标明子程序的入口地址或名称,以方便调用);2)指出入口与出口参数,以正确进行)指出入口与出口参数,以正确进行参数传递参数传递; 参数传递参数传递 在调用子程序前,主程序应先把有关参数(即入口参在调用子程序前,主程序应先把有关参数(即入口参数)放到某些约定的位置,子程序在运行结束返回前,也应该把运算数)放到某些约定的位置,子程序在运行结束返回前,也应该把运算结果(出口参数)送到约定的位置结果(出口参数)送到约定的位置/单元。单元。常采常采用工作寄存器或累加器、用工作寄存器或累加器、地址指针寄存器或堆栈。地址指针寄存器或堆栈。3 3)注意保护现场)注意保护现场5 5)子程序的末尾用)子程序的末尾用RET返回指令结束;返回指令结束; 第三节第三节 程序设计方法程序设计方法 第三章 4-2有关指令:有关指令:1、进栈操作、进栈操作PUSHdirect;2、出栈操纵、出栈操纵POPdirect;3 3、子程序的调用、子程序的调用1 1)绝对调用指令)绝对调用指令ACALL addrllACALL addrll;断点入栈;断点入栈-PC-PC当前值,当前值, SP SP (SPSP)+2+2 PC11 PC111515保持不变保持不变,addr11-PC,addr11-PC底底1111位位2)长调用指令)长调用指令LCALLaddr16;(;(PC)+3-PC,断点入栈断点入栈转地址转地址addr16执行执行4.子程序返回指令子程序返回指令RET;PC158(SP),),SPSP-1;PC70(SP),),SPSP-11. 1. 用累加器用累加器A A或工作寄存器或工作寄存器RnRn传递参数传递参数第三章 4-4例例1:把:把A中一个十六进制数的中一个十六进制数的ASC字符转换为一位十六进制数。字符转换为一位十六进制数。主程序部分:主程序部分:START:; MOV A,#34H;设置入口参数于;设置入口参数于A中中子程序:子程序:ASCH: CLRC SUBB A,#30H CJNE A,#10,$+3 ;$+3为下条指令的首址为下条指令的首址 JC NEXT ;(A)10,转,转NEXT SUBB A,#07H ;(A)0AH,则再减,则再减07H(共减(共减37H)NEXT: NOP RET 第三章 4-52. 2. 用寄存器作指针来传递参数用寄存器作指针来传递参数 例例2:将片内一组区域清零子程序如下:将片内一组区域清零子程序如下:ZOER:CLRALOOP:MOVR0,A;INCR0DJNZR2,LOOP;RET 分析入口参数分析入口参数?出口参数出口参数?编程完成编程完成20H28H和和30H39H两段区域清零两段区域清零.第三章 4-6例例319(P54):在在内内RAM40H、50H开开始始的的空空间间中中,分分别别存存有有单单字字节节的的无无符符号号数数据据块块,长长度度分分别别为为12和和8。编编程程求求这这两两个个数数据据块块中中的的最最大大数数,存存入入MAX单单元。元。思路:用子程序求某数据块的最大值,思路:用子程序求某数据块的最大值,入口参数:数据块的首地址存入入口参数:数据块的首地址存入R0,长度存入,长度存入R2,出口参数在,出口参数在A中,即最大数。中,即最大数。FMAX: MOV A,R0 ;取第一个数;取第一个数LOOP0:INC R0 MOV B,R0 ;取下一个数;取下一个数 CJNE A,B,$+3 ;比较;比较 JNC LOOP1 MOV A,B ;把大的数送;把大的数送ALOOP1:DJNZ R2,LOOP0 RET ;出口参数在;出口参数在A中中第三章 4-7 主程序主程序 ORG 1000H MAX EQU 30H MOV R0,#40H;设置入口参数;设置入口参数R0,R2 MOV R2,#12-1 ACALL FMAX MOV MAX,A;出口参数暂存;出口参数暂存MAX中中 MOV R0,#50H;设置入口参数;设置入口参数R0,R2 MOV R2,#8-1 ACALL FMAX CJNE A,MAX,$+3;比较两个数中较大值;比较两个数中较大值 JC NEXT MOV MAX,ANEXT:SJMP $方方法法:在在调调用用子子程程序序之之前前,先先把把参参与与运运算算的的操操作作数数压压入入堆堆栈栈;在在执执行行子子程程序序过过程程中中,通通过过堆堆栈栈指指针针SPSP间间接接访访问问到到堆堆栈栈中中的的操操作作数数,取取出出参参加加运运算算,最最后后把把运运算算的的结结果果压压入入堆堆栈栈,由由主主程程序序再从堆栈中弹出结果。再从堆栈中弹出结果。 注意问题:由于调用子程序时,主程序的断点地址被自动注意问题:由于调用子程序时,主程序的断点地址被自动压入堆栈,占用了堆栈的两个字节,所以在子程序中弹出参数压入堆栈,占用了堆栈的两个字节,所以在子程序中弹出参数时一定要用修改时一定要用修改SPSP指针,指向该参数;同时,在子程序返回指指针,指向该参数;同时,在子程序返回指令令RETRET之前一定要作相应修改之前一定要作相应修改SPSP指令,以便指令,以便SPSP指向断点地址,确指向断点地址,确保能正确返回主程序。保能正确返回主程序。 第三章 4-83.3.用堆栈来传递函数用堆栈来传递函数一、非数值运算程序设计举例一、非数值运算程序设计举例例例3-21:将:将8位二进制数据转换为压缩式位二进制数据转换为压缩式BCD码。码。第三章 4-10第四节第四节 应用程序设计举例应用程序设计举例 例例3-23: 3-23: 编程求带符号数组中正数、零和负数的个数。编程求带符号数组中正数、零和负数的个数。对数组数据处理时对数组数据处理时,常采用寄存器间接寻址方式,并为循环程序结构。常采用寄存器间接寻址方式,并为循环程序结构。确定正数、零、负数的个数时用确定正数、零、负数的个数时用JZ(JNZ)和和 JB(JNB)等指令。)等指令。 例例3-24: 3-24: 片外片外RAM中无符号数按递减次序重新排列。中无符号数按递减次序重新排列。 将(将(DPH)P2后,用后,用Ri寻址寻址 采用采用“冒泡法冒泡法”进行排序,进行排序,R7外循环次数计数器,外循环次数计数器,R6内循环次数计数器内循环次数计数器例例2-23 流程图流程图 第三章 4-11 例例2-23 2-23 程序清单程序清单 ORG 0000HMAIN: MOV R0,#30H置数据地址指针置数据地址指针 MOV 40H,#00;结果单元清零;结果单元清零 MOV 41H,#00; MOV 42H,#00; MOV R2,#10;置循环次数;置循环次数LOOP :MOV A,R0 JNZNEXT1 INC41H;为零,个数加;为零,个数加1 SJMPDONE NEXT1:JB ACC.7,NEXT2; INC 40H ;正数个数加;正数个数加1 SJMP DONENEXT2:INC 42H ;负数个数加负数个数加1DONE: INC R0 DJNZ R2 , LOOP SJMP $第三章 4-13二、算术运算程序设计二、算术运算程序设计 例例1:多字节:多字节BCD码加法程序码加法程序 多字节BCD码加法同样从低字节开始相加(ADDC),但在加法指令后必须是(DA A)指令。注意和的字节数,及子程序返回时和的首地址处理。 例例3:乘除法程序:乘除法程序 MCS-51指令系统自有8位的乘法和除法指令,进行16位或更多位的乘除运算时须编程实现。 乘法用8位乘法指令编程实现 除法用移位相减的方法编程实现例例2:多字节无符号数减法子程序。:多字节无符号数减法子程序。 减法只有SUBB指令,注意多字节数运算时先清借位。另外注意差的符号标志处理。第三章 4-13nZHENFA: MOVA,R2nMOVB,R4nMULABnMOVR5,AnMOVR6,BnMOVA,R2nMOVB,R3nMULABnADDA,R6nMOVR6,AnMOVA,BnADDCA,#00HnMOVR7,AnRET被乘数:被乘数:R3、R4(16位)位)乘数:乘数:R2(8位)位)乘积:乘积:R5、R6、R7算法:算法:R3R4 R2(R4R2)H(R4R2)L+(R3R2)H(R3R2)LR7R6R5例:例:1616位位88位无符号数乘法位无符号数乘法第三章 4-15例例4:双字节无符号数除法子程序:双字节无符号数除法子程序入口参数:被除数入口参数:被除数R5R4,除数,除数R3R2。出口参数:商放在出口参数:商放在R5R4,余数,余数R7R6,溢出标志溢出标志00H。算算法法分分析析:“移移位位相相减减”法法,余余数数寄寄存存器器R7R6都都清清0;将将余余数数寄寄存存器器R7R6与与被被除除数数寄寄存存器器R5R4都都左左移移一一位位;将将余余数数寄寄存存器器R7R6与与除除数数R3R2作作比比较较,若若大大于于除除数数,则则商商上上1(商商放放在在R5R4刚刚才才左左移移一一位位空空出出的的部部分分),并并用用R7R6减减去去除除数数R3R2,然然后后再再同同样样R7R6R5R4都都左左移移一一位位,重重复复上上述述过过程程.直到被除数的各位都参与这运算为止。直到被除数的各位都参与这运算为止。最最后后结结果果:商商在在R5R4中中,余余数数在在R7R6中中。如如对对余余数数需需要要四四舍舍五五入入,可可先先判判余余数数最最高高位位为为1吗吗?若若为为1,商商加加1;否否则则将将余余数数乘乘2再再与与除除数数比比较较,若若大大于除数则说明原余数大于除数的一半,商也应加于除数则说明原余数大于除数的一半,商也应加1。第三章 4-17三、三、I/OI/O口控制程序设计口控制程序设计例例1 1:要求在P1.0脚上产生周期为20ms的方波。 FB: CPL P1.0;P1.0取反 ACALLDL10ms SJMPFBDL10ms: ;延时10ms的子程序 RET第三章 4-18例例2:编写一程序,实现图中的逻辑运算电路。其中:编写一程序,实现图中的逻辑运算电路。其中P3.1、P1.1、P1.0分别分别是单片机端口线上的信息,是单片机端口线上的信息,30H、31H是两个位地址,运算结果由是两个位地址,运算结果由P1.0输输出。出。P3.1P1.1& &1& & &P1.0ACC.1ACC.030H31H第三章 4-20例例3 3:如如图图所所示示,编编程程实实现现当当按按K K一一次次则则蜂蜂鸣鸣器器“嘀嘀、嘀嘀”响二声。响二声。STA:MOVR2,#2CLRP1.4STA1: JB P1.0,STA1 LCALL DL10msJB P1.0,STA1JNB P1.0, $LOOP: SETB P1.4;产生二个短脉冲;产生二个短脉冲LCALL DL300msCLRP1.4LCALL DL300msDJNZR2,LOOPLJMPSTADL10ms: ;延时;延时10ms的子程序的子程序RET第三章 4-23例例4 4:8 8只只LEDLED发光二极管在圆周上均匀分布,发光二极管在圆周上均匀分布,控制原理图见图控制原理图见图3-203-20,编一控制程序实现,编一控制程序实现单一发光点的顺转和逆转,点亮间隔时间单一发光点的顺转和逆转,点亮间隔时间都为都为1 1秒,重复循环。秒,重复循环。 1中断程序设计的一般方法:中断程序设计的一般方法:(1) 主程序中的中断系统初始化主程序中的中断系统初始化1)设置中断系统特殊功能寄存器(例中断源的触发方式);)设置中断系统特殊功能寄存器(例中断源的触发方式);2)设置中断优先极;)设置中断优先极;3)设置中断允许寄存器(开中断);)设置中断允许寄存器(开中断);4)中断服务程序的前期初始化(例如入口参数等)。)中断服务程序的前期初始化(例如入口参数等)。(2) 中断响应与中断服务程序中断响应与中断服务程序第三章 4-23四、中断程序设计四、中断程序设计第三章 4-232中断程序设计举例中断程序设计举例例例1一一个个外外部部中中断断源时的编程源时的编程 如图所示电路,设如图所示电路,设外部中断信号为负脉冲,外部中断信号为负脉冲,引入外部中断引入外部中断1引脚。引脚。要求每中断一次要求每中断一次,从从P1.4P1.7输入外部输入外部开关状态开关状态,然后从然后从P1.0P1.3输出。输出。 第三章 4-23程序清单: ORG 0000H ;主程序 SJMP MAIN ORG 0013H AJMP INT1;转入服务程序 ORG 0030H MAIN: SETB IT1;设INT1为边沿触发 SETB ET1;允许INT1中断 SETB EA ;开放总允许 SJMP $INT1: ORL P1,#0F0H ;中断服务程序: MOV A,P1 ;从P1口输入开关状态 SWAP A ;交换高、低4位 MOV P1,A ;输出 RETI 第三章 4-23例例2:当当外外部部中中断断源源多多于于两两个个时时,可可采采取取硬硬件件申申请请与与软软件件查查询询相相结结合合的的方方法法,利用一个外部中断源输入端扩展外部多个中断源服务。如图所示。利用一个外部中断源输入端扩展外部多个中断源服务。如图所示。把把多多个个中中断断源源通通过过“线线或或”或或与与非非门门引引到到外外部部中中断断源源输输入入端端(INT0或或INT1),同时又把信息连到某),同时又把信息连到某I/O口,便于软件进一步逐个查询。口,便于软件进一步逐个查询。第三章 4-23ZINT0:PUSH PSW;中断服务程序;中断服务程序PUSHACCJNB P1.0,ZLOOP0;查询中断源;查询中断源NEXT1:JNBP1.1,ZLOOP1NEXT2:JNBP1.2,ZLOOP2NEXT3:JNBP1.3,ZLOOP3 LJMP NEXTZLOOP0: ;0号中断源服务程序段号中断源服务程序段 LJMP NEXTZLOOP1: ;1号中断源服务程序段号中断源服务程序段 LJMP NEXT 第三章 6-24三、分支程序与循环程序设计三、分支程序与循环程序设计 课间休息第四章 1-1MCS-51子系列子系列单单片机内有两个可片机内有两个可编编程的定程的定时时器器计计数器数器T0和和T1;它可由用户程序选择其工作方式,设定其工它可由用户程序选择其工作方式,设定其工作参作参数和条件。数和条件。第四章第四章 MCSMCS5151定时定时/ /计数器及其应用计数器及其应用 本章重点:本章重点: 定时定时/计数器的编程结构计数器的编程结构 控制字与编程方法控制字与编程方法 应用编程应用编程第一节第一节 定时定时/ /计数器的结构与工作原理计数器的结构与工作原理 第四章 第一节(1)一、定时一、定时/ /计数器的逻辑结构计数器的逻辑结构 定时计数器的结构如图所示。定时计数器的结构如图所示。 定定时时/计计数数器器的的核核心心部部件件是是加加1 1计计数数器器,其其输输入入的的计计数数脉脉冲冲有有两两个个来来源源。当当加加到到计计数数器器为为全全“1”1”时时,再再输输入入一一个个脉脉冲冲,就就使使计计数数器器回回零零,同同时时产产生生溢出脉冲使溢出脉冲使TCONTCON中溢出中断标志中溢出中断标志TF0TF0或或TF1TF1置置1 1,并可向,并可向CPUCPU申请中断。申请中断。 1.1. 定定时时器器工工作作方方式式时时,对对机机器器周周期期TM计计数数。这这时时计计数数器器的的计计数数脉脉冲冲由由振振荡荡器器的的1212分分频频信信号号产产生生,即即每每经经过过一一个个机机器器周周期期,计计数数值值加加1 1,直直至至计计满满溢溢出出。在在机机器器周周期期固固定定的的情情况况下下,定定时时时时间间的的长长短短与与计计数数器器事事先先装装入入的的初初值值有关,有关,装入的初装入的初值值越大,定越大,定时时越短越短。 2.2. 计计数器工作方式数器工作方式时时,通通过过引脚引脚T0(P3.4)和和T1(P3.5)对对外部脉冲信号外部脉冲信号计计数。当数。当T0T0或或T1T1脚上脚上输输入入的脉冲信号出的脉冲信号出现现由由1 1到到0 0的的负负跳跳变时变时,计计数器数器值值加加1 1。第四章 第一节(2)二、定时二、定时/ /计数器的工作原理计数器的工作原理第二节第二节 定时定时/ /计数器的控制与工作方式计数器的控制与工作方式 应用问题应用问题 1 1、定时、定时/ /计数如何设定?计数如何设定? 2 2、定时、定时/ /计数器如何启动?计数器如何启动? 3 3、定时、定时/ /计数的值如何设定?计数的值如何设定? 单片机内部的定时单片机内部的定时/ /计数器是一种可编程器件,可设置为计数器是一种可编程器件,可设置为四种工作方式,由两个四种工作方式,由两个8 8位专用寄存器位专用寄存器TMODTMOD和和TCONTCON进行进行管理与控制。管理与控制。 单片机内部的定时单片机内部的定时/计数器是一种可编程器件,可设置为四种工作方式,计数器是一种可编程器件,可设置为四种工作方式,由两个由两个8位专用寄存器位专用寄存器TMOD和和TCON进行管理与控制。进行管理与控制。一、定时计数器的管理与控制一、定时计数器的管理与控制 1.1.工作方式寄存器工作方式寄存器TMOD用于选定定时用于选定定时/计数器的工作方式、启动方式等。计数器的工作方式、启动方式等。00方式001方式110方式211方式3TMOD(89H)D7D6D5D4D3D2D1D0GATEC/TM1M0GATEC/TM1M0控制T1控 制 T00 定时器模式1 计数器模式0 与INT0无关1 与INT0有关与T0同 第四章 1-51 1)用于设置定时)用于设置定时/ /计数器的工作方式计数器的工作方式(03); M1M12 2)选择定时)选择定时/ /计数计数CT* ;nC/T=0-定时,定时,C/T=1-计数计数3 3)启动控制方式选择)启动控制方式选择-内内/ /外;外; GATEGATE:门控位,启动方式设定:门控位,启动方式设定 GATE0- - 允许软件位允许软件位TR0或或TR1启动;启动; GATE1- - 允许外部引脚信号允许外部引脚信号INT0/INT1启动。启动。第四章 1-6n2、定时器控制寄存器、定时器控制寄存器TCONn1) TF1 定时器定时器1溢出标志溢出标志n2) TR1 定时器定时器1运行控制位运行控制位n3) TF0 定时器定时器0溢出标志溢出标志 4) TR0 定时器定时器0运行控制位运行控制位n5) IE1 外部中断外部中断1请求标志请求标志n6) IT1 外中断外中断1触发方式选择位触发方式选择位n7) IE0 外部中断外部中断0请求标志请求标志n8) IT0 外部断外部断0触发方式选择位。触发方式选择位。注意:复位后注意:复位后TMOD、TCON各位均清零。各位均清零。例:启动例:启动T0工作,用工作,用指令指令 SETB TR0 例如:设定时器例如:设定时器T0工作于方式工作于方式1 1定时,由软件启动控制,则可用如下指定时,由软件启动控制,则可用如下指令来装入控制字。令来装入控制字。 MOVTMOD,#00000001B;或或 MOVTMOD,#01H; 练习:设定时器练习:设定时器T1工作于工作于方式方式2 2计数,由外部脉冲启动,试写入方式控计数,由外部脉冲启动,试写入方式控制字。制字。 通过控制通过控制TMOD中的中的M1,M0位选择定时器位选择定时器4种工作方式。种工作方式。这这4 4种工作方式的种工作方式的实质是对实质是对T0T0(或(或T1T1)的两个)的两个8 8位计数器位计数器TH0TH0、TL0TL0(或(或TH1TH1、TL1TL1)的)的计数操作计数操作方式而言方式而言。第四章 1-8二、定时二、定时/ /计数器的工作方式计数器的工作方式1.方式方式0加加1计数器为计数器为13位,位,高高8位溢出置位位溢出置位TF定时器启、停控制定时器启、停控制方式方式0下的逻辑结构图下的逻辑结构图(1)C/T=1为为计计数数工工作作方方式式,计计数数脉脉冲冲由由T1引引脚脚输输入入。计计数数个个数数N=(2 213初值初值x x)(2 2)C/T=0为定时工作方式,计数脉冲为时钟频率为定时工作方式,计数脉冲为时钟频率fosc/12。 定时时间定时时间t=t=(2 213初值初值x x)* *时钟周期时钟周期* *1212 X X 2 213定时时间定时时间t/t/时钟周期时钟周期* *1212方式方式0下工作时:下工作时:思考:思考:(1)最大计数或定时时的初值)最大计数或定时时的初值 X 是多少?是多少?(2)时钟频率为时钟频率为12MHZ时,方式时,方式0最大定时时间是多少?最大定时时间是多少?第四章 1-92.2.方式方式1 1 定定时时/ /计计数数器器工工作作于于方方式式1 1时时为为一一个个1616位位的的计计数数器器。其其逻逻辑辑结结构构、操操作作及运行控制几乎与方式及运行控制几乎与方式0 0完全完全样,差别仅在于计数器的位数不同。样,差别仅在于计数器的位数不同。定时工作方式定时工作方式1时,定时时间为:时,定时时间为: 定时时间定时时间 t (216计数初值计数初值TC)机器周期机器周期用于计数器工作方式时,用于计数器工作方式时, 最大计数值为:最大计数值为: 21665536 3. 3. 方式方式2 2 定定时时/ /计计数数器器工工作作于于方方式式2 2时时,将将两两个个8 8位位计计数数器器THxTHx、TLxTLx分分成成独独立立的的两两部部分,组成一个分,组成一个可自动重装载可自动重装载的的8 8位定时位定时/ /计数器。其逻辑结构如图所示。计数器。其逻辑结构如图所示。第四章 1-10 方式方式2 2的控制运行与方式的控制运行与方式0 0、方式、方式1 1相同。相同。 用于定时工作方式时,定时时间用于定时工作方式时,定时时间t t为:为:t t(2(28 8计数初值计数初值X)X)机器周期机器周期 用用于于计计数数工工作作方方式式时时,最最大大计计数数值值( (初初值值0 0时时) )是是2 28 8。方方式式2 2特特别别适适合合于于用用作作较精确的定时和脉冲信号发生器。较精确的定时和脉冲信号发生器。还还常用作串行口波特率常用作串行口波特率发发生器生器 。第四章 1-114.4.方式方式3 3 方式方式3 3只适用于定时器只适用于定时器T0T0。在方式。在方式3 3下,下,T0T0被分成两个相互独立的被分成两个相互独立的8 8位位计数器计数器TL0TL0和和TH0TH0,如图所示,如图所示 。 1)TH0和和TL0变成变成2个分开的计数器。个分开的计数器。2)TL0占用了全部的定时器控制位。占用了全部的定时器控制位。(C/T,GATE,TR0,TF0)3)TH0只能用于定时方式,运行控制位和溢出标志位则借用只能用于定时方式,运行控制位和溢出标志位则借用定时器定时器1的的TR1和和TF1。4)在在T0T0设置为方式设置为方式3 3工作时,一般是将定时器工作时,一般是将定时器T1T1作为串行口作为串行口波特率发生器,或用于不需要中断的场合。相当于增加了一波特率发生器,或用于不需要中断的场合。相当于增加了一个个8 8位的定时器。位的定时器。 定时定时/ /计数器工作于方式计数器工作于方式3 3时:时:第四章 1-12第三节第三节 定时定时/ /计数器的应用计数器的应用一、定时一、定时/ /计数器计数初始化计数器计数初始化1. 1. 定时计数器的初始化方法定时计数器的初始化方法初始化的主要是对初始化的主要是对TCON和和TMOD编程,计算和装载编程,计算和装载T0T0和和T1T1的计数初值。的计数初值。(1 1)初始化步骤)初始化步骤1 1)分析定时器计数器的工作方式,将方式字写入)分析定时器计数器的工作方式,将方式字写入TMODTMOD寄存器;寄存器; ( 定定/ /计、内计、内/ /外启动、工作方式)外启动、工作方式)2)2)计算计算T0T0或或T1T1中的计数初值,并将其写入中的计数初值,并将其写入TH0TH0、TL0TL0或或TH1TH1、TL1TL1;3)3)根据需要开放根据需要开放CPUCPU和定时计数器的中断,即对和定时计数器的中断,即对IEIE和和IPIP寄存器编程;寄存器编程;4)4)启启动动定定时时器器计计数数器器工工作作:若若要要求求用用软软件件启启动动,编编程程时时对对TR0或或TR1置置位位即即可可启启动动;若若由由外外部部中中断断引引脚脚电电平平启启动动,则则对对TR0或或TR1置置位位后后,还需给外引脚还需给外引脚( (或或) )提供启动电平。提供启动电平。第四章 1-131 1)计数器模式时的计数初值)计数器模式时的计数初值 X2MN (M为计数器位数,为计数器位数,N为要求的计数值)为要求的计数值) X0,计数器的计数值最大计数器的计数值最大 2 2M2 2)定时器模式时的计数初值)定时器模式时的计数初值定时时间为:定时时间为:t(2M计数初值计数初值X )机器周期机器周期计数初值计数初值 X2M-(t/12*Tosc)(2)计数器初值的计算)计数器初值的计算2 213 13 8192 8192 (方式(方式0 0)2 216 16 65536 65536 (方式(方式1 1)2 28 8 256256(方式(方式2 2及方式及方式3 3 )第四章 1-14 若系统时钟频率若系统时钟频率 fOSC12MHz,1 1机器周期机器周期1S;方式方式0 0:M1313, tmax 2 21313* *机器周期机器周期81928192S S方式方式1 1:M1616, tmax2 21616* *机器周期机器周期6553665536S S方式方式2 2: M8 8, tmax2 28 8* *机器周期机器周期256256S S (方式(方式3 3同)同)X = = 605360EC78H X0,定时器的定时时间最大:定时器的定时时间最大: tmax 2M机器周期机器周期 例如,若例如,若fOSC6MHz,定时时间为,定时时间为10ms,使用定时器,使用定时器T0工作于方式工作于方式1 ,则则初值:初值:第四章 1-15编写编写初始化程序的步骤;初始化程序的步骤; 1)方式控制字送)方式控制字送 TMOD MOV TMOD,#2)计数器的初值送)计数器的初值送TH、TL(0/1)n MOV TH0,#n MOV TL0,#3)根据需要开放中断和设定优先级根据需要开放中断和设定优先级 n 即对即对IE和和IP赋初值赋初值( (可位寻址)可位寻址) 4) 启动启动T0/T1开始工作开始工作-置位置位TR0/1n SETB TR0/15)等待溢出信号的出现(如何进入处理程序?)等待溢出信号的出现(如何进入处理程序?) (查询法或中断法)(查询法或中断法)2. 定时定时/计数器初始化举例计数器初始化举例第四章 1-16例例4-1:4-1:要要求求定定时时器器T1T1于于方方式式1 1,定定时时50ms50ms,由由软软件件启启动动,允允许许中中断断。设设系统时钟频率系统时钟频率f fOSCOSC6MHz,编写初始化程序段。,编写初始化程序段。解:解:1 1)方式控制字为)方式控制字为 00010000B=10H 2 2)计数初值为)计数初值为 X1X1T1T1初始化程序段如下:初始化程序段如下: MOVTMOD,#10H;写入工作方式字;写入工作方式字 MOVTH1,#9EH;写入计数初值;写入计数初值MOVTL1,#58HSETBET1;开放;开放T1中断中断SETBEA;开放;开放CPU中断中断SETBTR1;启动;启动T1T1工作工作 第四章 1-17例例4-2: 4-2: 要要求求利利用用定定时时/ /计计数数器器T0对对T0引引脚脚(P3.4)出出现现的的脉脉冲冲计计数数,每每计计数数100个脉冲向个脉冲向CPU申请中断,设由由软件启动。编写初始化程序段。申请中断,设由由软件启动。编写初始化程序段。解解:1 1)经经分分析析,可可设设定定时时器器T0工工作作于于方方式式2计计数数,方方式式控控制制字字为为0000110B=06H 2 2)要求的计数值)要求的计数值N=100,则计数初值为,则计数初值为 28-100=156初始化程序段如下:初始化程序段如下: MOVTMOD,#06H;写入工作方式字;写入工作方式字MOVTH0,#156;写入计数初值;写入计数初值MOVTL0,#156SETBET0;开放;开放T0、CPU中断中断SETBEASETBTR0;启动;启动T0工作工作注意:方式2时初值必须同时写入TH和TL第四章 1-18二、定时二、定时/ /计数器计数应用举例计数器计数应用举例 在在应应用用定定时时计计数数器器时时,溢溢出出标标志志TFxTFx置置位位后后既既可可由由硬硬件件向向CPUCPU申申请请中中断断,也也可可通通过过用用户户程程序序查查询询TFxTFx的的状状态态,因因此此对对计计数数溢溢出出信信息息的的处处理理有有以以下下两种方法。两种方法。 中断法中断法在定时器初始化时要开放对应的源允许(在定时器初始化时要开放对应的源允许(ET0ET0或或ET1ET1)和总允)和总允许,在启动后等待中断。当计数器溢出中断,许,在启动后等待中断。当计数器溢出中断,CPUCPU将程序转到中断服务程序将程序转到中断服务程序入口,因此应在中断服务程序中安排相应的处理程序。入口,因此应在中断服务程序中安排相应的处理程序。 查查询询法法既既在在定定时时器器初初始始化化并并启启动动后后,在在程程序序中中安安排排指指令令查查询询TFxTFx的的状态。状态。 LP:JBCTF0,NEXT ;TF0TF0为为1 1,转后面的处理程序,并将,转后面的处理程序,并将TF0TF0复位复位 SJMPLP ;TF0TF0为为0 0,继续查询,继续查询NEXTNEXT:注意:中断法时,CPU响应中断会自动清TF第四章 1-19第三节第三节 定时定时/ /计数器的应用计数器的应用采用查询方式时的一般编程模式:采用查询方式时的一般编程模式:ORG0030HMAIN:MOVTMOD,#MOVTH0,#MOVTL0,#-SETBTR0WAIT:JBCTF0,NEXT;SJMPWAIT;NEXT:MOVTH0,#;重装;重装MOVTL0,#;初值;初值-;处理程序;处理程序-SLMPWAIT采用中断方式时的一般编程模式:采用中断方式时的一般编程模式:ORG0000HSJMPMAINORG000BH(001BH)LJMPT0FWORG0030HMAIN:MOVTMOD,#MOVTH0,#MOVTL0,#SETBET0;SETBEA;-;置其他初值;置其他初值SETBTR0;SJMP$T0FW:-;重装初值重装初值-;处理程序;处理程序-RETI第四章 1-20二、定时二、定时/ /计数器计数应用举例计数器计数应用举例1. 定时模式的应用定时模式的应用例例4-3: 4-3: 利用利用定时定时/计数器定时产生周期信号。要求用定时器计数器定时产生周期信号。要求用定时器T0定时,定时,在在P1.7引脚上输出周期为引脚上输出周期为50Hz的方波。设晶振频率为的方波。设晶振频率为12MHz。解解:1 1)按按题题意意分分析析:方方波波周周期期T=1/50=20ms,可可用用T0T0方方式式1 1定定时时10ms10ms,使使P1.7P1.7每每隔隔10ms10ms取取反反一一次次,即即可可得得到到周周期期为为20ms20ms的的方方波波。设设T0T0工工作作在在方方式式1 1,由软件启动。,由软件启动。 2 2)TMOD控制字为控制字为 00000001B 3 3)初值计算:)初值计算:fosc=12MHz,机器周期为机器周期为1 1s s。 初值初值216-10103/1=65536-10000=55536=D8F0H, 即有即有TH0=D8H,TL0=F0H。CPL P1.7 ; 定时处理,定时处理,P1.7取反输出方波取反输出方波 例:要求用定时器例:要求用定时器T1定时,在定时,在P1.0引脚上输出如图方波。引脚上输出如图方波。设晶振频率为设晶振频率为12MHz。第四章 1-20P1.0 89C512ms1ms解:解:1)按题意分析:可用)按题意分析:可用T1为为16位定时器模式(方式位定时器模式(方式1)定时)定时1ms。判。判断断P1.0为高电平时,溢出二次才对端口取反。为高电平时,溢出二次才对端口取反。 2)TMOD控制字为控制字为 0001 0000 B 3)初值计算:)初值计算:fosc=12MHz,机器周期为,机器周期为1s。 初值初值216 - 12 106 103 / 12= 65536-1000=64536=FC18H, 即即 TH1=FCH,TL1=18H。若采用查询法,编程如下:若采用查询法,编程如下: ORG0030HSTAR:MOVTMOD,#10H;写入工作方式字;写入工作方式字MOVTH1,#0FCH;写入计数初值;写入计数初值MOVTL1,#18HMOVR2,#2SETBTR1;启动;启动T1LOOP:JBCTF1,CPLP;TF1为为1转转CPLP并清并清TF1SJMPLOOP;TF1为为0转转LOOP等待等待第四章 1-22CPLP:MOVTH1,#0FCH;重装初值;重装初值MOVTL1,#18HJBP1.0,CPLP1;P1.0为为1转转CPLP1CPLP1.0;P1.0为为0则取反则取反MOVR2,#2;R2重赋初值重赋初值AJMPLOOP;转转LOOP等定时时间到等定时时间到CPLP1:DJNZR2,LOOP;2ms未到转未到转LOOPCPLP1.0;2ms到到P1.0取反取反AJMPLOOP;转转LOOP等定时时间到等定时时间到END第四章 1-23 例例4-4:4-4: 某某系系统统要要求求用用定定时时器器T1对对由由P3.5(T1)引引脚脚输输入入的的脉脉冲冲计数,每计满计数,每计满100个脉冲,在个脉冲,在P1.0引脚输出一个正脉冲。引脚输出一个正脉冲。解:解:1)据题意分析,可将定时器)据题意分析,可将定时器T1设置为方式设置为方式2计数,由软件启动。计数,由软件启动。 2)方式控制)方式控制 TMOD01100000B60H 3)计数初值)计数初值 TC1281001569CH,即有即有 TH1TL19CH2. 计数模式的应用计数模式的应用例:例:T0即即P3.4输入负脉冲,要求输入负脉冲,要求T0发生负跳变时发生负跳变时P1.0输出如图同步脉冲。输出如图同步脉冲。 500us500usT0P1.0方法:开始使方法:开始使P1.0为高电平,为高电平,定时器定时器T0为方式为方式2计数器,计计数器,计数数1,即初值为,即初值为FFH。当。当T0引脚引脚负跳变溢出,改负跳变溢出,改T0为定时器,为定时器,定时定时500us,并使,并使P1.0为低电为低电平。定时再溢出时,使平。定时再溢出时,使P1.0高高电平,电平,T0再恢复为计数器。再恢复为计数器。5. 门控位门控位GATE的应用的应用第四章 1-22等待INT0变低 3. 定时时间的扩展定时时间的扩展 为什么要扩展?为什么要扩展?例如晶振频率为例如晶振频率为6MHz时一个定时器最长的定时时间为:时一个定时器最长的定时时间为: 怎样扩展?怎样扩展? 定时器配合软件计数器来实现。定时器配合软件计数器来实现。第三章 6-24三、分支程序与循环程序设计三、分支程序与循环程序设计 课间休息第五章 1-1第五章第五章 MCSMCS5151单片机的串行接口单片机的串行接口 MCS-51系列单片机的串行通信接口可以方便地实现与其他单片机之间、系列单片机的串行通信接口可以方便地实现与其他单片机之间、与与PC机之间的串行通信,也可用通信接口实现键盘输入、机之间的串行通信,也可用通信接口实现键盘输入、LED显示及其他显示及其他的控制。的控制。 主要内容:主要内容: 1. 串行通信概述串行通信概述 2. MCS-51单片机串行通信接口的结构单片机串行通信接口的结构 3. MCS-51单片机串行通信的工作原理及其工作方式单片机串行通信的工作原理及其工作方式 4. MCS-51单片机串行接口应用编程单片机串行接口应用编程重点:重点:MCS-51MCS-51单片机串行接口的工作原理及工作方式单片机串行接口的工作原理及工作方式MCS-51MCS-51单片机串行接口应用程序设计方法单片机串行接口应用程序设计方法第五章 1-2第一节第一节 串行通信概述串行通信概述 1. 1.并行通信并行通信 并并行行通通信信是是指指所所传传送送的的数数据据各各位位同同时时进进行行传传送送。其其优优点点是是传传送送速速度度快快,缺缺点点是是传传输输线线多多,通通信信线线路路费费用用较较高高,并并行行传传送送适适用用于于近近距距离离、传送速度高的场合。传送速度高的场合。2 2串行通信串行通信 串串行行通通信信时时,传传送送数数据据的的各各位位按按分分时时顺顺序序一一位位一一位位地地传传送送(例例如如先先低低位位、后后高高位位)。其其优优点点是是传传输输线线少少,传传送送通通道道费费用用低低,故故适适合合长长距距离离数据传送。缺点是传送速度较低。数据传送。缺点是传送速度较低。当通信的距离在当通信的距离在30m30m以上时,应采用串行通信方式。以上时,应采用串行通信方式。一、一、 并行通信与串行通信并行通信与串行通信 第五章 1-21.1.单单工工方方式式通通信信双双方方只只有有一一条条单单向向传传输输线线,只只允允许许数数据据由由一一方方发发送,另一方接收。送,另一方接收。2 2半半双双工工方方式式通通信信双双方方只只有有一一条条双双向向传传输输线线,允允许许数数据据双双向向传传送送,但但每每时时刻刻上上只只能能有有一一方方发发送送,另另一一方方接接收收,这这是是一一种种能能够够切切换换传传送送方方向的单工方式,向的单工方式,3 3全双工方式全双工方式通信双方只有两条通信双方只有两条传输线传输线,允,允许许数据同数据同时时双向双向传传送,送,其通信其通信设备应设备应具有完全独立的收具有完全独立的收发发功能。功能。二、串行通信的数据传送方向二、串行通信的数据传送方向第五章 1-3三、同步通信和异步通信三、同步通信和异步通信 为为了了准准确确地地发发送送、接接收收信信息息,发发送送者者和和接接受受者者双双方方必必须须协协调调工工作作。这这种种协协调方法,从原理上可分成两种:调方法,从原理上可分成两种:同步串行同步串行I/OI/O和异步串行和异步串行I/OI/O。 1 1异步通信方式异步通信方式 异步通信方式时,数据一帧一帧地传送,部需要同步时钟,实现简单。异步通信方式时,数据一帧一帧地传送,部需要同步时钟,实现简单。 在在异异步步方方式式中中,为为了了避避免免连连续续传传送送过过程程中中的的误误差差积积累累,每每个个字字符符都都要要独独立立确确定定起起始始和和结结束束(即即每每个个字字符符都都要要重重新新同同步步),字字符符和和字字符符间间还还可可能能有有长长度度不不定的空闲时间。定的空闲时间。 有约定的帧格式;有约定的帧格式; 发送与接收之间发送与接收之间的同步是利用每一的同步是利用每一帧的起、止信号来帧的起、止信号来建立的;建立的; 双方用各自的时双方用各自的时钟控制发送与接收钟控制发送与接收2 2同步通信方式同步通信方式 在在同同步步通通信信中中,在在数数据据或或字字符符开开始始传传送送前前用用同同步步字字符符(SYNC)(SYNC)来来指指示示( (常常约约定定l l一一2 2个个) ),由由时时钟钟来来实实现现发发送送端端和和接接收收端端同同步步,当当检检测测到到规规定定的的同同步步字字符符后后,接接下下来来就就连连续续按按顺顺序序传传送送数数据据。同同步步字字符符是是一一特特定定的的二二进进制制序序列列,在传送的数据中不会出现在传送的数据中不会出现 同同步步通通信信方方式式由由于于不不采采用用起起始始和和停停止止位位,是是在在同同步步字字符符后后可可以以接接较较大大的的数据区,同步字符所占部分很小,因此有较高的传送效率。数据区,同步字符所占部分很小,因此有较高的传送效率。 第五章 1-4MCS-51单片机中串行接口只可实现异步串行通信方式单片机中串行接口只可实现异步串行通信方式 第五章 1-5 四、波特率四、波特率 在通信中发、接双方有两次约定在通信中发、接双方有两次约定在通信中发、接双方有两次约定在通信中发、接双方有两次约定 字符格式字符格式字符格式字符格式帧格式帧格式帧格式帧格式 传送速率传送速率传送速率传送速率波特率波特率波特率波特率 波波特特率率是是通通信信双双方方对对数数据据传传送送速速率率的的约约定定,表表示示每每秒秒钟钟传传送送二二进进制数码的位数,单位是制数码的位数,单位是bit/sbit/s。 假假如如数数据据传传送送的的速速率率是是120120个个字字符符秒秒,每每一一个个字字符符规规定定包包含含1010个位个位( (一个起始位、一个起始位、8 8个数据位和个数据位和1 1个停止位个停止位) ),则传送的波特率为:,则传送的波特率为:101201012012001200位秒位秒12001200波特波特(bps(bps) )每一位的传送时间即为波特率的倒数每一位的传送时间即为波特率的倒数 第五章 1-6第二节第二节 MCSMCS5151的串行通信接口的串行通信接口 一、一、MCS-51MCS-51串行口结构及工作原理串行口结构及工作原理基基本本组组成成: 两两个个独独立立的的数数据据缓缓冲冲器器SBUFSBUF( (一一个个用用作作接接收收,一一个个用用作作发发送送) )以及发送控制器、接收控制器、输入移位寄存器和输出控制门等组成。以及发送控制器、接收控制器、输入移位寄存器和输出控制门等组成。 用户可访问的三个地址单元:用户可访问的三个地址单元:SBUFSBUF:两个:两个SBUFSBUF共用一个地址共用一个地址99H99H。发。发送送SBUFSBUF只写不读,接收只写不读,接收SBUFSBUF只读不写,只读不写,由所用指令是发送还是接收来决定对由所用指令是发送还是接收来决定对个个SBUFSBUF进行操作;进行操作;SCONSCON:串行口控制寄存器:串行口控制寄存器PCONPCON:电源控制寄存器电源控制寄存器第五章 1-7二、串行口控制寄存器二、串行口控制寄存器SCONSCON SCONSCON是一个可位寻址的专用寄存器,用来设定串行口的工作方式、是一个可位寻址的专用寄存器,用来设定串行口的工作方式、控制串行口的接收发送以及状态标志。控制串行口的接收发送以及状态标志。SCONSCON的字节地址为的字节地址为98H98H,位地址,位地址为为98H98H9FH9FH。其格式如下:。其格式如下: 1 1)SM0、SMl:串行口工作方式选择位,可选择四种工作方式串行口工作方式选择位,可选择四种工作方式SM0SM1工作方式工作方式功功 能能波波 特特 率率00方式方式0 0同步移位寄存器同步移位寄存器 foc/12 foc/1201方式方式1 11010为异步收发为异步收发 可可 变变10方式方式2 21111为异步收发为异步收发foc/32foc/32或或foc/64foc/6411方式方式3 31111为异步收发为异步收发 可可 变变SCOND7D6D5D4D3D2D1D0SM0SM1TIRISM2SM2RENTB8RB82 2)SM2:为多机通信控制位为多机通信控制位在工作方式在工作方式2 2和方式和方式3 3中:中: 若若SM21:当接收到第:当接收到第9 9位数据位数据(RB8)为)为1,才将接收到的前,才将接收到的前8 8位位 数据装入数据装入SBUF,并置位,并置位RI;否则将接收到的数据丢弃。否则将接收到的数据丢弃。 若若SM20:不论第:不论第9 9位数据位数据(RB8)是否为)是否为1,都将接收到的前,都将接收到的前8 8位数位数 据装数据装入据装数据装入SBUF,并置位,并置位RI。 在方式在方式1 1中:中:若若SM21,则只有接收到有效的停止位时,才,则只有接收到有效的停止位时,才置位置位RI。 在方式在方式0 0中中:必须使必须使SM20第五章 1-83 3)REN:允许串行接收位。该位由软件置位或清零。允许串行接收位。该位由软件置位或清零。4 4)TB8:在在工工作作方方式式2或或方方式式3时时,该该位位为为发发送送的的第第9位位数数据据,可可按按需需要要由由软软件件置置位位或或清清零零。在在许许多多通通信信协协议议中中,该该位位常常作作为为奇奇偶偶校校验验位位。在在MCS5l多多机机通通信信中中,TB8的的状状态态用用来来表表示示发发送送的的是是地地址址帧帧还还是是数数据据帧帧,TB80时,为地址帧,时,为地址帧,TB81时,时,为数据帧。为数据帧。 多机通信时,多机通信时,SM2必须置必须置1。双机通信时,通常使。双机通信时,通常使SM20。第五章 1-96 6)TITI:发发送送中中断断标标志志位位。方方式式0 0中中,串串行行发发送送完完第第8 8位位数数据据后后,由由硬硬件件置置位位;在在其其它它方方式式中中,在在发发送送停停止止位位开开始始时时,由由硬硬件件置置位位。TITI1 1时时,表表示示帧帧发发送送结结束束,其其状状态态既既可可供供软软件件查查询询使使用用,也也可可申申请请中中断断。在在任任何何方方式式中,中,TITI都必须由软件清都必须由软件清0 0。 7 7)RIRI:接接收收中中断断标标志志。在在方方式式0 0中中,接接收收完完第第8 8位位数数据据后后,由由硬硬件件置置位位;在在其其它它方方式式中中,当当接接收收到到停停止止位位的的中中间间时时由由硬硬件件置置位位。RIRI1 1时时,表表示示帧帧接接收收结结束束,其其状状态态既既可可供供软软件件查查询询使使用用,也也可可申申请请中中断断。RIRI也也必必须须靠靠软软件清件清0 0。单单片机复位片机复位时时,SCONSCON中的所有位均中的所有位均为为0 0。 注注意意:不不管管是是否否采采用用中中断断控控制制,数数据据发发送送前前必必须须用用软软件件将将TI清零;接收数据后将清零;接收数据后将RI清零;清零;5 5)RB8:在在工工作作方方式式2 2或或方方式式3 3时时,存存放放接接收收到到的的第第9 9位位数数据据,代代表表着着接接收收数数据据的的某某种种特特征征。例例如如,可可能能是是奇奇偶偶位位,或或为为多多机机通通信信中中的的地地址址数数据标识位。据标识位。 在方式在方式0 0中,中,RB8未用。未用。在方式在方式1中,若中,若SM20,RB8是已接收到的停止位是已接收到的停止位。 PCON的直接地址为的直接地址为87H,不能位寻址。,不能位寻址。PCON中中只只有有最最高高位位SMOD与与串串行行口口工工作作有有关关,其其余余几几位位用用于于电电源源的的控制。控制。PCON的格式如下:的格式如下:第五章 1-10SMOD:串行口波特率倍增位。:串行口波特率倍增位。当当SMOD1时,串行口波特率加倍;复位时,时,串行口波特率加倍;复位时,SMOD0。 三、电源控制寄存器三、电源控制寄存器PCONPCOND7D6D5D4D3D2D1D0SMODGF1GF0PDIDL第五章 1-11 MCS51单单片片机机的的串串行行口口为为可可编编程程口口,可可编编程程选选择择四四种种工工作作方方式式,其其中中方式方式0主要用于扩展并行输入输出口,方式主要用于扩展并行输入输出口,方式1方式方式3为异步串行通信方式。为异步串行通信方式。 一、方式一、方式0 0 串串行行口口工工作作方方式式0为为同同步步移移位位寄寄存存器器输输入入输输出出方方式式,其其数数据据传传输输波波特特率率固固定定为为foc/12。串串行行数数据据由由RXD(P30)端端输输入入输输出出,同同步步移移位位脉脉冲冲由由TXD(P31)端端输输出出。数数据据的的发发送送接接收收以以8位位为为一一帧帧,低低位位在在前前,无无起起始始位、奇偶位及停止位。位、奇偶位及停止位。执行一条写执行一条写SBUF指令就开始发送;接收完成后指令就开始发送;接收完成后8位数据进入位数据进入SBUF。第三节第三节 MCSMCS5151串行通信接口的工作方式串行通信接口的工作方式 RXD TXD A B 74LS164 CLK QA QB QC QD QE QF QG QH 如图为外接如图为外接移位寄存器作并移位寄存器作并行输出的电路。行输出的电路。串入并出移位寄存器第五章 1-14 方式方式1 1下的传送波特率是可变的取决于定时器下的传送波特率是可变的取决于定时器TI的溢出速率。的溢出速率。二、方式二、方式1 串行口工作在方式串行口工作在方式1时,是作为时,是作为10位异步通信接口,位异步通信接口,发送接收的一帧发送接收的一帧数据包括数据包括10位:位:1位起始位,用位起始位,用0来标识,来标识,8位数据位位数据位(低位在前低位在前),1位停止位,位停止位,用用1来标识。其帧格式为:来标识。其帧格式为:1.1.发送过程发送过程 当当CPU执执行行任任何何一一条条写写入入SBUF的的指指今今后后,便便启启动动串串行行口口发发送送,发发送送的的数数据据由由TXDTXD端端输输出出。串串行行接接口口能能自自动动地地在在数数据据的的前前后后插插入入一一位位起起始始位位和和一一位位停停止止位位,在在发发送送移移位位脉脉冲冲的的作作用用下下依依次次从从TXDTXD端端发发送送,发发送送完完一一帧帧信信息息时时。发送中断标志发送中断标志TITI置置1 1,请求中断。,请求中断。第五章 1-152.2.接收过程接收过程当允许串行输入位当允许串行输入位REN置置1后,后,CPU便以所选波特率的便以所选波特率的16倍速率采样倍速率采样RXD端电平。在没有信号到来之前,端电平。在没有信号到来之前,RXD端的状态为端的状态为1。当在。当在RXD端检测到端检测到从从1到到0的负跳变时,开始接收过程。的负跳变时,开始接收过程。16分频计数器的分频计数器的16个状态把接收每位信个状态把接收每位信息的时间分成息的时间分成16份,在每个位时间的第份,在每个位时间的第7、8、9个计数状态。从个计数状态。从RXD端采样端采样三次,至少两次相同的值才被确认,以确保输入的数据准确无误。三次,至少两次相同的值才被确认,以确保输入的数据准确无误。当一帧数据接收完毕,以下两个条件同时满足:当一帧数据接收完毕,以下两个条件同时满足: (1 1)RI0,即上一帧数据接收完成时,即上一帧数据接收完成时,RI1的中断请求已被响应,的中断请求已被响应,SBUF中的数据已被取走;中的数据已被取走;(2)SM20或接收到停止位为或接收到停止位为1(方式方式1时停止位进入时停止位进入RB8)。)。则这次接收才有效,将则这次接收才有效,将8位数据装入接收缓冲器位数据装入接收缓冲器SBUF,停止位装入,停止位装入RB8,井将,井将RI置置1,申请中断。否则数据将丢失。,申请中断。否则数据将丢失。第五章 1-17三、方式三、方式2 2和方式和方式3 3 串串行行口口工工作作在在方方式式2和和方方式式3时时,均均为为11位位异异步步通通信信接接口口。由由TXD发发送送,RXD接接收收。发发送送接接收收的的一一帧帧11位位信信息息组组成成为为:l位位起起始始位位(0),8位位数数据据位位(低低位位在在前前),1位位可可编编程程位位(第第9数数据据位位)和和1位位停停止止位位(1)。发发送送时时,可可编编程程位位(TB8)可可设设置置为为0或或l,也也可可将将奇奇偶偶位位装装入入TB8,从从而而进进行行奇奇偶偶校校验验;接接收收时时,可编程位送入可编程位送入SCON中的中的RB8。帧格式如图:帧格式如图: 方式方式2 2和方式和方式3 3的工作原理类同,唯一的区别仅在于:的工作原理类同,唯一的区别仅在于: 方式方式2 2的波特率为的波特率为fosc32或或fosc64,而方式而方式3 3的波特率的波特率是可变的,取决于定时器是可变的,取决于定时器TlTl的溢出率。的溢出率。 第五章 1-191.1.发送过程发送过程 发送前,先根据通信协议由软件设置发送前,先根据通信协议由软件设置SCON中的中的TB8。当。当CPU执行一条执行一条写入写入SBUF的指令后,便立即启动发送器开始发送。串行口能自动地将的指令后,便立即启动发送器开始发送。串行口能自动地将TB8装入到第装入到第9位数据位的位置,再逐一由位数据位的位置,再逐一由TXD端发送出去端发送出去。发送完一帧信息时,。发送完一帧信息时,置置TI为为1,请求中断。,请求中断。2.2.接收过程接收过程 当当REN1时时,CPU开开始始对对RXD不不断断采采样样,采采样样速速率率为为波波特特率率的的16倍倍,一一旦旦检检测测到到负负跳跳变变时时,立立即即复复位位16分分频频计计数数器器,并并开开始始接接收收。位位检检测测器器在在每每一一位位的的7、8、9状状态态时时,对对RXD端端采采样样3个个值值,以以采采3取取2的的表表决决方方法法确确定定每每位位状状态态。当当采采至至最最后后一一位位时时,若若以以下下2个个条条件件满满足足,才才将将8位位数数据据装装入入SBUF,第,第9位数据装入位数据装入RB8并置位并置位RI1。(1) RI0,意味着,意味着SBUF中的数据已被取走,缓冲器为空;中的数据已被取走,缓冲器为空; (2) SM20或接收到的第或接收到的第9位数据位位数据位RB81时。时。方式方式2和方式和方式3的发送和接收过程:的发送和接收过程:第五章 1-203 3用第用第9 9位数据作奇偶校验位位数据作奇偶校验位 方方式式2 2、方方式式3 3也也可可以以像像方方式式1 1一一样样用用于于点点对对点点的的异异步步通通信信。在在数数据据通通信信中中由由于于传传输输距距离离较较远远,数数据据信信号号在在传传送送过过程程中中会会产产生畸变,从而引起误码。通常可在通信软件上采取纠错措施。生畸变,从而引起误码。通常可在通信软件上采取纠错措施。MOV A,R0MOV C,PMOV TB8,C 如将作为第如将作为第9位数据作位数据作奇偶校验位,将其置入奇偶校验位,将其置入TB8位一同发送。位一同发送。在接收端的接收程序将数在接收端的接收程序将数据的奇偶校验值与据的奇偶校验值与RB8进进行比较行比较MOV A,SBUFMOV C,P.第五章 1-21发送端发送数据及其奇偶校验位的程序段为:发送端发送数据及其奇偶校验位的程序段为: TT:MOVSCON,80H;串口方式;串口方式2MOVA,R0;取待发送的数据;取待发送的数据MOVC,PSW.0;奇偶标志位置入;奇偶标志位置入TB8中中MOVTB8,CMOVSBUF,A;启动一次发送,数据连同奇偶校验位;启动一次发送,数据连同奇偶校验位一块被发送一块被发送LOOP:JBCTI,NEXT;SJMPLOOPNEXT:第五章 1-22 接接收收端端应应取取出出该该奇奇偶偶位位进进行行核核对对,若若接接收收到到的的奇奇偶偶位位(RB8RB8)与与接接收收到数据的奇偶位相同,则认为接收数据正确。相应的接收程序段应为:到数据的奇偶位相同,则认为接收数据正确。相应的接收程序段应为: MOVSCON,90H;方式方式2 2允许接收(允许接收(RENREN为为1 1)LOOP:JBCRI,RECN;等待接收等待接收SJMPLOOPRECN:MOVA,SBUF;读入接收的一帧数据读入接收的一帧数据JBPSW.0(奇偶位),(奇偶位),ONE;接收数据的奇偶值为接收数据的奇偶值为1 1,转,转ONEONEJBRB8,ERR;接收数据的奇偶值为接收数据的奇偶值为0 0,而,而RB8RB81 1,转,转ERRERR 奇偶校验发现有错误奇偶校验发现有错误 SJMPREXTONE:JNBRB8,ERR;RB8RB80 0,转,转ERRERRREXT:;接收正确处理;接收正确处理ERR: ;接收有错处理;接收有错处理第五章 1-28 串行口在不同的工作方式下。其波特率是不同的。串行口在不同的工作方式下。其波特率是不同的。 在在方方式式0 0时时,每每个个机机器器周周期期发发送送或或接接收收一一位位数数据据,因因此此波波特特率率固固定定为为foscfosc1212。 方方式式2 2的的波波特特率率也也是是固固定定的的,其其波波特特率率2SMODfosc6464,其其中中SMOD为为波波特特率率加加倍倍位位,它它附附设设在在电电源源控控制制寄寄存存器器PCONPCON的的最最高高位位,可可由由软软件编程选择。件编程选择。 若若SMOD0,波特率,波特率2SMODfosc64 = 64 = fosc64。 若若SMOD1,波特率,波特率2SMODfosc64 = fosc64 = fosc3232。波特率波特率 T1T1溢出率溢出率四、串行通讯的波特率设计四、串行通讯的波特率设计 方式方式1和方式和方式3的波特率可变,与定时器的波特率可变,与定时器T1或或T2的溢出率有关。的溢出率有关。51子系子系列中常用定时器列中常用定时器Tl作为波特率发生器,这时方式作为波特率发生器,这时方式1和方式和方式3的波特率由定时的波特率由定时器器T1的溢出率和的溢出率和SMOD确定如下:确定如下:第五章 1-29 其其中中T1T1溢溢出出率率取取决决于于其其计计数数速速率率和和定定时时器器的的初初值值。通通常常采采用用T1T1的的工工作作方方式式2 2,即即自自动动重重装装载载方方式式作作为为波波特特率率发发生生器器。为为了了避避免免因因溢溢出出而而产产生生不必要的中断,不必要的中断,此时应禁止此时应禁止T1T1中断。中断。(256256X X) 则串行口方式则串行口方式1 1或或3 3的波特率:的波特率: 实实际际应应用用中中,通通常常是是先先确确定定波波特特率率、再再计计算算定定时时器器T1T1的的计计数数初初值值,然然后后进进行行T1T1的的初初始始化化。由由上上面面波波特特率率的的计计算算公公式式,可可求求出出定定时时器器T1T1方方式式2 2的计数初值为:的计数初值为:T1溢出周期为:溢出周期为:T1的溢出率:的溢出率:第五章 1-30 例例5-1:选用定时器:选用定时器T1,工作方式,工作方式2作波特率发生器,波特率为作波特率发生器,波特率为2400波特。已知波特。已知fosc11.0592MHz,求计数初值,求计数初值X。解:设波特率控制位解:设波特率控制位SMOD0,不增倍时,不增倍时X256一一(11.059210620)(3842400)0F4H 如果串行通信选用很低的波特率,设置定时器如果串行通信选用很低的波特率,设置定时器T1T1为方式为方式0 0或方式或方式l l定定时模式时,当时模式时,当T1T1产生溢出时,需要重装计数初值,故波特率会产生一定产生溢出时,需要重装计数初值,故波特率会产生一定的误差。的误差。 五、五、SMODSMOD位及晶振频率对串行通讯波特率的影响位及晶振频率对串行通讯波特率的影响 可能产生误差可能产生误差 选选用用各各种种常常用用波波特特率率时时,T1T1的的工工作作方方式式、计计数数初初值值及及对对应应fosc的的选用值见表选用值见表52。第五章 1-31第四节第四节 串行口的应用程序设计举例串行口的应用程序设计举例 一、方式一、方式0应用举例应用举例 方方式式0为为同同步步移移位位寄寄存存器器式式输输入入输输出出,8位位数数据据从从RXD(P3.0)引引脚脚输输入入输输出出,由由TXD(P3.1)引引脚脚输输出出移移位位时时钟钟使使系系统统同同步步,波波特特率率固固定定为为fosc12。= 串行接口工作在方式串行接口工作在方式0状态下,单片机和外接的移位寄存器结合扩展状态下,单片机和外接的移位寄存器结合扩展I/O接口。接口。74LS165集成电路:1:移位;移位;0:置数:置数1引脚由高变低时,并行输引脚由高变低时,并行输入端入端AH数据锁存;当数据锁存;当1引引脚为高且加上时钟信号时,脚为高且加上时钟信号时,数据由数据由QA向向QH移位。移位。 1 2 3 4 5 6 7 8 16 15 14 13 12 11 10 974LS165 D C B A移位移位/置数置数GNDVCC串行串行输入输入时钟时钟禁止禁止输出输出 QHE F G H输出输出 QH时钟时钟可由串入实现级联可由串入实现级联串行输出串行输出例例5-2:用用并并行行输输入入8位位移移位位寄寄存存器器74LS165作作为为扩扩展展输输入入口口。如如图图所所示示,利利用用8031的的3根根口口线线扩扩展展为为16位位并并行行的的电电路路,由由2块块 74LS165串串接接而而成成。编编程程从从16位位扩扩展展口口读读入入20个个字字节节数数据据(读读十十次次),并并把把它它们们转转存存到到内内部部RAM的的50H63H中。中。8位并行输入位并行输入8位并行输入位并行输入第五章 1-32编程如下:编程如下: MOVR7,#14H;设置读入字节数;设置读入字节数MOVR0,#50H;设片内;设片内RAM指针指针SETBF0;设置读入字节奇偶数标志;设置读入字节奇偶数标志RCV0:CLRP1.0;并行口输入数据;并行口输入数据SETBP1.0;允许;允许74165串行移位串行移位RCV1:MOVSCON,#10H;设串行口方式;设串行口方式0并启动接收并启动接收JNBRI,$;等待接收一帧数据;等待接收一帧数据CLRRI;清接收中断标志;清接收中断标志MOVA,SBUF;取缓冲器数据;取缓冲器数据MOVR0,AINCR0CPLF0JBF0,RCV2;判是否接收完偶数帧,;判是否接收完偶数帧,;接收完则重新并行置入;接收完则重新并行置入DECR7SJMPRCV1;否则再接收一帧;否则再接收一帧RCV2:DJNZR7,RCV0;判是否已读入预定的字节数;判是否已读入预定的字节数 ;对读入数据进行处理;对读入数据进行处理第五章 1-23 二、异步通信程序设计举例二、异步通信程序设计举例1. 1. 串行口方式串行口方式1 1用于点对点的异步通信用于点对点的异步通信例例5-35-3:设设图图5-115-11中中,A A机机发发送送,B B机机接接收收,波波特特率率2400bit/s2400bit/s,晶晶振振6MHz6MHz,T1T1作作为为波波特特率率发发生生器器,串串行行口口工工作作在在方方式式1 1。甲甲机机送送出出数数据据为为内内部部RAM RAM 50H50H开开始始的的1616个个字字节节数数据据。乙乙机机接接收收数数据据存存放放在在外外部部RAM RAM 3000H3000H300FH300FH单单元中,编写通信程序。元中,编写通信程序。解:双机通讯串行口工作在方式解:双机通讯串行口工作在方式1 1,定时器,定时器T1T1工作在方式工作在方式2 2。 定时常数:定时常数:X=256 -X=256 -(fosc*(SMOD+1)fosc*(SMOD+1))/( 384*/( 384*波特率波特率) ) 若若SMOD=0SMOD=0,则,则X=249.49X=249.49,误差较大。,误差较大。 取取SMOD=1SMOD=1,则,则X=242.98=243=F3H, X=242.98=243=F3H, 误差较小。误差较小。 第五章 1-34采用查询方式编程,采用查询方式编程,A A机发送程序如下:机发送程序如下: MOVTMOD,#20H;定时器(波特率)初始化;定时器(波特率)初始化MOVTL1,#0F3HMOVTH1,#0F3HCLRET1;关定时器;关定时器T1中断中断SETBTR1;启动;启动T1MOVSCON,#40H;串行口初始化(方式;串行口初始化(方式1)MOVPCON,#80H;SMOD=1MOVR0,#50HMOVR7,#10HTRS:MOVA,R0MOVSBUF,A;启动发送;启动发送WAIT:JBCTI,CONT;查询是否一帧数据发送完;查询是否一帧数据发送完AJMPWAITCONT:INCR0;一帧发送完,指针加;一帧发送完,指针加1DJNZR7,TRSRET第五章 1-35B B机接收程序:机接收程序: MOVTMOD,#20H;定时器(波特率)初始化;定时器(波特率)初始化MOVTL1,#0F3HMOVTH1,#0F3HCLRET1;关定时器;关定时器T1中断中断SETBTR1;启动;启动T1MOVSCON,#50H;串行口初始化(方式;串行口初始化(方式1,允许输入),允许输入)MOVPCON,#80HMOVDPTR,#3000HMOVR7,#10HWAIT:JBCRI,READ;等待接收一帧数据完;等待接收一帧数据完AJMPWAITREAD:MOVA,SBUF;取接收数据存放;取接收数据存放MOVXDPTR,AINCDPTRDJNZR7,WAITRET2. 方式方式2、方式、方式3 用于双机通信用于双机通信第五章 1-34 方式方式2、方式、方式3也可以像方式也可以像方式1一样用于点对点的异步通信。在数据通一样用于点对点的异步通信。在数据通信中由于传输距离较远,数据信号在传送过程中会产生畸变,从而引起信中由于传输距离较远,数据信号在传送过程中会产生畸变,从而引起误码。为了保证通信质量,除了改进硬件之外,通常要在通信软件上采误码。为了保证通信质量,除了改进硬件之外,通常要在通信软件上采取纠错措施。常用的一种简单方法就是用取纠错措施。常用的一种简单方法就是用“检查和检查和”,作为第,作为第9位数据位数据称奇偶校验位,将其置人称奇偶校验位,将其置人TB8位一同发送。在接收端可以用第位一同发送。在接收端可以用第9位数据来位数据来核对接收的数据是否正确。核对接收的数据是否正确。 第三章 6-24三、分支程序与循环程序设计三、分支程序与循环程序设计 课间休息第六六章 1-1第第六六章章 MCS-51MCS-51单片机的系统扩展单片机的系统扩展 主要内容主要内容1 . MCS-51单片机系统扩展的基本概念单片机系统扩展的基本概念2 . 程序存储器扩展技术程序存储器扩展技术3 . 数据存储器扩展数据存储器扩展4 . 输入输入/输出口扩展技术输出口扩展技术重点:重点:系统扩展的方法系统扩展的方法 地址译码与分析方法地址译码与分析方法 第六六章 1-2第一节第一节 单片机系统扩展的一般方法单片机系统扩展的一般方法 一、系统扩展基本内容与意义一、系统扩展基本内容与意义8051/87518051/8751最小应用系统最小应用系统 由由于于集集成成度度的的限限制制,这这种种最最小小应应用用系系统统只只能能用用作作一一些些小小型型的的控控制制单单元元。其其应应用用特特点是:点是:(1 1)全全部部I/OI/O口口线线均均可可供供用用户使用。户使用。(2 2)内内部部程程序序存存储储器器容容量量不不大(只有大(只有4KB4KB地址空间)。地址空间)。(3 3)应用系统开发具有特殊)应用系统开发具有特殊性性系统扩展的内容:系统扩展的内容: 1. 1. 外部程序存储器的扩展;外部程序存储器的扩展; 2. 2. 外部数据存储器的扩展;外部数据存储器的扩展; 3. I/O3. I/O接口的扩展;接口的扩展; 4. 4. 其他专用功能部件的扩展。其他专用功能部件的扩展。 MCS-51单片机内部虽然集成了储存器、单片机内部虽然集成了储存器、I/O口、定时器口、定时器/计计数器等硬件资源,但它们的容量比较小,资源有限。为了满数器等硬件资源,但它们的容量比较小,资源有限。为了满足各种复杂的应用系统的要求,常常需要单片机外部扩展存足各种复杂的应用系统的要求,常常需要单片机外部扩展存储器和各种功能的器件。储器和各种功能的器件。第六六章 1-3第六六章 1-4二系统扩展三总线的形成二系统扩展三总线的形成3.对对I/O接口的读写操作如同外部接口的读写操作如同外部RAM的读写的读写操作操作用用MOVX指令实现指令实现第六六章 1-51.外部程序存储器读操作外部程序存储器读操作P0口的分时输出地址信息和输入指令信息控制由口的分时输出地址信息和输入指令信息控制由ALE和和PSEN实现。实现。 为了将为了将P0口的地址和数据分离,口的地址和数据分离, 用用ALE的下跳沿将的下跳沿将P0口输出的地址口输出的地址信号低信号低8位锁存在地址锁存器中,地址锁存器一般选用位锁存在地址锁存器中,地址锁存器一般选用74LS373、74LS573、8282等芯片。等芯片。2.外部数据存储器读外部数据存储器读/写操作写操作对外部数据存储器的读操作控制由对外部数据存储器的读操作控制由ALE和和RD实现。实现。 执行指令:执行指令:MOVX A,DPTR对外部数据存储器的写操作控制由对外部数据存储器的写操作控制由ALE和和WR实现。实现。 执行指令:执行指令:MOVX DPTR, A 8031是是片片内内无无程程序序存存储储器器的的单单片片机机芯芯片片,因因此此,8031的的最最小小应应用用系系统统应在片外扩展应在片外扩展EPROM。第二节第二节 程序存储器的扩展程序存储器的扩展 第六六章 1-7 当程序量超过单片机的片内程序存储器时,将采用片外扩展程序存当程序量超过单片机的片内程序存储器时,将采用片外扩展程序存储器,通常采用储器,通常采用EPROM、E2PROM、Flash 存储器等芯片。存储器等芯片。 一、一、程序存储器扩展的基本方法程序存储器扩展的基本方法1.地址线的连接地址线的连接P0口口(P0.0P0.7)经锁存器接存储器低经锁存器接存储器低8位地址线位地址线(A0A7)。P2口口(P2.0P2.7)与存储器高与存储器高8位地址线位地址线(A8A15)相连接;相连接;第六六章 1-93.控制线的连接控制线的连接/PSEN接存储器的允许输出信号接存储器的允许输出信号/OEALE接地址锁存器锁存信号接地址锁存器锁存信号G。4.片选信号的连接与地址译码片选信号的连接与地址译码 当芯片的三组总线连接完后,将地址总线剩下的高位地址线当芯片的三组总线连接完后,将地址总线剩下的高位地址线作为片选信号,一般片选信号的产生有三种方法即:作为片选信号,一般片选信号的产生有三种方法即:线选法、部线选法、部分译码法、全译码法等分译码法、全译码法等。 2.数据线的连接数据线的连接 P0口与存储器的口与存储器的8位数据线(位数据线(D0D7)相连接。)相连接。1典型典型EPROM扩展电路扩展电路Intel的的通通用用EPROM不不同同型型号号芯芯片片由由于于其其管管脚脚有有一一定定的的兼兼容容性性,它它们在单片机系统扩展中常常被采用。们在单片机系统扩展中常常被采用。 EPROM扩扩展展的的典典型型产产品品有有:2716(2KB)、2732(4KB)、2764(8KB)、27128(16KB)、27256(32KB)、27512(64KB),它它们们的的主要差别只是地址线的增减。主要差别只是地址线的增减。二、程序存储器扩展实例分析二、程序存储器扩展实例分析第六六章 1-10EPROM管脚功能:管脚功能: 1) A0A15 地址线。地址线。2764(A0A12),),27128(A0A13),),27256(A0A14);); 2)CE 芯片使能信号芯片使能信号 3)OE/ VPP 输出使能信号输出使能信号/编程电压编程电压 4) PGM 编程脉冲输入端编程脉冲输入端 5)O0O7 数据线数据线 例例1 1:用一片用一片27128扩展的扩展的16K字节单片机程序存储器。字节单片机程序存储器。 扩扩展展一一片片程程序序存存储储器器时时,片片选选信信号号CS可可直直接接接接地地,也也可可接接A14A14或或A15A15,既采用线选法。,既采用线选法。 第六六章 1-11一旦片选确定则存储单元的地址信号就确定了一旦片选确定则存储单元的地址信号就确定了,线选法时存储器的地址不是唯一的线选法时存储器的地址不是唯一的27128的的A0A13 接地址总线接地址总线A0A13 OE 接接 PSEN O0O7 接接 D0 D7地址锁存器的地址锁存器的 G ALE OC 直接接地直接接地 由于由于EPROMEPROM没有加密功能,不利于应用软件的保密。为了用户的应用没有加密功能,不利于应用软件的保密。为了用户的应用程序不被他人拷贝,可采用带有片内程序存储器的单片机芯片。程序不被他人拷贝,可采用带有片内程序存储器的单片机芯片。第六六章 1-12采用线选法时,存储器的地址不是唯一的,存在地址重叠现象。采用线选法时,存储器的地址不是唯一的,存在地址重叠现象。第六六章 1-152. 2. E2PROM扩展电路扩展电路 扩展扩展2864电路如图电路如图 2864是是8K字节的字节的E2PROM,第六六章 1-16说明:说明: 图中的图中的2864既是程序存储器又是数据存储器,这时程序和数据存既是程序存储器又是数据存储器,这时程序和数据存储器要统一编址。储器要统一编址。27128的的A0A12 接地址总线接地址总线A0A12 OE 单片机的单片机的RD、 PSEN通过与门输入通过与门输入 WE 接接 WR O0O7 接接 D0 D7 在在MCS-51MCS-51单片机中没有独立的单片机中没有独立的I/OI/O指令,将外部数据存储指令,将外部数据存储器与器与I/OI/O接口统一编址,在设计扩展电路时首先考虑各个芯片接口统一编址,在设计扩展电路时首先考虑各个芯片的地址编址问题。的地址编址问题。即存储器和即存储器和I/OI/O接口芯片的地址线及片选与接口芯片的地址线及片选与单片机地址总线的连接问题单片机地址总线的连接问题。第六六章 1-17第三节第三节 数据存储器的扩展数据存储器的扩展一、数据存储器和一、数据存储器和I/OI/O接口扩展的基本方法接口扩展的基本方法在单片机系统中常用的数据存储器是静态随机存储器在单片机系统中常用的数据存储器是静态随机存储器(SRAM),其典型的芯片有),其典型的芯片有6264(8K8位)、位)、62256(32K8位)。位)。RAM管脚管脚(6264): 1) A0A15 地址线。地址线。 6264(A0A12),),62256(A0A14);); 2)CE1、CE2 芯片使能信号芯片使能信号 3)OE 输出允许输出允许 4) WE 写允许写允许 5)IO0IO7 数据线数据线 第六六章 1-16 A0A13 接地址总线接地址总线A0A13 CE1、CE2 CE1接片选信号接片选信号,CE2接电源接电源 OE 接接 RD WE 接接 WR IO0IO7 接接 D0 D7RAM与单片机的连线:与单片机的连线: 第六六章 1-16片选信号的产生有三种方法片选信号的产生有三种方法:线选法线选法 直接利用地址总线的高位地址线作为存储器芯片的片选信号。直接利用地址总线的高位地址线作为存储器芯片的片选信号。 优点:电路简单,不需要地址译码器硬件,体积小,成本低优点:电路简单,不需要地址译码器硬件,体积小,成本低 缺点:可寻址的器件数目受限制,地址空间不连续缺点:可寻址的器件数目受限制,地址空间不连续译码法译码法 使用译码器对高位地址进行译码,译码器的输出作为存储器芯使用译码器对高位地址进行译码,译码器的输出作为存储器芯片的的片选信号片的的片选信号 ,有全译码和部分译码。,有全译码和部分译码。 是一种最常用的方法,能有效的利用存储空间,适用于大容量是一种最常用的方法,能有效的利用存储空间,适用于大容量多芯片的存储器扩展。多芯片的存储器扩展。 常用译码器芯片有常用译码器芯片有74LS138(38)、)、74LS139(24)、)、74LS154 (416) 例例1. 1. 6264静态静态RAM扩展电路扩展电路第六六章 1-18二、数据存储器扩展举例二、数据存储器扩展举例 例例2 2 如图为采用如图为采用74LS139译码扩展两片译码扩展两片2764(8K)EPROM和和两片两片6264(8K)RAM芯片的电路,分析它们的地址范围。芯片的电路,分析它们的地址范围。第六六章 1-20 G Y3 B Y2 A Y1 Y0 A0 A7 A8 A12 CE 2764(1) D0D7 OE DO Q0 D7 Q7 G A0 A7 A8 A12 CE 2764(2) D0D7 OE A0 A7 A8 A12 CE 6264(1) D0D7 WE OE A0 A7 A8 A12 CE 6264(2) D0D7 WE OE G Y3 B Y2 A Y1 Y0 G Y3 B Y2 A Y1 Y0 P2.7 P2.6 P2.5 P2.0 P2.4 P0.0 P0.7 ALE 8031 PSEN WR EA RD2764(1) : 0000H1FFFH 2764(2) : 2000H3FFFH6264(1) : 4000H5FFFH 6264(2) : 6000H7FFFH1 1TTLTTL并行输入、输出接口并行输入、输出接口 根据根据“输入三态,输出锁存输入三态,输出锁存”与总线相连的原则,可采用与总线相连的原则,可采用TTLTTL电路或电路或CMOS电路的锁存器、三态缓冲器扩展简单的电路的锁存器、三态缓冲器扩展简单的I/O接口。接口。 如采用如采用8位三态缓冲器位三态缓冲器74LS244组成输入口,采用组成输入口,采用8D锁存器锁存器74LS273,74LS373等组成输出口。等组成输出口。第六六章 1-21第四节第四节 一般一般I/0口的扩展口的扩展 一、简单一、简单I/0扩展扩展CLR Q0 D0 D1 Q1 Q2 D2 D3 Q3GNDVCCQ7D7D6Q6Q5D5D4Q4CLK74LS27374LS2441EN 1A1 2Y4 1A2 2Y3 1A3 2Y2 1A4 2Y1GNDVCC2EN 1Y1 2A4 1Y2 2A31Y3 2A21Y4 2A1当当CLR为为高电平,高电平,CLK的上的上升沿使升沿使D锁存。锁存。当当EN为低为低电平,电平,A信号传送信号传送到到Y;EN为高电平,为高电平,Y为高阻为高阻态。态。第六六章 1-22简单简单I/0I/0扩展举例:扩展举例:例中例中74LS244和和74LS273地址都为地址都为7FFFH(P2.7=0)。)。要求当某开关合上时相对应的要求当某开关合上时相对应的LED点亮,开关断时相应的点亮,开关断时相应的LED暗,其控制程序如下暗,其控制程序如下:第六六章 1-24M1:MOVDPTR,#7FFFHMOVXA,DPTRMOVXDPTR,ASJMPM1 2 2TTLTTL串行输入、输出接口串行输入、输出接口 用串行口的方式用串行口的方式0 0,外接串行输入,外接串行输入并行输出的移位寄存器扩展并行输并行输出的移位寄存器扩展并行输出口,或者外接并行输入出口,或者外接并行输入串行输出的移位寄存器,扩展并行输入口。常串行输出的移位寄存器,扩展并行输入口。常用的芯片用的芯片74LS164,74LS165,4014,4094等。等。第六六章 1-28二、可编程二、可编程I I0 0口的扩展口的扩展 可编程可编程I I0 0口可以通过程序设置引脚不同的工作方式,口可以通过程序设置引脚不同的工作方式,CPUCPU不需要其他不需要其他的硬件,一片芯片可扩展较多的的硬件,一片芯片可扩展较多的I I0 0接口,使用灵活方便,通用性强。接口,使用灵活方便,通用性强。IntelIntel公司的可编程公司的可编程I/OI/O接口芯片种类齐全,为接口芯片种类齐全,为MCS-51MCS-51单片机扩展单片机扩展I/OI/O接口提接口提供了很大的方便。供了很大的方便。 常用Intel系列可编程接口芯片型号名称说明8155并行接口带256字节的RAM和14位定时/计数器8255通用并行接口8251同步/异步通讯接口8253定时/计数器8279键盘/显示接口第六六章 1-28 8255A8255A是一个典型是一个典型的可编程通用并行接口的可编程通用并行接口芯片。它具有三个芯片。它具有三个8 8位位的并行口,有三种工作的并行口,有三种工作方式,可作为单片机与方式,可作为单片机与各种外设连接的接口电各种外设连接的接口电路。路。 1、结构:结构:1)三个并行)三个并行I/O口口A、B、C各有各有8根线,分成根线,分成AB两组两组2)数据总线缓冲器数据总线缓冲器:用于用于与与CPU接口接口3)读写控制逻辑)读写控制逻辑:选择选择端口和数据的流向端口和数据的流向(一)(一) 8255可编程并行可编程并行i/o接口扩展接口扩展第六六章 1-292、引脚:、引脚:I/O线线24根根A、B、C口;口;数据线数据线8根根D7D0,与,与CPU接口;接口;控制线控制线6根根RESET(复位)(复位)RD、WR(读、写)(读、写)A1、A0(端口选择)(端口选择)CS(片选)(片选)电源线电源线2根根Vcc、GND3、端口寻址与控制信号功能、端口寻址与控制信号功能第六六章 1-304 4、8255A8255A与与MCS-51MCS-51单片机的连接单片机的连接 由由8255A8255A的管脚功能得到数据脚、控制脚与微处理器连接,而的管脚功能得到数据脚、控制脚与微处理器连接,而PAPA、PBPB、PCPC口与外部设备信号连接。口与外部设备信号连接。 MCS-51MCS-51单片机管脚单片机管脚 8255A 8255A管脚管脚P0.0P0.0P0.7P0.7D0D0D7D7P3.6( )P3.6( )P3.7( )P3.7( )低位地址低位地址2 2位位A0A0、A1A1地址译码信号地址译码信号地址分析?RDWRP2.7ALE8031P0.70.0RDWRCS8255AA1A0D7D0PC7PC0PB7PB0PA7PA0 373G Q1 Q2分析:分析:8255A8255A的的4 4个地址分别为(无关位取个地址分别为(无关位取1 1):):PAPA口口 7CFFH7CFFH,PBPB口口 7DFFH7DFFH,PCPC口口 7EFFH7EFFH,控制字寄存器地址为,控制字寄存器地址为 7FFFH7FFFH。第六六章 1-325 5、8255A的工作方式的工作方式 8255A8255A有有3 3种基本的工作方式:方式种基本的工作方式:方式0 0,方式,方式1 1,方式,方式2 2。其。其中中PAPA口可以工作在口可以工作在3 3种方式,种方式,PBPB口可工作在方式口可工作在方式0 0和方式和方式1 1,PCPC口只能工作在方式口只能工作在方式0 0 。 (1 1)工作方式)工作方式0 0 方式方式0为基本输入、输出方式。这种方式下:为基本输入、输出方式。这种方式下:PA、PB口口各各8位均定义为输入或输出,位均定义为输入或输出,PC口的低口的低4位及高位及高4位可独立定位可独立定义为输入或输出。定义为输出口均有锁存数据的能力,而定义为输入或输出。定义为输出口均有锁存数据的能力,而定义为输入口无锁存能力。义为输入口无锁存能力。方式方式0适合于无条件传送方式,适合于无条件传送方式,CPU直接执行输入输出指直接执行输入输出指令令。第六六章 1-32在这种方式下,在这种方式下,PA口、口、PB口作为数据的输入或输出口,口作为数据的输入或输出口,均带有锁存,均带有锁存,PC口自动作为口自动作为PA口与口与PB口的选通控制线。口的选通控制线。 在方式在方式1下,下,A口和口和B口的输入输出口的输入输出数据要在选通信号控制下来完成,数据要在选通信号控制下来完成,PA口借用口借用PC口的一些信号线用作控制和状态线,形成口的一些信号线用作控制和状态线,形成A组;组;PB口也借用口也借用PC口的一些信号线用作控制和状态线,组成口的一些信号线用作控制和状态线,组成B组。组。(2)工作方式)工作方式1(选通的输入输出方式)(选通的输入输出方式)方式方式1输出的控输出的控制和状态信号:制和状态信号:方式方式1输入的控输入的控制和状态信号:制和状态信号:STB:选通输入信号线,输入:选通输入信号线,输入,外部设备提供外部设备提供IBF:输入缓冲器满信号线,输出;:输入缓冲器满信号线,输出;INTR:中断请求输出信号。:中断请求输出信号。ACK:外设收到数据后的响应信号:外设收到数据后的响应信号 ,输入输入OBF:输出缓冲器满信号,输出:输出缓冲器满信号,输出INTR:中断请求输出信号线:中断请求输出信号线PC口的功能定义见表口的功能定义见表68第六六章 1-32 P0.7P0.0 INT0 8031 EA D7D0 PA7PA0 8255A PC4 PC5 PC3 &INTE A D0D7 输入设备 1其中,其中,INTE为中断允许触发器。为中断允许触发器。方式方式1输入输入INTEA受受PC4位置位置1/置置0控制控制INTEB受受PC2位置位置1/置置0控制控制方式方式1输出输出INTEA受受PC6位置位置1/置置0控制控制INTEB受受PC2位置位置1/置置0控制控制如图为如图为A口方式口方式1输入的工作示意图:输入的工作示意图: STBA IBFA第六六章 1-32 (3 3)工作方式)工作方式2 2(双向传输方式)(双向传输方式) 工作方式工作方式2 2是是A A组独有的工作方式。外设既能在组独有的工作方式。外设既能在PAPA口的口的8 8条引线上发送数据,又能接收数据。此方式也是借用条引线上发送数据,又能接收数据。此方式也是借用PCPC口的口的PC3PC3PC7PC7这这5 5条信号线作控制和状态线,条信号线作控制和状态线,PAPA口的输入和输出口的输入和输出均带有锁存。均带有锁存。 第六六章 1-336 6、82558255的控制字及状态字的控制字及状态字 8255有两种控制字,方式选择控制字和端口有两种控制字,方式选择控制字和端口PC置位复位控制字,这置位复位控制字,这两个控制字都写入两个控制字都写入8255的控制端口,由最高位特征位区别。的控制端口,由最高位特征位区别。A口口B口口方式控制字方式控制字 D71方式选择控制字:方式选择控制字:8255A8255A的的PCPC口位操作控制字口位操作控制字第六六章 1-33MOVDPTR,#6003H;控制字寄存器地址;控制字寄存器地址MOVA,#9BH;方式控制字;方式控制字MOVXDPTR,A;写入;写入8255A 如果全部输出,则方式控制字为如果全部输出,则方式控制字为10000000B80H。8255A上电复上电复位后所有口为输出位后所有口为输出“1”状态。状态。 第六六章 1-35初始化编程举例初始化编程举例17、8255A的应用的应用 设某片设某片8255A8255A的端口地址是的端口地址是6000H6000H6003H6003H,工作于方,工作于方式式0 0,端口,端口A A和端口和端口C C高高4 4位输出,端口位输出,端口B B和端口和端口C C低低4 4位输入,位输入,设置该设置该8255A8255A的方式选择控制字。的方式选择控制字。 解:方式选择控制字解:方式选择控制字=1 =1 000 000 0 0 01 1 01 1 要求从要求从8255的的C口口PC3输出一个正输出一个正脉冲脉冲1)分析:)分析:PC3输出低电平输出低电平00000110BPC3输出高电平输出高电平00000111B2)编程)编程MOVDPTR#4003HMOVA,#06MOVXDPTR,AMOVA,#07MOVXDPTR,AMOVA,#06HMOVXDPTR,A第六六章 1-36初始化编程举例初始化编程举例2第六六章 1-38分析:分析:8255A8255A的的4 4个地址分别为(无关位取个地址分别为(无关位取1 1):):PAPA口口 7FFCH7FFCH,PBPB口口 7FFDH7FFDH,PCPC口口 7FFEH7FFEH,控制字寄存器地址为,控制字寄存器地址为 7FFFH7FFFH。(2)应用举例)应用举例例例66第六六章 1-39应用子程序如下:应用子程序如下:EX8255:MOVDPTR,#7FFFH;指向控制口;指向控制口MOVA,#89H;8255A初始化初始化MOVXDPTR,AMOVDPTR,#7FFEH;指向;指向C口口MOVXA,DPTR;取开关信号;取开关信号 MOVR3,#0;开关号单元清;开关号单元清0MOVR2,#8;8个键个键 解:首先确定方式控制字,解:首先确定方式控制字,PA口应该工作在方式口应该工作在方式0且输出,且输出,PB口没有口没有用任意,用任意,PC口输入,则方式控制字是口输入,则方式控制字是10001001B。例例6 66 6: 如图所示电路,由如图所示电路,由PAPA口输出点亮七段数码管,口输出点亮七段数码管,PCPC口接口接8 8个开个开关用作输入信号。当某开关合上时显示相应的开关号,即关用作输入信号。当某开关合上时显示相应的开关号,即K1K1合显示合显示“1 1”,K2K2合显示合显示“2 2”,依此类推。试编程实现。,依此类推。试编程实现。第六六章 1-40EX82_1:RRCA;移出一位信号;移出一位信号JCEX82_2;判断开关断转跳;判断开关断转跳INCR3;键号;键号1MOVA,R3;显示值转换显示码;显示值转换显示码MOVDPTR,#DIRTAB;七段数码管显示段码表首地址;七段数码管显示段码表首地址MOVCA,A+DPTR;查表;查表MOVDPTR,#7CFFH;送;送PA口显示口显示MOVXDPTR,ARETEX82_2:INCR3;键号;键号1DJNZR2,EX82_1;8个键判完?个键判完?RETDIRTAB:DB0C0H,0F9H,0A4H,0B0H;定义段码;定义段码0,1,2,3DB99H,92H,82H,0F8H;4,5,6,7DB80H,98H,88H,83H;8,9,A,BDB0C6H,0A1H,86H,8EH;C,D,E,F第六六章 1-41 图为某图为某8255A扩展电路,试分析各端口地址。编程实现在如图示扩展电路,试分析各端口地址。编程实现在如图示接口电路的两个接口电路的两个LED显示器(共阴极接法)上显示自己的学号。显示器(共阴极接法)上显示自己的学号。A口输口输出字形码,出字形码,C口输出位控码。口输出位控码。 提高练习:提高练习:RDWRP2.08051P0ALED7Q1D0Q0GRDPA口WRCSA1A0PC4PC5D7D0第三章 6-24三、分支程序与循环程序设计三、分支程序与循环程序设计 课间休息第七章 1-1第七章 单片机应用系统接口技术 主要内容1. 接口技术的基本概念2. 键盘接口技术 3.显示器接口技术 4. LCD显示器及其接口 重点内容 1. 键盘接口技术 2.显示器接口技术 第七章 1-2第一节 单片机接口技术的基本概念 一、 单片机系统接口技术的基本功能 接口计算机与外界进行信息交换的桥梁,接口技术则是研究CPU如何与外设实现最佳耦合和匹配,以实现双方高效、可靠地交换信息的一门技术,它是硬软件结合的体现,是计算机应用的关键。 单片机与I/O设备交换信息比其与存储器交换信息更为复杂,表现在: 1)I/O设备工作速度不同; 2)I/O设备的数据字长多样; 3)I/O设备处理的信号不同 (模拟或数字信号、并行或串行) ;4)I/O设备所需的控制信号不同。 为了实现单片机与外部设备可靠通信,接口应具备的功能: 1)数据的寄存和缓冲功能;2)设备选择功能;3)信号转换功能;4)对外部设备的控制和联络功能;5)中断管理功能;6)可编程功能。第七章 1-.二、 单片机与I/O设备间的接口信息 1)数据信息 2)状态信息 3)控制信息三、 I/O信息传递方式 1)并行I/O 2)串行I/O四、 I/O的传递控制方式 1)无条件传送方式 2)查询传送方式 3)中断传送方式第七章 1-4第二节 键盘接口技术一、键盘的特点和接口任务 1.键盘的构成 一般应用时有两类键盘:编码键盘和非编码键盘。编码键盘能自动提供对应于被按键的编码信息,如ASCII码,并能同时产生一个选通脉冲通知微处理器,还具有处理抖动和多键串键的保护电路。 非编码键盘所需要的硬件较少,其中按键的识别、按键代码的产生、防止串键和消去抖动等问题,都靠程序来实现。价格也便宜。 不同的组合方式可构成很多种不同的键盘接口方式。当按键较少时,一般采用独立方式,而当按键较多时采用矩阵(行列)方式时。键盘状态的监测方法中断方式还是查询方式。 从按一个键到键的功能被执行主要包括两项工作:一是键的识别,另一项是键功能的实现。 第七章 1-52按键引起的弹跳(抖动)现象1)硬件去抖2)软件去抖 (见P67例330)a)按健抖动现象 b)硬件去抖动电路第七章 1-61)检测是否有键按下。2)若有键按下,判定是哪一个键。3)确定被按键的含义。4)反弹跳(去抖动)。5)不管一次按键持续的时间有多长,仅采用一个数据。6)防止串键,对多健按下时有三种处理办法: “n键同时按下”的情况:只认为最后一个键按下为为有效;将按键的信息存入键盘输入缓冲器,逐个处理。3键的确认及接口硬件、软件任务 “两键同时按下”的情况:只有一个键按下时才读取键盘的输出,最后仍被按下的键有效;当第一个键未松开时,按第二个键不起作用(硬件实现)。“n键锁定”技术只处理一个健。第七章 1-7 单片机常用的键盘结构形式有独立式和矩阵式两种,单片机实现键盘接口的常用方法和接口芯片有: 使用单片机芯片的并行口; 使用单片机芯片的串行口; 使用通用接口芯片(例如8255、8155等); 使用专用接口芯片(例如8279 、ZLG7289A等)。 第七章 1-8二、简易键盘接口简单开关接口: 开关主要用于向单片机输入一个固定不变的电平信号,开关信号可通过机械式开关、电子式开关等产生。P1.0 80315VR1R2TD开关输入电路光电传感器开关接口电路 独立式按键是指直接用I/O口线构成的单个按键电路。每根I/O口线上按键的工作状态不会影响其他I/O口线的工作状态。第七章 1-91独立式按键结构第七章 1-10可编程I/O接口输入独立式按键可直接由单片机的I/O口接入,也可由扩展I/O口接入。第七章 1-11三、矩阵式键盘接口 2)矩阵式键盘按键的识别方法 采用扫描法使所有列为低电平,检查各行线电平是否有变化,有变化则有健按下;使某列为低电平,其余各列为高电平,再检查各行线电平的变化,某行线电平变低,则此行、列交点处按键按下。矩阵式键盘用于按键数目较多的场合,它由行线和列线组成。1)矩阵式键盘的工作原理 无健按下时,行线处于高电平状态;当有健按下时行线电平由将由与此行线相连的列线的电平确定。5V8R RRR01201201234567I/O口第七章 1-121由8255和单片机组成矩阵式键盘接口(1)键盘扫描程序功能1)判断键盘上有无键按下2)去键的机械抖动影响。3)求按下键的键号。4)等待键释放5)转相应的键处理子程序健号的确定 通常都以键的排列顺序安排键号。这样,各行的首号依次是00H、04H、08H、0CH,如列号按03顺序,则键号的计算为:键码=行首号+列号。5VR40420列00H01H0FH PA0 PA1 PA2 PA38255 PB0CS PB1 PB2 PB3106H02H03H1列2列3列04H05H07H08H09H0AH0BH0CH0DH0EH200H203HD0D7第七章 1-13(2)键扫描子程序设计开 始健扫描有健按下?健号计算去抖动等待健释放JMPA+DPTR 00H健处理程序 01H健处理程序 n健处理程序YN健扫描程序流程为:设8255的A口地址为200H,B口地址为201H。1)判定有无闭合键的子程序 设子程序为KS1,程序段如下:KS1:MOVDPTR,#201H;指向B口MOVA,#00H;B口送00HMOVXDPTR,ADECDPL;指向A口MOVXA,DPTR;读A口CPLA;A取反,无键按下则全“0”ANLA,0FH;屏蔽A高半字节RET执行KS1子程序的出口参数是: 有闭合键则(A)0, 无闭合键则(A)=0。 第七章 1-14第七章 1-152)键盘扫描程序 单片机应用系统中键盘和显示器一般同时存在,把显示程序作为键盘扫描的延时子程序,实现软件去抖动 。 KEY1:ACALLKS1;检查是否有键闭合JNZLK1;A非“0”则有健按下,转移LK1ACALLDIR ;显示一次(延时10ms)AJMPKEY1LK1:ACALLDIR;有键闭合二次软件去抖动延时,共20msACALLDIRACALLKS1;再检查有键闭合否JNZLK2;有键闭合,转LK2ACALLDIRAJMPKEY1;去抖动确认无键闭合,延时后转KEY1在查健LK2:MOVR2,#0EH;确定健号,扫描初值送R2MOVR4,#00H;扫描列号送R4 LK4:MOVDPTR,#201H;建立B口地址MOVA,R2MOVXDPTR,A;扫描初值送B口DECDPL;指向A口MOVXA,DPTR;读A口JBACC.0,LONE;ACC.0=1,第0行无键闭合,转LONEMOVA,#00H;0行有键闭合,装第0行行值AJMPLKP;转LKP计算健号LONE:JBACC.1,LTWO;ACC.1=1,第1行无键闭合,转LTWOMOVA,#04H;1行有键闭合,装第1行行值AJMPLKPLTWO:JBACC.2,LTHR;ACC.2=1,第2行无闭合,转LTHRMOVA,#08H;2行有健闭合,装第2行行值AJMPLKPLTHR:JBCC.3,NEXT;ACC.3=1,第3行无键闭合转NEXTMOVA,#0CH;3行有键闭合,装第3行行值第七章 1-16第七章 1-17LKP: ADD A,R4 ;计算键码 PUSH ACC ;保护键码LK3:ACALLDIR;延时10msACALL KS1;查键是否松开,若还闭合再延时JNZLK3POPACC;若键松开,则键码送ARET;返回NEXT:INCR4;扫描列号加1,准备下列扫描MOVA,R2JNBACC.3,KEND;笫3位为“0”,已扫完最高列则转KNDRLAA;循环左移一位MOVR2,AAJMPLK4;转LK4进行下一列扫描KEND:AJMPKEY1;扫描完毕,开始新的一轮 程序的运行结果:闭合键的键号放在累加器A中。第七章 1-182.由74LS164和单片机串/并行口组成的矩阵式键盘接口(1)单片机串/并行口矩阵式键盘接口 当单片机并行口线较少时,可用串行口作键盘接口,所示8031串行口的方式0用于键盘的接口,作为键盘列线输出。 思路:1)由串行口输出00H,检查行线(P3.4、P3.5)是否为低电平有健按下?2)有健按下时由串行口逐一输出某列线为0信号,查健号。(1)LED发光二极管显示器 与液晶显示器相比,更适于在光线暗的环境中使用。它的主要缺点是工作电流较大。第七章 1-19第二节 显示器接口技术 一、单片机应用系统中常用的显示器1.常用的显示器(2)LCD液晶显示器件 液晶显示器是一种被动式的显示器,具有体积小、质量轻,低电压、微功耗、抗干扰能力强等优点,因此被广泛应用于各种便携式电子信息产品,如笔记本电脑、手机、计算器、数字式仪表上。第七章 1-202.显示器显示控制方式 1)显示器显示接口按驱动方式可分成静态显示和动态显示两种显示方式,动态显示的扫描可由单片机软件或专门的硬件完成; 静态显示方式每位的段码线分别与一个8位的锁存器输出相连,每个显示字符一经确定,相应锁存器锁存的段码输出将维持不变。 动态显示方式将所有位的段码线相应段并联在一起,由一个8位I/O口控制,形成段码线的多路复用,形成了各位显示器的分时选通。在某一时刻,只让某位的位选线处于选通状态显示字符,其他的位是熄灭的,采用扫描工作方式。 2)按CPU向显示器接口传送数据的方式则可分成并行传送和串行传送两种显示数据传送方式; 3)按显示器接口是否带译码器可分成译码和非译码两种显示数据方式。第七章 1-21LED 动态显示器接口LED静态显示器接口第七章 1-223. 显示器接口的数据输出方式 由显示器接口电路的功能可分为: (1)译码显示数据方式 一般为专用显示器接口器件,接口包含锁存器/译码器/驱动器等,可以把一位BCD码或十六进制数锁存、译码为相应的字形代码并有足够的功率驱动显示。 (2)非译码显示数据方式 显示器接口只包含锁存器和驱动器,必须由软件将BCD码或十六进制转换为相应的字形代码输出,一般为通用I/O接口或器件。 由于单片机的接口不能直接显示器,需要在单片机和显示器之间加接口电路实现译码和驱动。应根据显示器的位数、电流大小(通过每个发光二极管的平均电流为1020mA)来确定接口电路的形式。第七章 1-23二、LED显示器及接口实例1.LED静态显示器接口 常用的LED静态驱动接口器件有: 驱动共阴极LED可选用CD4511 、CD4513、CD14495 驱动共阳极LED可选用74LS74、74LS274 驱动LCD 可选用CD14543、CD14544 1 2 3 4 5 6 7 8 9 18 17 16 15 14 13 12 11 10CD4513 f g a b c d e GNDVCCB C LTBILE D ARBIRBO四 位 锁 存 驱 动七 段 译 码74ABCDabcg例:用CD4513驱动4位共阴极LED静态显示,接口电路如图。第七章 1-24 P0.0 P0.7 ALE8031 EA 373 A Y0 B Y1 C Y2 Y3 Y4 Y5 Y6 Y7 74LS138 DCBALE 4513a g DCBALE 4513a g DCBALE 4513a g DCBALE 4513a g877774D0D3G1G2AG2BA0A1A2A77R7R7R7R第七章 1-20 图中四位显示端口地址为:90H93H,要求把内存RAM40H43H单元中四个非压缩BCD码送显示器显示。程序段如下:MOVR0,#90H;R0指向显示端口MOVR1,#40H;R1指向显示数据地址MOVR2,#04H;置显示字符数DISP:MOVA,R1MOVXR0,AINCR1INCR0DJNZR2,DISPRET第七章 1-21例2:LED动态显示器接口(用8255作接口) 动态显示要求1)在内存区建立一个显示缓冲区2)建立一个待显示的字形编码表3)循环输出缓冲区第七章 1-21MOVCA,A+PC动态显示子程序流程图共阴极位选:PC50开 始 显示缓冲区初值79HR0(R3).0=0?YN 位选初值11011111BR3 R3 8255C口 取显示字符查表 转换为段形码 8255A口 延时1ms 显示缓冲区指针R0加1 延时1ms R3右移1位返 回第七章 1-22例3:利用单片机串口与显示器连接 串行口的方式0(移位寄存器输入输出方式)可用于显示器连接,图中外接4片74LSl64作为4位LED显示器的静态连接端口,74LSl64的低电平输出电流8mA,可直接驱动共极阳极LED。采用软件译码向74LSl64输出字形代码,由于显示器工作是静态的,主程序可不必扫描显示器,从而使之有更多的时间处理其它事务。 第七章 1-23DIR:SETBP3.3;开放显示器传送控制MOVR7,#04HMOVR0,#79H;79H7CH为显示缓冲器DL0:MOVA,R0;取出要显示的数ADDA,#0DH;加上查表偏移量MOVCA,A+PC;取出字形MOVSBUF,A(2);送出显示DL1:JNBTI,DL1(3);输出完否CLRTI(2);完,清中断标志INCR0(1);再取下一个数DJNZR7,DL0(2)CLRP3.3(2);关闭显示器传送RET(1);返回SEGTABDBC0H,0F9H,0A4H,0B0H,99H,92H;定义字型段码表DB82H,0F8H,80H,90H,88H,83HDB0C6H,0A1H,86H,8EH,0FFH第七章 1-24串行口扩展的键盘/显示器接口第七章 1-23三、键盘/显示器专用接口芯片(一) 串行接口ZLG72891. ZLG7289A的性能特点 1)ZLG7289A 是采用2线串行接口传送数据,可同时驱动8 位共阴式数码管(或64 只独立LED) 的智能显示驱动芯片, 该芯片同时还可连接多达64键的键盘矩阵。 2)ZLG7289A内部寄存器是可寻址的,即可以有选择地任意写入; 3)ZLG7289A可选择LED显示器的扫描个数; 4) ZLG7289A有三种显示模式 5)具有多种控制指令如消隐闪烁左移右移段寻址指令 6)ZLG7289A 具有片选信号可方便地实现多于8 位的显示; 第七章 1-232. ZLG7289A的引脚功能片选同步时钟串行数据输入/输出按键有效 输出DIG0DIG7 显示位控输出;按键行振荡器输入/出SASG、DP 字段输出;按键列第七章 1-233. ZLG7289A的控制命令ZLG7289A的控制命令都是在CLK的控制下由DATA串行输入或读出有三大类:(1) 纯指令 复位、测试及显示循环和移位指令(2)带有数据的指令(2字节) 显示控制命令(3)读键盘数据指令(2字节)第七章 1-234. 8031与ZLG7289A的接口第七章 1-23(二) 键盘/显示器接口芯片82791. 8279的特点1)8279能对64个按键键盘阵列不断扫描,自动消抖,自动识别出闭合的健并得到健号,能对双健或N健同时按下进行处理;有一个先进先出(FIFO) 的88位RAM和状态寄存器;2)内有16B显示RAM,为LED或其他显示器提供了按扫描方式工作的显示接口,可实现左边输入或右边输入的多达16位字符或数字的动态显示;3)由片选线和A0确定的一个控制端口和一个数据端口; 写控制端口8个8位的控制字,由高3位特征位区分; 读控制端口一个用于指示键盘RAM字符数和有无错误的状态字; 写数据端口写入显示RAM数据(显示字形码); 读数据端口读出键盘RAM中的按下键的健码。第七章 1-232. 8279的引脚功能 40引脚双列直插式IRQ中断请求输出, 当键盘RAM中存有按下健数据时IRQ有效。IRQ 8279 DB0DB7WRRDCSA0RESETCLKVCCVSSRL0RL7CNTL/STBSHIFTSL0SL3OUTA0OUTA3OUTB0OUTB3BTCPU 接 口 健 盘 显 示 扫 描88444第七章 1-233. 8279的命令字和状态字 8279的命令字共有8条,它们的高三位D7、D6和D5为命令特征位,用来区分8条不同的命令。 (1)键盘/显示方式设置命令字 (2)程控时钟命令设定CLK的分频系数,以获得100KHz的时钟 (3)读键盘RAM命令 (4)读显示RAM命令 (5)写显示RAM命令 (6)显示禁止写入/消隐命令 (7)清除RAM命令 (8)结束中断/错误方式设置命令 8279的状态字只有一个,主要用于键盘工作方式,以指示键盘RAM的字符数和有无错误发生。第七章 1-233. 8279的接口电路8279控制口:7FFFH8279数据口:7FFEH
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号