单片机原理及应用教程刘迎春_第1页
单片机原理及应用教程刘迎春_第2页
单片机原理及应用教程刘迎春_第3页
单片机原理及应用教程刘迎春_第4页
单片机原理及应用教程刘迎春_第5页
已阅读5页,还剩247页未读 继续免费阅读

下载本文档

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

文档简介

1、MCS-51 单片机原理及应用(yngyng)教程 清华大学出版社刘迎春(yngchn) 主编共二百五十二页本书主要(zhyo)内容单片机基础知识单片机的组成与结构分析MCS-51 单片机的指令系统(zh ln x tn)单片机的程序设计MCS-51单片机的中断系统定时/计数器单片机的串行通信及接口MCS-51单片机的系统扩展接口技术MCS-51兼容机及串行总线扩展共二百五十二页第1章 单片机的基础知识 微型计算机的系统组成 单片机概述 不同计数(j sh)制之间的转换数的表示方法思考练习题共二百五十二页1.1 微型(wixng)计算机的系统集成共二百五十二页1.1 微型(wixng)计算机的

2、系统组成 1.1.1 主机(zhj) 主机一般由运算器、控制器和主存储器组成。 1. 运算器运算器是进行算术和逻辑运算的部件,它由完成加法运算的加法器、存放操作数和运算结果的寄存器和累加器等组成。 2. 控制器它是整个计算机硬件系统的指挥中心,根据不同的指令产生不同的动作,指挥整个机器有条不紊地自动地进行工作。 3. 主存储器主存储器又称为内存储器,它由大量的存储单元组成,用以存储大量的数据及程序。 共二百五十二页 1.1.2 外部设备(wi b sh bi)1. 输入(shr)设备目前常用的有键盘、软驱、磁带机、光驱等 2. 输出设备常用的有显示器、打印机、绘图仪等 3.外存储器 常用的外存

3、有磁带、磁盘、光盘,其中磁盘又可分为硬盘及软盘。 共二百五十二页1.2 单片机概述(i sh)1.2.1 单片机的发展(fzhn)概况第一阶段(19711976) 第二阶段(19761979) 第三阶段(19791982) 第四阶段(19821990) 第五阶段(1990至今) 共二百五十二页1.2.2 单片机的应用(yngyng)1. 在工业测控中的应用2. 在智能(zh nn)产品中的应用3. 在计算机网络与通信技术中的应用1.2.3 单片机的发展趋势共二百五十二页1.3 不同(b tn)计数制之间的转换1.3.1 十进制数一个十进制数,它的数值是由数码0,1,2,8,9来表示(biosh

4、)的。数码所处的位置不同,代表数的大小也不同。 例如:53478=5104+3103+4102+7101+8100,对应于:共二百五十二页1.3.2 二进制数二进制是按“逢二进一”的原则进行计数的。二进制数的基为“2”,即其使用的数码(shm)为0、1,共两个。二进制数的权是以2为底的幂。 例如(lr):10110100=127+026+125+124+023+122+021+020,对应于: 其各位的权为1,2,4,8,即以2为底的0次幂、1次幂、2次幂等。(10110100)2127+026+125+124+023+122+021+020=180共二百五十二页1.3.3 十六进制(sh l

5、i jn zh)数十六进制数的基为16,即基数码共有l6个:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F。其中A,B,C,D,E,F分别(fnbi)代表值为十进制数中的10,11,12,13,14,15。十六进制的权为以16为底的幂。 例如:4F8E=4163+F162+8161+E160=20366,对应于:共二百五十二页常用(chn yn)计数制表示数的方法比较 十进制二进制十六进制0 00 1 11 2 102 3 113 4 1004 5 1015 6 1106 7 1117 8 10008 9 10019 10 1010A 11 1011B 12 1100C 13

6、1101D 14 1110E 15 1111F 16 1000010 共二百五十二页1.3.4 不同(b tn)进制数之间的转换1. 十进制数转换成二进制数的方法(fngf)就是用2去除该十进制数,得商和余数,此余数为二进制代码的最小有效位(LSB)或最低位的值;再用2除该商数,又可得商数和余数,则此余数为LSB左邻的二进制代码(次低位)。依此类推,从低位到高位逐次进行,直到商是0为止,就可得到该十进制数的二进制代码。 除二取余法 共二百五十二页1.3.4 不同(b tn)进制数之间的转换例如:将(67)10转换成二进制数,过程(guchng)如下:即:(67)10=(1000011)2。共二

7、百五十二页1.3.4 不同(b tn)进制数之间的转换1. 十进制数转换成二进制数的方法(fngf)将已知十进制的小数乘以2之后,可能有进位,使整数位为1(当该小数大于0.5时),也可能没有进位,其整数位仍为零。该整数位的值为二进制小数的最高位。再将乘积的小数部分乘以2,所得整数位的值为二进制小数的次高位。依此类推,直到满足精度要求或乘2后的小数部分为0为止。 乘二取整法 共二百五十二页例如(lr):将(0.625)10转换成二进制数,其过程如下:即:(0.625)10=(0.101)2 共二百五十二页1.3.4 不同(b tn)进制数之间的转换2. 二进制数转换(zhunhun)为十进制数的

