单片机原理及应用教程第4版-赵全利全套教案课件_第1页
单片机原理及应用教程第4版-赵全利全套教案课件_第2页
单片机原理及应用教程第4版-赵全利全套教案课件_第3页
单片机原理及应用教程第4版-赵全利全套教案课件_第4页
单片机原理及应用教程第4版-赵全利全套教案课件_第5页
已阅读5页,还剩312页未读 继续免费阅读

下载本文档

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

文档简介

单片机原理及应用教程

(第4版)

赵全利主编

杜海龙陈军秦春斌副主编

2020-8第1章计算机基础概述1.1单片机应用基础概述1.2数制剂编码1.3计算机系统组成1.4单片机与嵌入式系统1.5单片机应用开发资源1.6一个简单的单片机应用示例1.1单片机应用基础概述1.1.1计算机及单片机简介1.冯·诺依曼计算机1945年6月发表的关于EDVAC的报告草案中,提出了以“二进制存储信息”、“存储程序(自动执行程序)”为基础的计算机结构思想,即冯·诺依曼结构,如下图。图1-1EDVAC计算机硬件经典结构2.单片型计算机(单片机)

通常所说的51系列单片机(本书以下简称51单片机)是对以Intel公司MCS-51系列单片机中8051为基核推出的各种型号兼容性单片机的统称。51单片机是学习单片机应用基础的首选单片机,同时也是应用最广泛的一种单片机。51单片机其代表型号有Intel公司80C51、ATMEL公司的AT89系列,但51单片机一般不具备自编程能力。当前在应用系统盛行的STC单片机系列,完全兼容51单片机,其抗干扰性强、加密性强、超低功耗、可以远程升级、价格低廉、使用方便及在系统在应用中编程等内部专用功能电路等特点,使得STC系列单片机的应用日趋广泛。ARM单片机采用了新型的32位ARM核处理器,使其在指令系统、总线结构、调试技术、功耗以及性价比等方面都超过了传统的51单片机。1.2数制及编码计算机只是一种以二进制数据形式内部存储信息、以程序存储为基础、由程序自动控制的电子设备。二进制数是计算机硬件能直接识别并进行处理的惟一形式。1.2.1数制及其转换

数制就是计数方式。常用的数制有二进制、八进制、十进制、十六进制数据等。在计算机内只能使用二进制表示,因此,计算机在处理数据时,必须进行各种数制之间的相互转换。1.二进制数

二进制数只有两个数字符号:0和1。计数时按“逢二进一”的原则进行计数。二进制数的表示形式有(110)2(110.11)210110B等。2.十六进制数

十六进制数有16个数字符号,其中0~9与十进制相同,剩余6个为A~F,分别表示十进制数的10~15。十六进制数的计数原则是逢“十六进一”。为了便于区别不同进制的数据,一般情况下可在数据后跟一后缀:二进制数用“B”表示(如00111010B);十六进制数用“H”表示(如3A5H);十进制数用“D”表示(如39D或39)。3.不同数制之间的转换(1)二进制数转换为十进制数对任意二进制数均可按权值展开将其转化为十进制数。(10)2=1×21+0×20=(2)10对于十进制整数,可采用除2取余的方法转化成二进制数。对于十进制小数,可采用乘2取整的方法转化成二进制数。(2)二进制数与十六进制数的相互转换

在将二进制数转换为十六进制数时,其整数部分可由小数点开始向左每4位为一组进行分组,直至高位。若高位不足4位,则补0使其成为4位二进制数,其小数部分由小数点向右每4位为一组进行分组,不足4位则末位补0使其成为4位二进制数。例如:1000101B=01000101B=45H

例如:100101.101B=00100101.1010B=25.AH

需要将十六进制数转换为二进制数时,则为上述方法的逆过程。例如:45.AH=01000101.1010B

例如:7ABFH=0111101010111111B

7

A

B

F1.2.2编码1.二进制数的编码(1)机器数与真值一个数在计算机中的表示形式叫做机器数,而这个数本身(含符号“+”或“-”)称为机器数的真值。通常在机器数中,用最高位“1”表示负数,“0”表示正数(2)原码、反码和补码

1)原码。正数的符号位用“0”表示,负数的符号位用“1”表示,其数值部分随后表示,称为原码。

2)反码、补码。在计算机中,任何有符号数都是以补码形式存储的。对于正数,其反码、补码与原码相同。

对于负数,其反码为:原码的符号位不变,其数值部分按位取反。负数的补码为:原码的符号位不变,其数值部分按位取反后再加1(即负数的反码+1),称为求补。如果已知一个负数的补码,可以对该补码再进行求补码(即一个数的补码的补码),即可得到该数的原码。2.二—十进制编码二—十进制编码又称BCD编码,既具有二进制数的形式,以便于存储,又具有十进制数的特点,以便于进行运算和显示结果。在BCD码中,用4位二进制代码表示1位十进制数。3.ASCII码

ASCII(AmericanStandardCodeforInformation)码是一种国际标准信息交换码,它利用7位二进制代码来表示字符,再加上1位校验位,故在计算机中用1个字节8位二进制数来表示一个字符,这样有利于对这些数据进行处理及传输。1.3计算机系统组成1.3.1计算机硬件组成

1.硬件结构

一台计算机的基本结构如图1-5所示。它由运算器、控制器、存储器、输入设备和输出设备五部分组成。图1-5微型计算机硬件结构

随着大规模集成电路技术的迅速发展,

把运算器、控制器和通用寄存器集成在一块半导体芯片上,称其为微处理器(机),也称CPU。微处理器主要包括算术逻辑运算部件(ALU)、累加器、控制逻辑部件、程序计数器及通用寄存器等组成。

