单片机控制技术课件_第1页
单片机控制技术课件_第2页
单片机控制技术课件_第3页
单片机控制技术课件_第4页
单片机控制技术课件_第5页
已阅读5页,还剩264页未读 继续免费阅读

下载本文档

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

文档简介

1、张 延 林 本课程全面系统地讲述了MCS-51单片机的结构、原理、接口技术、扩展应用等知识。 主要内容包括:单片机的组成原理、MCS-51系列单片机的指令系统、语言程序设计、MCS-51单片机的扩展及应用,MCS-51单片机接口及控制技术等。 单片机控制技术是一门实践性较强的专业课程,既要求理论教学,又注意学生编程设计,系统设计及调试的实际动手能力的培养。1、单片机原理与应用白雪冰等编著 东 北林业大学出版社 2007。2、新编MCS-51单片机应用设计张毅刚等编著 哈尔滨工业大学 2004。3、单片机的C语言应用程序设计马忠梅等编著 北京航空航天大学出版社 2004.1.1 单片机的概念 单

2、片机:就是在一块硅片上集成了微处理器(CPU)、存储器(RAM/ROM)和各种输入输出接口,这样一块芯片具有一台计算机的属性,因而被称为单片微型计算机,简称单片机。u国际上,把单片机称为微控制器MCU(MicroController Unit)。u国内,习惯称为单片机(Single-Chip Microcomputer )。u应用上,由于单片机处于控制系统的核心地位并嵌入其中,因此又称为嵌入式控制器EMCU(Embeded MicroController Unit)。1.2 单片机的特点1.2.1 集成度高、功能强 微型计算机通常由中央处理器(CPU)、存储器(RAM/ROM)以及I/O接口组

3、成,各部分分别集成在不同的芯片上。例如Z80微型计算机。 单片机则是把CPU、RAM、ROM、PIO、CTC、I/O接口电路都集成在一个芯片上。例如MCS-51系列单片机。 与微型计算机进行比较,单片机不仅体积大大减小,而且功能大大增强。MCS-51系列单片机内的定时/计数器为16位,而Z80微型计算机只有8位;MCS-51系列单片机中不但有4个并行I/O接口,而且还有串行接口,时钟频率可达12MHz。1.2.2 结构合理 许多微型计算机,如Z80,大都采用数据存储器与程序存储器统一编址方式。 单片机大多采用数据存储器与程序存储器相互独立的一种结构。 单片机采用上述结构主要有以下两点好处:(1

4、)存储量大。例如,采用16位地址总线的8位单片机可寻址外部64KB的RAM和64KB的ROM。此外还有内部RAM和内部ROM。单片机不仅设有监控程序,还可同时存储函数库及图表。这使得单片机的功能大为加强。(2)速度快。单片机由于主要用于工业控制方面,一般都需要较大的程序存储器,而数据存储器的容量相对较小,主要用来存放少量的随机数据,小容量随机存储器直接装在单片机内部,可使数据传送速度加快。1.2.3 抗干扰能力强 由于单片机的各种功能部件都集成在一个芯片上,特别是存储器也集成在芯片内部,连线短,数据大都在芯片内部传送,不易受到外部的干扰,增强了抗干扰能力,使系统运行更可靠。1.2.4 指令丰富

5、 单片机一般都有传送指令,逻辑运算指令,转移指令,加、减法运算指令等,有些单片机还具有乘法及除法运算指令,特别是位操作指令十分丰富。例如在MCS-51系列单片机中,专门设有布尔处理器,有一个专用的布尔运算指令集。因而单片机能在逻辑控制、开关量控制以及顺序控制中得以广泛应用。1.3 单片机的发展概况单片机的发展概况 1974年12月美国仙童(Fairchild)公司率先推出8位单片机F8,从4位机、8位机发展到16位机、32位机,集成度越来越高,运算速度越来越快,功能也越来越强,应用范围越来越广。1.3.1 单片机的发展主要可分为四个阶段:第一阶段(19741976年):单片机初级阶段。如仙童公

6、司的F8。第二阶段(19761978年):低性能阶段。如Intel公司的MCS-48单片机。第三阶段(19781982年)高性能阶段。如Intel公司的MCS-51系列单片机。第四阶段(1982年至今)8位单片机发展及16位、32位单片机推出阶段。如Intel公司的MCS-96系列单片机。1.3.2 单片机的发展趋势(1)CPU的改进 采用双CPU结构,以提高处理能力; 增加数据总线宽度,单片机内部采用16位数据总线; 采用流水线结构,指令以队列形式出现在CPU中; 串行总线结构,新型I2C总线。(2)存储器的发展 加大存储容量,加大ROM和RAM容量; 片内采用E2PROM或FlashROM

7、,读写方便,数据 不易丢失; 程序保密化。(3)片内I/O的改进 增加并行口的驱动能力; 增加I/O口的逻辑控制功能; 设置特殊的串行接口功能。(4)外围电路内装化,把众多的外围功能器 件集成在片内(5)低耗化,8位机有产品,已CMOS化,功耗小。1.4 单片机的应用(1)单片机在工业过程控制中的应用 单片机特别适用于工业过程控制。单片机是核心控制器件,实施模拟量和开关量的采集、处理、算术运算和逻辑运算,然后输出控制信号。如锅炉控制、电机控制、交通信号灯控制、数控机床、雷达、导弹控制等。(2)生活中的应用 由于单片机价格低廉、体积小、逻辑判断及控制功能强,因此广泛地应用于人类生活的各个方面。如

