第3章_ppt.txt

大学单片机原理与应用-胡辉-PPT文稿资料课件PPT

收藏

资源目录
跳过导航链接。
压缩包内文档预览:
预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图
编号:21836274    类型:共享资源    大小:17.22MB    格式:ZIP    上传时间:2019-09-06 上传人:QQ24****1780 IP属地:浙江
25
积分
关 键 词:
大学 单片机 原理 应用 利用 运用 胡辉 ppt 文稿 资料 课件
资源描述:
大学单片机原理与应用-胡辉-PPT文稿资料课件PPT,大学,单片机,原理,应用,利用,运用,胡辉,ppt,文稿,资料,课件
内容简介:
第3章 单片机的指令系统 3.1 单片机指令系统概述 3.1 单片机指令系统概述 3.1.1 指令格式MCS-51单片机指令格式采用了单地址指令格式。一条汇编语句是由标号、操作码、目的操作数、源操作数和注释等5部分组成的,其中方括号中的部分是可以选择的。指令的具体格式为:标号:操作码 目的操作数,源操作数;注释例如: HY1:MOV R3 , #08H ;执行数据传送操作3.1.2 指令符号A:累加器,用于运算及存放数据。B:专用寄存器,用于MUL和DIV指令中,存放第二操作数、乘积高位字节。CY:进位标志位,或布尔处理器中的累加器。bit:内部RAM或专用寄存器中的直接寻址位。/bit:位地址单元内容取反。DPTR:16位数据指针,也可作为16位地址寄存器。Rn:工作寄存器中的寄存器Rn、R0R7之一,Ri:工作寄存器中的寄存器R0或R1#data:8位立即数#data16:16位立即数direct:片内RAM或SFR的地址(8位):间接寻址寄存器addr11:11位目的地址addr16:16位目的地址rel: 补码形式的8位地址偏移量。 偏移范围为-128127/:位操作指令中,该位求反后参与操作,不影响该位X:片内RAM的直接地址或寄存器(X):相应地址单元中的内容:箭头左边的内容送入箭头右边的单元内功能数据传送类:29条算术运算类:24条逻辑运算类:24条控制转移类:17条位操作类: 17条3.1.3 指令分类 MCS-51单片机共有111条指令,可以实现51种基本操作。 1.按指令功能分类 2按指令字节分类 MCS-51单片机用机器语言表示的指令格式按字节划分,有一字节指令、两字节指令和三字节指令等三种。(1)一字节指令中的8位二进制代码既包含操作码的信息,也包含操作数的信息。例如指令: INC A MOVA,Rn XCHA,Rn ADDA,Ri DECRn (2)二字节指令中的第一个字节表示操作码,第二个字节表示操作数,操作数既可能是立即数,也可能是地址。其指令格式为:例如: ANL A,#90HADDA, #06HDEC 30HMOVR2,#0F0H(3)三字节指令中,第一字节表示操作码,另两个字节是操作数,其指令格式为: 例如:ANL 30H,#66HMOVDPTR,#1000HLJMP0300HCJNEA,20H,HL53按指令执行时间分类 MCS-51系列单片机常可以分为单周期指令57条,双周期指令52条和四周期指令2条等。(1)单周期指令的执行指令时间为一个机器周期。例如: XCHA,R1ADDA,R1CLRAMOVR3,#0F0H (2)双周期指令的执行指令时间为2个机器周期。例如:MOVRn,30HDJNZR3,LOOPJMPa+dptr(3)四周期指令的执行指令时间为4个机器周期。例如:DIV ABMULAB 3.2.1 立即寻址Immediate Addressing 操作数就包含在指令代码中,在操作码之后,称为立即数,用“”表示。 如: MOV P1, #80H MOV R7, #0F5H MOV DPTR,#1245H3.2 寻址方式 3.2.2 直接寻址 Direct Addressing直接使用数所在单元的地址找到了操作数,所以称这种方法为直接寻址。操作数在SFR、内部RAM、位地址空间。如: MOV A,00H MOV C,60H MOV A,0F0H (B寄存器)3.2.3 寄存器寻址 Register Addressing对选定的工作寄存器R0R7、累加器A、通用寄存器B、地址寄存器DPTR中的数进行操作。 例:MOV A,R0;将R0工作寄存器中的数据送到累加器A中去。问题:我们知道,工作寄存器就是内存单元的一部分,如果我们选择工作寄存器组0,则R0就是RAM的00H单元,那么这样一来,MOV A,00H 和 MOV A,R0不就没什么区别了吗?执行第一条指令需要2个机器周期,而第二条则只需要1个机器周期,第一条指令变成最终的目标码要两个字节(E5H 00H),而第二条则只要一个字节(E8H)。3.2.4 间接寻址 Register Indirect Addressing寄存器间接寻址把地址放在另外一个寄存器中,根据这个寄存器中的数值决定该到哪个单元中取数据。 R0,R1-8位地址,片内低128字节或片外DPTR-16位,片外64KB如:MOV A,R0MOVX A,R0MOVX A,DPTR操作数在片内RAM中操作数在片外RAM中操作数在片外RAM中3.2.5 相对寻址 将PC中的当前内容与指令第二字节给出的数相加,结果作为跳转指令的转移地址(转移目的地址)。 PC中的当前内容称为基地址(本指令后的字节地址)指令第二字节给出的数据称为偏移量,1字节带符号数.常用于跳转指令。 如: JC 23H 若C=0,不跳转; C=1,跳转.Relative Addressing如:JC 231025H23H1002H指令代码当前PC以DPTR或PC为基址寄存器,累加器A为变址寄存器。把两者内容相加,结果作为操作数的地址。 常用于查表操作。 MOVC A, A+DPTR ;(A+DPTR) A MOVC A, A+PC; PC+1 PC,(A+PC)A JMP A+DPTR;(PC)(A+DPTR)3.2.6 变址寻址(基址+变址)Base-Register-plus-Index-Register-Indirect Addressing操作数在程序存储器中如:MOVC A,A+DPTR设DPTR=2000H,A=E0H20E0H47指令代码如:MOVC A,A+PC设A = #E0H2121H45当前PC指令代码 对片内RAM的位寻址区和某些可位寻址的特殊功能寄存器进行位操作时的寻址方式。 如: SETB 3DH; 将27H.5位置1 CLR C ;Cy位清03.2.7 位寻址 Bit Addressing操作数在片内RAM位地址区或SFR某些位中寻址方式涉及的存储器空间3.3指令系统3.3.1 数据传送类指令 (29条) Data Transfer Instruction助记符: MOV、MOVX、MOVC XCH、XCHD、SWAP PUSH、POP 源操作数寻址方式(5种):立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址目的操作数寻址方式(3种): 直接寻址、寄存器寻址、寄存器间接寻址 除了目的操作数为ACC的指令影响奇偶标志P外,一般不影响标志位。(1) 以累加器为目的操作数的指令(4条) MOV A,Rn ;RnAMOV A,direct;(direct)AMOV A,Ri ;(Ri)AMOV A,#data;dataA 将源操作数指定内容送到A中。 1内部数据传送指令MOV (2) 以寄存器Rn为目的操作数的指令 (3条) MOV Rn,A MOV Rn,direct MOV Rn,#data 这组指令功能是把源操作数指定的内容送入当前工作寄存器,源操作数不变。(3)以寄存器间接地址为目的字节的 传送指令(3条) MOV Ri,A ;A (Ri) MOV Ri,direct;(direct) (Ri) MOV Ri,#data; data (Ri) 功能:把源操作数指定的内容送入以R0或R1为地址指针的片内存储单元中。例:MOV R0,AMOV R1,20HMOV R0,#34H(4) 以直接地址为目的操作数的指令(5条)MOV direct,AMOV direct,RnMOV direct1,direct2MOV direct,RiMOV direct,#data 这组指令功能是把源操作数指定的内容送入由直接地址指出的片内存储单元。例如:MOV 20H,AMOV 20H,R1MOV 20H,30HMOV 20H,R1MOV 0A0H,#34HMOV P2,#34H(5)16位数据传送指令(1条) MOV DPTR,#data16功能:将一个16位的立即数送入DPTR中去。其中高8位送入DPH,低8位送入DPL。 例:MOV DPTR,#1234H如果分别向DPH,DPL送数,则结果也一样。 如下面两条指令:MOV DPH,#35H MOV DPL,#12H。 则就相当于执行了 MOV DPTR,#3512H。(6)查表指令(2条) MOVC A,A+DPTR;A(A)+(DPTR)MOVCA,A+PC;A(A)+(PC)已知内存单元40H中有一个09范围内的数,用查表指令编出能查出该数平方值的程序。设平方表表头地址为0200H。程序及执行后的结果如下: MOV A,40H MOV DPTR,#LAB MOVC A,A+DPTR LAB:DB 0,1,4,9,10H,19H 若(40H)为2,查表得4并存于A中 2外部数据传送指令MOVX (4条) MOVX A,Ri MOVX Ri,A MOVX A,DPTR MOVX DPTR,A说明:1.在51中,与外部存储器RAM打交道的只可以是A累加器。所有需要送入外部RAM的数据必需要通过A送去,而所有要读入的外部RAM中的数据也必需通过A读入。 在此我们可以看出内外部RAM的区别了,内部RAM间可以直接进行数据的传递,而外部则不行。 2.要读或写外部的RAM,当然也必须要知道RAM的地址,在后两条指令中,地址是被直接放在DPTR中的。而前两条指令,由于Ri(即R0或R1)只是8位的寄存器,所以只提供低8位地址。高8位地址由P2口来提供。(演示举例) 3.使用时应先将要读或写的地址送入DPTR或Ri中,然后再用读写命令。 例:将外部RAM中100H单元中的内容送入外部RAM中200H单元中。MOV DPTR,#0100HMOVX A,DPTRMOV DPTR,#0200HMOVX DPTR,A3堆栈操作指令(PUSH、POP) (2条)PUSH direct ;SPSP+1,(SP)(direct)POP direct ; (direct) (SP), SPSP-1第一条为压入指令,就是将direct中的内容送入堆栈中,第二条为弹出指令,就是将堆栈中的内容送回到direct中。例: MOV SP,#5FH MOV A,#100 MOV B,#20 PUSH ACC PUSH B 4数据交换指令 (5条)XCH A,Rn ;ARnXCH A, direct ;A(direct)XCH A, Ri ;A(Ri)XCHD A, Ri ;A.3A.0(Ri).3(Ri).0SWAP A ;A.3A.0A.7A.4例: 已知A中的内容为34HMOV R6, #29HXCH A, R6SWAP AXCH A, R6 XCHD A, R0;R6=29H;A=29H,R6=34H;A=92H;A=34H,R6=92H;A=34H,(R0)=56H (原值)执行后A=36H, (R0)=54(40H)= H 50H = H A= H (41H)= H 51H= H R0= H 课堂练习1.设:内部RAM中,(40H)=50H,(41H)=60H,(50H)=30H, (51H)=70H,执行下列片段后:MOV R0,40H MOV A,R0 INC R0 MOV R0,Ab. MOV R0,#40H MOV A,R0 INC R0 MOV A,R0;R0=50H;A=30H;R0=51H;(51H)=30H;R0=40H;A=50H;(40)=51H;A=51H2.给出每条指令执行后的结果 MOV 23H,#30HMOV 12H,#34HMOV R0,#23HMOV R7,12HMOV R1,#12HMOV A,R0MOV 34H,R1MOV 45H,34HMOV DPTR,#6712HMOV 12H,DPHMOV R0,DPLMOV A,R0;(23H)=30H;(12H)=34H;R0=23H;R7=34H;R1=12H;A=30H;(34H)=34H;(45H)=34H;DPTR=6712H;(12H)=67H;R0=12H;A=67H内部RAM3.利用传送类指令并用多种方法将内部RAM中50H单元的内容与40H单元的内容互换。3.3.2 算术运算类指令 (24条) Arithmetic Operations 主要对8位无符号数;也可用于带符号数运算。 包括:加、减、乘、除、加1、减1运算指令 影响PSW有关位。 1. 加法指令(13条)ADD A,#data ; AdataAADD A,direct ; A(direct )AADD A,Rn ; ARnAADD A,Ri ; A(Ri)A用途:将A中的值与源操作数所指内容相加,最终结果 存在A中。(1)不带进位位的加法指令(4条)例1:ADD A,#47HADD A,34HADD A,R7ADD A,R0例2: MOV A,#0AEH ;-82D ADD A,#81H ;-127D则执行完本条指令后,A中的值为2FH;C=1,AC=0,OV=1,P=1。对无符号数:结果为12FH;带符号数运算:OV=1,有错。实验验证一下本例(2)带进位位的加法指令(4条)ADDC A,Rn; ARnCYAADDC A,direct; A(direct )CYAADDC A,Ri; A(Ri)CYAADDC A,#data; AdataCYA用途:将A中的值和其后面的值以及进位位C中的值相加,最终结果存在A,常用于多字节数运算中。例: 先做67H+A0H=107H,而107H显然超过了0FFH,因此最终保存在A中的是07H,而1则到了PSW中的CY位了。换言之,CY就相当于是100H。 然后再做10H + 30H + CY,结果是41H,所以最终的结果是4107H。1067H+30A0H0001 0000 0110 0111 0011 0000 1010 0000 0100 0001 0000 0111 1067H30A0H4107H设:1067H存在R1R0中, 30A0H存在R3R2中,计算R1R0+R3R2,结果存在R5R4中。MOV A,R0ADD A,R2 ;R0+R2A和CYMOV R4,AMOV A,R1ADDC A,R3 ;R1+R3+CYA和CYMOV R5,A又例: 先做67H+20H=87H,没有超过0FFH,因此最终保存在A中的是87H,而PSW中的CY=0。 然后再做10H + 30H + CY,结果是40H,所以最终的结果是4087H。1067H+3020H0001 0000 0110 0111 0011 0000 0010 0000 0100 0000 1000 0111 1067H3020H4087H实验验证一下本例设:1067H存在R1R0中, 3020H存在R3R2中,计算R1R0+R3R2,结果存在R5R4中。(3) 加1指令(5条)INC A ;A+1A,影响P标志INC Rn ;Rn+1RnINC direct;(direct)+1(direct)INC Ri ;(Rn)+1(Rn)INC DPTR ;DPTR+1DPTR功能很简单,就是将后面目标中的值加1。例:A=12H,R0=33H,(21H)=32H, (34H)=22H,DPTR=1234H。连续执行下面的指令: INC A INC R0 INC 21H INC R0 INC DPTR; A=13H; R0=34H;(21H)=33H;(34H)=23H; DPTR=1235H2. 减法指令(8条)SUBB A,Rn ; ARnCYASUBB A,direct ; A(direct )CYASUBB A,Ri ; A(Ri)CYASUBB A,#data ; AdataCYA将A中的值减去源操作数所指内容以及进位位C中的值,最终结果存在A中。如: SUBB A,R2设: A=C9H,R2=55H,CY=1,执行指令之后,A中的值为73H。(1) 带借位的减法指令(4条)说明:没有不带借位的减法指令,如果需要做不带位的减法指令(在做第一次相减时),只要将CY清零即可。对带符号数,要注意OV标志。OV=1,出错。2. 减1指令(4条)DEC A;A-1A,影响P标志DEC Rn;Rn-1RnDEC direct ;(direct)-1(direct)DEC Ri;(Rn)-1(Rn) 与加1指令类似。DA A在进行BCD码加法运算时,跟在ADD和ADDC指令之后,用来对BCD码加法运算结果进行自动修正。例:A=0001 0101 BCD(代表十进制数15) ADD A,#83. 十进制调整指令(1条); A=1DH,按二进制规律加; A=23H,按十进制规律加DA A【例3-12】编写程序完成68+89的BCD加法程序,并对调整过程进行分析。解:二进制加法和十进制调整过程为:4. 乘法指令(1条)MUL AB ;ABBA此指令的功能是将A和B中的两个8位无符号数相乘,两数相乘结果一般比较大,因此最终结果用1个16位数来表达,其中高8位放在B中,低8位放在A中。在乘积大于FFH时,0V置1,否则OV为0;而CY总是0。例: A=4EH,B=5DH,执行指令MUL AB后,乘积是1C56H,所以在B中放的是1CH,而A中放的则是56H。OV= P= 1 05. 除法指令(1条)DIV AB;AB的商A,余数B此指令的功能是将A中的8位无符号数除B中的8位无符号数(A/B)。除了以后,商放在A中,余数放在B中。CY和OV都是0。如果在做除法前B中的值是00H,也就是除数为0,那么0V=1。如:A=11H,B=04H,执行指令DIV AB后,结果:A=04H,B=1。CY=OV= P=001总 结算数运算类指令对标志位的影响 :练习试编写1234H-0FA3H的程序段,将结果高8位存入51H, 低8位存入50H单元。MOV A,#34HSUBB A,#0A3HMOV 50H,AMOV A,#12HSUBB A,#0FHMOV 51H,ACLR C3.3.3 逻辑运算指令 (24条)主要用于对2个操作数按位进行逻辑操作,结果送到A或直接寻址单元。 主要操作 与、或、异或、移位、取反、清零等。 对标志位的影响 除了目的操作数为ACC的指令影响奇偶标志P外,一般不影响标志位。Logic Operations1逻辑“与”指令(6条) ANL A,Rn ;ARnAANL A,direct ;A(direct)AANL A,Ri ;A(Ri)AANL A,#data ;AdataAANL direct,A ;(direct)A(direct)ANL direct,#data ;(direct)data(direct)例:71H和56H相与:01110001 (71H) )01010110 (56H) 01010000 即50H后两条指令,若直接地址为I/O端口,则为“读改写”操作。 ANd Logic Instruction例:MOV A,#45HMOV R1,#25HMOV 25H,#79HANL A,R1ANL 25H,#15HANL 25H,A;A=45H;R1=25H;(25H)=79H;45H79H = 41HA; 79H15H = 11H (25H); 11H41H = 01H (25H)实验验证一下本例2. 逻辑或指令(6条)ORL A,Rn ;ARnAORL A,direct ;A(direct)AORL A,Ri ;A(Ri)AORL A,#data;AdataAORL direct,A;(direct)A(direct)ORL direct,#data ;(direct)data(direct)例:71H和56H相或:01110001 (71H) ) 01010110 (56H) 01110111 即77H后两条指令,若直接地址为I/O端口,则为“读改写”操作。 OR Logic Instruction例:MOV A,#45HMOV R1,#25HMOV 25H,#39HORL A,R1ORL 25H,#13HORL 25H,A;A=45H;R1=25H;(25H)=39H;45H39H = 7DHA;39H13H = 3BH (25H); 3BH7DH =7FH (25H)实验验证一下本例例:71H和56H相异或: 01110001 (71H) ) 01010110 (56H) 3. 逻辑异或指令(6条)XRL A,Rn ;A RnAXRL A,direct ;A (direct)AXRL A,Ri ;A (Ri)AXRL A,#data ;A dataAXRL direct,A ;(direct) A(direct)XRL direct,#data ;(direct) data(direct)00100111 即27H后两条指令,若直接地址为I/O端口,则为“读改写”操作。 eXclusive-oR Logic Instruction例:MOV A,#45HMOV R1,#25HMOV 25H,#39HXRL A,R1XRL 25H,#13HXRL 25H,A;A=45H;R1=25H;(25H)=39H; 45H39H = 7CHA; 39H13H = 2AH (25H);2AH7CH =56H (25H)实验验证一下本例4. 清0与取反指令(2条)取反:CPL A ;/AA例:若A=5CH,执行CPL A 结果:A=A3H清0:CLR A ;0A3.3.4 循环移位指令(4条)RL ARR ARLC ARRC A后两条指令,影响P标志和CY。 Rotate Logic instruction例:若A=5CH,CY=1,执行RLC A后, 对RLC、RRC指令,在CY=0时RLC相当于乘以2RRC相当于除以2结果:A=B9H,CY=0,P=1综合举例:ANL A,#0FH ;屏蔽A的高4位SWAP AANL P1,#0FH ;清P1口高4位ORL P1,A ;P1口高4位输出A的低4位; 把累加器A中的低4位状态,通过P1口的高4位输出, P1口的低4位状态不变。3.3.5 控制转移类指令( 17条) Branching Instruction共有控制程序转移类指令(不包括位操作类的转移指令)。此类指令一般不影响PSW。包括以下类型:无条件转移和条件转移相对转移和绝对转移长转移和短转移调用与返回指令1. 无条件转移类指令(4条) 短转移类指令:AJMP addr11 长转移类指令:LJMP addr16 相对转移指令:SJMP rel 间接转移指令:JMP A+DPTR(1)上面的前三条指令,统统理解成:PC值改变,即跳转到一个标号处。 那么他们的区别何在呢?跳转的范围不同。 短转移类指令:AJMP addr11 长转移类指令:LJMP addr16 相对转移指令:SJMP rel转移范围:2KB64KB-128+127指令构成不同。 AJMP、LJMP后跟的是绝对地址, 而SJMP后跟的是相对地址。 指令长度不同 原则上,所有用SJMP或AJMP的地方都可以用 LJMP来替代。间接转移指令:JMP A+DPTR 这条指令的用途也是跳转,转到什么地方去呢?这可不能由标号简单地决定了。 转移地址由A+DPTR形成,并直接送入PC。指令对A、DPTR和标志位均无影响。 本指令可代替众多的判别跳转指令,又称为散转指令,多用于多分支程序结构中。(2)第四条指令与前三条指令相比有所不同例: MOV DPTR,#TAB ;将TAB代表的地址送入DPTR JMP A+DPTR ;跳转TAB: AJMP ROUT0 ;跳转ROUT0开始的程序段TAB+2: AJMP ROUT1 ;跳转ROUT1开始的程序段TAB+4: AJMP ROUT2 ;跳转ROUT2开始的程序段TAB+6: AJMP ROUT3 ;跳转ROUT3开始的程序段 .ROUT0: .ROUT1: .ROUT2: .ROUT3:执行该段程序后,程序将根据A中的内容转移到不同的程序段去执行-散转。A=0,转ROUT0A=2,转ROUT1A=4,转ROUT2A=6,转ROUT32. 条件转移指令(8条)条件转移指令是指在满足一定条件时进行相对转移,否则程序继续执行本指令的下一条指令。(1)判A内容是否为0转移指令(2条) JZ rel ;如果A=0,则转移,否则顺序执行。 JNZ rel ;如果A0,就转移。转移到相对于当前PC值的8位移量的地址去。即: 新的PC值=当前PC+偏移量rel我们在编写汇编语言源程序时,可以直接写成: JZ 标号 ;即转移到标号处。例: MOV A,R0 JZ L1 MOV R1,#00H AJMP L2 L1: MOV R1,#0FFH L2: SJMP L2 END 在执行上面这段程序前:如果R0=0,结果R1=0FFH。而如果R00,则结果是R1=00H。 把上面的那个例子中的JZ改成JNZ,看看程序执行的结果是什么? 如果R0=0,结果R1=00H。如果R0 0,结果是R1中的值为0FFH。(2)比较不等转移指令(4条)CJNE A,#data,rel CJNE A,direct,relCJNE Rn,#data,relCJNE Ri,#data,rel此类指令的功能是将两个操作数比较,如果两者相等,就顺序执行,如果不相等,就转移。同样地,使用时,我们可以将rel理解成标号,即:CJNE A,#data,标号CJNE A,direct,标号CJNE Rn,#data,标号CJNE Ri,#data,标号利用这些指令,可以判断两数是否相等。但有时还想得知两数比较之后哪个大,哪个小,本条指令也具有这样的功能:如果两数不相等,则CPU还会用CY(进位位)来反映哪个数大,哪个数小。如果前面的数大,则CY=0,否则CY=1。因此在程序转移后再次利用CY就可判断出哪个数大,哪个数小了。举例:比较两数大小 MOV A,R0 CJNE A,#10H,L1 MOV R1,#0 ;如R0=10H,则不转移R1=00H AJMP L3L1:JC L2 ;如CY=1即 R010H,则转移 AJMP L3L2:MOV R1,#0FFHL3:SJMP L3因此最终结果是:本程序执行前,如果R0=10H,则R1=00H;如果R010H,则R1=0AAH;如果R010H,则R1=0FFH。(3)减1不为0转移指令(2条)DJNZ Rn,relDJNZ direct,relDJNZ指令的执行过程是这样的:它将第一个参数中的值减1,然后看这个值是否等于0,如果等于0,就往下执行,如果不等于0,就转移到第二个参数所指定的地方去。例: DJNZ 10H,LOOP .LOOP: .例: MOV 23H,#0AH CLR ALOOP: ADD A,23H DJNZ 23H,LOOP SJMP $上述程序段的执行过程是:将23H单元中的数连续相加,存至A中,每加一次, 23H单元中的数值减1,直至减到0,共加(23H)次。3子程序调用和返回 (1)调用指令(2条) LCALL addr16 ;长调用指令(3字节) ACALL addr11 ;短调用指令(2字节)上面两条指令都是在主程序中调用子程序,两者的区别:对短调用指令,被调用子程序入口地址必须与调用指令的下一条指令的第一字节在相同的2KB存储区之内。使用时可以用: LCALL 标号 ;标号表示子程序首地址 ACALL 标号 来调用子程序。指令的执行过程是:当前PC压栈,子程序首地址送 PC,实现转移。(2)返回指令 (2条)子程序执行完后必须回到主程序,如何返回呢?只要执行一条返回指令就可以了。RET;子程序返回指令RETI;中断子程序返回指令两者不能互换使用。4. 空操作指令(1条) NOP空操作,就是什么事也不干,停一个周期,一般用作短时间的延时。RET指令的执行过程是:堆栈栈顶内容(2字节,调用时保存的当前PC值)弹出给PC,实现返回。RETI指令除了具有RET指令的功能实现程序返回外,还有对中断优先级状态触发器的清零。3.3.6 位操作指令 ( 17条)Boolean OperationsMCS-51单片机的硬件结构中,有一个位处理器(又称布尔处理器),它有一套位变量处理的指令集,包括位变量传送、逻辑运算、控制程序转移等。在MCS-51 中,有一部份RAM和一部份SFR是具有位寻址功能的。位操作区:内部RAM的20H-2FH这16个字节单元,即128个位单元(位地址空间位007FH);可以位寻址的特殊功能寄存器:8031中有一些SFR是可以进行位寻址的,这些SFR的特点是其字节地址均可被8整除, 如A累加器,B寄存器、PSW、IP(中断优先级控制寄存器)、 IE(中断允许控制寄存器)、SCON(串行口控制寄存器)、TCON(定时器/计数器控制寄存器)、P0-P3(I/O端口锁存器)。 在进行位处理时, CY用作“位累加器” 。 以PSW中位4( RS1 )为例。直接(位)地址方式:如 D4H;点操作符号方式:如 PSW.4,D0H.4;位名称方式:如 RS1;用户定义名方式:如用伪指令 bitSUB.REG bit RS1定义后,可用SUB.REG代替RS1。位地址表达方式1位传送指令 (2条) MOV C,bit;bit CMOV bit,C;C bit这组指令的功能是实现位累加器(CY)和其它位地址之间的数据传递。例:MOV C,P1.0;将P1.0的状态送给C。 MOV P1.0,C ;将C中的状态送到P1.0 ;引脚上去。3. 逻辑运算指令 (4条) 位与指令 ANL C,bit ;Cy与指定位的值相与,结果送CyANL C,/bit ;先将指定的位地址中的值取出后
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:大学单片机原理与应用-胡辉-PPT文稿资料课件PPT
链接地址:https://www.renrendoc.com/p-21836274.html

官方联系方式

2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2025  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

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