C51控制转移类指令及位操作指令
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
AJMP 0B11H
;转移无效
14
80C5设有丰富的控制转移指令,可分为无条件转 移指令、条件转移指令、循环转移指令、子程序调用 和返回指令及空操作指令等。
采用助记符有:AJMP、LJMP、SJMP、JZ、 JNZ、CJNE、DJNZ、ACALL、LCALL、RET、 RETI、NOP等13种。
2
可编辑ppt
条件转移指令
条件转移指令仅仅在满足指令中规定的条件(如累 加器内容是否为零,两个操作数是否相等) 时才执行无 条件转移,否则程序顺序执行。
其指令格式为: CJNE(操作数1),(操作数2),rel 数值比较转移指令是三字节指令,是80C51单片微机
指令系统中仅有的四条三个操作数的指令,在程序设计中非 常有用。同时具有比较转移和数值大小比较的功能。
5
可编辑ppt
比如 CJNE Rn,#data,rel指令
这组指令的功能是对指定的两操作数进行比较,即 (操作数1)-(操作数2) ,但比较结果均不改变两个操作数 的值,仅影响标志位CY。 • 若不等,程序转移到(PC)十3加上第三字节带符号 的8 位偏移量(rel)所指向的目标地址;
10
可编辑ppt
无条件转移指令
指令 SJMP rel AJMP addr11 LJMP addrl6 JMP @A+DPTR 这类指令的功能是程序无条件地转移到各自指定 的目标地址去执行,不同的指令形成的目标地址不同。
11
可编辑ppt
1. 长转移指令
LJMP addr16
该指令提供16位地址,目标地址由指令第二字 节(高8位地址)和第三字节(低8位地址)组成。因此,程 序转向的目标地址可以包含程序存储器的整个64 KB 空间。
满足各自条件时,程序转向指定的目标地址执行(相当于执 行SJMP rel) 。当不满足各自条件时,程序顺序往下执行。
偏移量rel是用补码形式表示的带符号的8 位数,因此.程序 转移的目标地址为指令前128 B或指令后 127 B。
这些指令执行后不影响任何操作数和标志位。
4
可编辑ppt
⒉ 数值比较转移指令 CJNE A,direct,rel CJNE A,#data,rel CJNE Rn,# data,rel CJNE @Ri,#data,rel
若(操作数1) >(操作数2),清进位标志(CY)。 若(操作数1) <(操作数2),则置位进位标志(CY)。 • 值相等,程序继续执行。
程序转移的范围是从(PC)+3为起始的+127~一128B 的单元地址。
6
可编辑ppt
例:温度控制程序
某温度控制系统,A中存温度采样值Ta,(20H)=温度下限 值T20,(30H)=温度上限值T30。若Ta>T30,程序转降温JW, 若Ta<T20,程序转升温SW,若T30≥Ta≥T20程序转FH返回主程 序。
减1条件转移指令
DJNZ Rn,rel DJNZ direct,rel 指令功能是:每执行一次本指令,先将指定的Rn或 direct的内容减1,再判别其内容是否为0。若不为0, 转向目标地址,继续执行循环程序;若为0,则结束 循环程序段,程序往下执行。
8
可编辑ppt
例:某应用系统外扩了8K字节RAM,要求把内部 RAM的20H~2FH单元内容发送到外部RAM的 800H~80FH单元中。
6条指令可分为累加器判零转移指令、数值比较 转移指令和减1条件转移指令。
3
可编辑ppt
⒈ 累加器判零转移指令
JZ rel
;若(A)=0,则(PC)=(PC+2)+rel
;若(A)≠0,则(PC)=(PC)+2
JNZ rel
;若(A)≠0,则(PC)= (PC+2)+rel
;若(A)=0,则(PC)=(PC)+2
例:设(PC)=0123H,标号ADR所指单元地址为 3456H。
执行指令∶ LJMP ADR
执行结果为(PC)=3456H
程序转向3456H单元执行。
12
可编辑ppt
⒉ 绝对转移指令 AJMP addr11 该指令提供11位地址,目标地址由指令提供的
11位地址去取代当前PC的低11位,形成新的PC值, 即为本绝对转移地址。因此,程序的目标地址必须包 含AJMP指令后第一条指令的第一个字节(即当前PC 地址)在内的2 KB范围内(即高5位地址必须相同)。
第三章 80C51单片机指令系统
本讲教学内容: 控制转移类指令
可编辑ppt
1
控制转移类指令
程序的顺序执行是由PC自动加1来实现的,但在 应用系统中,往往会遇到一些情况,需要强迫改变程 序执行顺序,比如调用子程序,比如根据检测值与设 定值的比较结果要求程序转移到不同的分支入口等。 要改变程序的执行顺序进行分支转向,应通过强迫修 正PC值得方法来实现,这就是控制转移类指令的基本 功能。
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:------
; 升温
7
可编辑ppt
13
可编辑ppt
例:设(PC)=0456H,标号ADR所指的单元为0123H。 执行指令∶ AJMP ADR 执行结果程序转向为(PC)=0123H。
例: 0000H 21 11 07FEH 81 10
0100H
AJMP 0111H ;转移有效
AJMP 0C10H ;当前PC值为0800H ;转移有效
执行指令:
MOV
DPTR,#800H
MOV
R0,#20H
MOV
R7,#10H
AGAIN:MOV A,@R0
MOVX Fra Baidu bibliotekDPTR,A
INC R0
INC DPTR
DJNZ R7,AGAIN
?:请将以上循环控制改用CJNE指令来实现 ?:请将以上循环控制改用JZ指令来实现
9
可编辑ppt
请看Keil C下演示实例,程序段如下: ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV A,#01H JZ Lable1 DEC A JZ Lable2 NOP Lable1: NOP Lable2: MOV B,#0FFH END