8、:洗衣机、电冰箱、电子玩具、立体声音响、家用防盗系统等。(3)智能仪表中的应用 单片机广泛地应用于各种仪器仪表中,简化仪器仪表的硬件结构,提高其性能价格比,使仪器仪表智能化,提高测试的自动化程度和精度。(4)计算机网络及通信技术中的应用 单片机中集成了通信接口。因此,在小型背负式通信机、自动拨号电话网、自动呼叫应答设备、程控电话和无线电遥控等方面都有广泛的应用。1.5 MCS-51系列单片机 Intel公司推出有MCS-48、MCS-51、MCS-96系列单片机。MCS-51系列单片机分为基本型和增强型(1)基本型:8031、8051、8751(2)增强型:8032、8052、8752 MCS

9、-51 系列单片机内部存储器配置注意:8031、8032单片机内部没有程序存储器,使用时必须外加程序存储器。2.1 MCS-51单片机总体结构及功能单片机总体结构及功能2.1.1 MCS-51单片机的硬件结构单片机的硬件结构 8051单片机内部由CPU、4KB的ROM、256B的RAM、4个8位的I/O并行端口、一个串行口、两个16位定时器/计数器等组成。图图2.1 8051单片机内部基本结构框图单片机内部基本结构框图图图2.2 8051单片机系统结构原理框图单片机系统结构原理框图各个功能部件的功能:1、微处理器(CPU):MCS-51系列单片机内部有一个8位的CPU。CPU是单片机内部的核心

10、部件,是单片机的指挥和控制中心。从功能上看,CPU可分为运算器和控制器两大部分。(1)运算器 运算器的功能是:对数据进行算术运算和逻辑运算。 运算器由算术逻辑运算部件ALU、累加器Acc、程序状态字寄存器PSW等组成。各部分主要功能为: 算术逻辑运算部件ALU。ALU由加法器和其他逻辑电路组成。ALU主要用于对数据进行算术和各种逻辑运算,运算的结果一般送回累加器Acc,而运算结果的状态信息送程序状态字寄存器PSW。 累加器Acc。Acc是一个8位寄存器,指令助记符可简写为“A”,它是CPU工作时最繁忙、最活跃的一个寄存器。CPU的大多数指令,都要通过累加器“A”与其他部件交换信息。Acc常用于

11、存放使用次数高的操作数或中间结果。 程序状态寄存器PSW。PSW是一个8位寄存器,用于寄存当前指令执行后的某些状态信息,即反映指令执行结果的一些特征。它供某些指令(如控制类指令)查询和判断,不同的特征用不同的状态标志来表示。PSW各位定义:uCy(PSW.7):即PSW的D7位,进位/借位标志。 在进行加、减运算时,如果运算结果的最高位 D7有进位或借位时,Cy置“1”,否则Cy置“0”。在进行位操作时,Cy又是位运算中的累加器。 Cy的指令助记符用“C”表示。uAc(PSW.6):即PSW的D6位,辅助进位标志。在进行加、减法运算时,如果运算结果的低4位(低半字节)向高4位(高半字节)产生进

12、位或借位时,Ac置“1”,否则Ac置“0”。 Ac位可用于BCD码运算调整时的判断位,即作为BCD码调整指令“DA A”的判断依据之一。uF0(PSW.5)及F1(PSW.1):即PSW的D5位、D1位,用户标志位。 可由用户根据需要置位、复位,作为用户自行定义的状态标志。uRS1及RS0(PSW.4及PSW.3):即PSW的D4位、D3位, 寄存器组选择控制位。 用于选择当前工作的寄存器组,可由用户通过指令设置RS1、RS0,以确定当前程序中选用的寄存器组。当前寄存器组的指令助记符为R0R7,它们占用RAM地址空间。RS1、RS0与寄存器组的对应关系: 由此可见,单片机内的寄存器组,实际上是

13、片内RAM中的一些固定的存储单元。注意:单片机上电或复位后,RS1和RS0均为0,CPU自动选中0组,片内RAM地址为00H07H的8个单元为当前工作寄存器,即R0R7。uOV(PSW.2):即PSW的D2位,溢出标志。 在进行算术运算时,如果运算结果超出一个字长所能表示的数据范围即产生溢出,该位由硬件置“1”,若无溢出,则置“0”。例如、MCS-51单片机的CPU在运算时的字长为8位,对于有符号数来说,其表示范围为-128+127,运算结果超出此范围即产生溢出。uP(PSW.0):即PSW的D0位,奇偶校验位。(1)控制器 控制器的功能是:接受来自程序存储器的指令,并对其进行译码,通过定时和

14、控制电路,按时序规定发出指令功能所需要的各种(内部和外部)控制信息,使各部分协调工作,完成指令所需的操作。 控制器主要包括程序计数器、指令寄存器、指令译码器及定时控制电路等。程序计数器PC(Program Count) 是一个16位的专用寄存器,用来存放CPU将要执行的存放在程序存储器中的下一条指令的地址。 其基本的工作过程是:当CPU要读取指令时,PC将其中的数做为所取指令的地址输出给程序存储器,然后程序存储器按照此地址输出指令字节,同时程序计数器PC本身自动加1,读完本条指令,PC指向下一条指令在程序存储器中的地址。 程序计数器PC中的内容的变化决定程序的流程,程序计数器的宽度决定了单片机

