单片机原理与接口技术电子教案_第1页
单片机原理与接口技术电子教案_第2页
单片机原理与接口技术电子教案_第3页
单片机原理与接口技术电子教案_第4页
单片机原理与接口技术电子教案_第5页
已阅读5页,还剩177页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、高等职业教育电子信息贯通制教材单片机原理与接口技术苏平 主编第1章 微型计算机的基础知识计算机中的数制与编码微型计算机的基本结构和工作原理单片机的发展概况单片机的特点和应用1.1 计算机中的数制与编码1.1.1 数制数制即进位计数制,常用的数制有二进制、十进制、十六进制,如表1.1。1. 不同的进制的进位规则不同二进制有两个数码即0和1,逢二进一十进制有10个数码即0,1,2,3,8,9,逢十进一十六进制有16个数码即09,AF,逢十六进一2. 数码在不同的位置其权不同任意一个进制数可表示为:(ii)式中i为该数制的基本数码,是权,是基数,基数不同所表示的进制数不同。 3.为了区分不同的数制,

2、可在数的右下角注明数制,或者在数的后面加一字母,通常用B表示二进制,D表示十进制(通常不加字母),H表示十六进制。 表1.1 十进制数、二进制数、十六进制数对照表十进制二进制十六进制十进制二进制十六进制000000810008100011910019200102101010A300113111011B401004121100C501015131101D601106141110E701117151111F1.1.2 数制之间的相互转换1 二进制、十六进制转换十进制方法:将二进制、十六进制数的基数与相应位置的权相乘然后相加即可,例1.1,例1.2。2十进制数转换成为二进制数 方法:整数部分采用除取

3、余法,小数部分采用乘取整法,例1.3。3二进制数和十六进制数间的相互转换方法:以小数点为基准,整数部分向左,小数部分向右,每四位二进制数对应一位十六进制数,不足四位添0凑 四位,例1.4,例1.5。1.1.2 数制之间的相互转换例1.1把二进制数10101.1011B转换成相应的十进制数。解:10101.1011B1242212012-112-312-421.6875D例1.2把十六进制数0F3DH转换成为相应的十进制数。解:0F3DHF1623161D160 152563161313901D1.1.2 数制之间的相互转换例1.3把十进制数15.75转换成为对应二进制数。解:整数部分15:所以

4、整数15相当于二进制数1111B;小数部分0.75:0.7521.5 1 第一整数0.521.01 第二整数小数0.75相当于二进制数0.11B,因此十进制数15.751111.11B 1.1.2 数制之间的相互转换例1.4将二进制数1111000111.100101B转换成为十六进制数.解:1111000111.100101B0011 1100 0111.1001 0100B3C7.94H例1.5 将十六进制数2FB5H转换成为二进制数解:2FB5H0010 1111 1011 0101B1.1.3 计算机中数的表示和编码 带符号数的表示法在微型计算机中将数最高位作为符号位,用0表示正数,1

5、表示负数,称符号的数值化 。一个带符号的数在计算机中可以有原码、反码和补码3种表示方法。微型计算机中带有符号的数均是以补码形式来存放的。补码仍然把最高位来表示符号位,正数的补码与反码、原码相同;负数的补码即符号位不变,其余各位求反后再加1,对于位二进制数来说,补码表示的范围为128127 。二进制编码(1)BCD码(2)ASCII码 1.2.1 微型计算机中常用的术语 1位(bit)位是计算机所能表示的最基本、最小的数据单位。有两种状态:0和1。2字节(Byte)字节是微机计算机中存放数据单位,1Byte8bit。3字(Word)和字长字是计算机内部进行数据处理的基本单位,计算机的每一个字所包

6、含的二进制数的位数称为字长,常把一个字长定为16位。常用的信息单位:1KB1024B210B;1MB1024KB220B;1GB1024MB230B。1.2.2 微型计算机的基本结构 微型计算机由中央处理单元(CPU)、存储器、I/O接口等组成,相互之间通过三组总线(Bus)(即AB、DB和CB )来连接。 数据总线DB1.2.2 微型计算机的基本结构 中央处理单元(CPU)CPU由运算器和控制器组成,是计算机的核心部件。存储器存储器是存放程序和数据的装置。按读写工作方式可分为RAM和ROM。 3输入/输出接口( I/O接口)I/O接口是CPU与外部设备进行信息交换的部件。,大多数接口电路已标

7、准化、系列化,一般是可编程的。 4总线(Bus )总线是将CPU、存储器和I/O接口等相对独立的功能部件连接起来,并传送信息的公共通道。总线是一组传输线的集合,根据传递信息种类,分为地址总线、数据总线和控制总线。存储器存储器是存放程序和数据的装置。按读写工作方式可分为RAM和ROM。 半导体存储器的结构如图1.2 所示RAM可进行读/写操作,断电后所存信息立即消失,在单片机系统中用作数据存储器。 ROM只能读出信息,即使在断电情况信息也不会丢失。在单片机系统中ROM只存放程序、常数及数据表,因此又把它称为程序存储器。 ROM依其写入的情况可分为掩膜ROM,PROM,EPROM和 EEPROM四