2.存储器存储器具有记忆功能,用来存放数据和程序。计算机中的存储器主要有随机存储器(RAM)和只读存储器(ROM)两种。存储器的容量常以字节为单位表示如下:

1Byte=8bit

1024B=1KB

1024KB=1MB

1024MB=1GB

1024GB=1TB3.总线

总线是连接计算机各部件之间的一组公共的信号线。其可分为系统总线和外总线。系统总线应包括:地址总线(AB)控制总线(CB)数据总线(DB)4.输入输出(I/O)接口

CPU通过接口电路与外部输入、输出设备交换信息。1.3.2.计算机软件系统

根据软件功能的不同,软件可分为系统软件和应用软件。使用和管理计算机的软件称为系统软件。应用软件是由用户在计算机系统软件资源的平台上,为解决实际问题所编写的应用程序。1.3.3计算机语言及程序设计

计算机语言是实现程序设计、以便人与计算机进行信息交流的必备工具,又称程序设计语言。1.计算机语言

计算机语言可分为3类:机器语言、汇编语言、高级语言。

机器语言(又称二进制目标代码)是CPU硬件惟一能够直接识别的语言,在设计CPU时就已经确定其代码的含义。汇编语言使用人们便于记忆的符号来描述与之相应的机器语言,机器语言的每一条指令,都对应一条汇编语言的指令。高级语言(如C51),是一种接近人们习惯的程序设计语言,它使用人们所熟悉的文字、符号及数学表达式来编写程序,使程序的编写和操作都显得十分方便。2.程序设计程序设计的一般步骤。

1)确定数据结构

2)确定算法

3)编程

4)调试

5)整理源程序并总结资料。3.算法所谓算法,是为解决某一特定的问题,所给出的一系列确切的、有限的操作步骤。在算法设计中应遵循下面几个准则:

1)可执行性。

2)确定性。3)有穷性。

4)输入。

5)输出。4.结构化程序设计结构化程序设计步骤:

1)自顶向下,逐步求精。

2)模块化设计。

3)每一个模块可以独立地进行编程﹑调试。

4)除最上层外,每层功能模块可接受上层调用。结构化程序的每个模块应由3种基本结构组成:顺序结构、选择结构、循环结构。

1.4单片机与嵌入式系统1.4.1单片机应用特点和应用(1)具有较高的性能价格比。(2)体积小,可靠性高。(3)控制功能强。(4)使用方便、容易产品化。

单片机的应用领域单片机由于其体积小、功耗低、价格低廉,且具有逻辑判断、定时计数、程序控制等多种功能,广泛应用于智能仪表、可编程序控制器、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域。单片机最常用的场合:(1)智能仪器。(2)工业控制。(3)家用电器。(4)机电一体化。

1.4.2嵌入式系统

从使用的角度来说,计算机应用可分为两类:

一类是应用广泛的独立使用的计算机系统(如个人计算机、工作站等)。

一类是嵌入式计算机系统。所谓嵌入式系统,是“以应用为中心、以计算机技术为基础、软件硬件可裁减、功能、可靠性、成本、体积、功耗严格要求的专用计算机系统”。嵌入式系统的重要特征:

1)系统内核小

2)专用性强

3)系统精简

4)高实时性

5)嵌入式软件开发走向标准化

6)嵌入式系统开发需要开发工具和环境1.4.3单片机应用系统的组成单片机应用系统包括单片机硬件系统和软件系统。单片机的硬件系统包括:●单片机系统●单片机应用系统硬件组成单片机的系统软件构成有两种模式:●监控程序:用非常紧凑的代码,编写系统的底层软件。这些软件实现的功能,往往是实现系统硬件的管理及驱动,并内嵌一个用于系统的开机初始化等功能的引导(BOOT)模块。●操作系统:已有许多种适合于8位至32位单片机的操作系统进入实用阶段,在操作系统的支持下,嵌入式系统会具有更好的技术性能。单片机典型应用系统1.5单片机应用开发资源

常用的单片机开发资源包括:单片机开发板(也可以自制);Keil单片机集成开发环境;Proteus仿真软件;ISP下载软件;Protel原理图及PCB设计软件等。1.单片机开发板单片机开发板是用于学习51、STC、AVR、ARM等系列单片机实验设备,用户可以根据选用的单片机芯片系列选用相应的单片机开发板。2.Keil集成开发环境KeilμVision开发环境是德国KeilSoftware,Inc.andKeilElektronikGmbH开发的微处理器开发平台,可以开发多种51单片机程序。3.Proteus仿真软件Proteus软件是英国LabCenterElectronics公司开发的EDA工具软件。该软件已有20多年的历史,用户遍布全国50多个国家,是目前功能最强,最具成本效益的EDA工具。4.ISP下载ISP(in-systemprogramming)即在线系统编程,一种无需将存储芯片(如EPROM)从嵌入式设备上取出就能对其进行编程的过程,缩略为ISP。5.Protel软件Protel软件主要功能是电路原理图及PCB设计,工程中常用的版本有Protel99SE、ProtelDXP、Proteldesigner。1.6一个简单的单片机应用示例

在设计一个单片机应用系统(嵌入式系统)时,一般来说要经过以下步骤:①分析问题,明确任务。②总体设计,拟定出性能/价格比最高的方案。③硬件设计。④软件设计。

⑤编译、仿真及调试。

⑥程序下载运行。例如,要求8个灯循环点亮,即8个灯点亮顺序循环左移(或右移),循环不止(这里为了简化电路,用8个发光二极管替代广告灯)。分析问题,明确任务。(略)总体设计。(略)图广告灯控制硬件电路