15、对程序存储器可以直接寻址的范围。MCS-51单片机,PC是一个16位的计数器,故可对64KB的程序存储器进行寻址。程序计数器的基本工作方式有一下几种:(1)程序计数器自动加1,这是最基本的工作方式;(2)执行有条件或无条件转移指令时,程序计数器将被置入新的数值,从而使程序的流向发生变化;(3)在执行调用子程序指令或响应中断时,单片机自动完成如下的操作: PC的现行值,即下一条将要执行的指令的地址,即断点值,自动送入堆栈。 将子程序的入口地址或中断向量的地址送入PC,程序流向发生变化,执行子程序或中断子程序。子程序或中断子程序执行完,遇到返回指令RET或RETI时,将栈顶的断点值弹回到程序计数器

16、PC中,程序的流程又返回到原来的地方,继续执行。2、数据存储器(RAM) 片内为128个字节,片外最多可扩展为64K字节,功能:用来存储变量、中间结果、数据暂存和缓冲、标志位等。3、程序存储器(ROM) 片外最多可扩展为64K字节,功能:存放程序指令代码和表格常数。4、 并行并行I/O口口 P0P3是四个8位并行I/O口,每个口既可作为输入,也可作为输出。单片机在与外部存储器及I/O端口设备交换信息时,必须由P0P3口完成。5、定时器定时器/计数器计数器 有2个16位的定时器/计数器,功能:用于定时和对外部事件进行计数。6、中断系统中断系统 MCS-51单片机有5个中断源,2级中断优先级,功能

17、:提高单片机的工作效率。7、串行接口串行接口 MCS-51中的串行接口是一个全双工串行口,功能:能同时进行发送和接收数据。8、时钟电路时钟电路 功能:时钟电路用于产生单片机中最基本的时间单位。使单片机内各个部件能协调一致的工作。2.1.2 MCS-51引脚功能引脚功能采用采用40脚双列直插式封装脚双列直插式封装 注意:注意:(1)“1”引脚位置的确定:半圆形的凹坑向上,左上角第一个引脚即为“1”引脚;左上角有一个圆形凹坑或标志,该引脚即为“1”引脚;按照芯片表面文字标注方向,左上角即为“1”引脚。(2)左下角20脚为接地引脚Vss,右上角40脚为电源Vcc引脚。(3)引脚按照U型顺序排列,P1

18、、P2、P3口的各位按顺序方向排列,P0口的8位按逆序方向排列。1、 主电源引脚主电源引脚Vcc和和Vss Vcc:接主电源+5V。 Vss:电源接地端。 2、时钟电路引脚时钟电路引脚XTAL1和和XTAL2 为了产生时钟信号,在8051内部设置了一个反相放大器,XTAL1是片内振荡器反相放大器的输入端。 XTAL2是片内振荡器反相放大器的输出端,也是内部时钟发生器的输入端。 当使用自激振荡方式时,XTAL1和XTAL2外接石英晶振,使内部振荡器按照石英晶振的频率振荡,即产生时钟信号。 当使用外部信号源为8051提供时钟信号时,XTAL1应接地,XTAL2接外部信号源。3、 控制信号引脚控制信

19、号引脚(1)RST:复位引脚。 复位功能:单片机上电后,在该引脚上出现两个机器周期(24个振荡周期)宽度以上的高电平,就会使单片机复位。(2)ALE:低8位地址锁存使能输出引脚。 当单片机访问外部存储器时,外部存储器的16位地址信号由P0口输出低8位,P2口输出高8位,ALE可用作锁存低8位地址信号。(3)/PSEN为外部程序存储器读选通控制引脚。 CPU在访问外部程序存储器时,在每个机器周期中, 信号两次有效。 (4)/EA:片内外程序存储器选择控制引脚 当/EA1时,CPU从片内程序存储器开始读取指令。当程序计数器PC的值超过0FFFH时(8051片内程序存储器为4KB),将自动转向执行片

20、外程序存储器的指令。 当/EA0时,CPU仅访问片外程序存储器。 8031单片机内部没有程序存储器,因此其/EA脚必须接地。4、并行并行I/O口口P0P4端口引脚端口引脚(1)P0口(P0.0P0.7) P0口是一个8位双向三态I/O端口。是数据是数据总线和低总线和低8位地址总线的分时复用口,位地址总线的分时复用口,分时向外部存储器提供低8位地址信号和传送8位双向数据信号。(2)P1口(P1.0P1.7) P1口是一个内部带上拉电阻的8位准双向I/O端口。(3)P2口(P2.0P2.7) P2也是一个内部带上拉电阻的8位准双向I/O端口。也作为高也作为高8位地址总线使用。与位地址总线使用。与P

21、0的的低低8位地址总线构成了系统的片外位地址总线构成了系统的片外16位地址总线位地址总线。 (4)P3口(P3.0P3.7) P3口是一个内部带上拉电阻的8位多功能双向I/O端口。其中各位具有第二功能2.2.1 MCS-51存储器的特点存储器的特点(1)从物理结构上划分,有4个存储空间 片内程序存储器。 片外程序存储器。 片内数据存储器。 片外数据存储器。(2)从用户使用的角度,即从逻辑上划分,有3个存储器地址空间。u片内外统一编址的64KB的程序存储器地址空间。 MOVC用于访问片内外程序存储器。u片内256Byte数据存储器地址空间。 MOV指令用于访问内部数据存储器。u片外64KB的数据

