MCS单片机汇编语言程序设计教材_第1页
MCS单片机汇编语言程序设计教材_第2页
MCS单片机汇编语言程序设计教材_第3页
MCS单片机汇编语言程序设计教材_第4页
MCS单片机汇编语言程序设计教材_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章MCS-51单片机汇编语言程序设计

程序设计:指令的有序罗列。两个方面:

(1)选择某种语言;

(2)解决问题的方法与步骤

-----(算法)本章介绍汇编语言程序设计的基本问题,包括:5.1程序设计概述5.2基本的程序设计5.3基本功能程序的设计5.4数字滤波程序5.1程序设计概述一、程序设计步骤(1)分析问题,确定问题的数学模型(2)确定符合计算机运算的算法(3)绘制流程图(4)内存单元分配(5)据流程图编写汇编语言程序(6)程序调试与修改二、程序设计技术

(1)模块化程序设计(2)自顶向下的程序设计(3)软件的抗干扰技术三、评价程序质量的标准

①程序的执行时间;②程序所占用的内存字节数;③程序的逻辑性、可读性;④程序的兼容性、可扩展性;⑤程序的可靠性。5.2基本的程序设计在程序设计过程中,无论多复杂的程序结构都是由基本的程序结构组成的。

一、顺序结构程序设计二、分支结构的程序设计三、循环结构的程序设计一、顺序结构的程序

顺序结构程序是一种最简单、最基本的程序,按照程序编写的顺序逐条依次执行,直到程序结束。这是程序的最基本的形式,任何程序都离不开这种形式。例5-1:

编程将片内RAM21H单元的低3位和20H单元的低5位合并为一个字节送片内RAM30H,要求21H的低3位放在高位上。分析:(1)将RAM20H的高位屏蔽掉;(2)将21H的高3位屏蔽掉,然后将其低5位移到高5位上;(3)将以上两者合并即可。

MOV 30H,20H

;20H中内容处理 ANL30H,#1FH MOVA,21H

;21H中内容处理 SWAPA RLA ANL A,#0E0H ORL 30H,A;两数合并