(1)硬件设计。可直接由单片机的输出口P1并行输出驱动8个LED发光二极管,其硬件电路如图所示。被控对象是8个发光二极管,采用共阳极接法,8个发光二极管的阴极分别由P1.0~P1.7(即单片机端口P1的8位输入、输出端)控制。若P1的某位输出为“0”(低电平),相应位的发光二极管的阴极为低电平,则该管加正向电压被点亮发光。若P1口的某位输出为“1”,则相应位的发光二极管截止而熄灭。(2)软件设计。根据以上原理,针对其硬件电路可编程实现:使P1口每一位依次输出“0”(低电平),点亮相应位的发光二极管,并经软件延时后,将“0”(低电平)左移一位后输出,不断循环。汇编源程序如下:ORG0000HMOVA,#0FEH;FEH为点亮第一个发光二极管的代码LOOP:MOVP1,A;点亮P1.0位控制的发光二极管

LCALL DELAY;调用延迟一段时间的子程序

RL A;“0”左移一位

SJMPLOOP;不断循环DELAY:MOVR1,#0FFH;延时子程序入口

LP:MOVR2,#80HLP1:NOP

NOPDJNZR2,LP1DJNZR1,LPRET ;子程序返回END

(3)编译、仿真及调试。利用单片机开发系统编译、仿真、调试此程序,并生成.hex文件。对于初学者来讲,可以使用Proteus进行仿真。(4)程序下载运行。将程序对应的.hex文件写入电路中单片机的程序存储器ROM中,即可投入使用。AT公司的89系列单片机需要专门编程器写入程序;STC系列单片机可以由上位机在线通过串口(P3.0/P3.1)直接下载用户程序,然后对单片机电路直接调试运行成功后,8个LED发光二极管灯顺序左移点亮,循环不止。

作业:

本章小结:

谢谢使用

第2章51单片机及硬件结构2.151单片机系列(略)2.251单片机总体结构2.351存储结构及位处理器2.451工作方式2.551单片机的时序2.6单片机最小系统本章重点内容:1.51单片机硬件的功能结构及内部组成2.单片机引脚功能及应用特点3.片内数据存储器和特殊功能寄存器的组织特点4.单片机的工作方式和典型的CPU时序2.251单片机总体结构

51系列单片机可分为两大系列:51子系列(普通型)和52子系列(增强型)。51子系列单片机的典型产品有8031、8051、8751、80C51、80C31、89C51、89S51等。它们的结构基本相同,其主要差别反映在片内存储器的配置上有所不同。52子系列及兼容单片机的典型产品有8032、8052、8752、89C52、89S52等,其中,8052、8752内含8KB的掩模ROM程序存储器和256B的RAM数据存储器。增强型的存储容量为普通型的一倍。2.2.151单片机总体结构框图及功能8051单片机内部由CPU、4KB的ROM、128B的RAM、4个8位的I/O并行端口、一个串行口、两个16位定时/计数器及中断系统等组成。

其内部基本结构框图如图2-1所示。

图2-2为8051单片机系统结构原理框图。图2-18051单片机内部基本结构框图图2-28051单片机系统结构原理框图

各功能部件的作用如下:(1)CPUCPU是单片机内部的核心部件,是单片机的指挥和控制中心。CPU可分为运算器和控制器两大部分。1)控制器控制器的功能是:接受来自程序存储器ROM存储单元的指令,并对其进行译码,通过定时和控制电路,按时序规定发出指令功能所需要的各种(内部和外部)控制信息,使各部分协调工作,完成指令功能所需的操作。控制器主要包括程序计数器、指令寄存器、指令译码器及定时控制电路等。2)运算器ALU运算器的功能是:对数据进行算术运算和逻辑运算。计算机对任何数据的加工、处理必须由运算器完成。(2)RAMRAM为单片机内部数据存储器。其存储空间包括随机存储器区、寄存器区、特殊功能寄存器及位寻址区。(3)ROMROM为单片机内部程序存储器。(4)

并行I/O口P0~P3是四个8位并行I/O口,每个口既可作为输入,也可作为输出。单片机在与外部存储器及I/O端口设备交换信息时,必须由P0~P3口完成。(5)

定时器/计数器定时器/计数器用于定时和对外部事件进行计数。(6)

中断系统51单片机有5个中断源,中断处理系统灵活、方便,使单片机处理问题的灵活性和工作的效率大大提高。(7)

串行接口串行接口提供对数据各位按序一位一位地传送。(8)

时钟电路OSC时钟电路用于产生单片机中最基本的时间单位。2.2.2

51单片机引脚功能51单片机采用40脚双列直插式封装,其引脚排列及逻辑符号如图2-3所示。(1)主电源引脚VCC和VSSVCC:接主电源+5V。VSS:电源接地端。(2)时钟电路引脚XTAL1和XTAL2XTAL1是片内振荡器反相放大器的输入端,XTAL2是片内振荡器反相放大器的输出端,也是内部时钟发生器的输入端。图2-351单片机引脚图(3).控制信号引脚1)RST/VPDRST/VPD为复位/备用电源输入端。2)ALE/ALE/为低8位地址锁存使能输出/编程脉冲输入端。3)为外部程序存储器控制信号,即读选通信号4)/VPP为外部程序存储器允许访问/编程电源输入。(4).并行I/O口P0~P4端口引脚1)P0口(P0.0~P0.7)P0口内部是一个8位漏极开路型双向I/O端口。P0口在作通用I/O口使用时应外接10千欧的上拉电阻。在端口进行输入操作(即CPU读取端口数据)前,应先向端口的输出锁存器写“1”。2)P1口(P1.0~P1.7)P1口是一个内部带上拉电阻的8位准双向I/O端口。当P1输出高电平时,能向外部提供拉电流负载,因此,不需再外接上拉电阻。3)P2口(P2.0~P2.3)P2口也是一个内部带上拉电阻的8位准双向I/O端口。当CPU访问外部存储器时,P2口自动用于输出高8位地址,与P0口的低8位地址一起形成外部存储器的16位地址总线。4)P3口(P2.0~P2.7)P3口是一个内部带上拉电阻的8位多功能双向I/O端口。。2.351存储结构及位处理器2.3.151存储器的特点51单片机的存储器把程序和数据的存储空间严格区分开