22、存储器地址空间。 MOVX用于访问外部数据存储器。 内部程序存储器(ROM)地址空间为0000H0FFFH,外部程序存储器地址空间为0000HFFFFH。 内部数据存储器(RAM)地址空间为00H7FH,特殊功能寄存器(共21个)在RAM的80HFFH地址空间内。而外部数据存储器地址空间为0000HFFFFH。2.2.2 程序存储器在程序存储器中,MCS-51定义了7个单元用于特殊用途: 0000H:CPU复位后,PC0000H,程序总是从程序存储器的0000H单元开始执行; 0003H:外部中断0中断服务程序入口地址; 000BH:定时器/计数器0溢出中断服务程序的 入口地址; 0013H:

23、外部中断1中断服务程序入口地址; 001BH:定时器/计数器1溢出中断服务程序的入口地址; 0023H:串行口中断服务程序的入口地址;注意:注意: 由于以上6个特殊用途的存储单元相距较近,在实际使用时,通常在入口处安放一条转移指令,使之转向相应的由用户设计的中断服务程序的实际入口地址。2.2.3 数据存储器数据存储器 数据存储器用于存放程序运算的中间结果、状态标志位等。 数据存储器由RAM构成,一旦掉电,其数据将丢失。 MOV指令用于访问内部RAM,MOVX用于访问外部RAM。 内部数据存储器分为高、低128B两大部分。 低128B为RAM区,地址空间为00H7FH。 高128B为特殊功能寄存

24、器(SFR)区,地址空间为80HFFH,其中仅有21个字节单元是有定义的。1、寄存器区寄存器区 在低128B的RAM区中,将地址00H1FH共32个单元设为工作寄存器区,这32个单元又分为4组,每组由8个单元按序组成寄存器R0R7。2、可位寻址区可位寻址区 地址为20H2FH的16个RAM(字节)单元,既可以象普通RAM单元按字节地址进行存取,又可以按位进行存取,这16个字节共有128(168)位,每一位都分配一个位地址,编址为00H7FH。注意:注意: 对于某个地址,既可以表示字节地址,又可以表示位地址(如20H、21H等),那么,如何区分一个地址是字节地址还是位地址呢? MOV A,20H

25、 MOV C,20H3、只能字节寻址的只能字节寻址的RAM区区 在30H7FH的80个RAM单元为用户RAM区,只能按字节存取。所以,30H7FH区是真正的数据缓冲区。 在应用程序中,往往需要一个后进先出的RAM缓冲区,用于子程序调用和中断响应时保护断点及现场数据,这种后进先出的RAM缓冲区称之为堆栈。原则上,堆栈区可设在内部RAM的00H7FH的任意区域,但由于00H1FH及20H2FH区域的特殊作用,堆栈区一般设在30H7FH的范围内。由堆栈指针SP指向栈顶单元,在程序设计时,应对SP初始化来设置堆栈区。2.2.4 特殊功能特殊功能寄存器寄存器(SFR) 在片内数据存储器的80HFFH单元

26、(128B)中,有21个单元作为特殊功能寄存器(SFR)。 这些寄存器离散分布在片内数据存储器的80HFFH单元,每一个寄存器都有一个确定的地址,并定义了寄存器符号名。(1)T1是16位的定时器/计数器,分为TL1(低8位)和TH1(高8位),可以分别用作2个8位的特殊功能寄存器,而T1不能用作16位的寄存器使用。(T0与T1相同)(2)DPTR(数据指针)是16位的寄存器,既可以分别用作2个8位的特殊功能寄存器DPL(低8位)和DPH(高8位);也可以用作16位的寄存器使用。(3)SP:堆栈指针:堆栈指针,8位的特殊功能寄存器。 SP中的内容指示出堆栈顶部在内部中的内容指示出堆栈顶部在内部R

27、AM中中的位置。的位置。功能:为子程序调用和中断服务操作而设立,用于保存断点和现场内容。堆栈的操作有两种: 一种是数据压入(PUSH)堆栈, 另一种是数据弹出(POP)堆栈。 操作中的2个原则: (1)压入操作时,SP先加1,后压入数据; 弹出操作时,先弹出数据,后SP减1。 (2)先入后出,后入先出。注意:注意:单片机复位后,SP中的内容为07H,即栈顶指向片内RAM的07H单元,使压入堆栈的操作要从08H单元开始,而08H单元属于工作寄存器组区,因此应用中,把SP值设置在30H7FH区域中。例如:例如:SP=60H,CPU执行一条子程序调用指令或响应中断后,PC内容(断点)进栈,则完成断点

28、保护后,SP=? 解: SP先加1,SP=61H,然后PC的低8位PCL压入到61H单元; SP再加1,SP=62H,然后PC的高8位PCH压入到62H单元。 此时,SP=62H,即当前栈顶指向片内RAM的62H单元。2.3 MCS-51的复位方式 单片机在启动运行时需要复位,使CPU以及其他功能部件处于一个确定的初始状态;在单片机工作过程中,如果出现死机时,也必须对单片机进行复位,使其重新开始工作。 MCS-51的复位电路包括上电复位电路和按键复位电路RST为复位引脚 复位功能:单片机上电后,在该引脚上出现两个机器周期(24个振荡周期)宽度以上的高电平,就会使单片机复位。(1)上电复位电路:

29、 上电瞬时RST端的电位与Vcc等电位,RST为高电平,随着电容器充电电流的减少,RST的电位不断下降,其充电时间常数为1010-68.2103s8210-3s82ms,此时间常数足以使RST保持为高电平的时间完成复位操作。(2)按键复位电路: 按下复位按键,电容C被充电,RST端的电位逐渐升高为高电平,实现复位操作,按键释放后,电容器经内部下拉电阻放电,RST端恢复低电平。 (b)按键复位按键复位 复位时片内各寄存器的状态:注意:注意:记住SP、P0P3的特殊状态。2.4 MCS-51单片机的时序单片机的时序 时序就是计算机指令执行时各种微操作在时间上的顺序关系。2.4.1 时钟电路 单片机

