ImageVerifierCode 换一换
格式:PPT , 页数:47 ,大小:646.50KB ,
资源ID:778859      下载积分:11 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/778859.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(单片机程序设计.ppt)为本站上传会员【可****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

单片机程序设计.ppt

1、汇编语言设计汇编语言设计 顺序结构 分支结构 循环结构3.1汇编语言程序设计方法汇编语言程序设计方法汇编语言程序设计同高级语言程序设计一样,是有章可循的,只要按照一定的方法步骤去做,程序设计就会变成一件轻松愉快的事情,设计的程序也会规范、清晰、易读、易懂。使用汇编语言设计程序大致上可分为以下几个步骤。1.分析题意,明确要求。2.确定算法。3.画程序流程图。4.分配内存工作单元。5.编写源程序。6.程序优化。7.上机调试。3.2 顺序程序设计【例】程序初始化。初始化就是为变量、寄存器、存储单元赋一初值,是最简单、最常用的操作。如将R0-R3,P1,30H,40H单元初始化为00H,把R4,R5初

2、始化为0FFH。参考程序如下:ORG 0000H ;PC起始地址 LJMP START;转主程序 ORG 0100H;主程序起始地址START:MOV R0,#00H ;初始化 MOV R1,#00H MOV R2,#00H MOV R3,#00H MOV P1,#00H MOV R4,#0FFH MOV R5,#0FFH MOV 30H,#00H MOV 40H,#00HHERE:SJMP HERE;反复执行该指令,相当于等待 END用立即数比较直观,但用MOV A,#00H,MOV R0,A 指令赋值,效果更好。【例】【例】逻辑运算。逻辑操作是控制过程中经常使用的,掌握逻辑运算的特点是提高

3、程序效率的重要途径。在逻辑运算中,进位标标志CY的地位很特殊,它是逻辑累加器,大多数逻辑操作要通过CY来完成。用程序实现图4-2所示的逻辑电路功能。图3-2 逻辑电路参考程序如下:ORG 0000H LJMP START ORG 0100H MOV P1,#0FFH ;P1口初始化LOOP:MOV C,P1.1 ORL C,P1.2 ;P1.1与P1.2逻辑或运算 CPL C ;取反 ANL C,P1.0 ;C与P1.0逻辑与运算 CPL C MOV 07H,C ;暂存于07H单元中 MOV C,P1.3 ANL C,/P1.4 ;P1.3与P1.4的反逻辑与运算 CPL C ORL C,07

4、H MOV P1.5,C ;把结果在P1.5口输出 SJMP$END3.3 分支程序设计分支程序的主要特点是程序包含有判断环节,不同的条件对应不同的执行路径。编程的关键任务是合理选用具有逻辑判断功能的指令。由于选择结构程序的走向不再是单一的,因此,在程序设计时,应该借助程序框图(判断框)来明确程序的走向,避免犯逻辑错误。一般情况下,每个选择分支均需单独一段程序,并有特定的名字,以便当条件满足时实现转移。1 1单分支选择结构单分支选择结构当程序的判断是二选一时,称为单分支选择结构。通常用条件转移指令实现判断及转移。单分支选择结构有三种典型表现形式。图3-3 单分支选择结构(a)当条件满足时执行分

5、支程序1,否则执行分支程序2。(b)当条件满足时跳过程序段1,从程序段2顺序执行;否则,顺序执行程序段1和程序段2。(c)当条件满足时程序顺序执行程序段2;否则,重复执行程序段1,直到条件满足为止。由于条件转移指令均属相对寻址方式,其相对偏移量rel是个带符号的8位二进制数,可正可负。因此,它可向高地址方向转移,也可向低地址方向转移。对于第三种形式,可用程序段1重复执行的次数作为判断条件,当重复次数达到某一数值时,停止重复,程序顺序往下执行。这是分支结构的一种特殊情况,这实际是循环结构程序。用这种方式可方便实现状态检测。【例】:LOOP:JB P1.1,LOOP单分支程序一般要使用状态标志,应