,存储器的划分方法如下:(1)从物理结构上划分,有4个存储空间。

片内程序存储器。

片外程序存储器。

片内数据存储器。

片外数据存储器。(2)从逻辑上划分,有3个存储器地址空间。

片内外统一编址的64KB的程序存储器地址空间。

片内(128+128)B数据存储器地址空间。

片外64KB的数据存储器地址空间。在访问不同的逻辑存储空间时,51单片机提供了不同形式的指令:

MOV指令用于访问内部数据存储器。

MOVC用于访问片内外程序存储器。

MOVX用于访问外部数据存储器。51(8051)存储结构如图2-4所示。图2-451(8051)存储结构2.3.2程序存储器

程序存储器用于存放已编制好的程序及程序中用到的常数。程序存储器由ROM构成,单片机掉电后ROM内容不会丢失。2.3.3数据存储器

数据存储器用于存放程序运算的中间结果、状态标志位等。数据存储器由RAM构成,一旦掉电,其数据将丢失。

1.通用寄存器区

在低128B的RAM区中,将地址00~1FH共32个单元设为工作寄存器区,这32个单元又分为4组,每组由8个单元按序组成通用寄存器R0~R7。通用寄存器R0~R7不仅用于暂存中间结果,而且是CPU指令中寻址方式不可缺少的工作单元。2.可位寻址区地址为20H~2FH的16个RAM(字节)单元,既可以像普通RAM单元按字节地址进行存取,又可以按位进行存取,这16个字节共有128(16×8)个二进制位,每一位都分配一个位地址,编址为00H~7FH。3.只能字节寻址的RAM区在30H~7FH区的80个RAM单元为用户RAM区,只能按字节存取。所以,30H~7FH区是真正的数据缓冲区。2.3.4专用寄存器区(SFR)在片内数据存储器的80H~FFH单元(高128B)中,有21个单元作为专用寄存器(SFR),又称特殊功能寄存器。下面对部分特殊功能寄存器(SFR)作一简介:(1)累加器ACC:字节地址为E0H,并可对其D0~D7各位进行位寻址。D0~D7位地址相应为E0H~E7H。(2)寄存器B:字节地址为F0H,并可对其D0~D7各位进行位寻址。D0~D7位地址相应为F0H~F7H。主要用于暂存数据。(3)程序状态字PSW:字节地址为D0H,并可对其D0~D7各位进行位寻址。D0~D7数据位的位地址相应为D0H~D7H。主要用于寄存当前指令执行后的某些状态信息。(4)堆栈指针SP:字节地址为81H,不能进行位寻址。(5)端口P1:字节地址为90H,并可对其D0~D7各位进行位寻址。D0~D7数据位的位地址相应为90H~97H(也可表示为P1.0~P1.7)。2.3.5位处理器

51单片机片内CPU还是一个性能优异的位处理器,也就是说51单片机实际上又是一个完整而独立的1位单片机(也称布尔处理机)。

该布尔处理机除了有自己的CPU、位寄存器、位累加器(即进位标志Cy)、I/O口和位寻址空间外,还有专供位操作的指令系统,可以直接寻址对位存储单元和SFR的某一位进行操作。51单片机对于位操作(布尔处理)有置位、复位、取反、测试转移、传送、逻辑与和逻辑或运算等功能。2.451单片机工作方式51单片机的工作方式包括:复位方式、程序执行方式、节电方式和EPROM的编程和校验方式,在不同的情况下,其工作方式也不相同。2.4.1复位方式单片机在启动运行时需要复位,使CPU以及其他功能部件处于一个确定的初始状态,并从这个状态开始工作,单片机应用程序必须以此作为设计前提。2.4.2程序执行工作方式程序执行方式通常可分为连续执行和单步执行两种工作方式。1.连续执行方式连续执行方式是所有单片机执行工作程序所需要的一种工作方式。2.单步执行方式用户在调试程序时,常常要一条一条地执行程序中的每一条指令。单步执行方式就是为用户调试程序而设计出的一种工作方式。2.4.3节电工作方式节电工作方式是一种能减少单片机功耗的工作方式,通常有空闲方式和掉电方式两种。

1.掉电方式单片机在运行过程中,如果发生掉电,片内RAM和SFR中的信息将会丢失。为防止信息丢失,可以把一组备用电源加到RST/VPD端,当VCC上的电压低于VPD上的电压时,备用电源通过VPD端,以低功耗保持内部RAM和SFR中的数据。2.空闲方式进入空闲方式后,CPU停止工作,但中断、串行口和定时器/计数器可以继续工作。2.551单片机的时序

时序就是计算机指令执行时各种微操作在时间上的顺序关系。2.5.1时钟计算机执行指令的过程可分为取指令、分析指令和执行指令三个步骤,每个步骤又由许多微操作所组成,这些微操作必须在一个统一的时钟脉冲的控制下才能按照正确的顺序执行。时钟脉冲由时钟振荡器产生。2.5.2CPU时序单片机的时序是指CPU在执行指令时所需控制信号的时间顺序。时序信号是以时钟脉冲为基准产生的。CPU发出的时序信号有两类:一类用于片内各功能部件的控制,另一类信号通过单片机的引脚送到外部。1.时钟周期、机器周期和指令周期(1)时钟周期时钟周期也称振荡周期,即振荡器的振荡频率fosc的倒数,是时序中最小的时间单位。(2)机器周期执行一条指令的过程可分为若干个阶段,每一阶段完成一规定的操作,完成一个规定操作所需要的时间称为一个机器周期。(3)指令周期指令周期定义为执行一条指令所用的时间。2.51单片机的取指/执行时序