8、方法将二进制数转换成十进制数时,只要将二进制数各位的权乘以各位的数码(0或1)再相加即可。例如:将(1101.1001)2制转换成十进制数:(1101.1001)2123+122+021+120+12-1+02-2+02-3+12-48+4+0+1+0.5+0+0+0.0625=(13.5625)10共二百五十二页1.3.4 不同(b tn)进制数之间的转换3. 二进制与十六进制(sh li jn zh)数之间的转换方法二进制数转换成十六进制数例如:把(101101101.1100101)2转换成十六进制数。即:(101101101.1100101)2=(16D.CA)16。共二百五十二页1.

9、3.4 不同(b tn)进制数之间的转换2)十六进制数转换成二进制数将十六进制数转换成二进制数时,只要将每1位十六进制数用4位相应的二进制数表示即可完成转换(zhunhun)。例如:将(ECA16)16转换成二进制数。即:(ECA16)16=(11101100101000010110)2。共二百五十二页1.3.5 二进制数的算术(sunsh)运算规则 1. 二进制加法(jif)基本规则0+0=00+1=1+0=11+1=0向邻近高位有进位1+1+1=1向邻近高位有进位2. 二进制减法基本规则0-0=01-1=01-0=10-1=1向邻近高位有借位共二百五十二页3. 二进制乘法基本(jbn)规则

10、00=001=10=011=14. 二进制除法(chf)基本规则1/1=10/1=0共二百五十二页1. 逻辑与运算(yn sun)基本规则00=010=01=011=12. 逻辑或运算基本(jbn)规则00=010=01=111=11.3.6 逻辑运算共二百五十二页3. 逻辑非运算(yn sun)基本规则/0=1/1=04. 逻辑异或运算(yn sun)基本规则00=11=010=01=1共二百五十二页1.4.1 真值与机器(j q)数单片机用来表示(biosh)数的形式称为机器数,也称为机器码。而把对应于该机器数的算术值称为真值。 设: N1=+1010101 N2=-1010101这两个数

11、在机器中表示为:N1:01010101N2:110101011.4 数的表示方法共二百五十二页在计算机中还有一种数的表示方法,即机器(j q)中的全部有效位均用来表示数的大小,此时无符号位,这种表示方法称为无符号数的表示方法。 共二百五十二页1.4.2 原码(yun m)、反码、补码1. 原码(yun m)表示法原码表示法是最简单的一种机器数表示法,只要把真值的符号部分用0或1表示即可。例如:真值为+34与-34的原码形式为:+34原=00100010-34原=101000100的原码有两种形式:+0原=00000000-0原=100000001.4 数的表示方法8位二进制数原码的表示范围为:

12、1111111101111111,对应于-127+127。 共二百五十二页2. 反码(fn m)表示法反码是二进制数的另一种表示形式,正数的反码与原码相同;负数的反码是将其原码除符号位外按位求反。即原来为1变为0,原来为0变为1。例如:+34反=+34原=00100010-34原=10100010,-34反=110111010的反码也有两种形式:+0反=00000000-0反=111111118位二进制数反码的表示范围(fnwi)为:1000000001111111,对应于-127+127。 1.4 数的表示方法共二百五十二页3. 补码(b m)表示法1.4 数的表示(biosh)方法正数的补

13、码表示方法与原码相同,负数的补码表示方法为它的反码加1。例如:-21原=10010101-21反=11101010-21补=111010110的补码只有一种表示方法,即+0补=-0补=00000000。8位二进制数的补码所能表示的范围为1000000101111111,对应于-128+127。共二百五十二页1.4.3 BCD码十进制8421BCD码二进制0 000000001 000100012 001000103 001100114 010001005 010101016 011001107 011101118 100010009 1001100110 0001 0000101011 000

14、1 0001101112 0001 0010110013 0001 0011110114 0001 0100111015 0001 01011111共二百五十二页1.4.4 ASCII码ASCII码是一种8位代码,最高位一般用于奇偶校验,用其余(qy)的7位代码来对128个字符编码,其中32个是控制字符,96个是图形字符。共二百五十二页1.5 思考(sko)练习题(1)微型计算机由哪几部分组成?(2)什么(shn me)是单片机?它与一般微型计算机在结构上有什么(shn me)区别?(3)单片机主要应用在哪些方面?(4)将下面的一组十进制数转换成二进制数:56742319896814276.8

15、70.3759.32583.625134.0625(5)将下面的二进制数转换成十进制数和十六进制数:101100111010010111101001100111101000010111000101111011101000110011011.11101.01101(6)原码已经在下面列出,试写出各数的反码与补码:1000110110101100111010111000100111111111011000010111000111111001共二百五十二页第2章 单片机的组成与结构(jigu)分析 MCS-51单片机的内部结构 CPU的结构和功能存储器的组织结构MCS-51单片机的并行输入输出端口M

16、CS-51 单片机的外部(wib)引脚及功能单片机指令时序思考练习题共二百五十二页2.1 MCS-51单片机的内部结构 共二百五十二页2.1 MCS-51单片机的内部结构 其基本特性如下: 8位CPU,含片内振荡器;4KB的程序存储器ROM;128B的数据存储器RAM;64KB的外部程序存储器寻址能力(nngl);64KB的外部数据存储器寻址能力;32根输入输出(I/O)线;2个16位定时/计数器;1个全双工异步串行口;21个特殊功能寄存器;5个中断源,2个优先级;具有位寻址功能。共二百五十二页2.2 CPU的结构(jigu)和功能 2.2.1 运算器8051单片机的运算器由算术/逻辑运算单元

