版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章第三章 80C51单片机指令系统单片机指令系统本讲教学内容:控制转移类指令控制转移类指令控制转移类指令程序的顺序执行是由PC自动加1来实现的,但在运用系统中,往往会遇到一些情况,需求强迫改动程序执行顺序,比如调用子程序,比如根据检测值与设定值的比较结果要求程序转移到不同的分支入口等。要改动程序的执行顺序进展分支转向,应经过强迫修正PC值得方法来实现,这就是控制转移类指令的根本功能。80C5设有丰富的控制转移指令,可分为无条件转移指令、条件转移指令、循环转移指令、子程序调用和前往指令及空操作指令等。采用助记符有:AJMP、LJMP、SJMP、JZ、JNZ、CJNE、DJNZ、ACALL、L
2、CALL、RET、RETI、NOP等13种。条件转移指令仅仅在满足指令中规定的条件(如累加器内容能否为零,两个操作数能否相等)时才执行无条件转移,否那么程序顺序执行。6条指令可分为累加器判零转移指令、数值比较转移指令和减1条件转移指令。条件转移指令条件转移指令 累加器判零转移指令累加器判零转移指令J Zr e l; 假 设; 假 设 ( A ) = 0 , 那 么, 那 么(PC)=(PC+2)+rel;假设;假设(A)0,那么,那么(PC)=(PC)+2JNZ rel;假设;假设(A)0,那么,那么(PC)= (PC+2)+rel ;假设;假设(A)=0,那么,那么(PC)=(PC)+2 满
3、足各自条件时,程序转向指定的目的地址执行满足各自条件时,程序转向指定的目的地址执行(相当于执相当于执行行SJMP rel) 。当不满足各自条件时,程序顺序往下执行。当不满足各自条件时,程序顺序往下执行。 偏移量偏移量rel是用补码方式表示的带符号的是用补码方式表示的带符号的8 位数,因此程序位数,因此程序转移的目的地址为指令前转移的目的地址为指令前128 B或指令后或指令后 127 B。 这些指令执行后不影响任何操作数和标志位。这些指令执行后不影响任何操作数和标志位。 数值比较转移指令数值比较转移指令 CJNE A,direct,rel CJNE A,data,rel CJNE Rn, dat
4、a,relCJNE Ri,data,rel其指令格式为:其指令格式为: CJNE操作数操作数1,操作数,操作数2,rel数值比较转移指令是三字节指令,是数值比较转移指令是三字节指令,是80C51单片微机单片微机指令系统中仅有的四条三个操作数的指令,在程序设计中非指令系统中仅有的四条三个操作数的指令,在程序设计中非常有用。同时具有比较转移和数值大小比较的功能。常有用。同时具有比较转移和数值大小比较的功能。这组指令的功能是对指定的两操作数进展比较,即(操作数1)(操作数2) ,但比较结果均不改动两个操作数的值,仅影响标志位CY。 假设不等,程序转移到(PC)十3加上第三字节带符号 的8位偏移量re
5、l所指向的目的地址; 假设(操作数1) (操作数2),清进位标志CY。 假设(操作数1) (操作数2),那么置位进位标志CY。 值相等,程序继续执行。 程序转移的范围是从PC3为起始的127一128B的单元地址。 比如比如 CJNE RnCJNE Rn,#data#data,relrel指令指令 例:温度控制程序例:温度控制程序 某温度控制系统,某温度控制系统,A中存温度采样值中存温度采样值Ta,(20H)=温度下限温度下限值值T20,(30H)=温度上限值温度上限值T30。假设。假设TaT30,程序转降温,程序转降温JW,假设假设TaT20,程序转升温,程序转升温SW,假设,假设T30TaT
6、20程序转程序转FH前往前往主程序。主程序。CJNE A,30H , LOOP AJMP FH ;等于;等于T30,转,转FH LOOP: JNC JW ;大于;大于T30,降温,降温CJNE A,20 H,LOOP1 AJMP FH ;等于;等于T20,转,转FH LOOP1:JC SW ;小于;小于T20,升温,升温 FH:- ;保温;保温 JW:- ; 降温降温 SW:- ; 升温升温DJNZ Rn,relDJNZ direct,rel指令功能是:每执行一次本指令,先将指定的Rn或direct的内容减1,再判别其内容能否为0。假设不为0,转向目的地址,继续执行循环程序;假设为0,那么终了
7、循环程序段,程序往下执行。减减1 1条件转移指令条件转移指令例:某运用系统外扩了例:某运用系统外扩了8K字节字节RAM,要求把内部,要求把内部RAM的的20H2FH单元内容发送到外部单元内容发送到外部RAM的的800H80FH单元中。单元中。 执行指令:执行指令: MOV DPTR,#800H MOV R0,#20H MOV R7,#10HAGAIN:MOV A,R0 MOVX DPTR,A INC R0 INC DPTR DJNZ R7,AGAIN ?:请将以上循环控制改用?:请将以上循环控制改用CJNE指令来实现指令来实现?:请将以上循环控制改用?:请将以上循环控制改用JZ指令来实现指令来
8、实现 请看请看Keil C下演示实例,程序段如下:下演示实例,程序段如下:ORG 0000HLJMP MAINORG 0030HMAIN:MOV A,#01HJZ Lable1DEC AJZ Lable2NOPLable1:NOPLable2:MOV B,#0FFHEND指令SJMPrelAJMPaddr11LJMPaddrl6JMPADPTR这类指令的功能是程序无条件地转移到各自指定的目的地址去执行,不同的指令构成的目的地址不同。无条件转移指令无条件转移指令1. 长转移指令长转移指令 LJMP addr16该指令提供该指令提供16位地址,目的地址由指令第二字位地址,目的地址由指令第二字节节(
9、高高8位地址位地址)和第三字节和第三字节(低低8位地址位地址)组成。因此,程组成。因此,程序转向的目的地址可以包含程序存储器的整个序转向的目的地址可以包含程序存储器的整个64 KB空间。空间。 例:设例:设PC0123H,标号,标号ADR所指单元地址为所指单元地址为3456H。执行指令执行指令 LJMP ADR执行结果为执行结果为PC3456H程序转向程序转向3456H单元执行。单元执行。 绝对转移指令绝对转移指令AJMP addr11 该指令提供11位地址,目的地址由指令提供的11位地址去取代当前PC的低11位,构成新的PC值,即为本绝对转移地址。因此,程序的目的地址必需包含AJMP指令后第
10、一条指令的第一个字节(即当前PC地址)在内的2KB范围内(即高5位地址必需一样)。例:设例:设PC0456H,标号,标号ADR所指的单元为所指的单元为0123H。执行指令执行指令 AJMP ADR执行结果程序转向为执行结果程序转向为PC0123H。例:例: 0000H 21 11 AJMP 0111H;转移有效;转移有效 07FEH 81 10 AJMP 0C10H ;当前;当前PC值为值为0800H ;转移有效;转移有效 0100H AJMP 0B11H ;转移无效;转移无效3短转移指令:SJMPrel其目的地址是由当前其目的地址是由当前PC程序计数器值和指令的第程序计数器值和指令的第二字节
11、提供的二字节提供的8位带符号的相对地址相加而成的。指令位带符号的相对地址相加而成的。指令可转向指令前可转向指令前128 B或指令后或指令后127 B。rel为为8位带符号数。位带符号数。(PC)=(PC) +2+rel 例:例:2100H 80 FE HERE:SJMP HERE rel:2100H2102H=FFFEH。高。高8位是位是FFH,表示表示负跳负跳,偏移量为偏移量为FEH (2)。这是一条原地踏步指令。这是一条原地踏步指令。可用作程序终了或中断等待。可用作程序终了或中断等待。 当相对地址为当相对地址为FEH (-02) 时,时,SJMP指令实现原地转圈指令实现原地转圈的运转形状。
12、的运转形状。 间接转移指令间接转移指令JMPA+DPTR其目的地址是将累加器其目的地址是将累加器A中的中的8位无符号数与位无符号数与数据指针数据指针DPTR的内容相加而得的内容相加而得(在程序运转时动态决在程序运转时动态决议议)。相加运算不影响累加器。相加运算不影响累加器A和数据指针和数据指针DPTR的原的原内容。假设相加的结果大于内容。假设相加的结果大于64 KB,那么从程序存储,那么从程序存储器的零地址往下延续。当器的零地址往下延续。当DPTR的值固定,而给的值固定,而给A赋赋以不同的值,即可实现程序的多分支转移。照实现键以不同的值,即可实现程序的多分支转移。照实现键盘译码散转功能。盘译码
13、散转功能。 例:设例:设A5,DPTR4567H。执行指令为执行指令为 JMP ADPTR执行结果为执行结果为:(PC)(A)(DPTR)05H 4567H456CH程序转向程序转向456CH单元执行。单元执行。 绝对调用指令绝对调用指令 ACALLaddr11 无条件地调用首址为无条件地调用首址为addr11addr11处的子程序。操作不影响处的子程序。操作不影响标志位。标志位。断点地址自动压栈:把断点地址自动压栈:把PCPC加加2 2以获得下一条指令的地址以获得下一条指令的地址( (当前当前PC),PC),将这将这1616位的地址压进堆栈位的地址压进堆栈( (先先PCLPCL,后,后PCH
14、),PCH),同时栈指针加同时栈指针加2 2。然后将指令提供的。然后将指令提供的 11 11位目的地址,位目的地址,送入送入PC10PC10PC0PC0,而,而 PC15 PC15PC11PC11的值不变,程序转向的值不变,程序转向子程序的首地址开场执行。目的地址由指令第一字节子程序的首地址开场执行。目的地址由指令第一字节的高三位和指令第二字节所组成;的高三位和指令第二字节所组成;所调用的子程序的首地址必需与所调用的子程序的首地址必需与ACALLACALL后面指令的第一后面指令的第一个字节在同一个个字节在同一个2 KB2 KB区域内。区域内。 3.5.4 子程序调用指令子程序调用与前往指令组子
15、程序调用与前往指令组例:设例:设SP60H,PC0123H,子程序,子程序SUBRTN的首地址为的首地址为0456H。 执行指令为执行指令为ACALL SUBRTN 执行结果为执行结果为PC20123H20125HPC,将将PC=0125H压入堆栈:压入堆栈:25H压入压入SP161H,01H压入压入SP十十l62H,此时,此时SP62H。addr11 PC100 , PC=0456H 长调用指令长调用指令 LCALLaddr16 无条件地调用首址为无条件地调用首址为addr16处的子程序。操作不影响标志处的子程序。操作不影响标志位。位。 断点地址自动压栈:把断点地址自动压栈:把 PC加加 3
16、以获得下一条指令的地址,以获得下一条指令的地址,将这将这16位的地址压进堆栈先位的地址压进堆栈先PCL,后,后PCH,同时栈指针,同时栈指针加加2。 将指令第将指令第2和第和第3字节所提供的字节所提供的16位目的地址,送位目的地址,送PC15PC0,程序转向子程序的首地址开场执行。,程序转向子程序的首地址开场执行。 所调用的子程序的首地址可以在所调用的子程序的首地址可以在64 KB范围内。范围内。例:设例:设SP60H,PC0123H,子程序,子程序SUBRTN的首地址为的首地址为3456H。 执行指令为执行指令为 LCALL SUBRTN例:设例:设(SP)62H,RAM中的中的(62H)0
17、lH,(61H)26H。子程序子程序SUBRTN的首地址为的首地址为3456H。 执行指令:执行指令:LCALL SUBRTN 执行结果:执行结果:PC30123H30126HPC。将将PC压入堆栈:压入堆栈:26H压入压入SPl61H中,中,01H压压入入SP1=62H中,此时中,此时SP62H。 (PC)=3456H,执行子程序。执行子程序。3.5.5 前往指令思索:思索:AJMP LJMP 与与 ACALL LCALL的区别?的区别? 3. 子程序前往指令子程序前往指令RET 执行时表示终了子程序,前往调用指令执行时表示终了子程序,前往调用指令ACALL或或LCALL的下一条指令的下一条
18、指令(即断点地址即断点地址),继续往下执行。,继续往下执行。 执行时将栈顶的断点地址送入执行时将栈顶的断点地址送入PC(先先PCH,后,后PCL),并把栈指针减,并把栈指针减2。 3.5.5 前往指令4. 中断前往指令中断前往指令RETI 它除了执行从中断效力程序前往中断时维护的断它除了执行从中断效力程序前往中断时维护的断点处继续执行程序点处继续执行程序 (类似类似RET功能功能)外,并去除内部相外,并去除内部相应的中断形状存放器。应的中断形状存放器。 因此,中断效力程序必需以因此,中断效力程序必需以RETI为终了指令。为终了指令。 CPU执行执行RETI指令后至少再执行一条指令,才指令后至少
19、再执行一条指令,才干呼应新的中断恳求。利用这一特点,可用来实现单干呼应新的中断恳求。利用这一特点,可用来实现单片微机的单步操作。片微机的单步操作。 例:设例:设SP62H,中断时断点是,中断时断点是0123H,RAM中的中的62H0lH,61H23H。 执行指令执行指令RETI结果为:结果为:SP60H,PC0123H 程序回到断点程序回到断点0123H处继续执行。去除内部相处继续执行。去除内部相应的中断形状存放器。应的中断形状存放器。 例:从P1.7引脚输出5个方波MOVR2,#11;5个方波,10个形状LOP:CPLP1.7;P1.7形状变反LCALLDelayDJNZR2,LOPHERE
20、:SJMPHEREDelay:MOVR5,#255LOOP2:MOVR4,#255LOOP1:NOPNOPDJNZR4,LOOP1DJNZR5,LOOP2RET第三章第三章 80C51单片机指令系统单片机指令系统本讲教学内容:位操作指令布尔位操作类指令布尔位操作类指令 80C51内部有一个布尔位处置器,具有较强内部有一个布尔位处置器,具有较强的布尔变量处置才干。的布尔变量处置才干。 布尔处置器实践上是一位的微处置机,它以进位布尔处置器实践上是一位的微处置机,它以进位标志标志CY作为位累加器,以内部作为位累加器,以内部RAM的的20H至至2FH单单元及部分特殊功能存放器为位存储器,以元及部分特殊
21、功能存放器为位存储器,以P0、P1、P2、P3为位为位I/O。对位地址空间具有丰富的位操作指令,。对位地址空间具有丰富的位操作指令,包括布尔传送指令、布尔形状控制指令、位逻辑操作包括布尔传送指令、布尔形状控制指令、位逻辑操作指令及位条件转移指令。助记符有指令及位条件转移指令。助记符有MOV、CLR、CPL、SETB、ANL、ORL、JC、JNC、JB、JNB、JBC等等11种。种。布尔操作类指令中位地址可用以下多种方式表示,这些方式均能为80C51的汇编程序所识别:直接用位地址0255或0FFH表示;采用字节地址的位数方式表示,两者之间用“隔开,如:20H0;1FH7等采用字节存放器名加位数表
22、示,两者之间用“隔开,如:P15;PSW5等;采用位存放器的定义称号表示,如:F0。如:位地址D5H、F0、D0.5、PSW.5等表示的是同一位。MOVC,bit;CbitMOVbit,C;bitC功能:将源操作数位地址或布尔累加器送到目的操作数布尔累加器或位地址中去。布尔传送指令布尔传送指令例:设例:设C=1,执行指令执行指令: MOV P13,C,执行结果为执行结果为 P13口线输出口线输出“l。例:设例:设P1口的内容为口的内容为00111010B,执行指令执行指令: MOV C,P13,执行结果为执行结果为C1。 3.6.1 布尔传送指令1位去除CLR指令CLRC;C0CLRbit;b
23、it0功能:将C或指定位bit清0。例:设P1口的内容为11111010B,执行指令为CLRP10后,(P1)=11111010B。2位置1(SETB)指令SETBC;ClSETBbit;bit1功能:将C或指定位bit置1。布尔形状控制指令布尔形状控制指令例:设例:设C0,P3口的内容为口的内容为1 1 1 1 1 0 1 0 B。 执行指令为执行指令为SETB P30 SETB C 执行结果为执行结果为C1,P301,即,即P31 1 1 1 1 0 1 1 B。3 位取反位取反CPL指令指令 CPL C ;CC CPL bit ;bitbit 功能:将功能:将 C或指定位或指定位bit取
24、反。取反。 例:设例:设C0,P1口的内容为口的内容为0 0 1 1 1 0 1 0 B。 执行指令为执行指令为CPL P1.0 CPL C 执行结果为执行结果为C=1,P1.0=l,即,即P00 0 1 1 1 0 1 1 B。 1位逻辑位逻辑“与与ANL操作指令操作指令 ANL C,bit ;CCbitANL C,bit ;CC(bit) 功能:将指定位功能:将指定位bit的内容或指定位内容取反后原内的内容或指定位内容取反后原内容不变容不变)与与C的内容进展逻辑与运算,结果仍存于的内容进展逻辑与运算,结果仍存于C中。中。 例:设例:设(C)= l,P1口的内容为口的内容为1 1 1 1 1
25、 0 1 1 B,(ACC7)0。执行指令为执行指令为 ANL C,P1.0 ;C1 ANL C,ACC. 7 ;C0 执行结果为执行结果为C0。 布尔布尔( (位位) )逻辑操作指令逻辑操作指令 1位逻辑位逻辑“与与ANL操作指令操作指令 ANL C,bit ;CCbitANL C,bit ;CC(bit) 功能:将指定位功能:将指定位bit的内容或指定位内容取反后原内的内容或指定位内容取反后原内容不变容不变)与与C的内容进展逻辑与运算,结果仍存于的内容进展逻辑与运算,结果仍存于C中。中。 例:设例:设(C)= l,P1口的内容为口的内容为1 1 1 1 1 0 1 1 B,(ACC7)0。
26、执行指令为执行指令为 ANL C,P1.0 ;C1 ANL C,ACC. 7 ;C0 执行结果为执行结果为C0。 布尔布尔( (位位) )逻辑操作指令逻辑操作指令2位逻辑位逻辑“或或ORL操作指令操作指令 ORL C,bit ;CC十十bitORL C,/bit ;CC十十bit 功能:将指定位功能:将指定位bit的内容或指定位内容取反后的内容或指定位内容取反后原内容不变与原内容不变与C的内容进展逻辑或运算。结果仍存于的内容进展逻辑或运算。结果仍存于C中。中。 例:设例:设(C)1,P1 口的内容为口的内容为1 1 1 1 1 0 1 1B,(ACC7)0。 执行的指令为执行的指令为ORL C
27、,P1.0 ;C=1 ORL C,ACC 7 ;C=1 执行结果为执行结果为C1。 l、布尔累加器条件转移指令JCrelJNCrel功能:对布尔累加器C进展检测,当C1或C0时,程序转向当前PC值(转移指令地址+2)与第二字节中带符号的相对地址rel之和的目的地址,否那么程序往下顺序执行。因此转移的范围是128+127B。布尔位条件转移指令布尔位条件转移指令例:设例:设C0执行指令:执行指令: JC LABEL1 ;(C)=0,那么程序顺序往下,那么程序顺序往下执执;行;行 CPL C ;(C)=1,程序转,程序转LABEL2 JC LABEL2 ;以后,进位位取反变为;以后,进位位取反变为l
28、,程序转向,程序转向LABEL2单元执行。单元执行。 例:设例:设C1。执行指令:执行指令: JNCLABEL1 CLR C JNC LABEL2 ;以后,进位位清为;以后,进位位清为0,程序转向,程序转向LABEL2单元执行。单元执行。 2位测试条件转移指令位测试条件转移指令 JB bit,relJNB bit,rel功能:检测指定位,当位变量分别为功能:检测指定位,当位变量分别为1或或 0时,程序转向当前时,程序转向当前PC值值(转移指令地址转移指令地址+2)与第二字节中带符号的相对地址与第二字节中带符号的相对地址rel之和之和的目的地址,否那么程序往下顺序执行。因此转移的范围是的目的地址,否那么程序往下顺序执行。因此转移的范围是128127 B。操作不影响标志位。操作不影响标志位。例:设累加器例:设累加器 A中的内容为中的内容为FEH 1 1 1 1 1 1 1 0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度个人房屋维修贷款担保服务协议3篇
- 二零二五版水电工程材料绿色环保认证采购合同3篇
- 二零二五年度工业用地土地使用权入股合作协议书3篇
- 二零二五年度创新品牌宣传策划服务合同3篇
- 二零二五版水库清淤合同范本:水质净化与水库清淤综合服务协议2篇
- 深圳房屋租赁合同书
- 二零二五年度个人汽车租赁与车辆租赁季卡服务协议
- 家禽采购合同禽类购销合同
- 二零二五年度个人光伏发电贷款合同4篇
- 二零二五年度肉类产品采购合同6篇
- 2024年公需科目培训考试题及答案
- (正式版)SH∕T 3541-2024 石油化工泵组施工及验收规范
- 2024年江苏鑫财国有资产运营有限公司招聘笔试冲刺题(带答案解析)
- 2024年辽宁石化职业技术学院单招职业适应性测试题库含答案
- 初中英语七选五经典5篇(附带答案)
- GB/T 43676-2024水冷预混低氮燃烧器通用技术要求
- 特种设备检验现场事故案例分析
- 广西桂林市2023-2024学年高二上学期期末考试物理试卷
- 财务指标与财务管理
- 2023-2024学年西安市高二数学第一学期期末考试卷附答案解析
- 部编版二年级下册道德与法治第三单元《绿色小卫士》全部教案
评论
0/150
提交评论