取指令阶段把程序计数器PC中的指令地址送到程序存储器,选中指定单元并从中取出需要执行的指令。指令执行阶段对指令操作码进行译码,以产生一系列控制信号完成指令的执行。3.访问外部ROM时序4.读外部RAM时序

访问外部RAM的操作有两种情况,即读操作和写操作,两种操作的方式基本相同。2.6单片机最小系统

单片机最小系统硬件电路包括电源电路、时钟电路、复位电路及扩展部分(需要时)等组成。1)必须给单片机提供稳定可靠的工作电源。2)为单片机系统配置一个稳定可靠的电源供电模块。3)时钟电路即振荡电路,用于产生单片机最基本的时间单位。4)复位电路用于产生复位信号,使单片机从固定的起始状态开始工作。

单片机最小系统电路

作业:

本章小结:

谢谢使用

第3章51单片机指令系统及汇编语言程序设计3.1指令系统简介3.2寻址方式3.3指令系统3.4汇编语言程序设计基础3.5程序设计实例3.6单片机I/O端口应用程序及仿真3.1指令系统简介指令系统是一种CPU所能直接执行的所有命令的集合,CPU的主要功能是由它的指令系统来体现的。51单片机指令系统共有111条指令,其中有49条单字节指令、45条双字节指令和17条三字节指令。51单片机的指令系统中有64条指令的执行时间为一个机器周期(12个振荡周期),45条指令的执行时间为两个机器周期。3.1.1指令格式51单片机指令系统中的每一条指令都有两级指令格式:

CPU可直接识别并执行的机器语言指令。

汇编语言指令(简称汇编指令)。机器语言指令由二进制数“0”和“1”编码而成,也称目标代码,执行速度最快。

汇编语言指令是在机器语言指令的基础上,用英文单词或英文单词缩写表示机器语言指令的操作码(助记符),用符号表示操作数或操作数的地址。汇编语言指令实际上是符号化的机器语言。51单片机汇编语言指令格式由以下几个部分组成:[标号:]操作码[目的操作数][,源操作数][;注释]

其中,[]中的项表示为可选项。标号:又称为指令地址符号,一般是由1~6个字符组成,以字母开头的字母数字串,与操作码之间用冒号分开。操作码:是由助记符所表示的指令的操作功能。操作数:是指参加操作的数据或数据的地址。注释:是为该条指令作的说明,以便于阅读。操作码是指令的核心,不可缺少,其他几项根据不同指令为可选项。3.1.2指令分类及符号说明

1.指令分类51单片机的指令系统共有111条指令,分为五大类:(1)数据传送指令:片内RAM、片外RAM、程序存储器的传送指令,交换及堆栈指令。(2)算术运算类:加法、带进位加、减、乘、除、加1、减1指令。(3)逻辑运算类:逻辑与、或、异或、测试及移位指令。(4)控制程序转移类:无条件转移与调用、条件转移、空操作指令。(5)布尔变量操作类:分为位数据传送、位与、位或、位转移指令。2.符号说明

#data:表示指令中的8位立即数(data),“#”表示后面的数据是立即数。#data16:表示指令中的16位立即数。direct:表示8位内部数据存储器单元的地址。Rn:n=0~7,表示当前选中的寄存器区的8个工作寄存器R0~R7。Ri:i=0或1,表示当前选中的寄存器区中的2个寄存器R0、R1,可作地址指针即间址寄存器。Addr11:表示11位的目的地址。Addr16:表示16位的目的地址。rel:表示一个补码形式的8位带符号的偏移量。用于SJMP和所有的条件转移指令中。DPTR:为数据指针,可用作16位的地址寄存器。bit:内部RAM或专用寄存器中的直接寻址位。/:位操作数的前缀,表示对该位操作数取反。A:累加器ACC。B:专用寄存器,用于MUL和DIV指令中。C:进位/借位标志位,也可作为布尔处理机中的累加器。@:间址寄存器或基址寄存器的前缀。$:当前指令的首地址。←:表示将箭头右边的内容传送至箭头的左边。3.2寻址方式所谓寻址方式就是寻找或获得操作数的方式。51单片机指令系统的寻址方式有以下7种。1.立即寻址在立即寻址方式中,操作数直接出现在指令中。操作数前加“#”号表示,也称立即数。指令的操作数可以是8位或16位数。例如:MOVA,#26H ;A←26H指令执行结果:(A)=26H,即把立即数26H直接送到A中。2.直接寻址在直接寻址方式中,操作数的单元地址直接出现在指令中,这一寻址方式可进行内部存储单元的访问。它包括:(1)特殊功能寄存器地址空间。这也是惟一可寻址特殊功能寄存器(SFR)的寻址方式。例如:MOVTCON,A指令执行结果:A的内容传送给寄存器TCON。(2)内部RAM的低128字节例如:MOVA,76H指令执行结果:内部RAM地址为76H单元的内容传送给A。3.寄存器寻址在寄存器寻址方式中,寄存器中的内容就是操作数。例如:MOVA,R1 ;A←(R1)指令执行结果:把寄存器R1中的内容送到累加器A中。4.寄存器间接寻址在寄存器间接寻址方式中,指定寄存器中的内容是操作数的地址,该地址对应存储单元的内容才是操作数。例如:MOVA,@R0该指令的功能是将R0所指3FH单元中内容45H送A中,执行结果:(A)=45H。16位数据指针DPTR作为间址寄存器。访问内部数据存储器时,用当前工作寄存器R0和R1作间址,即@R0、@R1,在堆栈操作中则用堆栈指针SP作间址。例如:MOVXA,@R1MOVX@DPTR,A5.变址寻址变址寻址方式是以程序指针PC或数据指针DPTR为基址寄存器,以累加器A作为变址寄存器,两者内容相加(即基地址+偏移量)形成16位的操作数地址,变址寻址方式主要用于访问固化在程序存储器中的某个字节。变址寻址方式有两类:(1)用程序指针PC作基地址,A作变址,形成操作数地址:@A+PC。(2)用数据指针DPTR作基地址,A作变址,形成操作数地址:@A+DPTR。