17、(dnyun)ALU、累加器A、寄存器B、暂存器1、暂存器2以及程序状态字寄存器PSW组成。 图2.2 PSW寄存器各位的标志符号共二百五十二页表2.1 寄存器PSW各位的功能、标志符号与相应(xingyng)的位地址功 能标志符号位地址进位标志(又是C寄存器)CYPSW.7辅助进位标志ACPSW.6用户标志FOPSW.5工作寄存器组选择RS1PSW.4工作寄存器组选择RS0PSW.3溢出标志OVPSW.2保留PSW.1奇偶标志PPSW.0共二百五十二页2.2.2 控制器2.3 存储器的组织(zzh)结构存储(cn ch)器的功能是存储(cn ch)信息(即程序与数据)。存储器是组成计算机的主

18、要部件,目前所使用的存储器以半导体存储器为主。从功能上来划分,半导体存储器可分为两大类:即只读存储器(ROM),和随机存储器(RAM)。8051单片机的控制器由指令寄存器、指令译码器、堆栈指针SP、程序计数器PC、数据指针DPTR、RAM地址寄存器以及16位地址缓冲器等组成。共二百五十二页2.3.1 MCS-51单片机的存储器结构(jigu)图2.3 8051存储器配置图共二百五十二页2.3.2 程序(chngx)存储器程序是控制计算机运行的一系列命令。计算机能够识别(shbi)并执行的命令是由代码“0”和“1”组成的一组机器指令。 2.3.3 数据存储器单片机的数据存储器由可读可写的存储器R

19、AM组成,最多可扩展到64KB,用于存储数据。 2.3.4 MCS-51单片机的内部数据存储器MCS-51单片机的内部数据存储器由地址00HFFH共有256个字节的地址空间组成,这256个字节的地址空间被分为两部分,其中内部数据RAM地址为00H7FH(即0127)。 共二百五十二页图2.4 内部(nib)数据存储器地址空间共二百五十二页1. 内部(nib)数据RAM单元内部数据RAM分为工作(gngzu)寄存器区、位寻址区、通用RAM区三个部分。 图2.5 RAM位地址(低128位在00H7FH)共二百五十二页(a)系统(xtng)复位后,未改变SP初值时的堆栈操作(设(A)=0ABH)共二

20、百五十二页(b)系统复位后,改变SP初值为60H时的堆栈操作(cozu)图2.6 堆栈操作示例共二百五十二页2. 特殊(tsh)功能寄存器特殊功能寄存器SFR的地址(dzh)空间是80HFFH。 表2.3 特殊功能寄存器的名称、符号与地址特殊功能寄存器名称符号位地址与位名称字节地址D7D6D5D4D3D2D1D0B寄存器BF7F6F5F4F3F2F1F0F0H累加器AE7E6E5E4E3E2E1E0E0H程序状态字PSWD7D6D5D4D3D2D1D0D0HCACF0RS1RS0OVP中断优先级控制IPBFBEBDBCBBBAB9B8B8HPSPT1PX1PT0PX0D7D6D5D4D3D2D

21、1D0P3口P3B7B6B5B4B3B2B1B0B0HP3.7P3.6P3.5P3.4P3.3P3.2P3.1P3.0共二百五十二页2. 特殊(tsh)功能寄存器中断允许控制IEAFAEADACABAAA9A8A8HEAESET1EX1ET0EX0P2口P2A7A6A5A4A3A2A1A0A0HP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0串行数据缓冲器SBUF99H串行控制SCON9F9E9D9C9B9A999898HSM0SM1SM2RENTB8RB8TIRIP1口P1979695949392919090HP1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0定

22、时/计数器1高字节TH18DH定时/计数器0高字节TH08CH共二百五十二页2. 特殊(tsh)功能寄存器定时/计数器1低字节TL18BH定时/计数器0低字节TL08AH定时/计数方式控制TMODGATEC/TM1M0GATEC/TM1M089H共二百五十二页2. 特殊(tsh)功能寄存器特殊功能寄存器名称符号位地址与位名称字节地址D7D6D5D4D3D2D1D0定时器控制寄存器TCON8F8E8D8C8B8A898888HTF1TR1TF0TR0IE1IT1IE0IT0电源控制PCONSMOD87H数据指针高字节DPH83H数据指针低字节DPL82H堆栈指针SP81HP0口P08786858

23、48382818080HP0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0共二百五十二页2.4 MCS-51单片机的并行(bngxng)输入输出端口2.4.1 P0口结构(jigu)1. P0用作通用I/O口2. P0用作地址/数据总线分时复用方式共二百五十二页2.4.2 P2口结构(jigu)1. P2口用作地址总线2. P2口用作通用(tngyng)I/O口共二百五十二页2.4.3 P3口结构(jigu)2.4.4 P1口结构(jigu)共二百五十二页2.5 MCS-51单片机的外部(wib)引脚及功能2.5.1 电源(dinyun)引脚(b)双列直插式封装(a)方形封装共二