8、类。 1.2 微型计算机的基本结构和工作原理1.2.2 微型计算机的基本结构4总线(Bus)地址总线AB(Address Bus)AB是一种由CPU向外发出的单向通信总线,用于给存储器或输入/输出接口提供地址码,以选择相应的存储单元或寄存器。地址总线的根数决定了CPU的寻址范围 。数据总线DB(Data Bus)DB是用于实现CPU、存储器及I/O接口之间数据信息交换的双向通信总线。数据总线的宽度决定微型计算机的位数。控制总线CB(Control Bus)CB是在传输与交换数据时起管理控制作用的一组单向信号线。如读信号、写信号、中断请求信号等。1.2.3 微型计算机的工作原理 以微型计算机执行

9、第N条指令的工作过程来说明计算机工作原理。取指令的过程:CPU把PC中第N条指令所在存储单元的地址通过AB送到存储器的地址译码器,选中第N个存储单元。CPU通过CB向存储器发出读取数据的控制信号。存储器中被选中的存储单元的内容送到DB上,CPU通过DB读入指令代码。分析、执行指令过程:CPU读取指令代码后进行译码。CPU根据译码结果发出为完成此指令所需要的控制信号。执行指令所规定的操作,同时PC的内容自动加1,计算机又进入下一条(第N+1条)指令的取指令过程。1.3单片机的发展概况 1.3.1 单片机的概念单片机是指把CPU、RAM、ROM、定时器/计数器以及I/O接口电路等主要部件集成在一块

10、半导体芯片上的微型计算机。从某种意义上说,一块单片机芯片就是一台计算机。1.3.2 单片机的发展状况单片机的发展历史第一阶段, 4位单片机第二阶段,低中档8位单片机(19741978年)第三阶段,高档8位单片机(19781982年)第四阶段,16位和超8位单片机(1982年至今)单片机将向大容量、高性能、低电压、低功耗、低价格以及外围接口电路内装化等方向发展 。 1.4 单片机的特点和应用 1.4.1 单片机的特点集成度高、控制功能强结构合理(大多采用Harvard结构)抗干扰能力强指令丰富1.4.2 单片机的应用工业控制机电一体化设备智能仪器仪表信息及通信技术家用电器1.4.3 单片机应用实

11、例 以遥控及数字调谐电视接收机应用为例1.5 MCS-51系列单片机 表 1.4 MCS-51系列单片机分类表 子系列片内ROM形式片内存储器片外存储器寻址能力定时/计数器并行I/O口串行口中断源无ROMEROME2PROMROMRAM518031805187514KB128B264KB216481580C3180C5187C5189C514KB128B264KB2164815528032805287528KB256B264KB316481680C3280C5287C5289C528KB256B264KB3164816第2章 MCS-51单片机的结构 2.1 MCS-51单片机的内部结构和引脚

12、2.2 并行I/O口 2.3 MCS-51单片机的存储器结构 2.4 MCS-51单片机的时序电路 2.1.1 MCS-51单片机的内部结构8051的内部结构框图如图2. 1所示 。2.1.2 MCS-51单片机的引脚及功能 8051的引脚排列如图2.3所示 2.1.2 MCS-51单片机的引脚及功能 1电源引脚Vcc和VssVcc:芯片工作电源端,+5VVss:接地端2 时钟信号引脚XTAL1和XTAL2XTAL1、XTAL2:当使用单片机内部振荡电路时,用来外接石英晶体和微调电容。2.1.2 MCS-51单片机的引脚及功能3控制信号引脚RST、ALE、 和 RST:RST是复位信号输入端,

13、高电平有效。ALE:ALE为地址锁存允许输出信号。在访问外部存储器时,ALE用来锁存P0扩展地址低8位的地址信号。 :外部程序存储器ROM的读选通信号输出端。 :是访问外部程序存储器ROM的控制信号。当为低电平时,CPU只执行外部ROM中的程序。当为高电平且PC值小于0FFFH(4K)时,CPU执行内部ROM的程序,但当PC的值超出4K时(对8051/8751/8951)将自动转去执行片外ROM内的程序。对于无片内ROM的8031或不使用内部ROM的8051,需外扩EPROM,此时必须接地。2.1.2 MCS-51单片机的引脚及功能 4并行I/O端口P0、P1、P2、P3P0口是一个8位漏极开

14、路的双向I/O端口,在访问外部存储器时,分时提供低8位地址线和8位双向数据线。 P1口是一个内部带有上拉电阻的8位准双向I/O端口。P2口是一个内部带有上拉电阻的8位准双向I/O端口。在访问外部存储器时,输出高8位地址,与P0口一起组成16位地址总线。P3口是一个内部带有上拉电阻的8位准双向I/O端口。在MCS-51中,这8个引脚还有各自的第二功能,如表2.1所示。 表2.1 P3口各位的第二功能 P3口引脚第二功能P3口引脚第二功能P3.0RXD(串行输入端)P3.4T0(定时器0的外部输入)P3.1TXD(串行输出端)P3.5T1(定时器1的外部输入)P3.2 (外部中断0输入)P3.6

15、(片外数据存储器写选通控制输出)P3.3 (外部中断1输入)P3.7 (片外数据存储器读选通控制输出)2.2.1 并行I/O口的结构每个端口都是由一个锁存器,一个输出驱动器和两个(P3口为3个)输入缓冲器组成。 2.2.1 并行I/O口的应用特点 P0口和P2口构成MCS-51单片机的16位地址总线,P0口还是8位的数据总线。P3口多用于第二功能输入或输出。通常只有P1口用于一般输入/输出。 系统复位后,P0P3口的32个管脚均输出高电平。 P0P3口输出级的电路结构有所不同。P0口是三态输出,其每个管脚均可以驱动8个LSTTL输入,而P1P3口的输出级均有上拉电阻,每个管脚可驱动4个LSTT

