36 控制转移类指令

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

DE1: DE2:
MOV R7,#200 ;(R7)=200 MOV R6,#200 ;(R6)=200 DJNZ R6,DE2 ;(R6)=(R6)-1,(R6)≠0跳转至DE2 DJNZ R7,DE1 ;(R7)=(R7)-1,(R7)≠0跳转至DE1 MOV P0 , #0FFH ;P0输出FFH,LED全灭 MOV R7,#200 ;(R7)=200 MOV R6,#200 ;(R6)=200 DJNZ R6,DE4 ;(R6)=(R6)-1,(R6)≠0跳转至DE2 DJNZ R7,DE3 ;(R7)=(R7)-1,(R7)≠0跳转至DE1 SJMP START END ;循环 ;结束
控制转移类指令
《单片机原理与应用》教学课件
一、指令介绍
此类指令改变程序的执行顺序——改变当前PC值 无条件转移: (LJMP,AJMP,SJMP,JMP——4条) 条件转移(判断跳转): (JZ,JNZ,CJNE,DJNZ——8条) 子程序调用及返回: (LCALL,ACALL,RET,RETI——4条) 空操作: (NOP——1条) “耗时”一个机器周期。 do nothing!
于0就跳转;等于0则不跳转继续往下走。
《单片机原理及应用》教学课件
CJNE A, #data, rel CJNE A, direct,rel CJNE @Ri,#data, rel CJNE Rn, #data, rel ——将A(或@Ri,或Rn)与#data(或direct)相比
较,其值不相等就跳转;相等则不跳转,继续往 下走。
《单片机原理及应用》教学课件
1、无条件转移:LJMP,AJMP,SJMP,JMP——4条
addr16 长跳转指令 ——可在64K范围内跳转 AJMP addr11 绝对跳转指令 ——可在指令所在的2K范围内跳转 SJMP rel 相对跳转指令 ——可在当前PC-128与+127范围内跳转 JMP @A+DPTR 间接长跳转指令 ——可在以DPTR为基址 + A为偏移量
《单片机原理与应用》教学课件
例如: ORG START: MOV MOV MOV 0000H A ,#20H ;程序开始 ;(A)=20H
P1,#0FFH ;(P1)=FFH A ,P1 ;(A)=(P1),
SJMP START
END
;跳转至START位置
;结束
程序无限循环执行。
《单片机原理与应用》教学课件
《单片机原理与应用》教学课件
源程序: ORG 0000H ;程序开始
START: MOV P0 , #00H
;P0输出00H,LED全亮
MOV P0 , #0FFH ;P0输出FFH,LED全灭 SJMP START END ;循环 ;结束
《单片机原理与应用》教学课件
源程序:
ORG 0000H START: MOV P0 , #00H ;程序开始 ;P0输出00H,LED全亮
《单片机原理与应用》教学课件
《单片机原理与应用》教学课件
例如: ORG 0000H ;程序开始
MOV STR: MOV DJNZ MOV NOP END
R2 , #6 A , #20H ;(A)=20H R2 , STR ;(R2)-1不为0跳转至STR A , #0ABH ;(A)=ABH
;结束
《单片机原理与应用》教学课件
《单片机原理及应用》教学课件
3、子程序调用及返回: (LCALL,ACALL,RET,RETI——4条)
LCALL addr16 子程序长调用指令 ——可在64K范围内调用子程序 ACALL addr11 子程序绝对调用指令 ——可在指令所在的2K范围内调用子程序
RET 子程序返回指令 ——子程序结束并返回调用的下一条指令 RETI 中断服务子程序返回指令 ——中断结束/返回被打断处的下一条指令
例如: ORG 0000H ;程序开始
MOV
DE1: DE2: MOV
R7 , #200
R6 , #200
;(R7)=200
;(R6)=200 ;(R6)-1不为0跳转至DE2 ;(R7)-1不为0跳转至DE1 ;结束
DJNZ R6 , DE2 DJNZ R7 , DE1 END
本段程序实现延时。
(2)DJNZ Rn条件转移指令
控制程序执行的方向,使程序从一个地方转到 另一个地方去执行。 指令形式:DJNZ Rn,指令标号
指令功能:Rn指工作寄存器R0-R7。
指令标号用于标记指令的位置 。
(Rn)=(Rn)-1;判断Rn中的数据是否 为零;若(Rn)≠0程序将转到指令标 号对应的位置去执行,若(Rn)=0将 顺序向下执行。 注意:执行本指令控制程序转移是有前提条件 的,条件满足才发生程序转移。
《单片机原理与应用》教学课件
(3)NOP 空操作指令
指令功能:不执行任何操作,具有执行时间,
通常用来实现延时功能。
例如: ORG NOP NOP 0000H ;程序开始
NOP
END ;结束
《单片机原理与应用》教学课件
三、LED发光二极管闪烁编程
单片机P0端口引脚接 LED发光二极管电路。 P0.0 — P0.7接D1—D7 输出高电平 — LED灭 输出低电平 — LED亮 编程: 控制LED发光二极 管全亮全灭闪烁。
《单片机原理及应用》教学课件
二、主要指令重点分析
(1)SJMP无条件转移指令
控制程序执行的方向,使程序从一个位置转到另一个 位置去执行。 指令形式:SJMP 指令标号
指令功能:指令标号用于标记指令的位置 。 执行本指令,程序将转到指令标
号对应的位置去执行。
注意:执行本指令不需要条件约束,一经执 行即会发生程序转移。
DE3: DE4:
《单片机原理与应用》教学课件
四、按键控制LED发光二极管亮灭编程
分析: 取P3端口的数据给P0端口。
《单片机原理与应用》教学课件
源程序: ORG 0000H ;程序开始
START: MOV P3 , #0FFH ;端口输入,先输出高电平
MOV P0 , P3 SJMP START END ;读取P3端口数据给P0端口 ; 循环 ;结束
Baidu Nhomakorabea
LJMP
之和所指向的64K程序范围内跳转
《单片机原理及应用》教学课件
2、条件转移:JZ,JNZ,CJNE,DJNZ——8条 JZ rel JNZ rel ——根据Acc的内容是否为0决定是否跳转 DJNZ direct,rel DJNZ Rn, rel ——将direct(或Rn)里的内容减 1,结果不等
相关文档
最新文档