




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章MCS-51单片机汇编语言程序设计
程序设计:指令的有序罗列。两个方面:
(1)选择某种语言;
(2)解决问题的方法与步骤
-----(算法)第5章MCS-51单片机汇编语言程序设计程序设本章介绍汇编语言程序设计的基本问题,包括:5.1程序设计概述5.2基本的程序设计5.3基本功能程序的设计5.4数字滤波程序本章介绍汇编语言程序设计的基本问题,包括:5.1程序设计概述一、程序设计步骤(1)分析问题,确定问题的数学模型(2)确定符合计算机运算的算法(3)绘制流程图(4)内存单元分配(5)据流程图编写汇编语言程序(6)程序调试与修改5.1程序设计概述一、程序设计步骤MCS-51单片机汇编语言程序设计教材课件二、程序设计技术
(1)模块化程序设计(2)自顶向下的程序设计(3)软件的抗干扰技术二、程序设计技术(1)模块化程序设计三、评价程序质量的标准
①程序的执行时间;②程序所占用的内存字节数;③程序的逻辑性、可读性;④程序的兼容性、可扩展性;⑤程序的可靠性。三、评价程序质量的标准①程序的执行时间;5.2基本的程序设计在程序设计过程中,无论多复杂的程序结构都是由基本的程序结构组成的。
一、顺序结构程序设计二、分支结构的程序设计三、循环结构的程序设计5.2基本的程序设计在程序设计过程中,无论多一、顺序结构的程序
顺序结构程序是一种最简单、最基本的程序,按照程序编写的顺序逐条依次执行,直到程序结束。这是程序的最基本的形式,任何程序都离不开这种形式。一、顺序结构的程序顺序结构程序是一种最简单、最基本例5-1:
编程将片内RAM21H单元的低3位和20H单元的低5位合并为一个字节送片内RAM30H,要求21H的低3位放在高位上。分析:(1)将RAM20H的高位屏蔽掉;(2)将21H的高3位屏蔽掉,然后将其低5位移到高5位上;(3)将以上两者合并即可。例5-1:编程将片内RAM21H单元的低3位和
MOV 30H,20H
;20H中内容处理 ANL30H,#1FH MOVA,21H
;21H中内容处理 SWAPA RLA ANL A,#0E0H ORL 30H,A;两数合并
MOV 30H,20H;20H中内容处理例5-2:求内部RAM20H、21H中的4位压缩BCD数与22H、23H中的4位压缩BCD数的差,结果送24H、25H中。即:(20H)(21H)-(22H)(23H)=(24H)(25H).
分析:[(9999H+1)-(22H)(23H)]+(20H)(21H).
例5-2:求内部RAM20H、21H中的4位压缩BCCLR CMOV A,#9AH ;用999AH-(22H)(23H)SUBBA,23HMOV 25H,A ;结果送24H和25HMOV A,#99HSUBBA,22HMOV 24H,AMOV A,25H ;(24H)(25H)+(20H)(21H)ADD A,21HDA AMOV 25H,A ;结果存24H25HMOV A,24HADDCA,20HDA AMOV 24H,ACLR C补充例题:片外RAM1000H、1001H分别存放两个无符号数10010001B和10001010B,如果视其为二进制数,编程完成其加法和减法运算,结果放到片外RAM1002H和1003H单元;如果视其为BCD码,编程完成其加法运算和减法运算,结果放到片外RAM1004H和1005H单元。(框图)补充例题:片外RAM1000H、1001H分别存放两二、分支结构的程序
分支结构程序是利用条件转移指令,使程序执行到某一指令时,根据条件是否满足,来改变程序执行的顺序。二、分支结构的程序分支结构程序是利用条件转移指令,使编写分支结构的程序主要在于正确使用转移指令。编写分支结构的程序的关键是确定好分支条件转移指令有三种:
无条件转移条件转移散转编写分支结构的程序主要在于正确使用转移指令。(1)无条件转移
它的程序转移方向是设计者事先安排的,与已执行程序的结果无关,使用时只需给出正确的转移目标地址或偏移量即可,如:ORG 0000HLJMP MAIN
···ORG 0030HMAIN:
···
···(1)无条件转移它的程序转移方向是设计者事先安排的,(2)条件转移它是根据已执行程序对标志位或累加器或对内部RAM某位的影响结果,决定程序的走向,形成各种分支。可用于分支结构的指令:JZ/JNZ、CJNE、DJNZ、JC/JNCJB/JNB、JBC(2)条件转移它是根据已执行程序对标志位或累加器或对内部RA程序框图:(a、b正确,c错误)程序框图:(a、b正确,c错误)(3)散转它是根据某种已输入的或运算的结果,使程序转向各个处理程序中去,一般单片机实现散转程序常用于逐次比较和算法处理的方法。这些方法一般比较麻烦、易出错,MCS-51单片机具有一条专门的散转指令JMP@A+DPTR,可以使它较方便地实现散转功能。(3)散转它是根据某种已输入的或运算的结果,使程序转例5-3:编制程序使y按下式赋值:例5-3:编制程序使y按下式赋值:VAR EQU 30HFUNC EQU 31HSTART:MOV A,VAR ;取x
JZ COMP
;为0转COMPJNB ACC.7,POSI ;>0转POSIMOV A,#0FFH ;<0,-1ASJMP COMPPOSI:MOV A,#01HCOMP:MOV FUNC,ARETVAR EQU 30H例5-4:设外部存储器单元ST1和ST2存放两个不带符号的二进制数,找出其中的大数存入ST3单元。
例5-4:设外部存储器单元START1:CLRC ;进位位清0MOVDPTR,#ST1 ;设数据指针MOVXA,@DPTR ;取第一个数MOV R1,A ;暂存第一个数INC DPTRMOVXA,@DPTR ;取第二个数MOV R2,A ;暂存第二个数SUBB A,R1 ;两数比较JNC BIG1XCH A,R1 ;第一个数大SJMP LBIG1: MOV A,R2L: INC DPTRMOVX@DPTR,A ;存大数 START1:CLRC 例5-5:
空调机在制冷时,若排出空气比吸入空气温度低8℃,则认为工作正常,否则认为工作故障,并设置故障标志。设片内RAM40H中存放吸入空气温度值,41H中存放排除空气温度值。
若(40H)-(41H)≥8℃,则空调机制冷正常,在42H单元中存放“0”。否则在42H单元中存放“FFH”,以示故障(在此42H单元被设定为故障标志)。例5-5:空调机在制冷时,若排出空气比吸入为了可靠地监控空调机的工作情况,应做两次减法,第一次减法(40H)-(41H),若C=1,则肯定有故障;第二次减法用两个温度的差值减去8℃,若C=1,说明温差小于8℃,空调机也不正常工作。为了可靠地监控空调机ORG0000HSTART:MOV A,40H ;吸入温度值送ACLR CSUBBA,41HJC ERROR ;C=1有故障SUBBA,#8JC ERROR ;温差小于8℃,有故障MOV 42H,#0 ;工作正常标志SJMPEXITERROR:MOV 42H,#0FFH ;工作故障标志EXIT:SJMP $ENDORG0000H三、循环结构的程序
循环程序是强制CPU重复执行某一指令序列的一种程序结构形式。循环结构的程序一般由5部分组成:初始化,循环体(处理部分)、循环修改、循环控制(继续循环吗?)和结束部分。关键:循环体(做什么)-变化量--如何变化—初始化、控制与判断三、循环结构的程序循环程序是强制CPU重复执行某一指令序列MCS-51单片机汇编语言程序设计教材课件MCS-51单片机汇编语言程序设计教材课件例5-10、5-11、5-12:1、工作单元清0。2、多个单字节数据求和。3、设在DAT开始的片内RAM中存放10个无符号字节数,找出最大值,并暂存在A中。实验3:10个数,去掉一个最大值、一个最小值,求剩余8个数的平均值。例5-10、5-11、5-12:1、工作单元清0。例5-15:多重循环设计软件延时:12MHZ,1ms冒泡程序5-16。例5-15:多重循环设计软件延时:注意循环结构:注意循环结构:5.3基本功能程序的设计一、查表程序的设计二、子程序的设计三、算术逻辑运算程序四、数制转化程序5.3基本功能程序的设计一、查表程序的设计一、查表程序
查表法是对一些复杂的函数运算如sinx等,事先把其全部可能范围的函数值按一定的规律编成表格存放在计算机的程序存储器中。当用户程序中需要用到这些函数时,直接按编排好的索引值(或程序号)寻找答案。在控制应用场合或智能仪器仪表中,经常使用查表法。一、查表程序查表法是对一些复杂的函数运算如sinx等,事先例5-17已知数据0~9的平方,设变量x的值在累加器A中,查表后求x2的值放回累加器,试编制程序。X2:MOVDPTR,#X2TABMOVCA,@A+DPTRRETX2TAB:DB00H,01H,02H,……64H,81H
例5-17已知数据0~9的平方,设变量x的值在累加器A中,查例5-18:设计一个将十六进制数转换成ASCII码的子程序。设十六进制数存放在R0的低4位,要求转换后的ASCII码送回R0中DB30H,31H,。。39H,41H,。。46H如果不用查表,应该怎样做:例5-18:设计一个将十六进制数转换成ASCII码的子程序。例5-19:某智能化仪器的键盘程序中,根据命令的键值(0、1、2、···、9)转换成相应的双字节16位命令操作入口地址,其键值与对应入口地址关系如下:键值(入口地址):
0(0123H);1(0186H);
2(0234H);3(0316H);4(0415H);5(0520H);6(0626H);7(0710H);8(0818H);9(0929H)例5-19:某智能化仪器的键盘程序中,根据命令的键值(0、1
设键值存放在片内RAM20H单元中,出口地址值存放在片内RAM22H和23H中。DB01H,23HDB01H,86H。。。。DB09H,29H 设键值存放在片内RAM20H单元中,出口地址值存放在片内R二、子程序设计在实际问题中,常常会遇到在一个程序中有许多相同的运算或操作。因此在实际应用中,通常把这些多次使用的程序段,按一定结构编好,存放在内存中,当需要时,程序可以去调用这些独立的程序段。通常将这种可以被调用的程序段称为子程序。二、子程序设计在实际问题中,常常会遇到在一个程序中有许多相同调用子程序的程序称为主程序。使用子程序的过程称为调用子程序;子程序执行完毕后返回主程序的过程称为子程序返回。调用子程序的程序称为主程序。例5-22、5-23:1、用程序实现c=a2+b2。设a、b均小于10,a存在片内RAM31H单元中,b存在32H单元中,把c存入33H单元中。2、求两个无符号数据块中的最大值。数据块的首地址分别为片内RAM60H和70H,每个数据块的第1个字节都存放数据块的长度,结果存入5FH单元。例5-22、5-23:1、用程序实现c=a2+b2。设a、b三、算术逻辑运算程序1、多字节二进制数加法2、多字节压缩BCD码加法3、多字节求补4、除以2的倍数的处理5、双字节无符号数整数相乘三、算术逻辑运算程序1、多字节二进制数加法四、数制转换程序1、二进制转换为十进制数2、十进制数转换为二进制3、二进制数转换为十六进制数的ASCII码4、ASCII码字符串转换为十六进制数四、数制转换程序1、二进制转换为十进制数5.4数字滤波程序程序判断滤波中值滤波算术平均值滤波去极值滤波5.4数字滤波程序程序判断滤波实验3—设计3片内RAM30H开始的10个数,去掉一个最大值、一个最小值,求剩余8个数的平均值。实验3—设计3片内RAM30H开始的10个数,去掉一个最大值演讲完毕,谢谢观看!演讲完毕,谢谢观看!第5章MCS-51单片机汇编语言程序设计
程序设计:指令的有序罗列。两个方面:
(1)选择某种语言;
(2)解决问题的方法与步骤
-----(算法)第5章MCS-51单片机汇编语言程序设计程序设本章介绍汇编语言程序设计的基本问题,包括:5.1程序设计概述5.2基本的程序设计5.3基本功能程序的设计5.4数字滤波程序本章介绍汇编语言程序设计的基本问题,包括:5.1程序设计概述一、程序设计步骤(1)分析问题,确定问题的数学模型(2)确定符合计算机运算的算法(3)绘制流程图(4)内存单元分配(5)据流程图编写汇编语言程序(6)程序调试与修改5.1程序设计概述一、程序设计步骤MCS-51单片机汇编语言程序设计教材课件二、程序设计技术
(1)模块化程序设计(2)自顶向下的程序设计(3)软件的抗干扰技术二、程序设计技术(1)模块化程序设计三、评价程序质量的标准
①程序的执行时间;②程序所占用的内存字节数;③程序的逻辑性、可读性;④程序的兼容性、可扩展性;⑤程序的可靠性。三、评价程序质量的标准①程序的执行时间;5.2基本的程序设计在程序设计过程中,无论多复杂的程序结构都是由基本的程序结构组成的。
一、顺序结构程序设计二、分支结构的程序设计三、循环结构的程序设计5.2基本的程序设计在程序设计过程中,无论多一、顺序结构的程序
顺序结构程序是一种最简单、最基本的程序,按照程序编写的顺序逐条依次执行,直到程序结束。这是程序的最基本的形式,任何程序都离不开这种形式。一、顺序结构的程序顺序结构程序是一种最简单、最基本例5-1:
编程将片内RAM21H单元的低3位和20H单元的低5位合并为一个字节送片内RAM30H,要求21H的低3位放在高位上。分析:(1)将RAM20H的高位屏蔽掉;(2)将21H的高3位屏蔽掉,然后将其低5位移到高5位上;(3)将以上两者合并即可。例5-1:编程将片内RAM21H单元的低3位和
MOV 30H,20H
;20H中内容处理 ANL30H,#1FH MOVA,21H
;21H中内容处理 SWAPA RLA ANL A,#0E0H ORL 30H,A;两数合并
MOV 30H,20H;20H中内容处理例5-2:求内部RAM20H、21H中的4位压缩BCD数与22H、23H中的4位压缩BCD数的差,结果送24H、25H中。即:(20H)(21H)-(22H)(23H)=(24H)(25H).
分析:[(9999H+1)-(22H)(23H)]+(20H)(21H).
例5-2:求内部RAM20H、21H中的4位压缩BCCLR CMOV A,#9AH ;用999AH-(22H)(23H)SUBBA,23HMOV 25H,A ;结果送24H和25HMOV A,#99HSUBBA,22HMOV 24H,AMOV A,25H ;(24H)(25H)+(20H)(21H)ADD A,21HDA AMOV 25H,A ;结果存24H25HMOV A,24HADDCA,20HDA AMOV 24H,ACLR C补充例题:片外RAM1000H、1001H分别存放两个无符号数10010001B和10001010B,如果视其为二进制数,编程完成其加法和减法运算,结果放到片外RAM1002H和1003H单元;如果视其为BCD码,编程完成其加法运算和减法运算,结果放到片外RAM1004H和1005H单元。(框图)补充例题:片外RAM1000H、1001H分别存放两二、分支结构的程序
分支结构程序是利用条件转移指令,使程序执行到某一指令时,根据条件是否满足,来改变程序执行的顺序。二、分支结构的程序分支结构程序是利用条件转移指令,使编写分支结构的程序主要在于正确使用转移指令。编写分支结构的程序的关键是确定好分支条件转移指令有三种:
无条件转移条件转移散转编写分支结构的程序主要在于正确使用转移指令。(1)无条件转移
它的程序转移方向是设计者事先安排的,与已执行程序的结果无关,使用时只需给出正确的转移目标地址或偏移量即可,如:ORG 0000HLJMP MAIN
···ORG 0030HMAIN:
···
···(1)无条件转移它的程序转移方向是设计者事先安排的,(2)条件转移它是根据已执行程序对标志位或累加器或对内部RAM某位的影响结果,决定程序的走向,形成各种分支。可用于分支结构的指令:JZ/JNZ、CJNE、DJNZ、JC/JNCJB/JNB、JBC(2)条件转移它是根据已执行程序对标志位或累加器或对内部RA程序框图:(a、b正确,c错误)程序框图:(a、b正确,c错误)(3)散转它是根据某种已输入的或运算的结果,使程序转向各个处理程序中去,一般单片机实现散转程序常用于逐次比较和算法处理的方法。这些方法一般比较麻烦、易出错,MCS-51单片机具有一条专门的散转指令JMP@A+DPTR,可以使它较方便地实现散转功能。(3)散转它是根据某种已输入的或运算的结果,使程序转例5-3:编制程序使y按下式赋值:例5-3:编制程序使y按下式赋值:VAR EQU 30HFUNC EQU 31HSTART:MOV A,VAR ;取x
JZ COMP
;为0转COMPJNB ACC.7,POSI ;>0转POSIMOV A,#0FFH ;<0,-1ASJMP COMPPOSI:MOV A,#01HCOMP:MOV FUNC,ARETVAR EQU 30H例5-4:设外部存储器单元ST1和ST2存放两个不带符号的二进制数,找出其中的大数存入ST3单元。
例5-4:设外部存储器单元START1:CLRC ;进位位清0MOVDPTR,#ST1 ;设数据指针MOVXA,@DPTR ;取第一个数MOV R1,A ;暂存第一个数INC DPTRMOVXA,@DPTR ;取第二个数MOV R2,A ;暂存第二个数SUBB A,R1 ;两数比较JNC BIG1XCH A,R1 ;第一个数大SJMP LBIG1: MOV A,R2L: INC DPTRMOVX@DPTR,A ;存大数 START1:CLRC 例5-5:
空调机在制冷时,若排出空气比吸入空气温度低8℃,则认为工作正常,否则认为工作故障,并设置故障标志。设片内RAM40H中存放吸入空气温度值,41H中存放排除空气温度值。
若(40H)-(41H)≥8℃,则空调机制冷正常,在42H单元中存放“0”。否则在42H单元中存放“FFH”,以示故障(在此42H单元被设定为故障标志)。例5-5:空调机在制冷时,若排出空气比吸入为了可靠地监控空调机的工作情况,应做两次减法,第一次减法(40H)-(41H),若C=1,则肯定有故障;第二次减法用两个温度的差值减去8℃,若C=1,说明温差小于8℃,空调机也不正常工作。为了可靠地监控空调机ORG0000HSTART:MOV A,40H ;吸入温度值送ACLR CSUBBA,41HJC ERROR ;C=1有故障SUBBA,#8JC ERROR ;温差小于8℃,有故障MOV 42H,#0 ;工作正常标志SJMPEXITERROR:MOV 42H,#0FFH ;工作故障标志EXIT:SJMP $ENDORG0000H三、循环结构的程序
循环程序是强制CPU重复执行某一指令序列的一种程序结构形式。循环结构的程序一般由5部分组成:初始化,循环体(处理部分)、循环修改、循环控制(继续循环吗?)和结束部分。关键:循环体(做什么)-变化量--如何变化—初始化、控制与判断三、循环结构的程序循环程序是强制CPU重复执行某一指令序列MCS-51单片机汇编语言程序设计教材课件MCS-51单片机汇编语言程序设计教材课件例5-10、5-11、5-12:1、工作单元清0。2、多个单字节数据求和。3、设在DAT开始的片内RAM中存放10个无符号字节数,找出最大值,并暂存在A中。实验3:10个数,去掉一个最大值、一个最小值,求剩余8个数的平均值。例5-10、5-11、5-12:1、工作单元清0。例5-15:多重循环设计软件延时:12MHZ,1ms冒泡程序5-16。例5-15:多重循环设计软件延时:注意循环结构:注意循环结构:5.3基本功能程序的设计一、查表程序的设计二、子程序的设计三、算术逻辑运算程序四、数制转化程序5.3基本功能程序的设计一、查表程序的设计一、查表程序
查表法是对一些复杂的函数运算如sinx等,事先把其全部可能范围的函数值按一定的规律编成表格存放在计算机的程序存储器中。当用户程序中需要用到这些函数时,直接按编排好的索引值(或程序号)寻找答案。在控制应用场合或智能仪器仪表中,经常使用查表法。一、查表程序查表法是对一些复杂的函数运算如sinx等,事先例5-17已知数据0~9的平方,设变量x的值在累加器A中,查表后求x2的值放回累加器,试编制程序。X2:MOVDPTR,#X2TABMOVCA,@A+DPTRRETX2TAB:DB00H,01H,02H,……64H,81H
例5-17已知数据0~9的平方,设变量x的值在累加器A中,查例5-18:设计一个将十六进制数转换成ASCII码的子程序。设
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030年中国soc芯片市场未来发展趋势及投资风险评估报告
- 新野县2025届小学六年级第二学期小升初数学试卷含解析
- 2025-2030年中国GSM蜂窝移动通信系统市场运行新形势与投资前景报告
- 2025企业员工安全培训考试试题及答案黄金题型
- 2024-2025承包商入厂安全培训考试试题附参考答案(能力提升)
- 2025年工厂安全培训考试试题及答案(名校卷)
- 2025-2030年中国LNG冷能利用市场行情监测与发展前景展望研究报告
- 2025年新版车间安全培训考试试题附参考答案【典型题】
- 2025年企业管理人员安全培训考试试题及完整答案【一套】
- 2024-2025企业员工安全培训考试试题及答案往年题考
- 2023年新改版教科版四年级下册科学练习题(一课一练+单元+期中+期末)
- GB/T 10228-2023干式电力变压器技术参数和要求
- 基于STM32的停车场智能管理系统
- 超市商品分类明细表
- 2023年北京市石景山区八角街道社区工作者招聘笔试题库及答案解析
- 完整解读中华人民共和国政府信息公开条例课件
- RB/T 109-2013能源管理体系人造板及木制品企业认证要求
- GB/T 16895.2-2017低压电气装置第4-42部分:安全防护热效应保护
- 法人治理主体“1+3”权责表
- 小学科学《蚂蚁》优质课件
- 幼儿园中班语言绘本《章鱼先生卖雨伞》课件
评论
0/150
提交评论