16、L输入。 每个并行口,可定义一部分管脚为输入脚,另一部分管脚为输出脚,没有使用的管脚可以悬空。2.3 MCS51单片机的存储器结构在物理结构上分为四个存储空间:片内程序存储器、片外程序存储器、片内数据存储器、片外数据存储器。从逻辑上分为三个存储器地址空间: 片内、片外统一编址的64KB程序存储器地址空间0000HFFFFH; 64KB的外部数据存储器或扩展I/O口地址空间0000HFFFFH; 256B的片内数据存储器地址空间00HFFH(包括低128B的内部RAM地址00H7FH和高128B的特殊功能寄存器地址空间)。2.3 MCS51单片机的存储器结构8051单片机的存储器组织结构如图2.

17、8所示 :2.3.1 程序存储器程序存储器以程序计数器PC作为地址指针,通过16位地址总线,可寻址的地址空间为64KB。 8051/8751/89C51有4KB的内部程序存储器(片内ROM),地址为0000H0FFFFH,当需要外部扩展时,最多可扩展到64KB,片内ROM和片外ROM统一编址。在程序存储器中,某些特定的单元是给系统使用的,具体地址分配见表2.3所示 。 表2.3 系统复位和中断入口地址入地址口用 途0000H复位操作后的程序入口0003H外部中断0( )服务程序入口000BH定时器0(T0)溢出中断服务程序入口0013H外部中断1( )服务程序入口001BH定时器1(T1)溢出

18、中断服务程序入口0023H串行口中断服务程序入口 2.3.2 外部数据存储器 数据存储器用于存放运算的中间结果、数据暂存和缓冲、标志位。数据存储器分为内部和外部两个独立的部分。MCS-51单片机具有扩展64KB外部数据存储器和I/O端口的能力,外部数据存储器和外部I/O口实行统一编址,并使用相同的选通控制信号,使用相同的指令MOVX访问,均使用R0、R1或DPTR寄存器间接寻址。2.3.3 片内数据存储器内部RAM区(00H7FH)根据用途可划分为工作寄存器区、位寻址区和通用RAM区,如图2.9 所示。 工作寄存器区(00H1FH)4个组,每个组有8个8位的寄存器R0R7 在任何时刻,四个组中

19、只能有一组可以成为当前工作寄存器组,其他三组作为一般的内部RAM使用。当前工作寄存器组由PSW的RS0和RS1两位来决定 。 位寻址区( 20H2FH)可按位寻址也可以按字节寻址。 通用RAM区(30H7FH )作为一般的内部RAM区或堆栈区,CPU只能按字节方式寻址。 内部RAM(00H7FH)组织结构7FH30H用户RAM区(只能按字节寻址)2FH20H位寻址区(可位寻址,也可字节寻址)1FH18H工作寄存器3组(R07)17H10H工作寄存器2组(R07)0FH08H工作寄存器1组(R07)07H00H工作寄存器0组(R07)图2-9 8051内部RAM结构2.3.3 片内数据存储器2殊

20、功能寄存器区(80HFFH)21个SFR的地址离散地分部在内部数据存储器的80HFFH地址空间。 SFR占用21个单元,其余的大部分是空余单元,它们没有定义不能作内部RAM使用。 有11个SFR具有位地址,可以进行位寻址,对应的位也有位名称,它们的字节地址正好能被8整除 在使用SFR时,只能采用直接寻址方式,表达时可用寄存器符号,也可用寄存器单元地址。如:累加器可用符号Acc表示(在指令助记符中常用A表示),也可用地址E0H表示。2.3.3 片内数据存储器2殊功能寄存器区(80HFFH)部分SFR介绍 累加器Acc最常用的8位SFR,存放操作数,运算中间结果。在指令系统中,用A作为累加器Acc

21、的助记符。 B寄存器主要用于乘法和除法操作。乘法指令的两个操作数分别取自于A和B,乘积存于BA寄存器对中,积的高8位放在B寄存器中,积的低8位放在累加器A中。除法指令中,被除数取自A,除数取自B,运算后的商存放于A中,余数存放于B中。 在其它指令中,作为一般的内部RAM使用。2.3.3 片内数据存储器2殊功能寄存器区(80HFFH) 程序状态字寄存器PSW用于存放程序运行中的各种状态信息,由一些标志位组成 。Cy( PSW.7 ):进位标志位AC( PSW.6 ):辅助进位标志位F0( PSW.5 ):用户标志位RS1(PSW.4 )和RS0(PSW.3):工作寄存器组选择控制位。由用户用软件

22、改变RS1和RS0的状态,以选择内RAM中的哪组工作寄存器为当前工作寄存器组。 OV ( PSW.2 ) :溢出标志位 PSW.1:保留位。8051中未定义 P ( PSW.0 ) :奇偶校验标志位 2.3.3 片内数据存储器2殊功能寄存器区(80HFFH) 堆栈指针SP堆栈是按照“先进后出,后进先出”的原则来存取数据的一个内部RAM区域。堆栈有专门的操作指令:入栈(PUSH)、出栈(POP)SP始终指向栈顶,系统复位后,SP初始化为07H 。数据指针DPTRDPTR可以作为一个16位SFR使用,也可以作为两个独立的8位寄存器DPH和DPL来使用。 I/O端口锁存器P0P3P0P3为四个8位的

