《片机程序设计》PPT课件

上传人:pia****nwu 文档编号:244830046 上传时间:2024-10-06 格式:PPT 页数:27 大小:913KB
返回 下载 相关 举报
《片机程序设计》PPT课件_第1页
第1页 / 共27页
《片机程序设计》PPT课件_第2页
第2页 / 共27页
《片机程序设计》PPT课件_第3页
第3页 / 共27页
点击查看更多>>
资源描述
*,*,*,*,*,*,*,*,*,*,*,*,第三章,MCS-51,单片机汇编语言程序设计,3.1 概述,51系列单片机支持写入单片机或仿真调试的目标程序有两种文件格式:.BIN文件和.HEX文件,,.BIN,文件是由编译器生成的二进制文件,是程序的机器码,,.HEX,文件是由,INTER,公司定义的一种格式,这种格式包括地址、数据和校验码,并用,ASCII,码来存储,可供显示和打印。,.BIN,文件需通过符号转换程序,OHS51,变,换,成,.,HEX,格式的文件,。,一、两种语言的操作过程,:,连接,/,定位器,L51,汇编语言,源程序,汇编器,A51,符号转换程序,OHS51,绝对地址目标程序,.BIN,C,语言程序,浮动地址目标程序,编译器,C51,HEX,1,二、汇编语言程序设计步骤:,1.,分析任务,确定方案和计算方法。,2.,按功能划分模块,确定各模块之间的相互关系及参数传递,画出程序流程图。,3,、合理分配寄存器和存储器单元,编写汇编语言源程序,并作必要的注释,以方便阅读、调试和修改。,4,、汇编语言源程序进行汇编和连接生成可执行的目标文件(,.BIN,或,.HEX,)。,5,、仿真调试、修改程序,直至满足任务要求。,6,、将调试好的目标文件(,BIN,或,HEX,)烧录进单片机内,上电执行。,目前很多公司将编辑器、汇编器、编译器、连接,/,定位器、符号转换程序做成集成软件包,用户进入该集成环境,编辑好程序后,只需点击相应菜单就可以完成上述的各步,如,WAVE,、,KEIL,等集成软件。,汇编:将汇编语言源程序转换成机器语言目标程序的过程称为汇编。,汇编程序:能将汇编语言源程序转换成机器语言目标程序的系统软件称为汇编程序。,汇编源程序:用汇编语言编的应用程序称为汇编语言源程序。,2,程序流程图表示程序结构和功能,一个典型分支程序流程如下:,Y,N,?,开始,开始结束框,处理框,判断框,转子框,输入输出框,结束,流程线,3,三、程序汇编的方法:,程序汇编的方法有两种:,1,、手工汇编:,人工查指令表,查出程序中每条指令对应的机器代码。早期的计算机使用。,2,、机器汇编:,用计算机中的汇编程序对用户源程序进行汇编。,用机器汇编要提供给汇编一些信息,遵循汇编程序的一些约定,这些由伪指令指定。,3、汇编程序的主要任务:,确定程序中每条汇编语言指令的指令机器码。,确定每条指令在存储器中的存放地址。,提供错误信息,指出源程序中的语法错误。,提供目标执行文件,(*.OBJ/*.HEX,/*.BIN,),和列表文件,(*.LST),。,地址 机器码 源程序,ORG 2000H,2000H 78 30 MAIN:MOV R0,#30H,2002H E6,MOV A,R0,4,1.,机器指令:指令系统中的全部指令。每条机器指令都有对应的机器代码,可以被,CPU,执行。,2.,伪指令:汇编控制指令,没有指令代码,只用于汇编过程,为汇编程序提供汇编信息,给编程提供方便。,3.,宏指令:由多条指令通过宏汇编集合而产生的指令。,宏汇编功能:将需要反复多次执行的程序段定义成一个宏指令名(宏定义)。编程时,可在程序中使用宏指令名来替代被定义的程序段(宏调用)。,四、汇编语言指令类型,宏定义过程:,宏指令名,MACRO 形式参数,;被定义的程序段,ENDM,宏调用过程:,宏指令名,实际参数,宏指令名,实际参数,MACRO_NAME MACRO X,Y,MOV A,#X,MOV B,#Y,MUL AB,ENDM,程序,;,MACRO_NAME 20H,30H;,宏调用,5,3.2,伪指令 常用伪指令及功能:,1、起始指令 ORG nn,功能:定义程序或数据块的起始地址。指示此语句后面的程序或数据块以nn为起始地址,连续存放在程序存储器中。,指令地址 机器码 源程序,ORG 2000H,2000H 78 30 MAIN:MOV R0,#30H,2002H E6,MOV A,R0,ORG 3000H,3000H 23 TAB:DB 23H,100,,A,3001H 64,3002H 41,6,2、字节定义,标号:DB(字节常数,或字符或表达式),功能:指示在程序存储器中以标号为起始地址的单元里存放的数为字节数据(八位二进制数)。,例如 LN:DB 32,,C,,,25H,-1;,以上的伪指令是在LNLN+3地址单元依次存放20H,43H,25H,FFH。,地址,数据,LN,20,LN+1,43,LN+2,25,LN+3,FF,3、,字定义,标号:,DW(字常数或表达式),作用:指示在程序存储器中以标号为起始地址的单元里存放的数为字数据(即16位 的二进制数)。,例如:GH:DW 1234H,5678H,08,GH,12,34,GH+2,56,78,GH+4,00,08,7,6,、等值指令 标号,EQU,(数值表达式)表示,EQU,两边的量等值,用于为标号或标识符赋值。例如:,X1 EQU 2000H X2 EQU 0FH,MAIN:MOV DPTR,,,#X1 ;DPTR=2000H ADD A,,,#X2 ;A=A+0FH,5,、位定义,标号,BIT ,位地址,作用:同,EQU,指令,不过定义的是,位操作地址。,例如:,YLED BIT P1.1,;指明,YLED,就是,P1.1,这一位。,4,、保留字节,标号:,DS,(数值表达式),作用:指示在程序存储器中保留以标号为起始地址的若干字节单元,其单元个数由数值表达式指定。,例如:,L1,:,DS 32;,从,L1,地址开,始保留,32,个存储单元。,7,、汇编结束,END,作用:指示源程序段结束,,END,指令放在程序的最后。,A51,汇编程序还有一些其它的伪指令,列在教材表,3-1,中,以备查阅。,8,3.3,常用程序结构 有顺序程序、分支程序、循环程序、子程序等。,1、顺序程序设计,例3-1 编程将外部数据存储器的000EH和000FH单元的内容,交换。,分析,:,外部数据存储器的数据操作只能用,MOVX,指令,且只能和,A,之间传送,因此必须用一个中间环节作暂存,设用,20H,单元。用,R0,、,R1,指示两单元的低八位地址,高八位地址由,P2,指示。编程过程如下:,ORG 0000H,MOV P2,#0H ;,送地址高八位至,P2,口,MOV R0,#0EH ;R0=0EH,MOV R1,#0FH ;R1=OFH,MOVX A,R0 ;A=(000EH),MOV 20H,A ;(20H)=(000EH),MOVX A,R1 ;A=(000FH),XCH A,20H ;A=(000EH),(20H)=(000FH),MOVX R1,A,MOV A,20H,MOVX R0,A ;,交换后的数送各单元,SJMP$,END,9,3.4,顺序程序,顺序程序,(,简单程序,),,程序走向只有一条路径。,例,3-2,:将,R4R5,双字节符号数求补码程序。,ORG 0000H,MOV A,R4,JB ACC,.,7,CPLL,;判符号位,SJMP$,;正数的补码原码,CPLL,:CLR C,MOV A,R5,;取低字节,CPL A,ADD A,#1,;低字节变补,MOV R5,A,MOV A,R4,;取高字节,CPL A,ADDC A,#0,;高字节变补,ORL A,#80H,;,恢复负号,MOV R4,A,SJMP$,10,例,3-3,分解压缩式,BCD,码,使其成为非压缩式,BCD,码。,ORG 0000H,MOV R0,#40H,;,设指针,MOV A,R0,;,取一个字节,MOV R2,A,;,暂存,ANL A,#0FH,;,高,4,位清,0,INC R0,MOV R0,A,;,保存数据个位,MOV A,R2,SWAP A,;,十位换到低半字节,ANL A,#0FH,;,高,4,位清,0,INC R0,MOV R0,A,;,保存数据十位,SJMP$,65,40H,05,41H,06,42H,片内,RAM,例,3-5 设变量放在片内RAM的20H单元,其值为00H,-,05H之间,编查,平方表的程序,查出变量的平方值,并放入片内RAM的21H单元。,(用,BCD,码),分析:,在程序存储器安排一张平方表,首地址为,TAB,,以,DPTR,指向表首址,,A,存放变量值,利用查表指令,MOVC A,,,A+DPTR,,即可求得。,表中数据用,BCD,码存放合乎人们的习惯,.,ORG 0000H,MOV DPTR,#TAB,MOV A,20H,MOVC A,A+DPTR;,查表,MOV 21H,A,SJMP$,TAB:DB 00H,01H,04H,09H,16H,25H,END,1,TAB+1,0,TAB,25H,TAB+5,16H,TAB+4,9,TAB+3,4,TAB+2,数据,地址,A,DPTR,11,3.5,分支程序的设计 由条件转移指令构成程序判断框部分,形成分支结构。,3.5.1,单分支程序,例,1,求,8,位有符号数的绝对值。,方法:正数不变,负数变补。,ORG 0000H,MOV A,R2,JNB ACC,.,7,N,;,为正数?,CPL A,;,负数变补,INC A,MOV R2,A,N:SJMP$,条件满足,?,N,检测条件,Y,处理,1,处理,2,例,2,用单片机加重力传感器作磅秤,秤出重量后算出行李运费价格,计费的方式是:当重量小于等于,20kg,时,每公斤的运费是,3,元,当超过,20kg,之后,超出部分每公斤,5,元。,设,40H,存入行李重量,;,42H41H,装入应付费用。根据计价方法可列出算式(设,W,是行李重量):,20,3+(,W,-,20,),5,当,W,20,M=,W3,;当,W20,12,ORG 0100H,FRT:MOV A,40H,;,取行李重量,CJNE A,#20,,,L0,;,判断是否大于规定值,JMP L1,L0:JC L1,CLR C ;,处理大于规定重量,SUBB A,#20;,求出高出的重量,MOV B,#05H;,计算高出部分的价格,MUL AB,ADD A,#60;,加上,20kg,的运费,MOV R0,A;,暂存,A,MOV A,B ;,ADDC A,#00H;,处理可能的进位,MOV B,A;,分别将高,8,位放到,B,MOV A,R0;,低,8,位放入,A,JMP L2,;,处理完跳出,L1:MOV B,03H,;,处理小于规定重量,MUL AB,L L2:,MOV,41H,A,;,存运费,MOV 42H,B,RET,13,A=40H,(取重量),A,20,A=A*3,A=A-20,A=A*5,A=A+60,41H=A,42H=B,结束,开始,N,Y,1.利用转移地址表实现转移,(先把,DPTR,找好,再跳转),例,3-7 根据R3的内容转向对应的程序,R3的内容为0n,处理程序的入口符号地址分别为PR,o,PRn(n128)。,分析:将,PR,o,-PRn入口地址列在表格中,每一项占两个单元,PRn在表中的偏移量为2n,因此将R3的内容乘2即得PRn在表中的偏移地址,从偏移地址2n和2n+1两个单元分别取出PRn的高八位地址和低八位地址送DPTR寄存器,用JMP A+DPTR指令(A先清零)即转移到PRn入口执行。,3.5.2,多分支散转程序的设计,有一类分支程序,它根据不同的输入条件或不同的运算结果,转向不同的处理程序,称之为散转程序。这类程序通常利用,JMP A+DPTR,间接转移指令实现转移。有如下两种设计方法:,查转移地址表,:,将,转移地址,列成表格,将表格的内容作转移的目标地址。,查转移指令表,:,将转移到不同程序的,转移指令,列成表格,判断条件后查表,转到表中指令执行,下面用两个例子说明。,14,PR0 EQU 0110H ;,用伪指令定义,PRn,的具体地址,PR1 EQU 0220H,PR2 EQU 0330H,ORG 0000H,MOV R3,,,#01H;,设要转入第,2,个程序段,MOV
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!