例5-2:求内部RAM20H、21H中的4位压缩BCD数与22H、23H中的4位压缩BCD数的差,结结果送24H、25H中。即:(20H)(21H)-(22H)(23H)=(24H)(25H).分析:[(9999H+1)-(22H)(23H)]+(20H)(21H).CLRCMOVA,#9AH;用999AH-(22H)(23H)SUBBA,23HMOV25H,A;结果送24H和25HMOVA,#99HSUBBA,22HMOV24H,AMOVA,25H;(24H)(25H)+(20H)(21H)ADDA,21HDAAMOV25H,A;结果存24H25HMOVA,24HADDCA,20HDAAMOV24H,A补充例题::片外RAM1000H、1001H分别存放两两个无符号号数10010001B和10001010B,如果视其为二进制数,,编程完成成其加法和和减法运算算,结果放放到片外RAM1002H和1003H单元;如果果视其为BCD码,编程完完成其加法法运算和减减法运算,,结果放到到片外RAM1004H和1005H单元。(框图)二、分支结结构的程序序分支结构程程序是利用用条件转移移指令,使使程序执行行到某一指指令时,根根据条件是是否满足,,来改变程程序执行的的顺序。编写分支结结构的程序序主要在于于正确使用转转移指令。编写分支结结构的程序序的关键是是确定好分支支条件转移指令有有三种:无条件转移移条件转移散转(1)无条件转转移它的程序转转移方向是是设计者事事先安排的的,与已执执行程序的的结果无关关,使用时时只需给出出正确的转转移目标地地址或偏移移量即可,,如:ORG0000HLJMPMAIN···ORG0030HMAIN:······(2)条件转移移它是根据已已执行程序序对标志位位或累加器器或对内部部RAM某位的影响响结果,决决定程序的的走向,形形成各种分分支。可用于分支支结构的指指令:JZ/JNZ、CJNE、DJNZ、JC/JNCJB/JNB、JBC程序框图:(a、b正确,c错误)(3)散转它是根据某某种已输入入的或运算算的结果,,使程序转转向各个处处理程序中中去,一般般单片机实实现散转程程序常用于于逐次比较较和算法处处理的方法法。这些方方法一般比比较麻烦、、易出错,,MCS-51单片机具有有一条专门门的散转指指令JMP@A+DPTR,可以使它较较方便地实实现散转功功能。例5-3:编制程序使使y按下式赋值值:VAREQU30HFUNCEQU31HSTART:MOVA,VAR;取xJZ COMP;为0转COMPJNBACC.7,POSI;>0转POSIMOVA,#0FFH;<0,-1ASJMPCOMPPOSI:MOVA,#01HCOMP:MOVFUNC,ARET例5-4:设外外部部存存储储器器单单元元ST1和ST2存放放两两个个不带带符符号号的的二二进进制制数,,找找出出其其中中的的大大数存存入入ST3单元元。。START1:CLRC;进进位位位位清清0MOVDPTR,#ST1;设设数数据据指指针针MOVXA,@DPTR;取取第第一一个个数数MOVR1,A;暂暂存存第第一一个个数数INCDPTRMOVXA,@DPTR;取取第第二二个个数数MOVR2,A;暂暂存存第第二二个个数数SUBBA,R1;两两数数比比较较JNCBIG1XCHA,R1;第第一一个个数数大大SJMPLBIG1:MOVA,R2L:INCDPTRMOVX@DPTR,A;存存大大数数例5-5:空调调机机在在制制冷冷时时,,若若排排出出空空气气比比吸吸入入空空气气温温度度低低8℃℃,则则认认为为工工作作正正常常,,否否则则认认为为工工作作故故障障,,并并设设置置故故障障标标志志。。设片片内内RAM40H中存存放放吸吸入入空空气气温温度度值值,,41H中存存放放排排除除空空气气温温度度值值。。若(40H)-(41H)≥8℃℃,则则空空调调机机制制冷冷正常常,在在42H单元元中中存存放放“0”。否否则则在在42H单元元中中存存放放“FFH”,以以示示故故障障((在在此此42H单元元被被设设定定为为故故障障标标志志))。。为了了可可靠靠地地监监控控空空调调机机的工工作作情情况况,,应应做做两两次次减法法,,第第一一次次减减法法(40H)-(41H),,若C=1,则则肯肯定定有有故故障障;;第二二次次减减法法用用两两个个温温度度的的差值值减减去去8℃℃,若若C=1,说说明温温差差小小于于8℃℃,空空调调机机也也不正正常常工工作作。。ORG0000HSTART:MOVA,40H;吸吸入入温温度度值值送送ACLRCSUBBA,41HJCERROR;C=1有故故障障SUBBA,#8JCERROR;温温差差小小于于8℃℃,有有故故障障MOV42H,#0;工工作作正正常常标标志志SJMPEXITERROR:MOV42H,#0FFH;工工作作故故障障标标志志EXIT:SJMP$END三、、循循环环结结构构的的程程序序循环环程程序序是是强强制制CPU重复复执执行行某某一一指指令令序序列列的的一一种种程程序序结结构构形形式式。。循环环结结构构的的程程序序一一般般由由5部部分分组组成成::初始始化化,,循循环环体体((处处理理部部分分))、、循循环环修修改改、、循循环环控控制制(继续续循循环环吗吗??))和结束束部部分分。。关键键::循环环体体((做做什什么么))-变化化量量--如何何变变化化—初始始化化、、控控制制与与判判断断例5-10、5-11、5-12:1、工作单元清0。2、多个单字节数数据求和。3、设在DAT开始的片内RAM中存放10个无符号字节节数,找出最最大值,并暂存在A中。实验3:10个数,去掉一一个最大值、、一个最小值值,求剩余8个数的平均值值。例5-15:多重循环设计软件延时时:12MHZ,1ms冒泡程序5-16。注意循环结构构:5.3基本功能程序序的设计一、查表程序的设设计二、子程序的的设计三、算术逻辑辑运算程序四、数制转化化程序一、查表程序序查表法是对一一些复杂的函函数运算如sinx等,事先把其其全部可能范范围的函数值值按一定的规规律编成表格格存放在计算算机的程序存存储器中。当当用户程序中中需要用到这这些函数时,,直接按编排排好的索引值值(或程序号号)寻找答案案。在控制应用场场合或智能仪仪器仪表中,,经常使用查查表法。例5-17已知数据0~9的平方,设变变量x的值在累加器器A中,查表后求求x2的值放回累加加器,试编制制程序。X2:MOVDPTR,#X2TABMOVCA,@A+DPTRRETX2TAB:DB00H,01H,02H,……64H,81H例5-18:设计一个将十十六进制数转转换成ASCII码的子程序。。设十六进制制数存放在R0的低4位,要求转换换后的ASCII码送回R0中DB30H,31H,。。39H,41H,。。46H如果不用查表表,应该怎样样做:例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)设键值存放在在片内RAM20H单元中,出口口地址值存放放在片内RAM22H和23H中。DB01H,23HDB01H,86H。。。。DB09H,29H二、子程序设设计在实际问题中中,常常会遇遇到在一个程程序中有许多多相同的运算算或操作。因此在实际应应用中,通常常把这些多次次使用的程序序段,按一定定结构编好,,存放在内存存中,当需要要时,程序可可以去调用这这些独立的程程序段。通常将这种可可以被

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论