24、百五十二页2.5.2 外接晶振或外部时钟信号(xnho)输入端 (a)内部(nib)振荡器方式 (b)外部振荡器方式图2.12 8051单片机的振荡器方式表2.4 按不同工艺制造的单片机芯片外接振荡器时的接法芯片类型接 法XTAL1XTAL2CHMOS接外部振荡器脉冲输入端(带上拉电阻)悬浮HMOS接地接外部振荡器脉冲输入端(带上拉电阻)共二百五十二页2.5.3 输入输出引脚P0.0P0.7:通道0是一个8位漏极开路的双向输入输出通道。在外接存储器或者扩展I/O接口时,P0口作为复用的低8位地址总线和双向数据总线。在不扩展存储器或者I/O接口时,作为准双向输入输出接口。P1.0P1.7:只有一

25、种功能(gngnng),即准双向I/O口。P2.0P2.7:可作为准双向I/O口使用;但在接有片外存储器或扩展I/O接口范围超过256B时,则该口一般只能作为高8位地址总线使用。P3.0P3.7:该口除了作为准双向口外,还具有第二功能。 共二百五十二页2.5.4 控制线 1. ALE/2. 3. /VPP 4. RST(a)上电复位(f wi) (b)电平开关复位图2.13 复位电路共二百五十二页2.6 单片机指令(zhlng)时序共二百五十二页2.7 思考(sko)练习题(1)MCS-51单片机包含哪些主要逻辑功能部件?(2)程序状态字寄存器PSW包含哪几个标志位?各位的含义是什么?各有何作

26、用?(3)什么叫单片机?(4)MCS-51单片机的存储结构有何特点?(5)单片机的端有何作用?在8031组成的单片机应用系统中,其端怎样处理?为什么?(6)单片机内部RAM分为哪几个部分?各有何作用?(7)MCS-51单片机的堆栈SP在操作中遵循什么原则?在开机复位时,其初值是多少?是否可以通过程序重新设置(shzh)?(8)怎样确定和改变单片机当前的工作寄存器组?(9)简要说明单片机的位地址分配。(10)试画出常用的单片机复位电路,并说明复位后各个寄存器的状态。共二百五十二页第3章 MCS-51单片机的指令系统(zh ln x tn) 汇编语言的指令格式(g shi)及符号简介 寻址方式 数

27、据传送类指令算术运算类指令逻辑运算类指令位操作类指令控制转移类指令思考练习题 共二百五十二页3.1 汇编语言的指令格式(g shi)及符号简介3.1.1 指令(zhlng)格式标号: 操作码助记符 第一操作数 ,第二操作数 ,第三操作数 ;注释例如:LOOP:MOV A, #50H;(A)50H DECR0;(R0)(R0)-1 DJNZ R0, LOOP;(R0)-10,则程序转移到LOOP地址;否则顺序执行 END;结束3.1.2 本章中符号的定义共二百五十二页3.2 寻 址 方 式 MCS-51单片机有7种寻址方式(fngsh),见表3.1。 表3.1 7种寻址方式(fngsh)的比较序

28、号寻址方式利用的寄存器和存储空间1立即寻址程序存储器ROM2直接寻址内部RAM、特殊功能寄存器SFR3寄存器寻址寄存器R0R7、A、B、DPTR和C(布尔累加器)4寄存器间接寻址内部RAM(R0、R1、SP)、外部RAM(R0、R1、DPTR)5变址寻址程序存储器ROM(A+DPTR、A+PC)6相对寻址程序存储器ROM(PC+偏移量)7位寻址内部RAM的20H2FH单元和部分SFR共二百五十二页3.2.1 立即(lj)寻址例如:MOV A, #23H ; (A)23H,即累加器A的内容(nirng)被替换为立即数23H。图3.1 MOV A,#23H的执行示意图该指令的功能是将8位的立即数2

29、3H传送到累加器A中。如图3.1所示。其中,目的操作数采用寄存器寻址,源操作数采用立即寻址。共二百五十二页3.2.2 直接(zhji)寻址直接寻址是指在指令中包含了操作数的地址,该地址直接给出了参加运算或传送的单元或位。直接寻址方式可访问三种地址空间:特殊功能寄存器SFR(该空间只能采用直接寻址)。内部数据RAM的低128个字节单元(该空间还可以(ky)采用寄存器间接寻址)。221个位地址空间。例如:MOV A, 40H ;把40H单元的内容送到累加器中,即(A)(40H)。 图3.2 MOV A,40H的执行示意图 共二百五十二页3.2.3 寄存器寻址 寄存器寻址是指定(zhdng)某一可寻

30、址的寄存器的内容为操作数。 例如:MOV A, R0 ;(A)(R0)该指令的功能是将R0中的数据(shj)传送到累加器A中。源操作数与目的操作数都采用了寄存器寻址。 在MCS-51单片机中,能够用来间接寻址的寄存器有:用户所选定的工作寄存器组的R0、R1,堆栈指针SP和16位的数据指针DPTR。 内部数据RAM的寄存器间接寻址采用寄存器R0、R1;外部数据RAM的寄存器间接寻址有两种形式:一是采用R0、R1作间址寄存器,这时R0或R1提供低8位地址,而高8位地址则由P2端口提供;二是采用16位的DPTR作间址寄存器。 3.2.4 寄存器间接寻址共二百五十二页例如:设R0的内容为60H,且(6

31、0H)=10H,即60H地址(dzh)单元中的内容为10H,则语句MOV A, R0的执行过程如图3.3所示。执行后,(A)=10H,即累加器A的内容成为10H。图3.3 MOV A,R0的执行(zhxng)示意图又如:MOVX A, R0;(A)(R0),用R0间接寻址的单元中的内容替换A的;内容。MOVX A, DPTR;(A)(DPTR),用DPTR间接寻址的单元中的内容替换;A的内容。共二百五十二页3.2.5 变址寻址这种寻址方式是以数据指针DPTR或程序计数器PC作为基址寄存器,以累加器A作为偏移量寄存器,将一个基址寄存器的内容(nirng)与偏移量寄存器的内容(nirng)之和作为