6.相对寻址相对寻址是以程序计数器PC的当前值作为基地址,与指令中的第二字节给出的相对偏移量rel进行相加,所得和为程序的转移地址。7.位寻址

51单片机系列单片机中有独立的性能优越的布尔处理器,包括位变量操作运算器、位累加器和位存储器,可对位地址空间的每个位进行位变量传送、状态控制、逻辑运算等操作。位地址包括:内部RAM地址空间的可进行位寻址的128位和SFR地址空间的可位寻址的11个8位寄存器的88位。位寻址给出的是直接地址。

3.3指令系统3.3.1数据传送类指令1.数据传送类指令的特点

数据传送指令是最常用的一类指令,共有29条,可以通过累加器进行数据传送,还可以在数据存储器之间或工作寄存器与数据存储器之间直接进行数据传送。2.数据传送类指令(1)片内数据传送指令1)以累加器A为目的操作数的指令有以下形式:MOVA,Rn ;A←(Rn)源操作数为寄存器寻址MOVA,@Ri ;A←((Ri))源操作数为寄存器间接寻址MOVA,direct ;A←(direct)源操作数为直接寻址MOVA,#data ;A←data源操作数为立即寻址该组指令的功能是把源操作数传送给累加器A。2)以工作寄存器Rn为目的操作数的指令有以下形式:MOVRn,A ;Rn←(A)MOVRn,direct ;Rn←(direct)MOVRn,#data ;Rn←data3)以直接地址为目的操作数的指令有以下形式:MOVdirect,AMOVdirect,RnMOVdirect,directMOVdirect,@RiMOVdirect,#data4)以间接地址为目的操作数的指令:MOV@Ri,AMOV@Ri,directMOV@Ri,#data该组指令的功能:把源操作数所指定的内容传送至以R0或R1为地址指针的片内RAM单元中。5)16位数据传送指令有以下惟一形式:MOVDPTR,#data16该指令的功能:把16位立即数传送至16位数据指针寄存器DPTR。

(2)片外数据存储器传送指令片外数据存储器传送指令有以下形式:

MOVXA,@Ri ;A←((Ri)),为寄存器间接寻址

MOVXA,@DPTR ;A←((DPTR)),为寄存器间接寻址

MOVX@R,A ;(Ri)←(A)MOVX@DPTR,A ;(DPTR)←(A)单片机内部与片外数据存储器是通过累加器A进行数据传送的。

(3)程序存储器数据传送指令程序存储器数据传送指令有以下两种形式:MOVCA,@A+PC MOVCA,@A+DPTR(4)数据交换指令数据交换指令有以下形式:

1)字节交换指令:XCHA,Rn ;A的内容与Rn的内容交换XCHA,@Ri ;A的内容与(Ri)的内容交换XCHA,direct ;A的内容与(direct)的内容交换

2)低半字节交换指令:XCHDA,@Ri ;A的低四位与(Ri)的低四位交换3)累加器A的高、低半字节交换指令:SWAPA ;A的低四位与高四位互换(5)堆栈操作指令堆栈操作指令有以下形式:PUSHdirect ;SP←(SP)+1(先指针加1)

;(SP)←(direct)(再压栈)

POPdirect ;(SP)←(direct)(先弹出)

;SP←(SP)-1(再指针减1)PUSH指令是入栈(或称压栈或进栈)指令,其功能是先将堆栈指针SP的内容加1,然后将直接寻址direct单元中的数压入到SP所指示的单元中。POP是出栈(或称弹出)指令,其功能是先将堆栈指针SP所指示的单元内容弹出到直接寻址direct单元中,然后将SP的内容减1,SP始终指向栈顶。3.3.2算术运算类指令

1.算术运算类指令特点算术运算类指令共有24条,包括加、减、乘、除4种基本的算术运算指令。

该类指令的主要功能:(1)对8位无符号数进行直接的运算。(2)借助溢出标志对有符号的二进制整数进行加减运算。(3)借助进位标志,可以实现多字节的加减运算。(4)对压缩的BCD数进行运算(压缩BCD数,是指在1个字节中存放2位BCD数)。(5)算术运算指令对程序状态字PSW中的Cy、AC、OV三个标志都有影响,根据运算的结果可将它们置1或清除。但是加1和减1指令不影响这些标志。算术运算类指令用到的助记符有:ADD、ADDC、SUBB、INC、DEC、DA、MUL和DIV八种。

2.加法指令(1)不带进位的加法指令