30、的时钟电路分为内部时钟电路方式和外部时钟电路方式。(1)内部时钟电路方式: 石英晶体振荡器:1.2M12MHz 微调电容C1、C2:30pF 图图2-8a内部时钟电路内部时钟电路(2)外部时钟电路方式: 常用于多片MCS-51单片机同时工作,以便于同步。 由于XTAL2的逻辑电平不是TTL的,故外接一个4.7K10K的上拉电阻。 图图2-8b外部时钟电路外部时钟电路2.4.2 CPU时序 单片机的时序是指CPU在执行指令时所需控制信号的时间顺序。 CPU发出的时序信号有两类:一类用于片内各功能部件的控制,由于这类信号在CPU内部使用,用户无须了解;另一类信号通过单片机的引脚送到外部,用于片外存

31、储器或I/O端口的控制,这类时序信号对单片机系统的硬件设计非常重要。1、时钟周期、机器周期和指令周期时钟周期、机器周期和指令周期(1)时钟周期 时钟周期也称振荡周期,即振荡器的振荡频率fosc的倒数,是时序中最小的时间单位。(2)机器周期 执行一条指令的过程可分为若干个阶段,每一阶段完成一个规定的操作,完成一个规定操作所需要的时间称为一个机器周期。 机器周期是单片机的基本操作周期,每个机器周期包含6个状态周期,用S1、S2、S3、S4、S5、S6表示,每个状态周期又包含两个节拍P1、P2,每个节拍持续一个时钟周期,因此,一个机器周期包含12个时钟周期,分别表示为S1P1、S1P2、S2P1、S

32、2P2、S6P1、S6P2。(3)指令周期 指令周期定义为执行一条指令所用的时间。通常,一个指令周期含有14个机器周期。例如,MCS-51单片机外接石英晶体振荡频率为12MHz时,则有: 时钟(振荡)周期为1/12s; 状态周期为1/6s; 机器周期为1s; 指令周期为14s。ALE信号每出现一次,CPU就进行一次取指令操作。 图2.9(a)为单字节单周期指令的时序,在一个机器周期中进行两次指令操作,但是第二次取出的内容不作处理,称作假读。 图2.9(b)为双字节单周期指令的时序,在一个机器周期中ALE的两次有效期间各取一字节。 图2.9(c)单字节双周期指令的时序,只有第一次指令是有效的,其

33、余二次均为假读。 图2.9(d)访问外部RAM指令“MOVX A,DPTR”(单字节双周期)的时序。3.1基本概念基本概念3.1.1指令的概念 指令就是使计算机完成每个操作的命令。 某种计算机所有指令的集合就叫做这种计算机的指令系统。 根据机器指令的功能和操作对象的不同而给出的英文缩写符号,被称为助记符,用助记符来表示的指令就叫汇编语言指令。3.1.2 MCS-51汇编语言指令汇编语言指令 MCS-51汇编语言指令的格式如下: , 其中:操作码表示指令执行的操作,即操作的内容。 操作数表示参加操作的数据或数据的地址,即操作的对象。 例如,将工作寄存器R0的内容传送到累加器A中去的指令格式为 M

34、OV A,R03.1.3 指令中的常用符号指令中的常用符号 Rn:表示当前工作寄存器R0R7中的一个。 Ri:表示寄存器间接寻址,常常作间接寻址的地址指针。其中Ri代表R0和R1寄存器中的一个。 direct:表示内部数据存储器单元的地址及特殊功能寄存器SFR的地址。SFR既可使用它的物理地址,也可直接使用它的名字。 date:表示8位立即数,即8位常数,取值范围为00H0FFH。 datel6:表示16位立即数,即16位常数,取值范围为0000HFFFFH。 addr16:表示16位地址。 addr11:表示11位地址。 rel:用补码形式表示的地址偏移量,取值范围为-128+127。 Bi

35、t:表示内部RAM和SFR中的具有位寻址功能的位地址。SFR中的位地址可以直接出现在指令中,往往也可用SFR的名字和所在的数位表示。例如,表示PSW中奇偶校验位,可写成D0H,也可写成PSW.0的形式出现在指令中。 :表示间接寻址寄存器或基址寄存器的前缀符号。 $:表示当前指令的地址。3.2 寻址方式寻址方式 寻找操作数所在单元的地址称为寻址 MCS-51的寻址方式有7种。(1)立即寻址 立即寻址是将操作数直接存放在指令中,作为指令的一部分存放在代码段里。立即寻址中的数称为立即数。 例如:MOV A,30H(2)直接寻址 直接寻址是将操作数的地址直接存放在指令中,这种寻址方式的操作数只能存放在

36、内部数据存储器和特殊功能寄存器中。 例如:MOV A,30H(3)寄存器寻址 寄存器寻址是指操作数存放在寄存器中,并且寻址时的寄存器已隐含在指令的操作码中 例如:MOV A,R0(4)寄存器间接寻址 寄存器间接寻址是指操作数存放在以寄存器内容为地址的单元中。 例如:MOV A,R0(5)变址寻址 变址寻址是指操作数存放在以变址寄存器和基址寄存器的内容相加形成的数为地址的单元中。其中累加器A作变址寄存器,程序计数器PC或寄存器DPTR作基址寄存器。 例如:MOVC A,A+DFTR(6)相对寻址 相对寻址是将程序计数器PC的当前值与指令第二字节给出的偏移量相加,从而形成转移的目标地址。 例如:J