32、操作数地址。 例如:MOVC A, A+DPTR设(A)=10H,(DPTR)=1000H,程序存储器的(1010H)=45H,则上面程序语句的功能是将A的内容与DPTR的内容相加形成操作数地址(1010H),把该地址中的数据传送(chun sn)到累加器A。即(A)(A)+(DPTR)。结果:(A)=45H。 图3.4 MOVC A,A+DPTR的执行示意图共二百五十二页 相对寻址是把指令中给定(i dn)的地址偏移量rel与程序计数器PC的当前值(读出该双字节或三字节的跳转指令后,PC指向的下条指令的地址)相加,得到真正的程序转移地址。 例如:JC 80H若C=0,则PC值不变,若C=1,

33、则以当前PC值为基地址,加上80H得到新的PC值。设该转移指令存放在1005H单元,取出操作码后PC指向1006H单元,取出偏移量后PC指向1007H单元,所以(suy)计算偏移量时PC当前地址为1007H,已经为转移指令首地址加2,这里的偏移量以补码给出,所以80H代表着-80H,补码运算后,就形成跳转地址0F87H。其过程如图3.5所示。 3.2.6 相对寻址共二百五十二页3.2.6 相对(xingdu)寻址图3.5 JC 80H的执行(zhxng)示意图共二百五十二页3.2.7 位寻址MCS-51单片机可对片内RAM的两个区域进行位寻址:一个是20H2FH单元的128位,另一个是特殊功能

34、寄存器的93位。在寻址时,同一个位地址可以有多种标识方式,读者可参看后面3.6节“位操作指令(zhlng)”的相关内容。共二百五十二页3.3.1 通用(tngyng)传送指令格式:MOV 目的操作数,源操作数功能:把第二操作数指定(zhdng)的字节内容传送到第一操作数指定(zhdng)的单元中。不影响源操作数内容,不影响别的寄存器和标志。 1. 以累加器A为目的操作数的传送类指令3.3 数据传送类指令指令助记符及功能说明如下:目的操作数源操作数功能说明源操作数寻址方式MOVA,direct;(A)(direct)直接寻址MOVA,Ri;(A)(Ri)寄存器间接寻址MOVA,Rn;(A)(Rn

35、)寄存器寻址MOVA,#data;(A)data立即寻址共二百五十二页例1 若(50H)=10H,则执行(zhxng)指令MOV A, 50H之后,(A)=10H。例2 若(R0)=20H,(20H)=39H,则执行指令MOV A, R0后,(A)=39H。例3 若(R5)=55H,则执行指令MOV A, R5后,(A)=55H。共二百五十二页2. 以Rn为目的操作数的传送(chun sn)类指令例1 若(A)=20H,则执行(zhxng)指令MOV R3, A后,(R3)=20H。例2 若(30H)=01H,则执行指令MOV R7, 30H后,(R7)=01H。指令助记符及功能说明如下:目的

36、操作数源操作数功能说明源操作数寻址方式MOVRn,A;(Rn)(A)寄存器寻址MOVRn,direct;(Rn)(direct)直接寻址MOVRn,#data;(Rn)data立即寻址共二百五十二页例1 若(30H)=20H,(R0)=30H,则执行指令MOV 90H, R0的结果(ji gu)为(90H)=20H。例2 若例1中的条件不变,而执行指令MOV P1, R0,则(P1)=20H。 3. 以直接地址(dzh)directX为目的操作数的传送类指令指令助记符及功能说明如下:目的操作数源操作数功能说明源操作数寻址方式MOVdirectX,A;(directX)(A)寄存器寻址MOVdi

37、rectX,Rn;(directX)(Rn)寄存器寻址MOVdirectX,directY;(directX)(directY)直接寻址MOVdirectX,Ri;(directX)(Ri)寄存器间接寻址MOVdirectX,#data;(directX)data立即寻址共二百五十二页例1 若(R0)=50H,(50H)=20H,(A)=10H,则执行指令(zhlng)“MOV R0, A”后,50H单元的内容由原来的20H变为10H。4. 以寄存器间接(jin ji)地址Ri为目的操作数的传送类指令指令助记符及功能说明如下:目的操作数源操作数功能说明源操作数寻址方式MOVRi,A;(Ri)(

38、A)寄存器寻址MOVRi,direct;(Ri)(direct)直接寻址MOVRi,#data;(Ri)data立即寻址共二百五十二页5. 16位目标(mbio)地址传送指令这条指令(zhlng)的功能是:把16位立即数送入DPTR中。而16位的数据指针DPTR由DPH与DPL组成,该指令执行后,16位立即数的高8位送入DPH中,低8位送入DPL中。该指令的执行,不影响程序状态寄存器PSW。指令助记符及功能说明如下:目的操作数源操作数功能说明源操作数寻址方式MOVDPTR,#data16;(DPTR)data16立即寻址共二百五十二页3.3.2 外部数据(shj)存储器(或I/O口)与累加器A