不带进位的加法指令有以下形式:ADDA,#data ;A←(A)+dataADDA,direct ;A←(A)+(direct)ADDA,Rn ;A←(A)+(Rn)ADDA,@Ri ;A←(A)+((Ri))这4条指令的功能是完成A中的数与源操作数所确定的内容按二进制运算相加,其和送入目的操作数累加器A中。(2)带进位加法指令带进位加法指令有以下形式:ADDC A,Rn ;A←(A)+(Rn)+CyADDC A,@Ri ;A←(A)+((Ri))+CyADDC A,direct ;A←(A)+(direct)+CyADDC A,#data ;A←(A)+#data+Cy该组指令的功能:将指令中指出的源操作数与A的内容及进位标志位Cy的值相加,结果送A。此类指令常用于多字节加法算中。(3)加1指令加1指令有以下形式:INC A ;A←(A)+1INC Rn ;Rn←(Rn)+1INC direct ;(direct)←(direct)+1INC @Ri ;(Ri)←((Ri))+1INC DPTR ;DPTR←(DPTR)+1该组指令的功能:把操作数指定的单元或寄存器的内容加1。(4)十进制调整指令十进制调整指令有以下惟一形式:DA A ;A←(A)(BCD码调整)指令的功能:将存放于A中的两个BCD码(十进制数)的和进行十进制调整,使A中的结果为正确的BCD码数。3.减法指令(1)带借位减法指令带借位减法指令有以下形式:SUBB A,Rn ;A←(A)-(Rn)-CySUBB A,@Ri ;A←(A)-((Ri))-CySUBB A,direct ;A←(A)-(direct)-CySUBB A,#data ;A←(A)-data-Cy该组指令的功能:从累加器A中减去源操作数指定的内容和标志位Cy,结果存入累加器A中。(2)减1指令减1指令有以下形式:DECA ;A←(A)-1DECRn ;Rn←(Rn)-1DEC@Ri ;(Ri)←((Ri))-1DECdirect ;(direct)←(direct)-1该组指令的功能:将操作数指定的内容减1。若操作数为00H,则减1后下溢为0FFH,不影响标志位,只有DECA影响标志位P。4.乘除法指令乘法指令有以下惟一形式:MUL AB ;A←A×B低字节,B←A×B高字节该指令的功能:把累加器A和寄存器B中的两个8位无符号数相乘,乘积又送回A、B内,A中存放低位字节,B中存放高位字节。除法指令有以下惟一形式:DIV AB ;A←(A)/(B)(商),B←(A)/(B)(余数)该指令的功能:把A中的8位无符号数除以B中的8位无符号数,商存放在A中,余数存放在B中。Cy和OV均清0。若除数为0,执行该指令后结果不定,并将OV置1。3.3.3逻辑运算类指令逻辑操作指令共24条,所有指令均对8位二进制数按位进行逻辑运算。逻辑运算类指令无进位,一般不影响标志位。1.双操作数逻辑运算指令(1)逻辑“与”指令逻辑“与”指令有以下形式:ANL A,Rn ;A←(A)∧(Rn)ANL A,@Ri ;A←(A)∧((Ri))ANL A,direct ;A←(A)∧(direct)ANL A,#data ;A←(A)∧dataANL direct,A ;(direct)←(direct)∧(A)ANL direct,#data ;(direct)←(direct)∧data该组指令的功能:将源操作数和目的操作数按对应位进行逻辑“与”运算,并将结果存入目的地址(前4条指令为累加器A,后2条指令为直接寻址的direct单元)中。与运算规则是:与“0”相与,本位为“0”(即屏蔽);与“1”相与,本位不变。逻辑“与”指令常用于屏蔽操作数中的某些位。(2)逻辑“或”指令逻辑“或”指令有以下形式:ORL A,Rn ;A←(A)∨(Rn)ORL A,@Ri ;A←(A)∨((Ri))ORL A,direct ;A←(A)∨(direct)ORL A,#data ;A←(A)∨dataORL direct,A ;(direct)←(direct)∨(A)ORL direct,#data ;(direct)←(direct)∨data该组指令的功能:将源操作数和目的操作数按对应位进行逻辑“或”运算,并将结果存入目的地址(前4条指令为累加器A,后2条指令为直接寻址的direct单元)中。或运算规则是:与“1”相或,本位为“1”;与“0”相或,本位不变。(3)逻辑“异或”指令逻辑“异或”指令有以下形式:XRL A,Rn ;A←(A)⊕(Rn)XRL A,@Ri ;A←(A)⊕((Ri))XRL A,direct ;A←(A)⊕(direct)XRL A,#data ;A←(A)⊕dataXRL direct,A ;(direct)←(direct)⊕(A)XRL direct,#data ;(direct)←(direct)⊕data该组指令的功能是:将源操作数和目的操作数按对应位进行逻辑“异或”运算,并将结果存入目的地址(前4条指令为累加器A,后2条指令为直接寻址的direct单元)中。异或运算的运算规则是:与“1”异或,本位为非(即求反);与“0”异或,本位不变。2.单操作数逻辑运算指令

单操作数逻辑运算指令有以下形式:(1)累加器A清0指令CLR A ;A←0(2)累加器A求反指令CPL A ;A←()

3.累加器A循环移位指令(1)累加器A循环移位指令累加器A循环移位指令有以下形式:RL A ;A的各位依次左移一位,A.0←A.7RR A ;A的各位依次右移一位,A.7←A.0该组指令不影响标志位。当A的最高位(D7)为0时,执行一次RL指令相当于对A进行一次乘2操作。当A的最低位(D0)为0时,执行一次RR指令相当于对A进行一次除2操作。(2)带进位位Cy的累加器A循环移位指令带进位位Cy的累加器A循环移位指令有以下形式:RLC A ;A的各位依次左移一位,Cy←A.7,A.0←CyRRC A ;A的各位依次右移一位,Cy←A.0,A.7←Cy3.3.4控制转移类指令