6、注意标志位的建立。【例】设a存放在累加器A中,b存放在寄存器B中,若a0,Y=ab;若a0Y=100X=0 XX0Y=100 X=0 求出Y值,并将Y值放回原处。X X0解:设置一个计数器控制循环次数,每处理完一个数据,计数器减1。程序流程如图4-8所示。A=0?YYNNYNA为负数?取数,A(R1)开始结束AXA64HAX+2存数,(R1)A(30H)设置地址指针R1、计数器R0初值R1R1+1;R0R0-1R0=0?图4-8 例4.5的程序流程图返回本节参考源程序如下:ORG2000H MOVR0,#10 MOVR1,#30H START:MOVA,R1;取数 JBACC.7,NEG;若为

7、负数,转NEG JZZER0;若为零,转ZER0 ADDA,#02H;若为正数,求X+2 AJMPSAVE;转到SAVE,保存数据 ZER0:MOVA,#64H;数据为零,Y=100 AJMP SAVE;转到SAVE,保存数据NEG:DECA CPLA;求XSAVE:MOVR1,A;保存数据 INCR1;地址指针指向下一个地址 DJNZ R0,START;数据未处理完,继续处理 SJMP;暂停【例】排序程序。设在内部RAM中存一无符号数的数组,其长度为n,起始地址是30H,要求将它们按从大到小排序,排序后仍存放在原区域中。按“冒泡法”对n个数排序时,可能用不到n-1次循环,排序就结束了。为了提

8、高排序速度,程序中可设一交换标志位,如10H位,每次循环中,若有交换则执行SETB 10H,表明排序未完成;若无交换,则执行CLR 10H,表明排序已经完成。每次循环结束时,测10H位,判断排序是否结束。参考程序如下:ORG 0000H LJMP BUBBLE ORG 0100HBUBBLE:MOV R0,#30H MOV B,#64H CLR 10H DEC B ;长度计数LOOP:MOV A,R0 ;内循环的入口 MOV 20H,A ;暂存,为交换作准备 INC R0 MOV 21H,R0 CJNE A,21H,BUEU ;若(20H)(21H)转移 BUEU:JNC BUNEXT ;(2

9、0H)(21H)转移 MOV A,R0 ;若(20H)(21H)则交换 MOV R0,20H DEC R0 ;使R0退格指向小地址 MOV R0,A INC R0 ;恢复R0指向大地址 SETB 10H ;置交换标志BUNEXT:DJNZ B,LOOP;内循环是否结束的判断 JB 10H,BUBBLE ;判断标志位为1否?外循环结束的判断 END3.5 子程序设计在实际应用中,一些特定的运算或操作经常使用,例如多字节的加、减、乘、除处理,代码转换、字符处理等。如果每次遇到这些运算或操作,都重复编写程序,不仅会使程序烦琐冗长,而且也会浪费编程者大量时间。因此经常把这些功能模块按一定结构编写成固定

10、的程序段,存放在内存中,当需要时,调用这些程序段。通常将这种能够完成一定功能、可以被其它程序调用的程序段称为子程序。调用子程序的程序称为主程序或调用程序。调用子程序的过程,称为子程序调用,用ACALL addr11和LCALL addr16两条指令完成。子程序执行完后返回主程序的过程称为子程序返回,用RET指令完成。1.1.在编写子程序时要注意以下几点:在编写子程序时要注意以下几点:要给每个子程序赋一个名字。它是子程序入口地址的符号,便于调用。明确入口参数、出口参数。所谓入口参数,即调用该子程序时应给哪些变量传递数值,放在哪个寄存器或哪个内存单元,通常称为参数传递。出口参数则表明了子程序执行的

11、结果存在何处。例如,调用开平方子程序,计算。在调用子程序之前,必须先将x值送到主程序与子程序的某一交接处N(如累加器A),调用子程序后,子程序从该交接处取得被开方数,并进行开方计算,求出的值。在返回主程序之前,子程序还必须把计算结果送到另一交接处M。这样在返回主程序之后,主程序才可能从交接处M得到的值。注意保护现场和恢复现场。在执行子程序时,可能要使用累加器、PSW或某些工作寄存器,而在调用子程序之前,这些寄存器中可能存放有主程序的中间结果,这些中间结果在主程序中仍然有用,这就要求在子程序使用这些资源之前,要将其中的内容保护起来,即保护现场。当子程序执行完毕,即将返回主程序之前,再将这些内容取