39、传送指令例1 设(P2)=20H,现将A中数据存储(cn ch)到20FFH单元中去。可用以下程序实现:MOV R1, #0FFH ;(R1)0FFHMOVX R1, A ;(20FFH)(A)也可采用下述程序实现:MOV DPTR, #20FFH ;(DPTR)20FFHMOVX DPTR, A ;(DPTR)(A),即(20FFH)(A)指令助记符与功能说明如下:目的操作数源操作数功能说明源操作数寻址方式MOVXA,DPTR;(A)(DPTR)寄存器间接寻址MOVXA,Ri;(A)(Ri)寄存器间接寻址MOVXDPTR,A;(DPTR)(A)寄存器寻址MOVXRi,A;(Ri)(A)寄存器

40、寻址共二百五十二页3.3.2 外部(wib)数据存储器(或I/O口)与累加器A传送指令例2 将外部(wib)数据存储器7FF0H单元中的数据取出,存放到外部数据存储器2000H单元中去。MOV DPTR, #7FF0HMOVX A, DPTRMOV DPTR, #2000HMOVX DPTR, A共二百五十二页例1 在外部(wib)程序存储器2000H单元开始存放了数字09的共阴极数码管的16进制数的字形代码3FH、06H、6FH。要求根据A中的值(09)来查找该数字所对应的代码以便显示。若用PC作基址寄存器,则需要在MOVC A, A+PC指令前用一加法指令对地址进行调整:ADD A, #d

41、ataMOVC A, A+PC3.3.3 程序(chngx)存储器向累加器A传送数据指令指令助记符与功能说明如下:目的操作数源操作数功能说明源操作数寻址方式MOVCA,A+PC;(A)(A)+(PC)+1)变址寻址MOVCA,A+DPTR;(A)(A)+(DPTR)变址寻址共二百五十二页 1. 字节交换(jiohun)指令例1 设(R1)=30H,(30H)=45H,(A)=7FH,则执行(zhxng)指令:XCH A, R1结果:(A)=45H,而(30H)=7FH,从而实现了累加器A与内部数据存储器RAM中30H单元的数据交换。3.3.4 数据交换指令指令助记符与功能说明如下:目的操作数源

42、操作数功能说明源操作数寻址方式XCHA,direct(direct)直接寻址XCHA,Ri(Ri)间接寻址XCHA,Rn(Rn)寄存器寻址共二百五十二页2. 半字节(z ji)交换指令例1 设(30H)=6FH,(R0)=30H,(A)=0F6H,则执行(zhxng)指令:XCHD A, Ri结果:(A)=0FFH,(30H)=66H数据交换指令除了影响始终跟踪A中数据奇偶性的P标志外,对PSW中其他标志位均无影响。指令助记符与功能说明如下:目的操作数源操作数功能说明源操作数寻址方式XCHDA,Ri(Ri)间接寻址共二百五十二页3. 累加器A中高四位与低四位交换(jiohun)指令SWAP A

43、该指令(zhlng)所执行的操作是累加器A中的高4位与低4位的内容互换,其结果仍存放在累加器A中。例1 设(A)=0A5H(10100101B),则执行指令:SWAP A结果:(A)=5AH(01011010B)指令SWAP交换了A中高、低半字节(30和74),结果不影响标志寄存器PSW。3.3.5 堆栈操作指令堆栈操作指令只有2条,即:压入(PUSH)和弹出(POP)。压入指令:PUSH direct ;SPSP+1,(SP)(direct)弹出指令:POP direct ;(SP)(direct),SPSP-1共二百五十二页例1PUSH A ;保护(boh)A中数据 PUSH PSW ;保

44、护标志寄存器中数据 ;执行服务程序 POP PSW ;恢复标志寄存器中数据 POP A ;恢复A中数据例2PUSH A PUSH PSW POP A POP PSW例3 PUSH DPH PUSH DPL POP DPL POP DPH共二百五十二页3.4.1 加减运算(yn sun)指令 1. 加法(jif)指令 这类指令所完成的操作是把源操作数(立即数、直接地址单元内容、间接地址单元内容、工作寄存器内容)与累加器A的内容相加,将结果保存在累加器A中。 3.4 算术运算类指令指令助记符与功能说明如下:目的操作数源操作数功能说明源操作数寻址方式ADDA,#data;(A)(A)+data立即寻

45、址ADDA,direct;(A)(A)+(direct)直接寻址ADDA,Ri;(A)(A)+(Ri)寄存器间接寻址ADDA,Rn;(A)(A)+(Rn)寄存器寻址共二百五十二页例1 执行指令(zhlng):MOV A, #0A9HADD A, #0B8H对程序状态寄存器的影响如图3.6所示。运算(yn sun)结果:(A)=61H,CY=1,AC=1,OV=1,P=1,(PSW)=0C5H共二百五十二页例2 8位数加法(jif)程序片断1: MOVA, #23H ADDA, #5AH运算(yn sun)结果:(A)=7DH,CY=0,OV=0,AC=0,P=0,(PSW)=00H。 共二百五