23、特殊功能寄存器,它们有字节地址和位地址。当I/O端口某一位用于输入时,必须在相应口锁存器的对应位先写入1。 2.3.3 片内数据存储器21个SFR在物理上是分散在片内各功能部件中:CPU的中SFR:Acc、B、PSW、SP和DPTR(由DPH和DPL组成)定时/计数器单元中的寄存器:TMOD、TCON、T0(TH0和TL0组成)和T1(由TH1和TL1组成)并行I/O口寄存器:P0、P1、P2和P3中断系统内的寄存器:IE和IP串行端口中的寄存器:SCON、SBUF和PCON。 2.4.1 时钟电路 1内部振荡方式(如图2.11所示) 2外部振荡方式(如图2.12所示)2.4.2 CPU的时序

24、定时单位 1、时钟周期 是指振荡器产生一个振荡脉冲信号所用的时间(又称为振荡周期),是振荡频率的倒数。 2机器周期机器周期是指CPU完成某一个规定操作所需的时间。一个机器周期包含12个时钟周期(振荡周期),依次表示为:S1P1、S1P2、S2P1、S6P1、S6P2 。3指令周期指令周期是指CPU执行一条指令所需要的时间。MCS-51单片机指令周期根据指令的不同,可包含有14机器周期。 2.4.3 MCS51单片机的复位1复位复位是单片机的初始化操作,复位后的状态如表2.6所示 。当单片机系统在运行出错或操作错误使系统处死锁状态时,也可按复位键重新启动。 RST引脚是复位信号的输入端,复位信号

25、是高电平有效,其有效时间应持续24个振荡周期(2个机器周期)以上。 单片机的复位不影响内部RAM的状态(包括工作寄存器Rn )。 2复位方式RST端的外部复位电路有两种操作方式:上电自动复位和按键手动复位。 表2.6 寄存器的复位状态 寄存器复位状态寄存器复位状态PC0000HTCON00HAcc00HTH000HPSW00HTL000HSP07HTH100HDPTR0000HTL100HP0P3FFHSCON00HIP000000BSBUF不定IE000000BPCON0B(NMOS)TMOD00H00000B(CHMOS)第3章 MCS51单片机的指令系统 3.1 指令格式 3.2 寻址方

26、式 3.3 指令系统 3.4.1 一般指令取指/执行时序 3.1 指令格式 指令格式就是指令的表示方法。指令有机器指令和汇编指令两种书写格式 。3.1.1 机器指令格式 由操作码和操作数两部分二进制代码串组成。 MCS-51单片机的指令按字节数的不同分为单字节指令、双字节指令、三字节指令。 3.1.2 汇编指令格式用助记符表示的机器指令MCS-51单片机汇编指令的格式为标号: 操作码 操作数1 ,操作数2 ,操作数3 ;注释3.2 寻址方式寻址方式存储器空间立即寻址程序存储器ROM直接寻址片内RAM低128B和特殊功能寄存器SFR寄存器寻址工作寄存器R0R7,A,B,Cy,DPTR寄存器间接寻

27、址片内RAM低128B(R0、R1、SP),片外RAM(R0、R1、DPTR)变址寻址程序存储器(ADPTR、APC)相对寻址与当前PC相距128127B的程序存储器范围位寻址片内RAM 20H2FH单元中的所有位和字节地址能被8整除的SFR中的位3.2 寻址方式 3.2.1 立即寻址立即寻址就是指令中直接给出操作数的寻址方式。指令中的操作数称为立即数,在操作数前加“#”符号 来表示。例3.2 MOV A,#70H ;A70H 例3.3 MOV DPTR,#0123H3.2.2 直接寻址直接寻址就是指令中直接给出操作数地址的寻址方式。 作为直接寻址的地址有内部RAM和SFR。例3.4 MOV

28、A,70H ;A (70H) 注意:对于同一个数,若数前“#”则表示它是立即数,若数前没加任何符号则表示它是单元地址。 3.2 寻址方式 3.2.3 寄存器寻址寄存器寻址就是指令中指定寄存器的内容作为操作数的寻址方式。可用来存放操作数的寄存器有:R0R7、A、B、DPTR和C。例3.5 MOV A,R5 ; AR5 3.2.4 寄存器间接寻址寄存器间接寻址就是指令中指定寄存器的内容是操作数地址的寻址方式。用来存放操作数地址的寄存器有:R0、R1、SP、DPTR。在汇编指令中,用寄存器名前加 “”符号来表示间接寻址。例3.6 MOV A,R1 ; A(R1 ) 3.2 寻址方式.2.5 变址寻址

29、变址寻址就是指令中指定的变址寄存器A和基址寄存器DPTR或PC的内容相加形成操作数地址的寻址方式。例3.7 MOVC A,ADPTR ;A(ADPTR) 3.2.6 相对寻址相对寻址是将当前PC的值与指令中给出的相对偏移量rel相加形成程序转移地址的寻址方式。相对偏移量rel是一个带符号的8位二进制数。用补码来表示。其表示范围128127。这种寻址方式一般用于SJMP和条件转移指令中。例3.8 SJMP 30H3.3 指令系统 按指令功能可分为:数据传送类指令(29条);算术运算类指令(24条);逻辑操作类指令(24条);位操作类指令(12条);控制转移类指令(22条)。 3.3.1 数据传送

