第4讲51单片机指令系统讲述.ppt
文本预览下载声明
第四讲 51单片机指令系统 4.1 8051指令系统概述 4.2 寻址方式 4.3 指令说明 4.3.1 数据传送指令 4.3.2 程序转移指令 4.3.3 算术运算指令 4.3.4 逻辑运算操作 4.3.5 位操作指令 4.3.6 十进制指令 4.4 伪指令 4.5 实用程序设计 4.5.2 顺序结构程序设计 4.5.3 分支程序设计 4.5.4 循环程序 4.5.6 子程序设计 4.5.7 汇编语言程序设计举例 (a) 当型循环结构 (b) 直到型循环结构 循环结束? 循环体 Y N 初始化 修改循环参数 结束部分 开始 结束 循环结束? 循环体 Y 初始化 修改循环参数 结束部分 开始 N 结束 循环结构程序流程图 2. 循环程序设计举例 例:不同存储区域之间的数据传输。 将内部RAM 30H单元开始的内容依次传送到外部RAM 0100H单元开始的区域,直到遇到传送的内容是0为止。 (2) 汇编语言源程序。 ORG 0000H MOV R0, #30H; MOV DPTR, #0100H; TRANS: MOV A, @R0 ;A←(R0) MOVX @DPTR, A ;(DPTR)←A CJNE A, #00H, NEXT SJMP FINISH ;A=0,传送完成 NEXT: INC R0 ;修改地址指针 INC DPTR AJMP TRANS ;继续传送 FINISH: SJMP $ END 3.多重循环结构程序 某些复杂问题或者循环数超过256,则需采用多重循环的程序结构,即循环程序中包含循环程序或一个大循环中包含多个小循环程序,称多重循环程序结构,又称循环嵌套。循环的重数不限,但必须每循环的层次分明,不能有相互交叉! 外循环 中循环 内循环 外循环 内循环 外循环 内循环 内循环 (a)嵌套正确 (b)嵌套正确 (c)交叉不正确 多重循环示意图 范例:延时程序设计(晶振12MHz) DEL: MOV R7, #200 DEL1: MOV R6, #125 DEL2: DJNZ R6, DEL2 ;125×2=250 DJNZ R7, DEL1 ;250×200=50ms RET 精确的计算: (250+1+2)×200 + 1=50.301ms MOV Rn #data 是单机器周期指令DJNZ Rn,rel 是双机器周期指令 子程序作为一个具有独立功能的程序段,编程时需遵循以下原则: 1. 子程序的编程原则 (1) 子程序的第一条指令必须有标号,明确子程序入口地址。 (2) 以返回指令RET结束子程序。 (3) 简明扼要的子程序说明部分。 (4) 较强的通用性和可浮动性,尽可能避免使用具体的内存单元和绝对转移地址等。 (5) 注意保护现场和恢复现场。 ;程序名:BCDBIN ;功能:BCD码转换为二进制数 ;入口参数:要转换的BCD码存在累加器A中 ;出口参数:转换后的二进制数存放在累加器A中 ;占用资源:寄存器B BCDBIN: PUSH B ;保护现场 PUSH PSW PUSH ACC ;暂存A的内容 ANL A, #0F0H ;屏蔽掉低4位 SWAP A ;将A的高4位与低4位交换 MOV B,#10 MUL AB ;乘法指令, MOV B,A ;乘积不会超过256, POP ACC ;取原BCD数 ANL A,#0FH ;屏蔽掉高4位 A
显示全部