46、十二页例3 8位数加法程序(chngx)片断2:MOVA, #0ABHADDA, #9AH运算(yn sun)结果:(A)=45H,CY=1,OV=1,AC=1,P=1,(PSW)=0C5H。 共二百五十二页带进位(jnwi)加法指令与前述加法指令的区别仅为考虑进位(jnwi)位,其他与加法指令相同。2. 带进位加法(jif)指令指令助记符与功能说明如下:目的操作数源操作数功能说明源操作数寻址方式ADDCA,#data;(A)(A)+data+(C)立即寻址ADDCA,direct;(A)(A)+(direct)+(C)直接寻址ADDCA,Ri;(A)(A)+(Ri)+(C)寄存器间接寻址AD

47、DCA,Rn;(A)(A)+(Rn)+(C)寄存器寻址共二百五十二页例3 利用ADDC指令可以进行多字节(z ji)的加法运算。设有两个16位数相加,被加数的高8位放在41H,低8位放在40H,加数的高8位放在43H,低8位放在42H,和的低8位存放在50H,高8位存放在51H,进位位存放在52H。可编程序如下:例1 设(A)=0AAH,(R0)=55H,C=1,则执行指令:ADDC A, R0运算(yn sun)结果:(A)=00000000B,AC=1,CY=1,OV=1。例2 设(A)=35H,(40H)=21H,C=0,则执行指令:ADDC A, 40H运算结果:(A)=56H,AC=

48、0,CY=0,OV=0。这与执行指令“ADD A, 40H”的结果是一样的。共二百五十二页SHJ: MOV A, 40H;(A)被加数低8位ADD A, 42H;与加数低8位相加MOV 50H, A;和的低8位存入50HMOV A, 41H;(A)被加数高8位ADDC A, 43H;被加数高8位与加数高8位以及低位来的进位(jnwi)相加MOV 51H, A;和的高8位存入51H单元MOV A, #00H;(A)00HADDC A, #00H;(A)(A) +00H+高8位来的进位MOV 52H, A;进位位C内容存入52H单元共二百五十二页3. 带借位(ji wi)减指令指令(zhlng)助

49、记符与功能说明如下:目的操作数源操作数功能说明源操作数寻址方式SUBBA,#data;(A)(A)-data-(C)立即寻址SUBBA,direct;(A)(A)-(direct)-(C)直接寻址SUBBA,Ri;(A)(A)-(Ri)-(C)寄存器间接寻址SUBBA,Rn;(A)(A)-(Rn)-(C)寄存器寻址共二百五十二页例1 设(40H)=0BAH,(41H)=98H,试编写40H内容减去41H内容后,结果再存入40H单元(dnyun)的程序。MOVA, 40H;(A)(40H)CLRC;进位位C清0SUBBA, 41H;(A)(A)-(41H) -(C)MOV40H, A;(40H)

50、(A)执行以上程序后,(40H)=22H,CY=0,OV=0。如果(rgu)参与运算的两数为无符号数,则其溢出与否与OV状态无关,而是靠CY是否有借位来判断,OV仅仅表示带符号数运算时是否溢出。共二百五十二页例2 设有两个(lin )16位数相减,被减数的高8位放在41H,低8位放在40H,减数高8位放在43H,低8位放在42H,差的低8位存放在50H,高8位存放在51H,借位位存放在52H。 可编程序如下:SHJIAN:MOV A, 40H ;(A)被减数低8位CLR C ;C位清0SUBB A, 42H ;减去减数低8位MOV 50H, A ;差的低8位存入(cn r)50HMOV A,

51、41H ;(A)被减数高8位SUBB A, 43H ;被减数高8位减去减数高8位与借位MOV 51H, A ;差的高8位存入51H单元MOV A, #00H ;(A)00HADDC A, #00H ;(A)高8位的借位位MOV 52H, A ;借位位C内容存入52H单元共二百五十二页1. 乘法(chngf)指令例1 设(A)=67H(103),(B)=0ADH(173),执行指令(zhlng):MUL AB运算结果:乘积为459BH(17819),(A)=9BH,(B)=45H。另外:OV=1,CY=03.4.2 乘除运算指令 MUL AB ;(A)乘积低8位,(B)乘积高8位例2 设被乘数为

52、16位无符号数,低8位存放在地址为K的单元,高8位存放在地址为K+1的单元。乘数为8位无符号数,存放在M单元。编程求出二者乘积,并将乘积的07位存放在R1,815位存放在R2,1623位存放在R3中。分析:16位无符号数与8位无符号数相乘的步骤示意如下:共二百五十二页程序编制如下(rxi):MOV R0, #K ;设置被乘数地址指针MOV A, R0 ;被乘数送A中MOV B, M ;乘数送B中MUL AB ;(K)(M)MOV R1, A ;乘积的07位存入R1MOV R2, B ;暂存积的815位INC R0 ;指向被乘数高8位地址MOV A, R0 ;取被乘数高8位MOV B, M ;乘