37、Z 61H(7)位寻址 位寻址是指片内RAM中20H2FH中的128个位地址,以及SFR中的11个可进行位寻址的寄存器中的位地址寻址 例如:MOV C,20H注意:注意:1、内部RAM中的位寻址区: 其位地址的表示方法:一种是直接写出位地址;另一张是单元地址加上位数,如(20H).6=06H2、特殊功能寄存器中的可寻址位:共有83个可寻址位。其位地址的表示方法:直接使用位地址: PSW的位5为05H位名称的表示方法: PSW的位5为F0单元地址加位数的方法: PSW的位5为(0D0H).5特殊功能寄存器符号加位数的方法: PWS的位5为PSW.53.3 指令系统的分类指令系统的分类 MCS-5

38、1单片机能够识别并执行的指令共有111条。 按指令所占的字节数,指令系统可分为以下三类: 单字节指令(49条)。 双字节指令(46条)。 三字节指令(16条)。按指令的执行时间,指令系统可分为以下三类: 单周期指令(65条)。 双周期指令(44条)。 四周期指令(2条)。 按指令的功能,指令系统可分为以下五类: 数据传送类指令(29条)。 算术运算类指令(24条)。 逻辑运算类指令(24条)。 控制转移类指令(17条)。 位操作类指令(17条)。注意:注意:MCS-51指令系统对指令的运用有如下规定: 源操作数必须与目的操作数匹配。 立即数不能作目的操作数。 工作寄存器Rn无论是直接或间接,两

39、两之间不能同时为源和目的操作数。 条件转移类指令的转移范围在一个字节大小之内。3.3.1 数据传送类指令数据传送类指令 数据传送操作类指令的一般功能是把源操作数(第二操作数)的内容传送到目的操作数(第一操作数)。 数据传送类指令一共有29条,根据传送的性质可分为传送、交换、堆栈操作3种。1、传送类指令传送类指令(1)以累加器A为目的操作数的指令 MOV A,Rn ; (Rn)A MOV A,direct ;(direct)A MOV A,Ri ;(Ri)A MOV A,data ; dataA举例说明: MOV A, R1 ;(R1)A MOV A, 30H ;(30H)A MOV A, R1

40、 ;(R1)A MOV A,34H ;34HA (2)以寄存器Rn为目的操作数的指令 MOV Rn,A ;(A)(Rn) MOV Rn,direct ;(direct)(Rn) MOV Rn,data ; data(Rn)(3)以直接地址为目的操作数的指令 MOV direct,A ;(A)(direct) MOV direct,Rn ;(Rn)(direct) MOV direct1,direct2 ;(direct2)(direct1) MOV direct,Ri ;(Ri)(direct) MOV direct,data ;data(direct)(4)以间接地址为目的操作数的指令 MO

41、V Ri,A ;(A)(Ri) MOV Ri,direct ;(direct)(Ri) MOV Ri,data ; data(Ri)(5)16位数的传递指令 MOV DPTR,data16 ;data16(DPTR) 这是唯一的一条16位立即数传递指令,其功能是将一个16位的立即数送入DPTR中去,其中高8位送入DPH,低8位送人DPL。 例如:MOV DPTR,1234H,执行完之后,DPH中的值为12H,DPL中的值为34H。(6)累加器A与片外RAM之间的数据传递类指令 MOVX A,Ri ;(Ri)A,读外部RAM/IO MOVX Ri,A ;(A)(Ri),写外部RAM/IO MOV

42、X A,DPTR ;(DPTR)A,读外部RAM/IO MOVX DPTR,A ;(A)(DPTR),写外部RAM/IO 说明:与外部存储器RAM打交道的只能是A累加器。所有需要送入外部RAM的数据必须通过A送去,而所有要读入外部RAM中的数据也必须通过A读入。(7)程序存储器向累加器A传送指令 MOVC A,A+DPTR;(A)+(DPTR) A MOVC A,A+PC ;(A)+(PC) A 本组指令是将ROM中的数送入A中,也被称为查表指令,常用这两条指令来查在ROM中的表格常数。例如:例如:有一个数在R0中,要求用查表的方法确定它的平方值 (此数的取值范围是05)。 MOV DPTR,

43、 TAB MOV A,R0 MOVC A,A+DPTR TAB:DB 0,1,4,9,16,252、堆栈类指令堆栈类指令(1)进栈指令PUSH direct ;(SP)+1SP,(direct)SP例如:例如:当(SP)=60H,(A)=30H,(B)=70H,执行 PUSH A ;(SP)+1=61H SP,(A) 61H PUSH B ;(SP)+1=62H SP,(B) 62H结果:(61H)=30H,(62H)=70H,(SP)=62H(2)出栈指令POP direct ;(SP)direct,(SP)-1SP例如:例如:当(SP)=62H,(62H)=70H,(61H)=30H,执行

44、POP DPH ;(SP)=(62H)=70H DPH,(SP)-1=61H SPPOP DPL ;(SP)=(61H)=30H DPL,(SP)-1=60H SP结果:(DPTR)=7030H,(SP)=60H3、交换类指令交换类指令(1)整字节交换 XCH A,Rn ;A的内容和Rn的内容交换 XCH A,Ri ;A的内容和内部RAM中的内容交换 XCH A,direct ;A的内容和direct的内容交换(2)低半字节的内容交换 XCHD A,Ri ;累加器低4位和内部RAM低4位交换 (3)高半字节的内容与低半字节的内容交换 SWAP A ;累加器A高、低半字节内容交换3.3.2 算术