12、出,恢复到原来的寄存器,这一过程称为恢复现场。保护现场通常用堆栈来完成。并在子程序的开始部分使用压栈指令PUSH,把需要保护的寄存器内容压入堆栈。当子程序执行结束,在返回指令RET前边使用弹栈指令POP,把堆栈中保护的内容弹出到原来的寄存器。要注意,由于堆栈操作是“先入后出”。因此,先压入堆栈的参数应该后弹出,才能保证恢复原来的数据。为了做到子程序有一定的通用性,子程序中的操作对象,尽量用地址或寄存器形式,而不用立即数、绝对地址形式。另外,子程序中如含有转移指令,应尽量用相对转移指令。2.子程序的调用与返回子程序的调用与返回 主程序调用子程序是通过子程序调用指令LCALL add16和ACAL

13、L add11来实现的。前者称为长调用指令,指令的操作数部分给出了子程序的16位入口地址;后者为绝对调用指令,它的操作数提供了子程序的11位入口地位,此地址与程序计数器PC的高5位并在一起,构成16位的调用地址(即子程序入口地址)。它们的功能,首先是将PC中的当前值(调用指令下一条指令地址,称断点地址)压入堆栈(即保护断点),然后将子程序入口地址送入PC,使程序转入子程序运行。子程序的返回是通过返回指令RET实现的。这条指令的功能是将堆栈中返回地址(即断点)弹出堆栈,送回到PC,使程序返回到主程序断点处继续往下执行。子程序调用过程如图3-8所示图3-8 子程序调用过程 主程序在调用子程序时要注

14、意以下问题。在主程序中,要安排相应指令来传递子程序的入口参数,即提供子程序的入口数据。在主程序中,要安排相应的指令,处理子程序提供的出口数据,即操作结果。在主程序中,不希望被子程序更改内容的寄存器,也可以在调用前由主程序安排压栈指令来保护现场,子程序返回后再安排弹栈指令恢复现场。在主程序中,要正确地设置堆栈指针。3.子程序嵌套子程序嵌套子程序嵌套是指在子程序执行过程中,还可以调用另一个子程序。子程序嵌套过程如图3-9所示。图3-9 子程序嵌套过程4.子程序的特性子程序的特性编写子程序应注意以下问题:通用性。为使子程序能适应各种不同程序、不同条件的调用,子程序应具有较好的通用性。可浮动性。可浮动

15、性是指子程序段可设置在存储器的任何地址区域。假如子程序只能设置在固定的存储器地址段,这在编制主程序时要特别注意存储器地址空间的分配,防止两者重叠。为了能使子程序段浮动,必须在子程序中避免选用绝对转移地址,而应选用相对转移类指令,子程序首地址亦应采用符号地址。可递归和可重入性。子程序能自己调用自己的性质,称为子程序的可递归性,而子程序能同时被多个任务(或多个用户程序)调用的性质,称为子程序的可重入性。这在比较复杂的程序中经常用到。子程序说明文件。对于通用子程序,为便于各种用户选用,要求在子程序编制完成后提供一个说明文件,使用户不必详读源程序,只需阅读说明文件就能了解子程序的功能及应用。【例】求平

16、方。用程序实现 Ca*ab*b。设a、b均小于10,a存在31H单元,b存在32H单元,把C存入33H单元。因本题两次用到平方值,所以在程序中采用把求平方编为子程序的方法。子程序名称:SQR。功能:求X2,通过查平方表来获得。入口参数:某数在A中。出口参数:某数的平方在A中。参考主程序和子程序如下:主程序:ORG 0000HLJMP MAINORG 0100H MAIN:MOV SP,#3FH ;设堆栈指针(调用和返回指令要用到堆栈)MOV A,31H ;取a值LCALL SQR ;第一次调用,求a2MOV R1,A ;a2 值暂存R1中 MOV A,32H ;取b 值LCALL SQR ;第