控制转移指令共17条,可分为三类:无条件转移指令、条件转移指令及子程序调用与返回指令。1.无条件转移指令不受任何条件限制的转移指令称为无条件转移指令。51单片机无条件转移指令有以下类型:(1)长转移指令长转移指令有以下惟一形式:LJMP addrl6 ;PC←(PC)+2;PC←addr16该指令功能:把16位地址(addr16)送给PC,从而实现程序转移。允许转移的目标地址在整个程序存储器空间。(2)绝对转移指令绝对转移指令有以下惟一形式:AJMP

addr11 ;PC←(PC)+2 ;PC10~0←addr10~0,PC15~11不变该指令功能:把PC当前值(加2修改后的值)的高5位与指令中的11位地址拼接在一起,共同形成16位目标地址送给PC,从而使程序转移。(3)相对转移指令(亦称短转移指令)相对转移指令有以下惟一形式:SJMP rel ;PC←(PC)+2+rel该指令的功能:根据指令中给出的相对偏移量rel(相对于当前PC=(PC)+2),计算出程序将要转移的目标地址(PC)+2+rel,把该目标地址送给PC。(4)间接长转移指令(相对长转移指令)间接长转移指令有以下惟一形式:JMP @A+DPTR ;PC←(A)+(DPTR)该指令也称散转指令,其功能是把累加器A中8位无符号数与数据指针DPTR的16位数相加,结果作为下一条指令地址送入PC,指令执行后不改变A和DPTR中的内容,也不影响标志位。2.条件转移指令所谓条件转移指令是指根据指令中给定的判断条件决定程序是否转移。当条件满足时,就按指令给定的相对偏移量进行转移;否则,程序顺序执行。51单片机的条件转移指令有以下类型:(1)累加器判零转移指令累加器判零转移指令有以下形式:JZ rel JNZ rel这两条指令均为双字节指令,以累加器A的内容是否为0作为转移的条件。本指令执行前,累加器A应有确定的值。(2)比较不相等转移指令比较不相等转移指令有以下形式:1)指令格式为:CJNE A,#data,rel该指令的功能:若A>data,则PC←(PC)+3+rel,且Cy=0(满足条件相对转移)。若(A)<data,则PC←(PC)+3+rel,且Cy=1(满足条件相对转移)。否则,

PC←(PC)+3且Cy=0(顺序执行)。

2)指令格式为:CJNE A,direct,rel该指令的功能:若(A)>(direct),则PC←(PC)+3+rel,且Cy=0(满足条件相对转移)。若(A)<(direct),则PC←(PC)+3+rel,且Cy=1(满足条件相对转移)。否则,PC←(PC)+3且Cy=0(顺序执行)。3)指令格式为:CJNE Rn,#data,rel该指令的功能:若(Rn)>data,则PC←(PC)+3+rel,且Cy=0(满足条件相对转移)。若(Rn)<data,则PC←(PC)+3+rel,且Cy=1(满足条件相对转移)。否则,PC←(PC)+3且Cy=0(顺序执行)。4)指令格式为:CJNE @Ri,data,rel

该指令的功能:若((Ri))>data,则PC←(PC)+3+rel,且Cy=0(满足条件相对转移)。若((Ri))<data,则PC←(PC)+3+rel,且Cy=1(满足条件相对转移)。否则,PC←(PC)+3且Cy=0(顺序执行)。(3)减1不为0转移指令

减1不为0转移指令有以下形式:DJNZ Rn,rel DJNZ direct,rel 该组指令中第一条指令为两字节指令,第二条指令为三字节指令。3.空操作指令空操作指令有以下惟一形式:NOP ;PC←(PC)+1空操作指令是惟一的一条不使CPU产生任何操作控制的指令,NOP指令的功能是使程序计数器PC加1,在执行时间上消耗12个时钟周期。

3.3.5子程序调用与返回指令在调用子程序过程中需要解决以下方面的问题:(1)保护断点。所谓断点是指子程序调用指令的下一条指令的第一个字节地址。(2)建立子程序入口。子程序入口是指子程序中第一条指令的第一个字节地址,即子程序调用指令给出的目标地址。(3)保护现场。所谓保护现场是指在执行子程序前,需要保存程序中正在使用的存储单元和寄存器的内容。51单片机子程序调用与返回指令有以下形式:1)绝对调用指令ACALL addrl1其功能是:首先保护断点,将PC的值压栈保护(先压低位,后压高位),接着将指令中的11位目标地址(addr11)送入PC的低11位与PC的高5位合成一个程序要转移的目标地址。2)长调用指令LCALL addrl6其功能是:首先保护断点,将PC的值压栈保护(先压低位,后压高位),接着将指令中的16位目标地址(addr16)送入PC,即子程序入口地址,从而转去执行被调用的子程序。3)一般子程序返回指令RET 当程序执行到本指令时,自动从堆栈中取出断点地址送给PC,程序返回断点的下一条指令处,继续往下执行。4)中断子程序返回指令RETI该指令除具有RET指令的功能外,RETI在返回断点的同时,还要释放中断逻辑以接受新的中断请求。中断服务程序(中断子程序)必须用RETI返回。3.3.6位操作类指令

位操作指令共17条,所有的位操作指令均采用位(直接)寻址方式,在进行位操作时,51单片机汇编语言中的位地址可用以下四种方式表示:(1)直接位地址方式。(2)点操作符表示方式。(3)位名称方式。(4)用户定义名方式。1.位传送指令位传送指令有以下形式:MOV C,bit ;Cy←(bit)MOV bit,C ;(bit)←(Cy)指令中其中一个操作数必须是进位标志C,bit可表示任何直接位地址。2.位置位和复位指令(1)位置位指令位置位指令有以下形式:SETB C ;Cy←1SETB bit ;(bit)

温馨提示

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

评论

0/150

提交评论