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