45、操作类指令算术操作类指令1、不带进位位的加法指令不带进位位的加法指令 ADD A,data ;(A)+ #data A ADD A,direct ;(A)+(direct) A ADD A,Rn ;(A)+(Rn) A ADD A,Ri ;(A)+ (Ri) A运算结果对标志位的影响:(1)如果位7有进位,则Cy置“1”,否则Cy清“0”;(2)如果位3有进位,则Ac置“1”,否则Ac清“0”;(3)如果位6有进位,而位7没有进位;或者位7有进位,而位6没有进位,则溢出标志位OV置“1”,否则OV清“0”注意:注意:溢出标志位OV,只有在带符号数加法运算时才有意义,当两个带符号数相加是,OV=

46、1,即产生了溢出,因此运算结果是错误的。例如例如:(A)=53H,(R0)=FCH,执行 ADD A, R0 0 1 0 1 0 0 1 1 + 1 1 1 1 1 1 0 0 1 0 1 0 0 1 1 1 1 结果(A)=4FH,(Cy)=1,(Ac)=0, OV=0 2、带进位位的加法指令带进位位的加法指令 ADDC A,Rn ;(A)+(Rn)+ Cy A ADDC A,direct ;(A)+(direct)+ Cy A ADDC A,Ri ;(A)+(Ri)+ Cy A ADDC A,data ;(A)+ data + Cy A例:例:(A)=85H,(20H)=FFH,Cy=1

47、执行 ADDC A, 20H 结果:(A)=85H,Cy=1,Ac=1,OV=03、带借位的减法指令带借位的减法指令 SUBB A,Rn ;(A)-(Rn)- Cy A SUBB A,direct ;(A)-(direct)- Cy A SUBB A,Ri ;(A)-(Ri)- Cy A SUBB A,data ;(A)-data - Cy A4、 乘、除指令和其他运算指令乘、除指令和其他运算指令(1)乘法指令 MUL AB ;ABBA 功能:将A和B中的两个8位无符号数相乘,其中高8位放在B中,低8位放在A中。在乘积大于FFFFH(65535)时,OV置1(溢出),否则OV为0,而Cy总是0

48、。(2)除法指令 DIV AB ;A/BA(商),B(余数) 功能:将A中的8位无符号数除以B中的8位无符号数(A/B),商放A中,余数放在B中。Cy和OV都是0。如果在做除法前B中的值是00H,也就是除数为0,那么OV1(3)十进制调整指令 DA A(4)数据指针的内容加1 INC DPTR ;(DPTR)+1(DPTR)5、加加1指令指令 INC A ;(A)+1 A INC Rn ;(Rn)+1 Rn INC direct ;(direct)+1 direct INC Ri ;(Ri)+1 (Ri) INL DPTR ;(DPTR)+1 DPTR 6、减减1指令指令 DEC A ;(A)

49、- 1 A DEC Rn ;(Rn)- 1 Rn DEC direct ;(direct)- 1 direct DEC Ri ;(Ri)- 1(Ri)注意:注意:INC和DEC指令,不影响PSW中的如何标志位(P标志位除外)。3.3.3 逻辑操作类指令逻辑操作类指令1、对累加器对累加器A的逻辑操作的逻辑操作 CLR A ;将A中的值清0 CPL A ;将A中的值按位取反 RL A ;将A中的值进行逻辑左移(左移小循环) RR A ;将A中的值进行逻辑右移(右移小循环) RLC A ;将A中的值加上进位位进行逻辑左移(左移大循环) RRC A ;将A中的值加上进位位进行逻辑右移(右移大循环)2、

50、逻辑与操作逻辑与操作 ANL A,Rn ;(A)(Rn)A ANL A,direct ;(A)(direct)A ANL A,Ri ;(A)(Ri)A ANL A,data ;(A)data A ANL direct,A ;(direct)(A) direct ANL direct,data ;(direct)data direct 3、逻辑或操作逻辑或操作 ORL A,Rn ;(A)(Rn)A ORL A,direct ;(A)(direct)A ORL A,#data ;(A)dataA ORL A,Ri ;(A)(Ri)AORL direct,A ;(direct)(A) direct

51、ORL direct,#data ;(direct)data direct 4、逻辑异或指令逻辑异或指令 XRL A,Rn ;(A) (Rn)A XRL A,direct ;(A) (direct)A XRL A,Ri ;(A) (Ri)A XRL A,data ;(A) dataA XRL direct,A ;(direct) (A) direct XRL direct,data ;(direct) data direct 3.3.4 控制转移类指令控制转移类指令1、无条件转移指令无条件转移指令(1)短转移指令(2字节指令)AJMP addr11;(PC)+2 PC,addr11 PC.10

52、0 (PC.1511)保持不变(2)长转移指令(3字节指令) LJMP addr16;addr16 PC(3)相对转移指令(2字节指令) SJMP rel;(PC)+2+rel PC注意:程序中只需直接写上要转向的目标地址标号就可以了例如: LOOP: MOV A,R6 SJMP LOOP (4)间接转移指令 JMP A+DPTR2、 条件转移指令条件转移指令(1)判断A内容是否为0转移指令(2字节)JZ rel ;若(A)0,则(PC)+ 2 + rel PC 若(A)0,则(PC)+ 2 PCJNZ rel ;若(A)0,则(PC)+ 2 PC 若(A)0,则(PC)+ 2 + rel P