53、数送B中MUL AB ;(K+1)(M)ADD A, R2 ;求得乘积的815位MOV R2, A ;乘积的815位存入R2MOV A, BADDC A, #00H ;求得乘积的1623位MOV R3, A ;乘积的1623位存入R3共二百五十二页2. 除法(chf)指令例1 设(A)=9AH,(B)=23H,执行(zhxng)指令:DIV AB则(A)=04H,(B)=0EH,OV=00H,CY=00H3.4.2 乘除运算指令 DIV AB ;(A)商,(B)余数3.4.3 增1减1指令1. 增1指令INC A ;(A)(A)+1INC direct ;(direct)(direct)+1I

54、NC Ri ;(Ri)(Ri)+1INC Rn ;(Rn)(Rn)+1INC DPTR ;(DPTR)(DPTR)+1共二百五十二页例1 设(A)=40H,(41H)=29H,则执行下列指令(zhlng):INC A;(A)40H+1HINC 41H;(41H)29H+1H结果:(A)=41H,(41H)=2AH例2 设(R0)=56H,片内RAM单元(56H)=0FFH,(57H)=50H,则执行下列指令(zhlng):INC R0;(56H)00HINC R0;(R0)57HINC R0;(57H)51H结果:(56H)=00H,(R0)=57H,(57H)=51H例3 执行下述指令序列:

55、MOV DPTR,#2FFEH;(DPTR)2FFEHINC DPTR;(DPTR)2FFFHINC DPTR;(DPTR)3000HINC DPTR;(DPTR)3001H则(DPTR)=3001H共二百五十二页2. 减1指令(zhlng)DEC A;(A)(A)-1DEC direct;(direct)(direct)-1DEC Ri;(Ri)(Ri)-1DEC Rn;(Rn)(Rn)-1例1 设(R0)=4FH,片内RAM单元(4FH)=40H,(4EH)=00H,执行指令(zhlng):DEC R0 ;(4FH)3FHDEC R0 ;(R0)4EHDEC R0 ;(4EH)0FFH结果

56、:(R0)=4EH,(4EH)=0FFH,(4FH)=3FH3.4.4 二/十进制调整指令 DA A该指令的功能是对累加器A中的“二/十”进制(BCD码)加法结果进行调整。共二百五十二页例1 执行下面的指令:MOVA, #86HADDA, #47H结果:(A)=0CDH,CY=0,AC=0所得结果并不是BCD码,若接着(ji zhe)执行以下指令:DA A则结果:(A)=33H,CY=1,AC=1共二百五十二页1. 累加器A清0指令格式(g shi):CLR A功能:将00H送入累加器A中。3.5 逻辑运算指令(zhlng)3.5.1 单操作数指令2. 累加器A取反指令格式:CPL A功能:将

57、累加器A中内容取反(将A中内容按位取反,即逻辑非运算)后再送回累加器A中。共二百五十二页例1 设(A)=98H,执行指令(zhlng)CLR A ;(A)0CPL A ;(A)0FFH结果:(A)=0FFH3. 累加器A内容循环(xnhun)左移一位指令格式:RL A功能:将累加器A中的内容循环左移一位。即共二百五十二页例1 设(A)=10001000,则执行指令(zhlng)“RL A”后,结果:(A)=000100014. 累加器A内容带进位(jnwi)位CY循环左移一位指令格式:RLC A功能:将累加器A中的内容与进位标志位CY一起循环左移一位。即:共二百五十二页例1 设(A)=0101

58、0101,(CY)=1。则执行指令(zhlng)“RLC A”后,结果:(A)=10101011,(CY)=0。5. 累加器A内容循环(xnhun)右移一位指令格式:RR A功能:将累加器A中的内容循环右移一位。即:共二百五十二页例1 设(A)=00010001,则执行(zhxng)指令“RR A”后,结果:(A)=100010006. 累加器A内容带进位位CY循环(xnhun)右移一位指令格式:RRC A功能:将累加器A中的内容与进位标志位CY一起循环右移一位。即:共二百五十二页例1 设(A)=10101011,(CY)=0。则执行指令(zhlng)“RRC A”后,结果:(A)=01010

59、101,(CY)=1。3.5.2 双操作数指令(zhlng)1. 逻辑与指令逻辑与的规则定义为:(其中表示逻辑与)00=001=10=011=1共二百五十二页例1 设(A)=0C3H,(R3)=0ADH,执行(zhxng)指令“ANL A, R3”。结果:(A)=81H(10000001B)。指令执行过程如下:2. 逻辑(lu j)或指令逻辑或的规则定义为:(其中表示逻辑或)00=000=10=111=1共二百五十二页例1 设(A)=0C3H,(R3)=0ADH,执行指令(zhlng)“ORL A, R3”。结果:(A)=0EFH(11101111B)。指令执行过程如下:3. 逻辑(lu j)

60、异或指令逻辑异或的规则定义为(其中表示逻辑异或):00=11=010=01=1共二百五十二页例1 设(A)=0C3H,(R3)=0ADH,执行指令“XRL A, R3”。结果(ji gu):(A)=6EH(01101110B)。指令执行过程如下:例2 试把分别保存(bocn)在30H、31H单元中用ASCII码表示的两位数,转换成两位BCD码,并以压缩BCD码形式存入30H单元中。程序如下:ANL 30H, #0FH;30H单元的ASCII码转换成BCD码MOV A, 31H;取31H单元的ASCII码ANL A, #0FH;31H单元的ASCII码变成BCD码RL ARL ARL ARL A

温馨提示

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

评论

0/150

提交评论