《单片机原理及应用》电子教案_1

上传人:fgh****35 文档编号:247909828 上传时间:2024-10-21 格式:PPT 页数:245 大小:2.32MB
返回 下载 相关 举报
《单片机原理及应用》电子教案_1_第1页
第1页 / 共245页
《单片机原理及应用》电子教案_1_第2页
第2页 / 共245页
《单片机原理及应用》电子教案_1_第3页
第3页 / 共245页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,MCS-51,单片机原理及应用,湖南铁道职业技术学院,本书主要内容,单片机基础知识,单片机的组成与结构分析,MCS-51,单片机的指令系统,单片机的程序设计,MCS-51,单片机的中断系统,定时,/,计数器,单片机的串行通信及接口,MCS-51,单片机的系统扩展,第,1,章 单片机概述,单片机简介,单片机发展概述,单片机应用领域,单片机的发展趋势,MCS-51,系列,单片机简介,学习单片机技术的方法,1.1,单片机简介,单片机是单片微型计算机的简称,单片机可以认为是一种计算机集成芯片,采用超大规模集成技术,将中央处理器(,CPU),、存储器(,ROM,、,RAM,)、输入、输出接口集成在一块芯片上,构成的计算机硬件系统。,1.2,单片机的发展概况,第一阶段(,1971,1976),代表,Zilog,公司,Z80,第二阶段,(1976,1979),Intel,公司,MCS-48,第三阶段,(1979,1982) Intel MCS-51,Motorola 6081/2,Rokwell,6501/2,第四阶段,(1982,1990),MCS-96 16,位,第五阶段,(1990,至今,),Microchip PIC,Motorola MC68HC,等,1.3,单片机的应用领域,1.,在工业测控中的应用,2.,在智能产品中的应用,在计算机网络与通信技术中的应用,在家用电器中的应用,在医用设备领域中的应用,低功耗,CMOS,化,微型单片化,主流与多品种共存,1.4,单片机的发展趋势,1.5,MCS-51,系列单片机简介,1.,内部结构,2.MCS-51,系列单片机产品,1.6,学习单片机技术的方法,1.,学习单片机所需的准备工作,硬件准备,软件准备,知识准备,初学者推荐的软件硬件准备,2.,学习过程与考核方法,主要课堂学习环节,教学形式与过程,学习要求与考核方法,1.7,不同计数制之间的转换,1.7.1,十进制数,一个十进制数,它的数值是由数码,0,,,1,,,2,,,,,8,,,9,来表示的。数码所处的位置不同,代表数的大小也不同。,例如:,53478=5104+3103+4102+7101+8100,,对应于:,1.7.2,二进制数,二进制是按“逢二进一”的原则进行计数的。二进制数的基为“,2”,,即其使用的数码为,0,、,1,,共两个。二进制数的权是以,2,为底的幂。,例如:,10110100=127+026+125+124+023+122+021+020,,,对应于:,其各位的权为,1,,,2,,,4,,,8,,,,即以,2,为底的,0,次幂、,1,次幂、,2,次幂等。,(10110100)2,127+026+125+124+023+122+021+020=180,1.7.3,十六进制数,十六进制数的基为,16,,即基数码共有,l6,个:,0,,,1,,,2,,,3,,,4,,,5,,,6,,,7,,,8,,,9,,,A,,,B,,,C,,,D,,,E,,,F,。其中,A,,,B,,,C,,,D,,,E,,,F,分别代表值为十进制数中的,10,,,11,,,12,,,13,,,14,,,15,。十六进制的权为以,16,为底的幂。,例如:,4F8E=4163+F162+8161+E160=20366,,对应于:,常用计数制表示数的方法比较,十进制,二进制,十六进制,0,0,0,1,1,1,2,10,2,3,11,3,4,100,4,5,101,5,6,110,6,7,111,7,8,1000,8,9,1001,9,10,1010,A,11,1011,B,12,1100,C,13,1101,D,14,1110,E,15,1111,F,16,10000,10,1.7.4,不同进制数之间的转换,1.,十进制数转换成二进制数的方法,就是用,2,去除该十进制数,得商和余数,此余数为二进制代码的最小有效位,(LSB),或最低位的值;再用,2,除该商数,又可得商数和余数,则此余数为,LSB,左邻的二进制代码,(,次低位,),。依此类推,从低位到高位逐次进行,直到商是,0,为止,就可得到该十进制数的二进制代码。,除二取余法,1.7.4,不同进制数之间的转换,例如:将,(67)10,转换成二进制数,过程如下:,即:,(67)10=(1000011)2,。,1.7.4,不同进制数之间的转换,1.,十进制数转换成二进制数的方法,将已知十进制的小数乘以,2,之后,可能有进位,使整数位为,1(,当该小数大于,0.5,时,),,也可能没有进位,其整数位仍为零。该整数位的值为二进制小数的最高位。再将乘积的小数部分乘以,2,,所得整数位的值为二进制小数的次高位。依此类推,直到满足精度要求或乘,2,后的小数部分为,0,为止。,乘二取整法,例如:将,(0.625)10,转换成二进制数,其过程如下:,即:,(0.625)10=(0.101)2,1.7.4,不同进制数之间的转换,2.,二进制数转换为十进制数的方法,将二进制数转换成十进制数时,只要将二进制数各位的权乘以各位的数码,(0,或,1),再相加即可。,例如:将,(1101.1001)2,制转换成十进制数:,(1101.1001)2,123+122+021+120+12-1+02-2+02-3+12-4,8+4+0+1+0.5+0+0+0.0625=(13.5625)10,1.7.4,不同进制数之间的转换,3.,二进制与十六进制数之间的转换方法,二进制数转换成十六进制数,例如:把,(101101101.1100101)2,转换成十六进制数。,即:,(101101101.1100101)2=(16D.CA)16,。,1.7.4,不同进制数之间的转换,2),十六进制数转换成二进制数,将十六进制数转换成二进制数时,只要将每,1,位十六进制数用,4,位相应的二进制数表示即可完成转换。,例如:将,(ECA16)16,转换成二进制数。,即:,(ECA16)16=(11101100101000010110)2,。,1.7.5 BCD,码,十进制,8421BCD,码,二进制,0,0000,0000,1,0001,0001,2,0010,0010,3,0011,0011,4,0100,0100,5,0101,0101,6,0110,0110,7,0111,0111,8,1000,1000,9,1001,1001,10,0001 0000,1010,11,0001,0001,1011,12,0001 0010,1100,13,0001 0011,1101,14,0001 0100,1110,15,0001 0101,1111,1.7.6 ASCII,码,ASCII,码是一种,8,位代码,最高位一般用于奇偶校验,用其余的,7,位代码来对,128,个字符编码,其中,32,个是控制字符,,96,个是图形字符。,1.8,思考练习题,(1),微型计算机由哪几部分组成?,(2),什么是单片机?它与一般微型计算机在结构上有什么区别?,(3),单片机主要应用在哪些方面?,(4),将下面的一组十进制数转换成二进制数:,567423198968,14276.870.3759.32583.625134.0625,(5),将下面的二进制数转换成十进制数和十六进制数:,1011001110100101111010011001111010000101,11000101111011101000110011011.11101.01101,第,2,章 单片机的组成与结构分析,MCS-51,单片机的内部结构,CPU,的结构和功能,存储器的组织结构,MCS-51,单片机的并行输入输出端口,MCS-51,单片机的外部引脚及功能,单片机指令时序,思考练习题,2.1 MCS-51,单片机的内部结构,2.1 MCS-51,单片机的内部结构,其基本特性如下:,8,位,CPU,,含片内振荡器;,4KB,的程序存储器,ROM,;,128B,的数据存储器,RAM,;,64KB,的外部程序存储器寻址能力;,64KB,的外部数据存储器寻址能力;,32,根输入输出,(I/O),线;,2,个,16,位定时,/,计数器;,1,个全双工异步串行口;,21,个特殊功能寄存器;,5,个中断源,,2,个优先级;,具有位寻址功能。,2.2 CPU,的结构和功能,2.2.1,运算器,8051,单片机的运算器由算术,/,逻辑运算单元,ALU,、累加器,A,、寄存器,B,、暂存器,1,、暂存器,2,以及程序状态字寄存器,PSW,组成。,图,2.2 PSW,寄存器各位的标志符号,表,2.1,寄存器,PSW,各位的功能、标志符号与相应的位地址,功 能,标志符号,位地址,进位标志,(,又是,C,寄存器,),CY,PSW.7,辅助进位标志,AC,PSW.6,用户标志,FO,PSW.5,工作寄存器组选择,RS1,PSW.4,工作寄存器组选择,RS0,PSW.3,溢出标志,OV,PSW.2,保留,PSW.1,奇偶标志,P,PSW.0,2.2.2,控制器,2.3,存储器的组织结构,存储器的功能是存储信息,(,即程序与数据,),。存储器是组成计算机的主要部件,目前所使用的存储器以半导体存储器为主。从功能上来划分,半导体存储器可分为两大类:即只读存储器,(ROM),,和随机存储器,(RAM),。,8051,单片机的控制器由指令寄存器、指令译码器、堆栈指针,SP,、程序计数器,PC,、数据指针,DPTR,、,RAM,地址寄存器以及,16,位地址缓冲器等组成。,2.3.1 MCS-51,单片机的存储器结构,图,2.3 8051,存储器配置图,2.3.2,程序存储器,程序是控制计算机运行的一系列命令。计算机能够识别并执行的命令是由代码“,0”,和“,1”,组成的一组机器指令。,2.3.3,数据存储器,单片机的数据存储器由可读可写的存储器,RAM,组成,最多可扩展到,64KB,,用于存储数据。,2.3.4 MCS-51,单片机的内部数据存储器,MCS-51,单片机的内部数据存储器由地址,00H,FFH,共有,256,个字节的地址空间组成,这,256,个字节的地址空间被分为两部分,其中内部数据,RAM,地址为,00H,7FH(,即,0,127),。,图,2.4,内部数据存储器地址空间,1.,内部数据,RAM,单元,内部数据,RAM,分为工作寄存器区、位寻址区、通用,RAM,区三个部分。,图,2.5 RAM,位地址,(,低,128,位在,00H7FH),(a),系统复位后,未改变,SP,初值时的堆栈操作,(,设,(A)=0ABH),(b),系统复位后,改变,SP,初值为,60H,时的堆栈操作,图,2.6,堆栈操作示例,2.,特殊功能寄存器,特殊功能寄存器,SFR,的地址空间是,80H,FFH,。,表,2.3,特殊功能寄存器的名称、符号与地址,特殊功能,寄存器名称,符号,位地址与位名称,字节,地址,D7,D6,D5,D4,D3,D2,D1,D0,B,寄存器,B,F7,F6,F5,F4,F3,F2,F1,F0,F0H,累加器,A,E7,E6,E5,E4,E3,E2,E1,E0,E0H,程序状态字,PSW,D7,D6,D5,D4,D3,D2,D1,D0,D0H,C,AC,F0,RS1,RS0,OV,P,中断优先级,控制,IP,BF,BE,BD,BC,BB,BA,B9,B8,B8H,PS,PT1,PX1,PT0,PX0,D7,D6,D5,D4,D3,D2,D1,D0,P3,口,P3,B7,B6,B5,B4,B3,B2,B1,B0,B0H,P3.7,P3.6,P3.5,P3.4,P3.3,P3.2,P3.1,P3.0,2.,特殊功能寄存器,中断允许,控制,IE,AF,AE,AD,AC,AB,AA,A9,A8,A8H,EA,ES,ET1,EX1,ET0,EX0,P2,口,P2,A7,A6,A5,A4,A3,A2,A1,A0,A0H,P2.7,P2.6,P2.5,P2.4,P2.3,P2.2,P2.1,P2.0,串行数据,缓冲器,SBUF,99H,串行控制,SCON,9F,9E,9D,9C,9B,9A,99,98,98H,SM0,SM1,SM2,REN,TB8,RB8,TI,RI,P1,口,P1,97,96,95,94,93,92,91,90,90H,P1.7,P1.6,P1.5,P1.4,P1.3,P1.2,P1.1,P1.0,定时,/,计数器,1,高字节,TH1,8DH,定时,/,计数器,0,高字节,TH0,8CH,2.,特殊功能寄存器,定时,/,计数器,1,低字节,TL1,8BH,定时,/,计数器,0,低字节,TL0,8AH,定时,/,计数,方式控制,TMOD,GATE,C/T,M1,M0,GATE,C/T,M1,M0,89H,2.,特殊功能寄存器,特殊功能,寄存器名称,符号,位地址与位名称,字节,地址,D7,D6,D5,D4,D3,D2,D1,D0,定时器控制寄存器,TCON,8F,8E,8D,8C,8B,8A,89,88,88H,TF1,TR1,TF0,TR0,IE1,IT1,IE0,IT0,电源控制,PCON,SMOD,87H,数据指针,高字节,DPH,83H,数据指针,低字节,DPL,82H,堆栈指针,SP,81H,P0,口,P0,87,86,85,84,83,82,81,80,80H,P0.7,P0.6,P0.5,P0.4,P0.3,P0.2,P0.1,P0.0,2.4 MCS-51,单片机的并行输入输出端口,2.4.1 P0,口结构,1. P0,用作通用,I/O,口,2. P0,用作地址,/,数据总线分时复用方式,2.4.2 P2,口结构,1. P2,口用作地址总线,2. P2,口用作通用,I/O,口,2.4.3 P3,口结构,2.4.4 P1,口结构,2.5 MCS-51,单片机的外部引脚及功能,2.5.1,电源引脚,(b),双列直插式封装,(a),方形封装,2.5.2,外接晶振或外部时钟信号输入端,(a),内部振荡器方式,(b),外部振荡器方式,图,2.12 8051,单片机的振荡器方式,表,2.4,按不同工艺制造的单片机芯片外接振荡器时的接法,芯片类型,接 法,XTAL1,XTAL2,CHMOS,接外部振荡器脉冲输入端,(,带上拉电阻,),悬浮,HMOS,接地,接外部振荡器脉冲输入端,(,带上拉电阻,),2.5.3,输入输出引脚,P0.0,P0.7,:通道,0,是一个,8,位漏极开路的双向输入输出通道。在外接存储器或者扩展,I/O,接口时,,P0,口作为复用的低,8,位地址总线和双向数据总线。在不扩展存储器或者,I/O,接口时,作为准双向输入输出接口。,P1.0,P1.7,:只有一种功能,即准双向,I/O,口。,P2.0,P2.7,:可作为准双向,I/O,口使用;但在接有片外存储器或扩展,I/O,接口范围超过,256B,时,则该口一般只能作为高,8,位地址总线使用。,P3.0,P3.7,:该口除了作为准双向口外,还具有第二功能。,2.5.4,控制线,1. ALE/,2.,3.,/VPP,4. RST,(a),上电复位,(b),电平开关复位,图,2.13,复位电路,2.6,单片机指令时序,2.7,思考练习题,(1)MCS-51,单片机包含哪些主要逻辑功能部件?,(2),程序状态字寄存器,PSW,包含哪几个标志位?各位的含义是什么?各有何作用?,(3),什么叫单片机?,(4)MCS-51,单片机的存储结构有何特点?,(5),单片机的,EA,端有何作用?在,8031,组成的单片机应用系统中,其,EA,端怎样处理?为什么?,(6),单片机内部,RAM,分为哪几个部分?各有何作用?,(7)MCS-51,单片机的堆栈,SP,在操作中遵循什么原则?在开机复位时,其初值是多少?是否可以通过程序重新设置?,(8),怎样确定和改变单片机当前的工作寄存器组?,(9),简要说明单片机的位地址分配。,(10),试画出常用的单片机复位电路,并说明复位后各个寄存器的状态。,第,3,章,MCS-51,单片机的指令系统,汇编语言的指令格式及符号简介,寻址方式,数据传送类指令,算术运算类指令,逻辑运算类指令,位操作类指令,控制转移类指令,思考练习题,3.1,汇编语言的指令格式及符号简介,3.1.1,指令格式,标号,:,操作码助记符,第一操作数, ,第二操作数, ,第三操作数, ;,注释,例如:,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,种寻址方式,见表,3.1,。,表,3.1 7,种寻址方式的比较,序号,寻址方式,利用的寄存器和存储空间,1,立即寻址,程序存储器,ROM,2,直接寻址,内部,RAM,、特殊功能寄存器,SFR,3,寄存器寻址,寄存器,R0,R7,、,A,、,B,、,DPTR,和,C(,布尔累加器,),4,寄存器间接寻址,内部,RAM(R0,、,R1,、,SP),、外部,RAM(R0,、,R1,、,DPTR),5,变址寻址,程序存储器,ROM(A+DPTR,、,A+PC),6,相对寻址,程序存储器,ROM(PC+,偏移量,),7,位寻址,内部,RAM,的,20H,2FH,单元和部分,SFR,3.2.1,立即寻址,例如:,MOV A, #23H ; (A)23H,,即累加器,A,的内容被替换为立即数,23H,。,图,3.1 MOV A,#23H,的执行示意图,该指令的功能是将,8,位的立即数,23H,传送到累加器,A,中。如图,3.1,所示。其中,目的操作数采用寄存器寻址,源操作数采用立即寻址。,3.2.2,直接寻址,直接寻址是指在指令中包含了操作数的地址,该地址直接给出了参加运算或传送的单元或位。直接寻址方式可访问三种地址空间:,特殊功能寄存器,SFR(,该空间只能采用直接寻址,),。,内部数据,RAM,的低,128,个字节单元,(,该空间还可以采用寄存器间接寻址,),。,221,个位地址空间。,例如,:,MOV A, 40H ;,把,40H,单元的内容送到累加器中,即,(A)(40H),。,图,3.2 MOV A,40H,的执行示意图,3.2.3,寄存器寻址,寄存器寻址是指定某一可寻址的寄存器的内容为操作数。,例如:,MOV A, R0 ;(A)(R0),该指令的功能是将,R0,中的数据传送到累加器,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,,且,(60H)=10H,,即,60H,地址单元中的内容为,10H,,则语句,MOV A, R0,的执行过程如图,3.3,所示。执行后,,(A)=10H,,即累加器,A,的内容成为,10H,。,图,3.3 MOV A,R0,的执行示意图,又如:,MOVX A, R0;(A)(R0),,用,R0,间接寻址的单元中的内容替换,A,的,;,内容。,MOVX A, DPTR;(A)(DPTR),,用,DPTR,间接寻址的单元中的内容替换,;A,的内容。,3.2.5,变址寻址,这种寻址方式是以数据指针,DPTR,或程序计数器,PC,作为基址寄存器,以累加器,A,作为偏移量寄存器,将一个基址寄存器的内容与偏移量寄存器的内容之和作为操作数地址。,例如:,MOVC A, A+DPTR,设,(A)=10H,,,(DPTR)=1000H,,程序存储器的,(1010H)=45H,,则上面程序语句的功能是将,A,的内容与,DPTR,的内容相加形成操作数地址,(1010H),,把该地址中的数据传送到累加器,A,。即,(A)(A)+(DPTR),。结果:,(A)=45H,。,图,3.4 MOVC A,A+DPTR,的执行示意图,相对寻址,是把指令中给定的地址偏移量,rel,与程序计数器,PC,的当前值,(,读出该双字节或三字节的跳转指令后,,PC,指向的下条指令的地址,),相加,得到真正的程序转移地址。,例如:,JC 80H,若,C=0,,则,PC,值不变,若,C=1,,则以当前,PC,值为基地址,加上,80H,得到新的,PC,值。设该转移指令存放在,1005H,单元,取出操作码后,PC,指向,1006H,单元,取出偏移量后,PC,指向,1007H,单元,所以计算偏移量时,PC,当前地址为,1007H,,已经为转移指令首地址加,2,,这里的偏移量以补码给出,所以,80H,代表着,-80H,,补码运算后,就形成跳转地址,0F87H,。其过程如图,3.5,所示。,3.2.6,相对寻址,3.2.6,相对寻址,图,3.5 JC 80H,的执行示意图,3.2.7,位寻址,MCS-51,单片机可对片内,RAM,的两个区域进行位寻址:一个是,20H,2FH,单元的,128,位,另一个是特殊功能寄存器的,93,位。,在寻址时,同一个位地址可以有多种标识方式,读者可参看后面,3.6,节“位操作指令”的相关内容。,3.3.1,通用传送指令,格式:,MOV,目的操作数,源操作数,功能:把第二操作数指定的字节内容传送到第一操作数指定的单元中。不影响源操作数内容,不影响别的寄存器和标志。,1.,以累加器,A,为目的操作数的传送类指令,3.3,数据传送类指令,指令助记符及功能说明如下:,目的操作数,源操作数,功能说明,源操作数寻址方式,MOV,A,direct,;(,A)(direct,),直接寻址,MOV,A,Ri,;(,A)(Ri,),寄存器间接寻址,MOV,A,Rn,;(,A)(Rn,),寄存器寻址,MOV,A,#data,;(,A)data,立即寻址,例,1,若,(50H)=10H,,则执行指令,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,为目的操作数的传送类指令,例,1,若,(A)=20H,,则执行指令,MOV R3, A,后,,(R3)=20H,。,例,2,若,(30H)=01H,,则执行指令,MOV R7, 30H,后,,(R7)=01H,。,指令助记符及功能说明如下,:,目的操作数,源操作数,功能说明,源操作数寻址方式,MOV,Rn,A,;(,Rn)(A,),寄存器寻址,MOV,Rn,direct,;(,Rn)(direct,),直接寻址,MOV,Rn,#data,;(,Rn)data,立即寻址,例,1,若,(30H)=20H,,,(R0)=30H,,则执行指令,MOV 90H, R0,的结果为,(90H)=20H,。,例,2,若例,1,中的条件不变,而执行指令,MOV P1, R0,,则,(P1)=20H,。,3.,以直接地址,directX,为目的操作数的传送类指令,指令助记符及功能说明如下:,目的操作数,源操作数,功能说明,源操作数寻址方式,MOV,directX,A,;(,directX)(A,),寄存器寻址,MOV,directX,Rn,;(,directX)(Rn,),寄存器寻址,MOV,directX,directY,;(,directX)(directY,),直接寻址,MOV,directX,Ri,;(,directX)(Ri,),寄存器间接寻址,MOV,directX,#data,;(,directX)data,立即寻址,例,1,若,(R0)=50H,,,(50H)=20H,,,(A)=10H,,则执行指令“,MOV R0, A”,后,,50H,单元的内容由原来的,20H,变为,10H,。,4.,以寄存器间接地址,Ri,为目的操作数的传送类指令,指令助记符及功能说明如下:,目的操作数,源操作数,功能说明,源操作数寻址方式,MOV,Ri,A,;(,Ri)(A,),寄存器寻址,MOV,Ri,direct,;(,Ri)(direct,),直接寻址,MOV,Ri,#data,;(,Ri)data,立即寻址,5. 16,位目标地址传送指令,这条指令的功能是:把,16,位立即数送入,DPTR,中。而,16,位的数据指针,DPTR,由,DPH,与,DPL,组成,该指令执行后,,16,位立即数的高,8,位送入,DPH,中,低,8,位送入,DPL,中。,该指令的执行,不影响程序状态寄存器,PSW,。,指令助记符及功能说明如下:,目的操作数,源操作数,功能说明,源操作数寻址方式,MOV,DPTR,#data16,;(DPTR)data16,立即寻址,3.3.2,外部数据存储器,(,或,I/O,口,),与累加器,A,传送指令,例,1,设,(P2)=20H,,现将,A,中数据存储到,20FFH,单元中去。,可用以下程序实现:,MOV R1, #0FFH ;(R1)0FFH,MOVX R1, A ;(20FFH)(A),也可采用下述程序实现:,MOV DPTR, #20FFH ;(DPTR)20FFH,MOVX DPTR, A ;(DPTR)(A),,即,(20FFH)(A),指令助记符与功能说明如下,:,目的操作数,源操作数,功能说明,源操作数寻址方式,MOVX,A,DPTR,;(A)(DPTR),寄存器间接寻址,MOVX,A,Ri,;(,A)(Ri,),寄存器间接寻址,MOVX,DPTR,A,;(DPTR)(A),寄存器寻址,MOVX,Ri,A,;(,Ri)(A,),寄存器寻址,3.3.2,外部数据存储器,(,或,I/O,口,),与累加器,A,传送指令,例,2,将外部数据存储器,7FF0H,单元中的数据取出,存放到外部数据存储器,2000H,单元中去。,MOV DPTR, #7FF0H,MOVX A, DPTR,MOV DPTR, #2000H,MOVX DPTR, A,例,1,在外部程序存储器,2000H,单元开始存放了数字,0,9,的共阴极数码管的,16,进制数的字形代码,3FH,、,06H,、,、,6FH,。要求根据,A,中的值,(0,9),来查找该数字所对应的代码以便显示。,若用,PC,作基址寄存器,则需要在,MOVC A, A+PC,指令前用一加法指令对地址进行调整:,ADD A, #data,MOVC A, A+PC,3.3.3,程序存储器向累加器,A,传送数据指令,指令助记符与功能说明如下:,目的操作数,源操作数,功能说明,源操作数寻址方式,MOVC,A,A+PC,;(A)(A)+(PC)+1),变址寻址,MOVC,A,A+DPTR,;(A)(A)+(DPTR),变址寻址,1.,字节交换指令,例,1,设,(R1)=30H,,,(30H)=45H,,,(A)=7FH,,则执行指令:,XCH A, R1,结果:,(A)=45H,,而,(30H)=7FH,,从而实现了累加器,A,与内部数据存储器,RAM,中,30H,单元的数据交换。,3.3.4,数据交换指令,指令助记符与功能说明如下:,目的操作数,源操作数,功能说明,源操作数寻址方式,XCH,A,direct,(direct),直接寻址,XCH,A,Ri,(,Ri,),间接寻址,XCH,A,Rn,(,Rn,),寄存器寻址,2.,半字节交换指令,例,1,设,(30H)=6FH,,,(R0)=30H,,,(A)=0F6H,,则执行指令:,XCHD A, ,Ri,结果:,(A)=0FFH,,,(30H)=66H,数据交换指令除了影响始终跟踪,A,中数据奇偶性的,P,标志外,对,PSW,中其他标志位均无影响。,指令助记符与功能说明如下:,目的操作数,源操作数,功能说明,源操作数寻址方式,XCHD,A,Ri,(,Ri,),间接寻址,3.,累加器,A,中高四位与低四位交换指令,SWAP A,该指令所执行的操作是累加器,A,中的高,4,位与低,4,位的内容互换,其结果仍存放在累加器,A,中。,例,1,设,(A)=0A5H(10100101B),,则执行指令:,SWAP A,结果:,(A)=5AH(01011010B),指令,SWAP,交换了,A,中高、低半字节,(3,0,和,7,4),,结果不影响标志寄存器,PSW,。,3.3.5,堆栈操作指令,堆栈操作指令只有,2,条,即:压入,(PUSH),和弹出,(POP),。,压入指令:,PUSH direct ;SPSP+1,,,(,SP)(direct,),弹出指令:,POP direct ;(,SP)(direct,),,,SPSP-1,例,1PUSH A ;,保护,A,中数据,PUSH PSW ;,保护标志寄存器中数据, ;,执行服务程序,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,加减运算指令,1.,加法指令,这类指令所完成的操作是把源操作数,(,立即数、直接地址单元内容、间接地址单元内容、工作寄存器内容,),与累加器,A,的内容相加,将结果保存在累加器,A,中。,3.4,算术运算类指令,指令助记符与功能说明如下:,目的操作数,源操作数,功能说明,源操作数寻址方式,ADD,A,#data,;(,A)(A)+data,立即寻址,ADD,A,direct,;(,A)(A)+(direct,),直接寻址,ADD,A,Ri,;(,A)(A)+(Ri,),寄存器间接寻址,ADD,A,Rn,;(,A)(A)+(Rn,),寄存器寻址,例,1,执行指令:,MOV A, #0A9H,ADD A, #0B8H,对程序状态寄存器的影响如图,3.6,所示。,运算结果:,(A)=61H,,,CY=1,,,AC=1,,,OV=1,,,P=1,,,(PSW)=0C5H,例,2,8,位数加法程序片断,1,:,MOVA, #23H,ADDA, #5AH,运算结果:,(A)=7DH,,,CY=0,,,OV=0,,,AC=0,,,P=0,,,(PSW)=00H,。,例,3,8,位数加法程序片断,2,:,MOVA, #0ABH,ADDA, #9AH,运算结果:,(A)=45H,,,CY=1,,,OV=1,,,AC=1,,,P=1,,,(PSW)=0C5H,。,带进位加法指令与前述加法指令的区别仅为考虑进位位,其他与加法指令相同。,2.,带进位加法指令,指令助记符与功能说明如下:,目的操作数,源操作数,功能说明,源操作数寻址方式,ADDC,A,#data,;(,A)(A)+data+(C,),立即寻址,ADDC,A,direct,;(,A)(A)+(direct)+(C,),直接寻址,ADDC,A,Ri,;(,A)(A)+(Ri)+(C,),寄存器间接寻址,ADDC,A,Rn,;(,A)(A)+(Rn)+(C,),寄存器寻址,例,3,利用,ADDC,指令可以进行多字节的加法运算。,设有两个,16,位数相加,被加数的高,8,位放在,41H,,低,8,位放在,40H,,加数的高,8,位放在,43H,,低,8,位放在,42H,,和的低,8,位存放在,50H,,高,8,位存放在,51H,,进位位存放在,52H,。可编程序如下:,例,1,设,(A)=0AAH,,,(R0)=55H,,,C=1,,则执行指令:,ADDC A, R0,运算结果:,(A)=00000000B,,,AC=1,,,CY=1,,,OV=1,。,例,2,设,(A)=35H,,,(40H)=21H,,,C=0,,则执行指令:,ADDC A, 40H,运算结果:,(A)=56H,,,AC=0,,,CY=0,,,OV=0,。,这与执行指令“,ADD A, 40H”,的结果是一样的。,SHJ: MOV A, 40H;(A),被加数低,8,位,ADD A, 42H;,与加数低,8,位相加,MOV 50H, A;,和的低,8,位存入,50H,MOV A, 41H;(A),被加数高,8,位,ADDC A, 43H;,被加数高,8,位与加数高,8,位以及低位来的进位相加,MOV 51H, A;,和的高,8,位存入,51H,单元,MOV A, #00H;(A)00H,ADDC A, #00H;(A)(A) +00H+,高,8,位来的进位,MOV 52H, A;,进位位,C,内容存入,52H,单元,3.,带借位减指令,指令助记符与功能说明如下:,目的操作数,源操作数,功能说明,源操作数寻址方式,SUBB,A,#data,;(A)(A),-,data,-,(C),立即寻址,SUBB,A,direct,;(A)(A),-,(direct),-,(C),直接寻址,SUBB,A,Ri,;(A)(A),-,(,Ri,),-,(C),寄存器间接寻址,SUBB,A,Rn,;(A)(A),-,(,Rn,),-,(C),寄存器寻址,例,1,设,(40H)=0BAH,,,(41H)=98H,,试编写,40H,内容减去,41H,内容后,结果再存入,40H,单元的程序。,MOVA, 40H;(A)(40H),CLRC;,进位位,C,清,0,SUBBA, 41H;(A)(A)-(41H) -(C),MOV40H, A;(40H)(A),执行以上程序后,,(40H)=22H,,,CY=0,,,OV=0,。,如果参与运算的两数为无符号数,则其溢出与否与,OV,状态无关,而是靠,CY,是否有借位来判断,,OV,仅仅表示带符号数运算时是否溢出。,例,2,设有两个,16,位数相减,被减数的高,8,位放在,41H,,低,8,位放在,40H,,减数高,8,位放在,43H,,低,8,位放在,42H,,差的低,8,位存放在,50H,,高,8,位存放在,51H,,借位位存放在,52H,。,可编程序如下:,SHJIAN:MOV A, 40H ;(A),被减数低,8,位,CLR C ;C,位清,0,SUBB A, 42H ;,减去减数低,8,位,MOV 50H, A ;,差的低,8,位存入,50H,MOV A, 41H ;(A),被减数高,8,位,SUBB A, 43H ;,被减数高,8,位减去减数高,8,位与借位,MOV 51H, A ;,差的高,8,位存入,51H,单元,MOV A, #00H ;(A)00H,ADDC A, #00H ;(A),高,8,位的借位位,MOV 52H, A ;,借位位,C,内容存入,52H,单元,1.,乘法指令,例,1,设,(A)=67H(103),,,(B)=0ADH(173),,执行指令:,MUL AB,运算结果:乘积为,459BH(17819),,,(A)=9BH,,,(B)=45H,。另外:,OV=1,,,CY=0,3.4.2,乘除运算指令,MUL AB ;(A),乘积低,8,位,,(B),乘积高,8,位,例,2,设被乘数为,16,位无符号数,低,8,位存放在地址为,K,的单元,高,8,位存放在地址为,K+1,的单元。乘数为,8,位无符号数,存放在,M,单元。编程求出二者乘积,并将乘积的,0,7,位存放在,R1,,,8,15,位存放在,R2,,,16,23,位存放在,R3,中。,分析:,16,位无符号数与,8,位无符号数相乘的步骤示意如下:,程序编制如下:,MOV R0, #K ;,设置被乘数地址指针,MOV A, R0 ;,被乘数送,A,中,MOV B, M ;,乘数送,B,中,MUL AB ;(K)(M),MOV R1, A ;,乘积的,0,7,位存入,R1,MOV R2, B ;,暂存积的,8,15,位,INC R0 ;,指向被乘数高,8,位地址,MOV A, R0 ;,取被乘数高,8,位,MOV B, M ;,乘数送,B,中,MUL AB ;(K+1)(M),ADD A, R2 ;,求得乘积的,8,15,位,MOV R2, A ;,乘积的,8,15,位存入,R2,MOV A, B,ADDC A, #00H ;,求得乘积的,16,23,位,MOV R3, A ;,乘积的,16,23,位存入,R3,2.,除法指令,例,1,设,(A)=9AH,,,(B)=23H,,执行指令:,DIV AB,则,(A)=04H,,,(B)=0EH,,,OV=00H,,,CY=00H,3.4.2,乘除运算指令,DIV AB ;(A),商,,(B),余数,3.4.3,增,1,减,1,指令,1.,增,1,指令,INC A ;(A)(A)+1,INC direct ;(direct)(direct)+1,INC ,Ri,;(Ri)(Ri)+1,INC,Rn,;(Rn)(Rn)+1,INC DPTR ;(DPTR)(DPTR)+1,例,1,设,(A)=40H,,,(41H)=29H,,则执行下列指令:,INC A;(A)40H+1H,INC 41H;(41H)29H+1H,结果:,(A)=41H,,,(41H)=2AH,例,2,设,(R0)=56H,,片内,RAM,单元,(56H)=0FFH,,,(57H)=50H,,则执行下列指令:,INC R0;(56H)00H,INC R0;(R0)57H,INC R0;(57H)51H,结果:,(56H)=00H,,,(R0)=57H,,,(57H)=51H,例,3,执行下述指令序列:,MOV DPTR,#2FFEH;(DPTR)2FFEH,INC DPTR;(DPTR)2FFFH,INC DPTR;(DPTR)3000H,INC DPTR;(DPTR)3001H,则,(DPTR)=3001H,2.,减,1,指令,DEC A;(A)(A)-1,DEC direct;(direct)(direct)-1,DEC ,Ri,;(Ri)(Ri)-1,DEC,Rn,;(Rn)(Rn)-1,例,1,设,(R0)=4FH,,片内,RAM,单元,(4FH)=40H,,,(4EH)=00H,,执行指令:,DEC R0 ;(4FH)3FH,DEC R0 ;(R0)4EH,DEC R0 ;(4EH)0FFH,结果:,(R0)=4EH,,,(4EH)=0FFH,,,(4FH)=3FH,3.4.4,二,/,十进制调整指令,DA A,该指令的功能是对累加器,A,中的“二,/,十”进制,(BCD,码,),加法结果进行调整。,例,1,执行下面的指令:,MOVA, #86H,ADDA, #47H,结果:,(A)=0CDH,,,CY=0,,,AC=0,所得结果并不是,BCD,码,若接着执行以下指令:,DA A,则结果:,(A)=33H,,,CY=1,,,AC=1,1.,累加器,A,清,0,指令格式:,CLR A,功能:将,00H,送入累加器,A,中。,3.5,逻辑运算指令,3.5.1,单操作数指令,2.,累加器,A,取反,指令格式:,CPL A,功能:将累加器,A,中内容取反,(,将,A,中内容按位取反,即逻辑非运算,),后再送回累加器,A,中。,例,1,设,(A)=98H,,执行指令,CLR A ;(A)0,CPL A ;(A)0FFH,结果:,(A)=0FFH,3.,累加器,A,内容循环左移一位,指令格式:,RL A,功能:将累加器,A,中的内容循环左移一位。即,例,1,设,(A)=10001000,,则执行指令“,RL A”,后,结果:,(A)=00010001,4.,累加器,A,内容带进位位,CY,循环左移一位,指令格式:,RLC A,功能:将累加器,A,中的内容与进位标志位,CY,一起循环左移一位。即:,例,1,设,(A)=01010101,,,(CY)=1,。则执行指令“,RLC A”,后,结果:,(A)=10101011,,,(CY)=0,。,5.,累加器,A,内容循环右移一位,指令格式:,RR A,功能:将累加器,A,中的内容循环右移一位。即:,例,1,设,(A)=00010001,,则执行指令“,RR A”,后,结果:,(A)=10001000,6.,累加器,A,内容带进位位,CY,循环右移一位,指令格式:,RRC A,功能:将累加器,A,中的内容与进位标志位,CY,一起循环右移一位。即:,例,1,设,(A)=10101011,,,(CY)=0,。则执行指令“,RRC A”,后,结果:,(A)=01010101,,,(CY)=1,。,3.5.2,双操作数指令,1.,逻辑与指令,逻辑与的规则定义为:,(,其中表示逻辑与,),00=0,01=10=0,11=1,例,1,设,(A)=0C3H,,,(R3)=0ADH,,执行指令“,ANL A, R3”,。,结果:,(A)=81H(10000001B),。,指令执行过程如下:,2.,逻辑或指令,逻辑或的规则定义为:,(,其中表示逻辑或,),00=0,00=10=1,11=1,例,1,设,(A)=0C3H,,,(R3)=0ADH,,执行指令“,ORL A, R3”,。,结果:,(A)=0EFH(11101111B),。,指令执行过程如下:,3.,逻辑异或指令,逻辑异或的规则定义为,(,其中表示逻辑异或,),:,00=11=0,10=01=1,例,1,设,(A)=0C3H,,,(R3)=0ADH,,执行指令“,XRL A, R3”,。,结果:,(A)=6EH(01101110B),。,指令执行过程如下:,例,2,试把分别保存在,30H,、,31H,单元中用,ASCII,码表示的两位数,转换成两位,BCD,码,并以压缩,BCD,码形式存入,30H,单元中。,程序如下:,ANL 30H, #0FH;30H,单元的,ASCII,码转换成,BCD,码,MOV A, 31H;,取,31H,单元的,ASCII,码,ANL A, #0FH;31H,单元的,ASCII,码变成,BCD,码,RL A,RL A,RL A,RL A,ORL 30H, A;,结果存入,30H,单元,例,1,要将,20H,位的内容传送给,23H,位,不能直接用“,MOV 20H, 23H”,,因为该指令执行的实际是字节传送,若要将,20H,位的内容传送给,23H,位,可用下述程序实现:,MOV C, 20H ;(C)(20H),MOV 23H, C ;(23H)(C),3.6,位操作类指令,3.6.1,位数据传送指令,指令助记符与功能说明如下:,目的操作数 源操作数 功能说明,MOV C, bit;(,C),(bit,),MOV bit, C;(,C),(bit,),指令格式如下:,CLR C;(C)(0),CLR bit;( bit)(0),以上指令可使直接寻址位,(bit),或位累加器,C,清,0,,不影响其他标志。,例,1,片内,RAM,单元,26H,的内容为,0FFH,,执行指令:,CLR 32H,结果:,(26H)=0FBH(11111011B),,其中,,32H,为,26H,单元第二位的位地址。,3.6.2,位状态控制指令,1.,位清,0,指令,指令格式如下:,CPL C ;(C)(/C),CPL bit ;
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 机械制造 > 工业自动化


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!