第四章单片机的程序设计.pptVIP

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

第12讲:MCS-51单片机的程序设计(2)*第12讲:MCS-51单片机的程序设计(2)*第12讲:MCS-51单片机的程序设计(2)*第12讲:MCS-51单片机的程序设计(2)*第12讲:MCS-51单片机的程序设计(2)*第1页,共25页,星期日,2025年,2月5日第04章:MCS51单片机的程序设计主要内容:汇编语句格式与伪指令简单程序与分支程序举例与分析循环程序举例与分析子程序举例(查表)C51初步(程序段例示)第2页,共25页,星期日,2025年,2月5日3、常用的典型子程序(掌握,能记能背!)顺序(直线)程序分支程序循环程序(单循环、多循环)散转子程序与参数传递查表程序数制转换数学运算程序第3页,共25页,星期日,2025年,2月5日4)散转程序设计散转程序是分支程序的一种,它可根据运算结果或输入数据将程序转入不同的分支。MCS-51指令系统中有一条跳转指令JMP@A+DPTR,用它可以很容易地实现散转功能。该指令把累加器的8位无符号数与16位数据指针的内容相加,并把相加的结果装入程序计数器PC,控制程序转向目标地址去执行。此指令的特点在于,转移的目标地址不是在编程或汇编时预先确定的,而是在程序运行过程中动态地确定的。目标地址是以数据指针DPTR的内容为起始的256字节范围内的指定地址,即由DPTR的内容决定分支转移程序的首地址,由累加器A的内容来动态选择其中的某一个分支转移程序。第4页,共25页,星期日,2025年,2月5日例8(同例3):根据工作寄存器R0内容的不同,使程序转入相应的分支:(R0)=0对应的分支程序标号为PR0;(R0)=1对应的分支程序标号为PR1;.........(R0)=N对应的分支程序标号为PRN。程序如下:LP0:MOVDPTR,#TAB;取表头地址MOVA,R0ADDA,R0;R0内容乘以2JNCLP1;无进位转移(可能R0=128)INCDPH;加进位位LP1:JMP@A+DPTR;跳至散转表中相应位置TAB:AJMPPR0AJMPPR1......AJMPPRN第5页,共25页,星期日,2025年,2月5日本例程序仅适用于散转表首地址TAB和处理程序入口地址PR0,PR1,…,PRN在同一个2KB范围的存储区内的情形。若超出2KB范围可在分支程序入口处安排一条长跳转指令,可采用如下程序:MOVDPTR,#TABMOVA,R0MOVB,#03H;长跳转指令占3个字节MULABXCHA,B;成绩的高8位送入A中ADDA,DPH;对分支转移参数高位进行处理,把它加到DPH中去MOVDPH,A;修正DPTRXCHA,BJMP@A+DPTR;跳至散转表中相应的位置TAB:LJMPPR0;跳至不同的分支LJMPPR1……LJMPPRN第6页,共25页,星期日,2025年,2月5日5)子程序和参数传递什么是子程序?通常把一些基本操作功能编制为程序段作为独立的子程序,以供不同程序或同一程序反复调用。在程序中需要执行这种操作的地方放置一条调用指令,当程序执行到调用指令,就转到子程序中完成规定的操作,并返回到原来的程序继续执行下去。第7页,共25页,星期日,2025年,2月5日子程序是如何调用的?调用子程序的指令有“ACALL”和“LCALL”,执行调用指令时,先将程序地址指针PC改变(“ACALL”加2,“LCALL”加3),然后PC值压入堆栈,用新的地址值代替。执行返回指令时,再将PC值弹出。子程序调用中,主程序应先把有关的参数存入约定的位置,子程序在执行时,可以从约定的位置取得参数,当子程序执行完,将得到的结果再存入约定的位置,返回主程序后,主程序可以从这些约定的位置上取

文档评论(0)

xiaozhuo2022 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档