单片机原理与应用第二版第三章(黄友锐)课件.ppt
文本预览下载声明
4. 空操作指令(1) NOP ;PC ← PC+1 这是一条单字节指令。执行时,不作任何操作(即空操作),仅将程序计数器PC的内容加1,使CPU指向下一条指令继续执行程序。这条指令常用来产生一个机器周期的时间延迟。 返回本节 3.4.5 位操作指令(17) 1.位传送指令 MOV C,bit ;C←(bit) MOV bit,C ;bit←C 2.位状态修改指令(位清零和置位) CLR C ;C←0 CLR bit ;(bit)←0 SETB C ;C←1 SETB bit ;(bit)←1 3.位逻辑运算指令 ANL C,bit ;C←C∧(bit) ANL C,/bit ;C←C∧(/bit) ORL C,bit ;C←C∨(bit) ORL C,/bit ;C←C∨( / bit) CPL C CPL bit 4.位控制转移指令 JC rel ; 若C=1, 则转移(PC←PC+2+rel);否则程序顺序执行 JNC rel ; 若C=0, 则转移(PC←PC+2+rel);否则程序顺序执 JB bit,rel ; 若(bit)=1, 则转移(PC←PC+3+rel);否则程序顺序执行 JNB bit,rel ; 若(bit)=0, 则转移(PC←PC+3+rel);否则程序顺序执行 JBC bit,rel ; 若(bit)=1, 则PC←PC+3+rel,(bit)←0;否则程序顺序执行 功能:分别检测指定位是1还是0,若条件符合,则CPU转向指定的目标地址去执行程序;否则,顺序执行下条指令。 返回本节 7.读程序存储器 MOVC A,@A+DPTR;A ← (A+DPTR) MOVC A,@A+PC ;A ← (A+PC) 例如 已知A=30H,DPTR=3000H, 程序存储器单元(3030H)=50H,执行 MOVC A,@ A+DPTR后,结果? A=50H。 【例3.2】查表求0~9的平方值。 ORG 1000H START: MOV DPTR,#2000H MOV A,#NUMB ;NUMB=0~9 MOVC A,@ A+DPTR SJMP $ 2000H: DB 0,1,4,9,16,25,36,49,64,81 例3.3 查表将累加器A中的0~9的二进制数转换成ASCII码。 ORG 2000H START: MOV A,#NUMB ;NUMB=0~9 ADD A,#02H ;修正地址 MOVC A,@ A+PC SJMP $ TAB : DB ‘0’,‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’ 8.堆栈操作 所谓堆栈是在片内RAM中按“先进后出,后进先出”原则设置的专用存储区。数据的进栈出栈由指针SP统一管理。堆栈的操作有如下两条专用指令: PUSH direct;SP←(SP+1),(SP)←(direct) POP direct;(direct)←(SP),SP ← SP-1 PUSH是进栈(或称为压入操作)指令。指令执行过程如图3-7所示。 POP是出栈(或称为弹出操作)指令。指令执行过程如图3-8所示。 片内RAM 30H 11H 10H SP ×× 片内RAM 50H 40H 11H 10H SP ×× 40H 30H 片内RAM 50H 40H 11H 10H 50H ×× SP 30H 片内RAM 40H 11H 10H 34H ×× SP 30H 34H 34H ×× ×× 执行前 执行前 执行前PUSH指令后 执行POP指令后 图3-7 指令PUSH操作示意图 图3-8 指令POP操作示意图 9.数据交换 l????字节交换 XCH A,Rn ;A= Rn XCH A ,direct ;A=(direct) XCH A,@Ri ;A=(Ri) l????半字节交换 XCHD A,@Ri ;A0~3=(Ri)0~3 SWAP A ;A0~3=A4~7 【3.4】将片内RAM 30H单元与40H单元中的内容互换。 方法1(直接地址传送法): MOV 31H,30H MOV 30H,40H MOV 40H,31H SJMP $ 方法2(间接地址传送法): MOV R0,#40H MOV R1,#30H MOV A,@R0 MOV B,@R1 MOV @R1
显示全部