53、C(2)比较转移指令(3字节)CJNE A,data,rel ;若data(A),则(PC)+ 3 PC ,0C 若data(A),则(PC)+ 3 +rel PC,0C 若data(A),则(PC)+ 3 +rel PC,1CCJNE A,direct,rel ;若(direct)(A),则(PC)+ 3 PC,0C 若(direct)(A),则(PC)+ 3 +rel PC,0C 若(direct)(A),则(PC)+ 3 +rel PC,1CCJNE Rn,data,rel ;若data(Rn),则(PC)+ 3 PC,0C若data(Rn),则(PC)+ 3 +rel PC,0C若da

54、ta(Rn),则(PC)+ 3 +rel PC,1CCJNE Ri,data,rel ;若data(Ri),则(PC)+ 3 PC,0C若data(Ri),则(PC)+ 3 +rel PC,0C若data(Ri),则(PC)+ 3 +rel PC,1C(3)减1不为0转移指令DJNZ Rn,rel ;(Rn)- 1 Rn, 若(Rn) 0,则(PC)+ 2 + rel PC; 若(Rn)0,则(PC)+ 2 PC。DJNZ direct,rel ;(direct)- 1 direct, 若(direct) 0,则(PC)+ 3 + rel PC; 若(direct)0,则(PC)+ 3 PC。

55、3、子程序调用与返回指令子程序调用与返回指令(1)长调用指令 LCALL addr16 ;(PC)+ 3 PC ;(SP)+ 1 SP,(PC7PC0)(SP) ;(SP)+ 1 SP,(PC15PC8)(SP) ;addr15addr0 PC (2)短调用指令 ACALL addr11 ;(PC)+ 2 PC ;(SP)+ 1 SP,(PC7PC0)(SP) ;(SP)+ 1 SP,(PC15PC8)(SP) ;addr10addr0 PC,(PC15PC11)不变(3)子程序返回 RET ;(SP) PC15PC8,(SP)-1 SP ;(SP) PC7PC0,(SP)-1 SP(4)中断

56、返回 RETI ;(SP) PC15PC8,(SP)-1 SP ;(SP) PC7PC0,(SP)-1 SP4、空操作指令空操作指令 NOP ;(PC)+ 1 PC3.3.5 位位变量操作类指令变量操作类指令1、位、位操作指令操作指令(1)位传送指令 MOV C,bit ;(bit) C MOV bit,C ;(C) bit(2)位清0指令 CLR C ; 0 C CLR bit ;0 bit(3)位置1指令 SETB C ; 1 C SETB bit ; 1 bit(4)位取反指令 CPL C ;使Cy变为与原来相反的值:由1变为0,由0变为1 CPL bit ;使指定位的值变为与原来相反的

57、值:由0变为1,由1变为0(5)位逻辑运算指令ANL C,bit ;(C)(bit) CANL C,/bit ;(C)(/bit ) CORL C,bit ;(C)(bit) CORL C,/bit ;(C)(/bit ) C(6)位条件转移指令 判断Cy转移指令。JC rel ;若(C) 1,则(PC)+ 2 + rel PC ;若(C) 0,则(PC)+ 2 PCJNC rel ;若(C) 0,则(PC)+ 2 + rel PC ;若(C) 1,则(PC)+ 2 PC 判断位地址内容转移指令。JB bit,rel ;若(bit) 1,则(PC)+ 3 + rel PC ;若(bit) 0,

58、则(PC)+ 3 PCJNB bit,rel ;若(bit) 0,则(PC)+ 3 + rel PC ;若(bit) 1,则(PC)+ 3 PCJBC bit,rel ;若(bit) 1,则(PC)+ 3 + rel PC, (bit) 0 ;若(bit) 0,则(PC)+ 3 PC3.4 MCS-51汇编语言伪指令汇编语言伪指令 伪指令不属于伪指令不属于MCS-51指令系统中的指令,它是程指令系统中的指令,它是程序员发给汇编程序的命令,也称为汇编程序控制命令。序员发给汇编程序的命令,也称为汇编程序控制命令。1、汇编起始地址命令 格式:ORG m 功能:指定伪指令下面的源程序汇编成的目标程序在

59、程序存储器中存放的起始地址。 ORG为伪指令助记符,m为起始地址 ORG的位置一般放在源程序开头。若源程序开头未用ORG指令,则汇编程序默认为m0000H。可在源程序中间任一位置增加一个或几个ORG指令,但后面的ORG中的参数m必须大于前面的,否则出错。该伪指令不产生目标代码。例如例如: ORG 0200H MOV 30H,55H ANL A,30H JZ L1 ORG 0500H L1:XNL A,80H MOV 20H,A2、汇编结束命令格式:END功能:当汇编程序遇到该伪指令后,停止汇编。说明:该伪指令位置固定在源程序最末尾,它不产生目标代码。例如: ORG 0700H MOV 30H,

60、20H END3、定义字节定义字节命令命令 格式:DB B1,B2,Bn 功能:用于从指定的地址开始,在程序存储器的连续单元中定义字节数据。 说明:DB是助记符:B1,B2,Bn为字节的内容,一般是十六进制数或十进制数,也可以是字符串。定义字节时,若一行写不下,可另起一行,但前面必须加DB,否则出错。DB的用途一般是用来定义一个常数表。 例如例如: ORG 2000H TAD: DB 30H,40H,24 DB “C”,“B” END汇编后:(2000H)=30H (2001H)=40H (2002H)=18H(十进制数24) (2003H)=43H (C的ASCII码) (2004H)=42

温馨提示

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

评论

0/150

提交评论