【大学课件】单片机原理与接口技术 80C51单片机汇编语言程序设计P74.ppt
《【大学课件】单片机原理与接口技术 80C51单片机汇编语言程序设计P74.ppt》由会员分享,可在线阅读,更多相关《【大学课件】单片机原理与接口技术 80C51单片机汇编语言程序设计P74.ppt(74页珍藏版)》请在三一文库上搜索。
1、第4章 80C51单片机汇编语言程序设计,4.1 单片机程序设计语言概述 4.2 汇编语言程序的基本结构形式 4.3 80C51 单片机汇编语言程序设计举例 4.4 单片机汇编语言源程序的编辑和汇编 4.5 80C51 单片机汇编语言伪指令,http:/ 单片机程序设计语言概述,4.1.1 机器语言和汇编语言 1、机器语言 用二进制代码“0”和“1”表示指令和数据的程序设计语言,是计算机能直接识别并执行的指令。 优点:执行速度快、占用内存少。 缺点:识别难、记忆难。 2、汇编语言 用助记符和专门的语言规则表示指令的功能和特征。 优点:助记符与机器指令一一对应。比机器语言直观、 易懂、易记。非常
2、适合于实时控制的需要。 缺点:难以记忆和使用,程序设计的技巧性较高,编程 难度较大。要求使用者必须精通单片机的硬件系 统和指令系统。缺乏通用性,程序不易移植。,http:/ 单片机使用的高级语言,对于8051单片机,现有4种语言支持,即汇编、PL/M、C和BASIC。 C语言最终得到广泛应用。 可以大大提高单片机应用系统研制的开发效率。移植性好。 高级语言的不足:生成的目标代码较长,导致应用程序运行速度较慢。,http:/ 80C51 单片机汇编语言的语句格式,80C51汇编语言的语句格式如下: : ; 1. 标号 是语句地址的标志符号,标号的几点规定: 18个ASCII字符组成,第一个字符必
3、须是字母。 不能使用本汇编语言已经定义的符号作为标号。 标号后面必须跟以冒号“:”。 同一标号在一个程序中只能定义一次。 标号可有可无。,错误的标号 正确的标号 1BT : BT1 BEGIN BEGIN : TA+TB: TATB: ADD: ADD1:,http:/ 操作码 用于规定语句执行的操作内容,用指令助记符表示。不能空缺。 3. 操作数 操作数用于为指令操作提供数据。可以是空白,也可 能有13个操作数,各操作数之间以逗号分隔。 4. 注释 不属于语句的功能部分,只是对语句的解释说明,以 “;”开头。 5. 分界符(分隔符) 用于把语句中的各部分隔开,以便于区分。分界符包 括空格、冒
4、号、分号或逗号等符号。,http:/ 汇编语言程序的基本结构形式,三种基本结构形式:顺序程序结构,分支程序结构, 循环程序结构。 4.2.1 顺序程序结构 顺序结构程序是最简单的程序结构。程序既无分支、循环,也不调用子程序,程序执行时一条接一条地按顺序执行指令。,http:/ (2)确定算法 (3)画流程图 (4)编写程序 (5)上机调试,2、程序设计的一般步骤,当接到程序设计的任务后,首先对任务进行详尽的分析,搞清楚已知的数据和想要得到的结果,程序应该完成何种的功能。明确在程序设计时应该 “做什么” 。,根据实际问题的要求和指令系统的特点,确定解决问题的具体步骤。根据任务要求,对不同的计算方
5、法进行比较,选择最适宜的算法。解决“怎样做”的问题。,将解决问题的具体步骤用一种约定的几何图形、指向线和必要的文字说明描述出来,用图形的方法描绘解决问题的思路。,用指令的形式将程序流程图实现出来。,查错、改错,对程序进行优化。,http:/ (2)确定算法 (3)画流程图 (4)编写程序 (5)上机调试,例:3字节无符号数相加:其中被加数在内部RAM的50H、 51H和52H单元中;加数在内部RAM的53H、54H和55H单元 中;要求把相加之和存放在50H、51H和52H单元中,进位存 放在位寻址区的20H位中。,http:/ R0, #52H;被加数的低字节地址 MOV R1, #55H;
6、加数的低字节地址 MOV A, R0 ADD A, R1 ;低字节相加 MOV R0, A ;存低字节相加结果 DEC R0 DEC R1 MOV A, R0 ADDC A, R1;中间字节带进位相加 MOV R0, A ;存中间字节相加结果 DEC R0 DEC R1 MOV A, R0 ADDC A, R1;高字节带进位相加 MOV R0, A ;存高字节相加结果 CLR A ADDC A, #00H;进位送00H位保存 MOV R0, #20H;存放进位的单元地址 MOV R0, A,http:/ 应给程序段的起始地址赋予一个地址标号,以供选择分支 使用。分支结构又可分为单分支结构和多分
7、支结构。 1. 单分支程序结构 单分支程序结构即二中选一,是通过条件判断实现 的。一般都使用条件转移指令对程序的执行结果进行判 断。 可实现单分支转移的指令有:JZ、JNZ、CJNE和 DJNZ。位状态转移指令:JC、JNC、JB、JNB和JBC 等。,4.2.2 分支程序结构,http:/ 假定在外部RAM中有ST1、ST2和ST3共3个连续单元,其中ST1和ST2单元中存放着两个无符号二进制数,要求找出其中的大数并存入ST3单元中。,解:(1)分析任务:比较两个数的大小 (2)算法:算术运算、控制转移 (3)程序结构:单分支 (4)数据类型:单字节、二进制、无符号数 (5)数据结构:单元地
8、址升序排列 (6)RAM单元安排:外部RAM单元 (7)采用寄存器间接寻址方式(R0、R1或DPTR) (8)程序设计流程框图; (9)程序清单;,http:/ CLR C ;进位位清0 MOV DPTR,#ST1 ;设置数据指针 MOVX A,DPTR ;取第1个数 MOV R2, A ;第1个数存于R2 INC DPTR ;数据指针加1 MOVX A, DPTR ;取第2个数 SUBB A, R2 ;两数比较 JNC BIG1 ;若第2个数大,则转向BIG1 XCH A, R2 ;若第1个数大,则整字节交换 BIG0: INC DPTR MOVX DPTR, A ;存大数 RET BIG1
9、: MOVX A, DPTR SJMP BIG0,上例中,如果采用CJNE A, direct,rel指令,应如何修改程序?,http:/ 多重单分支结构中,通过一系列条件判断,进 行逐级分支。为此可使用比较转移指令CJNE实现。,http:/ A, 55H, LOOP1 ;若TaT55,则转向LOOP1 AJMP FH ;若TaT55,则返回 LOOP1: JNC JW ;若(CY)0,表明TaT55,转降温处理程序 CJNE A, 54H, LOOP2 ;若TaT54,则转向LOOP2 AJMP FH ;若TaT54,则返回 LOOP2: JC SW ;若(CY)1,表明TaT54,转升温
10、处理程序 FH: RET ;若T55TaT54,则返回主程序,例:假定采集的温度值Ta放在累加器A中。此外,在内部RAM 54H单元存放温度下限值T54,在55H单元存放温度上限值T55。若TaT55,程序转向JW(降温处理程序);若TaT54,则程序转向SW(升温处理程序);若T55TaT54,则程序转向FH(返回主程序)。,http:/ (2)算法:控制转移 (3)程序结构:多分支 (4)数据类型:单字节、二进制、有符号数 (5)RAM单元安排:外部RAM单元 (6)采用寄存器间接寻址方式(R0、R1或DPTR) (7)程序设计流程框图 (8)程序清单;,例:已知:127X-128,求Y。
11、设X,Y分别存放在外部RAM 1000H和2000H单元中。,http:/ EQU 1000H; BUF EQU 2000H; ORG 1000H START:MOV DPTR, #XAD ;数据X的地址送数据指针DPTR MOVX A, DPTR; A取数据X JZ SAV; X0转SAV JB ACC.7, NEG; X0转NEG,否则,X0 MOV A, #01H; SJMP SAV; NEG: MOV A, #0FFH; (0FFH为-1补码) SAV: MOV DPTR, #BUF; 数据Y的地址送数据指针DPTR MOVX DPTR, A; 保存Y值 END,上例中,如果采用CJN
12、E指令,应如何修改程序?,http:/ EQU 1000H; BUF EQU 2000H; ORG 1000H START:MOV DPTR, #XAD ;数据X的地址送数据指针DPTR MOVX A, DPTR; A取数据X CJNE A, #0, ANZ ; X0转ANZ SJMP SAV; ANZ: JC NEG ;X0 MOV A, #01H; SJMP SAV; NEG: MOV A, #0FFH; (0FFH为-1补码) SAV: MOV DPTR, #BUF; 数据Y的地址送数据指针DPTR MOVX DPTR, A; 保存Y值 END,http:/ 多分支程序结构 多分支程序结
13、构流程中具有两个以上条件可供选择。可 供使用的是变址寻址转移指令“JMP A+DPTR”,但使 用该指令实现多分支转移时,需要有数据表格配合。 多分支程序结构,http:/ A, n ;分支序号送A MOV DPTR, #BRTAB ;地址表首址 MOVC A, A+DPTR ;查表 JMP A+DPTR ;转移 BRTAB:DB BR0-BRTAB ;地址表 DB BR1-BRTAB DB BRn-BRTAB BR0: 分支程序 BR1: BRn: ,http:/ A, n RL A ;分支序号值乘以2 MOV DPTR, #BRTAB;转移指令表首址 JMP A+DPTR BRTAB: A
14、JMP BR0 ;转分支程序0 AJMP BR1 ;转分支程序1 AJMP BR127 ;转分支程序127 BR0: ;分支程序 BR1: BRn: ,http:/ DPTR, #BRTAB ;分支入口地址表首址 MOV A, R0 RL A ;分支转移值乘以2 MOV R1, A ;暂存A值 INC A MOVC A, A+DPTR ;取低位地址 PUSH ACC ;低位地址入栈 MOV A, R1 ;恢复A值 MOVC A, A+DPTR ;取高位地址 PUSH ACC ;高位地址入栈 RET ;分支入口地址装入PC BRTAB:DW BR0 ;分支程序入口地址表 DW BR1 DW BR
15、127,http:/ 分析任务 确定算法 程序流程框图,http:/ 中。 MOV DPTR, #BRTAB CLR C RLC A JMP A+DPTR; ORG 3000H 3000H BRTAB:AJMP ER; 转删除分支程序 3001H 3002H AJMP DS; 转读数据分支程序 3003H 3004H AJMP XS; 转写数据分支程序 3005H 3006H AJMP CR; 转插入分支程序,ORG 3100H 3100H ER:; 删除分支程序 ORG 3200H 3200H DS:; 读数据分支程序 ORG 3300H 3300H XS:; 写数据分支程序 ORG 340
16、0H 3400H CR:; 插入分支程序 END,http:/ 循环程序结构,循环结构是重复执行某个程序段。使用条件转移指令通 过条件判断来实现和控制循环。,循环程序一般由四个主要部分组成: (1)初始化部分:为循环程序做准备,如规定循环次数、给各变量和地址指针预置初值。 (2)处理部分: 为反复执行的程序段,是循环程序的实体, 也是循环程序的主体。 (3)循环控制部分: 其作用是修改循环变量和控制变量,并判断循环是否结束,直到符合结束条件时,跳出循环为止。 (4)结束部分: 这部分主要是对循环程序的结果进行分析、处理和存放。,http:/ R2, #0FFH;设置长度计数器初值 MOV R0
17、, #3FH;设置字符串指针初值 LOOP: INC R2 INC R0 CJNE R0, #0DH, LOOP RET,举例:通过查找结束标志(回车符)以统计字符串长度的循环 程序。 假定字符串存放在内部RAM从40H单元开始的连续存 储单元中。为找到结束标志,应采用逐个字符依次与回车 符(ASCII码0DH)比较的方法。同时在程序中还应设置一 个字符串指针以顺序定位字符,设置一个字符长度计数器以 累计字符个数。,http:/ (3)程序结构:分支、循环(4)数据类型:多字节字符串 (5)RAM单元安排:内部RAM单元、外部RAM单元 (6)采用寄存器间接寻址方式(R0、R1或DPTR),例
18、:把内部RAM中起始地址为DATA的数据串传送到外部 RAM以BUFFER为首地址的区域,直到发现“$”字符 的ASC码为止,同时规定数据串最大长度为32个字节。,http:/ 0030H DATACS:MOV R0, #DATA; DATA数据区首地址 MOV DPTR, #BUFFER;BUFFER数据区首地址 MOV R1, #20H; 最大数据串长 LOOP:MOV A, R0; 取数据 SUBB A, #24H; 判是否为“$”字符 JZ LOOP1; 是“$”字符,转结束 MOVX A , R0 ; MOVX DPTR,A; 数据传送 INC R0; INC DPTR; DJNZ
19、R1, LOOP; 循环控制 LOOP1:RET; 结束 END,http:/ 96个工作单元,工作单元首地址为20H,则工作单元清零 程序子程序如下:,思考题:如采用CJNE指令,应如何修改程序?,解: ORG 1000H CLR0:MOV R0, #20H;循环初始化部分 MOV R7, #96; CLR A LOOP:MOV R0, A; 循环体部分 INC R0; 修改变量 DJNZ R7, LOOP;循环控制部分 RET END,DEC R7 CJNE R7,#00H,LOOP;,http:/ 50H52H单元(低字节存放在高地址单元,高字节存放在低地址单元,即低位在前,高位在后),
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大学课件 【大学课件】单片机原理与接口技术 80C51单片机汇编语言程序设计P74 大学 课件 单片机 原理 接口 技术 80 C51 汇编 语言程序设计 P74
链接地址:https://www.31doc.com/p-3034814.html