30、类指令功能:将源操作数中的内容读出后写入目的操作数,源操作数的内容不变,目的操作数的内容被源操作数中的内容所替换。3.3.1 数据传送类指令1、内数数据存储器间的数据传送MOV格式:MOV ,图中给出了分别以累加器A,寄存器Rn,直接地址Direct,间接地址Ri 为目的操作数的传送。3.3.1 数据传送类指令1、内数数据存储器间的数据传送例3.10 设片内RAM中(30H)50H,填上下列程序运行后的结果。 MOV 60H,#30H;(60H)30H MOV R0,#60H;R060H MOV A,R0 ;A(60H)30H MOV R1,A ;R130H MOV 40H,R1;(40H)(

31、30H)50H MOV 60H,30H ;(60H)(30H)50H程序运行结果为:A30H, R060H, R130H, (60H)50H, (40H)50H, (30H)50H3.3.1 数据传送类指令2累加器A与片外数据存储器间的传送 MOVX A,Ri; MOVX A,DPTR MOVX Ri,A ; MOVX DPTR,A 例3.12 将片外RAM 4000H单元的数读出,写入片外RAM 4020H单元中。MOV DPTR,#4000H ;片外RAM读单元的地址送入DPTR MOVX A,DPTR ;片外4000H单元的内容读入A MOV DPTR,#4020H;片外RAM写单元的地

32、址送入DPTR MOVX DPTR,A ;A的内容写入片外4020H单元3.3.1 数据传送类指令3累加器A与程序存储器间的传送 MOVCA,ADPTR ;A (ADPTR) MOVCA,APC;A (APC)例3.13 设程序存储器中存放了一张09的平方表,试编制根据累加器A中的数(09)查其平方值的程序。方法一:1000H:MOV DPTR,#1050H;赋表首址 MOVC A,ADPTR ;查表并传送给A 1050H:DB 0,1,4,9,16,25,36,49,64,81 方法二:读者试着用MOVCA,APC来实现3.3.1 数据传送类指令4堆栈操作指令 PSUH direct;SPS

33、P1 ,(SP)(direct) POP direct;(direct)(SP),SPSP1例3.14 设(10H)01H,(20H)1AH,SP2FH,执行程序填结果。说明这段程序完成的功能。PSUH 10H;SP30H, (30H)01H PSUH 20H;SP31H, (31H)1AHPOP 10H;(10H)(31H)1AH,SP30HPOP 20H;(20H)(30H)01H,SP2FH程序执行后结果为:(10H)1AH,(20H)01H,(SP)2FH3.3.1 数据传送类指令5交换指令(1)字节交换指令 XCH A,Rn;ARn XCH A,direct;A(direct) XC

34、H A,Ri;A(Ri)(2)半字节交换指令XCHD A,Ri;A30(Ri)30(3)累加器高低四位交换SWAPA;A30A74 3.3.2 算术运算类指令 算术运算类指令包括加、减、乘、除、加 1、减 1和 BCD码调整指令。 除加1和减1指令外,这类指令大多数要影响到PSW。加、减运算对各标志位的规则如下:(1)进位标志位Cy:当运算结果的最高位有进位或借位时,Cy为1,反之为0。Cy常用来判断无符号数是否溢出。(2)辅助进位位AC:当运算时低4位向高4位有进位或借时,AC为1,反之为0。AC常用于BCD码的调整指令中。(3)溢出标志位OV:当进行补码运算时,运算结果超出128127范围

35、时,产生溢出,则OV置1,否则OV清0。(4)奇偶标志位P:若A中1的个数为奇数P为1,反之为03.3.2 算术运算类指令1加法指令 ADD A , #data;A Adata ADDA , direct;A A(direct) ADDA , Rn;A ARn ADDA , Ri;A A(Ri)2带进位加法指令 ADDC A , #data ;AAdataCy ADDC A , #direct ;AA(direct)Cy ADDC A , Rn ;AARnCy ADDC A , Ri ;AA(Ri)Cy3.3.2 算术运算类指令例3.18 试编写多字节无符号数加法运算的程序。设被加数存放在30

36、H、3lH单元,加数存放在40H、4lH单元,和存放在20H、21H单元。MOV A,30H;取被加数的低8位ADD A,40H;与加数的低8位相加MOV 20H,A;低8位结果送20H单元 MOV A,31H;取被加数的高8位ADDC A,41H;与加数的高8位和进位位相加MOV 21H,A;高8位结果送21H单元注意:在ADD和ADDC指令之间不能有改变Cy的指令,这样才能保证ADDC指令加的Cy是ADD指令执行时产生的进位。MOV指令不影响Cy。所以可以加在ADD和ADDC中间。 3.3.2 算术运算类指令3带借位减法指令 SUBB A,#data;AAdataCy SUBB A,dir

37、ect;AA(direct)Cy SUBB A,Rn;AARnCy SUBB A,Ri;AA(Ri)Cy注意:MCS-51单片机没有不带借位的减法指令,若要完成不带借位的减法运算,可先将Cy清0,再执行带借位减法指令SUBB。 3.3.2 算术运算类指令例3.20 试编制两字节无符号减法运算程序。设被减数存放在30H、31H单元中,减数存放在40H、41H单元中,差存在 20H、21H单元中。MOV A,30H;被减数低8位送A CLR C SUBB A , 40H;与减数低8位相减; MOV 20H,A;结果的低8位送20H单元 MOV A,31H;被减数高8位送A SUBB A,41H;与

