MCS-51单片机的程序设计.ppt
《MCS-51单片机的程序设计.ppt》由会员分享,可在线阅读,更多相关《MCS-51单片机的程序设计.ppt(38页珍藏版)》请在三一办公上搜索。
1、第五章 MCS-51单片机的程序设计,(6学时),5.1 程序设计基本方法5.1.1 单片机程序设计语言5.1.2 程序设计步骤5.1.3 程序流程图5.2 汇编语言程序设计的基本概念5.2.1 MCS-51伪指令5.2.2 汇编语言程序的格式5.2.3 汇编语言程序的汇编5.3 单片机汇编语言与C51语言的程序设计,5.1.1单片机程序设计语言,设计语言基本分类:机器语言汇编语言高级语言,MCS-51系列单片机的汇编语言和C51程序设计。,5.1.2 程序设计步骤,(1)分析题意,明确要求;(2)建立思路,确定算法;(3)编制框图,绘出流程;(4)分配内存工作区及相关端口地址。(5)编写源程
2、序及相关注释,上机调试;(6)固化程序。,5.1.3 程序流程图,画流程图是指用各种图形、符号、指向线等来说明程序设计的过程。椭圆框:起止框,在程序的开始和结束时使用。矩形框:处理框,表示要进行的各种操作。菱形框:判断框,表示条件判断,以决定程序的 流向。根据条件在两个可供选择的程序 处理流程中做出判断,选择其中的一条 程序处理流程。指向线:流程线,表示程序执行的流向。圆 圈:连接符,表示不同页之间的流程连接。与程序流程图的其它部分相连结的入口 或出口。,5.2.1 MCS-51伪指令,伪指令是不能执行的指令,在汇编时起控制作用。,(1)汇编起始命令格式:ORG 16位地址(2)汇编结束命令格
3、式:ENDEND是汇编语言源程序的结束标志。,例p107:ORG 1000HSTART:MOVR0,2FH MOVR2,#00H MOVA,R0 MOVR3,A INCR3 SJMPNEXT LOOP:INCR0 CJNER0,#44H,NEXT INCR2 NEXT:DJNZR3,LOOP MOV2AH,R2 SJMP$END,X,(3)等值命令格式:字符名称 EQU 数或汇编符号,如:TEMPEQUR4 XEQU16H DAEQU1456H下面语句可以使用这些符号MOVA,TEMP;MOVA,R4MOVA,X;MOVA,16HLCALLDA;LCALL 1456H,5.2.1 MCS-51
4、伪指令,(4)数据地址赋值命令 格式:字符名称 DATA 表达式(5)定义字节指令 格式:标号:DB 8位二进制数表,如:ORG0200H L1:DB 45H,67H,50,80H,111B,”B”,(6)定义字命令 格式:标号:DW 16位二进制数表,如:ORG0300H L1:DW 1067H,6068H,110;先高八位,后低八位存放,(7)定义空间命令 格式:标号:DS 表达式(8)位地址符号命令 格式:字符名称 BIT 位地址MARKEQU20HMARK1BIT MARK.0MARK2BITMARK.7SETBMARK1CLRMARK2CPLMARK1ANLC,MARK2,5.2.2
5、 汇编语言程序的格式,汇编语言程序的每一句程序一般由四部分组成,即标号、操作码、操作数和注释。,格式:标号:操作码 操作数;注释,标号判断:,课堂知识巩固:,B3,4A,DA,DELY,ADD,LOOP,A+B,ad,END,5.2.3 汇编语言程序的汇编,人工汇编机器汇编,5.3.1 16位加减法程序,例5-1:已知两个16位二进制数分别存放在R1R0和R3R2中,试求其和,并将结果存入R1R0中。,加 数:R1 R0 被加数:R3 R2 结 果:R1 R0,分析:,汇编语言程序:ORG0000HCLRCMOV A,R2ADDA,R0MOV R0,AMOV A,R3 ADDCA,R1MOV
6、R1,ASJMP$END,C51语言程序:void main(void)int bdata x,y;x=x+y;,5.3.2 顺序程序,特点:按指令的排列顺序一条条地执行,直到全部指令执行完毕为止。,其中F、X、Y、Z均为位变量,依次存在以30H为首址的位寻址区中。FBIT 30HXBIT31HYBIT32HZBIT 33HORG0000HSJMPMAINORG0040HMAIN:MOV C,Y;YCORLC,Z;Y+ZCANLC,X;X(Y+Z)CMOVF,C;CFSJMP$END,例5-2:编写逻辑运算程序,功能为 F=X(Y+Z)。,分析:,void main(void)bit bdat
7、a F,X,Y,Z;F=X,5.3.2 顺序程序,ORG0000HSJMPMAINORG0040HMAIN:MOV C,P2.0;P2.0CORLC,P1.0;P2.0+P1.0CANLC,P1.1;(P2.0+P1.0)P1.1C MOVP2.0,C;CP2.0SJMP$END,例5-3:编写逻辑运算程序,功能为。,分析:,sbitP1_0=P10;/*定义P1.0、P1.1、P2.0*/sbitP1_1=P11;sbitP2_0=P20;void main(void)P2_0=P1_1,5.3.3 分支程序,根据不同条件转向不同的处理程序,这种结构的程序称为分支程序。,例5-5:假设内部R
8、AM 40H与41H单元中有两个无符号数,现要求找出其中的较大者,并将其存入40H单元中,较小者存入41H单元。,ORG1000HMOVA,40HCLRCSUBBA,41HJNCEXITXCHA,41HMOV40H,AEXIT:SJMPEXITEND,5.3.3 分支程序,执行一条判断指令时,只能形成两路分支。,注意:,根据不同条件转向不同的处理程序,这种结构的程序称为分支程序。,void main(void)unsigned char data*x1,*x2;unsigned char data temp;x1=0 x40;x2=0 x41;if(*x1*x2)temp=*x2;*x2=*x
9、1;*x1=temp;,例5-5:假设内部RAM 40H与41H单元中有两个无符号数,现要求找出其中的较大者,并将其存入40H单元中,较小者存入41H单元。,单分支程序,5.3.3 分支程序,例5-6:已知30H单元中有一变量X,要求编写一程序按下述要求给Y赋值,结果存入31H单元。,三分支程序,汇编语言程序,XEQU30HYEQU31HORG100HMOVA,XJZSAVE;X=0JNBACC.7,PPS;X0MOVA,#-1;X0SJMPSAVEPPS:INCASAVE:MOVY,AEND,void main(void)char data*x,*y;x=0 x30;y=0 x31;if(*
10、x0)*y=*x+1;else if(*x=0)*y=0;else*y=-1;,例5-6:已知30H单元中有一变量X,要求编写一程序按下述要求给Y赋值,结果存入31H单元。,5.3.4 循环程序,循环程序一般由如下四部分组成:初始化部分:用来设置循环初值,包括预置变量、计数器和数据指针初值,为实现循环做准备。循环处理部分:要求重复执行的程序段,是程序的主体,称为循环体。循环体既可以是单个指令,也可以是复杂的程序段,通过它可完成对数据进行实际处理的任务。循环控制部分:控制循环次数,为进行下一次循环而修改计数器和指针的值,并检查该循环是否已执行了足够的次数。也就是说,该部分用条件转移采控制循环次数
11、和判断循环是否结束。循环结束部分:分析和存放结果。,5.3.4 循环程序,初始化部分 循环处理部分 循环控制部分 循环结束部分,5.3.4 循环程序,根据题目要求,编写统计数据长度子程序ADUP,同时编写主程序,调用ADUP子程序。,例5-7:试编写统计数据区长度的程序。设数据区从内部RAM 30H单元开始,该数据区以0结束,统计结果送入2FH单元。,分析:,统计数据长度子程序如下:ORG 0400HADUP:MOV2FH,#0;对统计数据区长度数清零MOVR0,#30H;置数据区首址ALOP:MOVA,R0;取数据内容JZLP1;判断是否为结束标志0,若数据区结束,则跳转到LP1INC2FH
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MCS 51 单片机 程序设计
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6512350.html