17、二次调用,求b2 ADD A,R1 ;完成 a2b2MOV 33H,A ;存结果到33HSJMP$;暂停 子程序:ORG 0200HSQR:ADD A,#01H ;查表位置调整,RET为一字节指令MOVC A,A+PC ;查表取平方值RET ;子程序返回TAB:DB 0,1,4,9,16,25DB 36,49,64,81 END求平方的子程序在此采用的是查表法,用伪指令DB将09的平方值以表格的形式定义到ROM中。子程序中A之所以要加1,是因为RET指令占了一个字节。实 践题目:十字路口交通灯 要求:通过单片机的P1口控制实验仪上6个LED按 照交通灯的变化规律循环发光,模拟十字路口交通灯。实

18、验电路如下,L5、L4、L3模拟东西方向交通灯,L2、L1、L0模拟南北方向交通灯。通过一条SETB 指令,可使某一灯亮,通过一条CLR 指令,可使某一灯灭。硬件:画出硬件电路原理图。软件:画出程序流程图,编写源程序。调试:记录调试过程,分析调试结果。南北方向绿灯亮:东西方向红灯亮南北方向绿灯闪:东西方向红灯亮南北方向黄灯亮:东西方向红灯亮南北方向红灯亮:东西方向绿灯亮南北方向红灯亮:东西方向绿灯闪南北方向红灯亮:东西方向黄灯亮SR EQU P1.0;南北红灯SY EQU P1.1;南北黄灯SG EQU P1.2;南北绿灯ER EQU P1.3;东西红灯EY EQU P1.4;东西黄灯EG E

19、QU P1.5;东西绿灯ORG 00h ST1:SETB SG;南北方向绿灯亮 CLR SY CLR SR CLR EG CLR EY SETB ER;东西方向红灯亮 MOV R3,#20;长延时 CALL DELAY MOV R4,#8;南北方向绿灯闪4 次ST2:CPL SG MOV R3,#2 ;短延时 CALL DELAY DJNZ R4,ST2 CLR SG ;南北方向绿灯灭 SETB SY ;南北方向黄灯亮 MOV R3,#20 ;延时 CALL DELAY ST3:CLR SY ;南北方向黄灯灭 SETB SR ;南北方向红灯亮 CLR ER ;东西方向红灯灭 SETB EG ;

20、东西方向绿灯亮 MOV R3,#20 ;长延时 CALL DELAY ST4:MOV R4,#8 ;东西方向绿灯闪4 次LP:CPL EG MOV R3,#2 ;短延时 CALL DELAY DJNZ R4,LP CLR EG ;东西方向绿灯灭 SETB EY ;东西方向黄灯亮 MOV R3,#20 ;延时 CALL DELAY SJMP ST1 ;转ST1 DELAY:MOV R1,#0;延时子程序DELAY1:MOV R0,#0 DELAY2:DJNZ R0,DELAY2 DJNZ R1,DELAY1 DJNZ R3,DELAY RET本章小结本章介绍的基本内容有:MCS-51指令系统的伪

21、指令、汇编语言程序设计步骤、简单程序、循环程序、子程序、查表及散转程序的基本结构以及设计方法与技巧,并列举了大量具有实用价值的子程序实例。通过本章学习应达到如下要求:掌握MCS-51汇编语言程序设计的基本思路;掌握汇编语言常用伪指令的功能、格式以及使用方法;本章小结掌握简单程序、循环、子程序、查表、散转等结构程序的设计方法;掌握常用子程序的功能和调用规则。本章的难点是:循环程序设计、查表及散转程序设计。本章主要讲解的是汇编语言源程序的设计步骤、方法和技巧,灵活性较大,所以需要大家能多想多练,尽量找到每个问题的最优算法节省运行时间并少占存储空间,并能熟练使用这些知识去解决实际问题。限于篇幅,有许多典型的程序并没有收录,需要时可以到网上搜索。

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服