38、减数高8位相减 MOV 21H,A;结果的高8位送21H单元3.3.2 算术运算类指令4乘法指令MUL AB;BAAB5除法指令DIV AB;A AB的商,B AB的余数6十进制加法调整指令DA A这条指令的功能是:(1)若A309或AC1,则AA06H(2)若A749或Cy1,则AA60H3.3.2 算术运算类指令7加1指令:INC INC A;A A1 INC direct;(direct ) (direct)1 INC Rn;RnRn1 INC Ri;(Ri ) (Ri )1 INC DPTR;DPTR DPTR18减1指令:DEC DEC A;A A1 DEC direct;(dire

39、ct ) (direct)1 DEC Rn;RnRn1 DEC Ri ;(Ri ) (Ri )1 注意:MCS51指令系统中有INC DPTR,但无DEC DPTR指令。3.3.3 逻辑运算类指令1逻辑与指令 ANL A,#data;AAdata ANL A,direct;AA(direct) ANL A,Rn;AARn ANL A,Ri;AA(Ri) ANL direct,#data;(direct)(direct)data ANL direct,A;(direct)(direct)这组指令功能:将两数按位进行逻辑与操作。它的规则是111,100,000;即1 XX, 0 X0,所以“ANL

40、”操作常用来屏蔽字节中的某些位,要保留的位用“1”去“与”,要清除的位用“0”去“与” 。3.3.3 逻辑运算类指令2逻辑或指令 ORL A,#data;AAdata ORL A,direct;AA(direct) ORL A,Rn;AAn ORL A,Ri;AA(i) ORL direct,#data;(direct)(direct)data ORL direct,A;(direct)(direct)这组指令功能:将两数按位进行逻辑或操作,即1 X1, 0 X X ,“ORL”操作常用来对字节中的某些位置“1”,要保留的位用“0”去“或”,要置1的位用“1”去“或”。3.3.3 逻辑运算类指

41、令3逻辑异或指令 XRL A , #data;AAdata; XRL A , direct;AA(direct) XRL A , Rn;AAn XRL A , Ri;AA(i) XRL direct , #data;(direct)(direct)data XRL direct , A;(direct)(direct)这组指令功能是:将两数按位进行逻辑异或操作。它的规则是110,101,000,即1X/X ,0XX,“XRL”操作常用来对字节中的某些位求反,要取反的位用“1” 去“异或”,要保留的位用“0”去“异或”。 3.3.3 逻辑运算类指令4逻辑非指令(也称求反指令)CPL A;A /

42、A这条指令的功能是:对A按位求反,结果送入A中。它的规则是/ 10,/01。例3.27 设A中内容为3H,分别执行下列程序写结果:(1)ANL A,#0F0H;A30H;屏蔽A的低4位(2)ORL A,#0F0H;AFH;A的高4位置1(3)XRL A,#0F0H;ACH;A的高4位取反(4)CPL A;ACH :A的内容取反3.3.3 逻辑运算类指令5清零指令:CLR CLR A;A 06循环移位指令 RL A;循环左移 RR A;循环右移 RLC A;带进位循环左移 RRC A;带进位循环右移3.3.3 逻辑运算类指令例3.29 利用循环移位指令,编程实现对累加器A中的内容进行乘10的操作

43、。RLA;设A中的内容为,A2MOV B,A;B2RL A;A2*24RL A;A2*48ADD A,B;A82103.3.4 位操作类指令 MCS51型单片机硬件结构中有一个布尔处理器 (位处理器)。位地址字节地址位数位地址,其表达方式有以下五种(PSW的3位为例) :直接用位地址表示方式。如:D3H 位名称表示方式。如: RS0 字节地址位数表示方式。如:D0H3 寄存器名称位数表示方式。如:PSW3 用户使用指令事先定义过的符号地址。如:如“ABC BIT PSW3”中ABC 3.3.4 位操作类指令1位传送指令MOV C,bit;C ( bit) MOV bit,C;(bit)C2位修

44、改指令CLRC;C0 即对进位标志位清0 CLRbit;(bit)0 即对位单元中的内容清0SETB C;C1 即对进位标志位置1SETB bit ;(bit)1 即对位单元中的内容置1CPL C;C/C 即对进位标志位求反 CPL bit;(bit)/(bit)即对位单元中的内容求反 3.3.4 位操作类指令3位逻辑运算指令 ANL C,bit;C C(bit) ANL C,/bit;C C /(bit) ORL C,bit;C C(bit) ORL C,/bit;C C/(bit)注意:MCS51指令系统中没有位异或指令。位异或操作可用若干条位操作指令来实现。 3.3.5 控制转移类指令

45、这类指令都是通过修改PC的内容来控制程序的执行顺序,一般不影响标志位。1无条件转移指令指令的功能是:当程序执行完此指令后,无条件地转到指令所提供的目的地址去执行。 LJMP addr16;PC PC3,PC150 addr150 AJMP add11;PC PC2,PC100 addr100,C1511不变 SJMP rel;PC PC2、PC PCrel JMP ADPTR;PC ADPTR3.3.5 控制转移类指令 2条件转移指令指令的功能是:先判断转移条件,若条件满足则修改PC的值,从而使程序转移,若条件不满足则PC不变,指向下一条指令,从而使程序顺序。(1)判累加器是否为零转移指令 J

46、Z rel JNZ relJZ和JNZ指令的功能是判别累加器A的内容是否为0来确定是顺序执行还是转移。3.3.5 控制转移类指令 2条件转移指令(2)判位状态转移指令 JC rel JNC rel JB bit,rel JNB bit,rel JBC bit,rel JC、JNC和JB、JNB指令的功能分别是判别进位位C和直接位地址的内容是“1”还是“0”,以此来决定程序的走向。JBC指令的功能是:若直接位地址的内容为“1”,则转移,并且同时将该位清0,否则顺序执行。 3.3.5 控制转移类指令 2条件转移指令(3)比较不相等转移指令 CJNE A,#data,rel CJNE A,direc

47、t,rel CJNE Rn,#data,rel CJNE Ri,#data,rel CJNE的功能是:通过比较前面两个操作数的大小来确定是转移还是继续执行,如果它们的值不相等则转移;若相等则继续执行。指令执行后要影响进位位Cy,若操作数1操作数2,操作数1操作数2时不借位,故Cy 0,若操作数1操作数2, 操作数1操作数2时有借位,故Cy 13.3.5 控制转移类指令 2条件转移指令(4)减1不为零循环转移指令 DJNZ Rn,rel DJNZ direct,rel DJNZ的功能是:对Rn的内容或direct所指定单元的内容减1后,判断其值是否为0,若不为0就转移到循环程序入口,使程序循环。

48、为0就顺序执行,则结束循环。 3.3.5 控制转移类指令 3调用和返回指令 (1)调用指令 LCALL addr16 ; 长调用指令 ACALL addr11; 绝对调用指令返回指令:RET、RETI RET ;子程序返回指令 RETI ;中断返回指令 4空操作指令 NOP ;空操作指令除了对PC加1外,CPU不作任何操作, 3.3.5 控制转移类指令例3.37 编写一个延时约1秒的子程序,设晶振频率6MHz。(1个机器周期 2s)DELY:MOV 22H,# 05H L3: MOV 23H,# 64H;64H100L2: MOV 24H,#0C8H;C8H200L1: NOP ;1个机器周期

49、NOPNOPDJNZ 24H,L1;2个机器周期DJNZ 23H,L2DJNZ 22H,L3RET;2个机器周期3.4 MCS-51单片机的CPU时序 CPU在不同的时序要做不同的操作,本节仅介绍CPU在取指令和执行指令两个阶段的时序。 第4章 汇编语言程序设计 4.1 汇编语言 4.2 伪指令4.3 汇编4.4 汇编程序的基本结构形式4.1 汇编语言 4.1.1 机器语言程序1机器指令机器指令就是由0或1组成的能够被计算机直接执行的一组二进制代码串。2机器语言程序机器语言程序就是为了让计算机完成某项任务,而按一定的顺序组织到一起的机器指令序列。缺点是:不直观、不好理解和记忆,也不便于学习,编

50、程时易出错。 4.1 汇编语言4.1.2 汇编语言程序 1汇编指令汇编指令就是用容易记忆的符号来表示机器指令。2伪指令伪指令就是汇编程序在汇编时起辅助说明作用的指示性的指令。它汇编后不生成对应的机器指令3汇编语言程序汇编语言程序是按一定的顺序组织到一起的汇编指令和伪指令。 4.1.3 高级语言程序高级语言程序就是用接近自然语言和数学公式的形式编写的程序。必须翻译成机器语言程序才能被计算机所执行。 4.2 伪指令伪指令汇编完后不生成目标代码,不属于机器指令4.2.1 ORG(起始伪指令)格式:ORG 16位地址功能:指明此语句后跟的程序或数据块存放在存储器中的起始地址。4.2.2 END(结束伪

51、指令)格式:END 标号功能:是汇编语言源程序的结束标志。 4.2.3 DB(定义字节伪指令)格式:标号: DB X1,X2,Xn功能;将字节数据Xi从指定的起始单元开始存放。每个Xi数据占一个字节。 4.2 伪指令4.2.4 DW(定义字伪指令)格式:标号: DW X1,X2,Xn功能:将字数据Xi从指定的起始单元开始存放。每个Xi数据占两个字节。其中高8位存入低地址,低8位存入高地址。4.2.5 EQU(等值伪指令)格式:符号名 EQU 数据或汇编符号功能:将一个数据或汇编符号赋予一个符号名。4.2.6 BIT(定义位地址伪指令)格式:符号名 BIT 位地址功能:将位地址赋予一个符号名4.

52、3 汇编 汇编是将汇编语言源程序翻译成计算机所能识别的机器语言目标程序的过程。汇编又可分为手工汇编和机器汇编。 4.3.1 手工汇编 手工汇编是由汇编者对照指令系统表,将源程序中的汇编指令对应的机器指令代码分别查出,然后这些机器指令代码以字节为单位从源程序的起始地址依次排列形成目标程序的过程。 4.3.2 机器汇编汇编工作由计算机通过执行汇编程序自动完成。 4.4 汇编程序的基本结构形式4.4.1 程序设计的步骤1分析题目确定算法2程序结构的设计 3编写源程序 4汇编与调试 4.4.2 程序设计举例1顺序程序顺序程序就是按指令在存储器中的存放顺序依次执行的程序。例4.2 试编程将片外9000H

53、单元中的8位数据的高四位屏蔽掉,送回片外9000H单元中。START:MOV DPTR,#9000H MOVX A,DPTR;片外9000H单元的内容送入A中 ANL A,#0FH ;屏蔽高四位 MOVX DPTR,A;回存结果 SJMP $ ;动态停机说明:“SJMP $”指令与“L1: SJMP L1”指令等价。4.4.2 程序设计举例2分支程序 分支程序就是根据不同的条件,转向不同的处理程序段的程序。(1)一般分支结构程序一般分支结构就是根据一个转移条件,产生两条支路;N个转移条件,可产生N1条支路。一般分支结构一般由一条有条件转移指令构成。 4.4.2 程序设计举例例4.5 已知X、Y

54、均是8位二进制数,分别存R0,R1中。试编制能实现下列功能的程序。分析:判断X是否等于0,用JZ或JNZ实现。判断X是正还是负数,用JB或JNB指令对符号位进行判断,把这两者结合起来,就能完成本题的任务。还可以用CJNE指令来实现。比较的数不等就转移,若是大于产生的转移,则CY0,若是小于产生的转移,则CY1。 例4.5 分支程序设计举例利用JZ 和JB/JNB 来实现(流程图如图4.3a所示) 程序如下: MOV A,R0;取R0中的数X到AJZ L2;X0转L2JNB ACC.7,L1;X0转L1 MOV A,#0FFH;1送ASJMP L2 L1:MOV A,#01H;1送A L2:MO

55、V R1,A;存入结果SJMP $读者试用根据图4.3b的流程图利用CJNE来实现。4.4.2 程序设计举例2分支程序(2)散转程序散转程序是一种并行多分支程序,它根据输入值或运算结果来确定转向n条分支中的某一条分支去处理程序。 MCS51指令系统中有一条转移指令JMP ADPTR,利用它可以方便地编制散转程序。散转程序设计的步骤如下: 建立一张散转表。 将散转表的首地址置于基址寄存器DPTR中将散转表中入口地址与表首地址的偏移量或散转表中转移指令与表首地址的偏移量置于变址寄存器A中。利用JMP ADPTR指令转向散转表中不同的位置以取得相应程序段的首地址或转向程序段的转移指令,从而实现散转。

56、 例题见课例4.74.4.2 程序设计举例3循环程序循环程序是指当某种条件满足时,能够重复执行某一程序段的程序。(l)循环程序的组成初始化部分:为进入循环程序作准备的程序段。工作部分:需要反复执行的程序段。修改部分:为进入下一轮循环做准备的程序段控制部分:判断是否继续循环的程序段。结束部分 4.4.2 程序设计举例3循环程序(2)循环程序的结构 先工作后判断结构; 先判断后工作结构 (3)循环程序的控制方法倒计数控制法;条件控制法 例4.9循环程序设计举例例4.9 设在片外RAM 40H开始的存储区中有若干个字符,已知最后一个字符为“$”(并且只有一个),试统计字符的个数(包括$字符)。结果存

57、入片内30H单元中。方法一:先处理后判断:流程图如图4.7a所示:方法二:先判断后处理流程图如图4.7b所示: 详细程序参阅课。4.4.2 程序设计举例4子程序 独立的有一定功能的程序称为子程序。调用子程序的源程序称为主程序。在MCS51指令系统中,提供了两条调用子程序指令ACALL、LCALL以及一条返回主程序指令RET。程序主要内容包括: a子程序功能的简要说明。b.入口参数。是指运行该子程序所需要的一些参数及其存放处。 c.出口参数。是指该子程序运行完毕后给出的结果及其存放处。 d所占用的寄存器和存储单元。 子程序设计举例例4.10 编写一个片内RAM中的两个多字节数相减的子程序SUBB

58、S。 SUBBS子程序如下:;功能:完成多子字节数的减法操作;入口参数:R0被减数低字节地址,R1减数低字节地址,R2字节数;出口参数:R0差数高位字节地址;占用的寄存器:R0、R1、R2、CY、ASUBBS:CLR C ;进位位清0LP:MOV A,R0 SUBB A,R1;从低字节开始进行两数相减 MOV R0,A;存差 INC R0 INC R1;修改地址指针 DJNZ R2,LP ;未减完继续循环 RET ;返回程序设计综合举例例4.14 编写一个每隔1秒循环点亮P1脚上所接的8只发光二极管的程序。每次仅点亮一个发光二极管,顺序从高位低位点亮。其中定时1秒编写为子程序。MOV A,#8

59、0HGO:: MOV P1,A LCALL DEY1S RR A SJMP GODEY1S:MOV R5,#02H;延时1秒子程序LOOP3:MOV R6,#0C8HLOOP2:MOV R7,#0FAHLOOP1:DJNZ R7,LOOP1 DJNZ R6,LOOP2 DJNZ R5,LOOP3 RET 第5章 中断系统与定时器/计数器 5.1 中断的概念 5.2 MCS51系列单片机的中断系统 5.3 MCS51单片机的定时器/计数器5.4 定时器/计数器应用 5.1 中断的概念5.1.1 中断的定义 中断是指计算机在执行程序的过程中,由于计算机系统内、外的某种原因使CPU暂时停止当前程序的

60、执行,而转去处理该突发事件服务,处理完毕后,再返回原程序继续执行的过程。5.1.2 中断技术的优点: 1. 提高了CPU的工作效率 2.使CPU能及时处理实时测控现场中许多随机的参数和信息。 3. 使CPU具有了处理故障的能力,提高了系统可靠性。 5.1 中断的概念5.1.3 中断系统的功能 中断系统是指能够实现中断功能的硬件电路和软件程序的总和 ,其功能:1. 能实现中断响应2. 能实现中断返回3.中断优先级的排队 4.能实现中断嵌套5.2.1 中断源与中断请求信号 引起中断的原因,或能发出中断请求信号的来源称为中断源。 8051单片机的有5个中断源:2个外部中断源2个定时器/计数器中断1个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论