大工16秋《单片机原理及应用》辅导资料八1479191093873.doc

大工16秋《单片机原理及应用》辅导资料八1479191093873.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
大工16秋《单片机原理及应用》辅导资料八1479191093873

单片机原理及应用辅导资料八 主 题:课件第章子程序的调用方法,算术运算和数码转制程序的设计过程汇编语言设计的一般步骤及汇编语言源程序手工汇编过程 顺序程序是指无分支、无循环结构的程序。其执行流程是依指令在存储器中的存放顺序进行的。 (2)分支程序 分支结构可以分成单分支、双分支和多分支几种情况: 图1 (3)循环程序 按某种控制规律重复执行的程序称为循环程序。循环程序有先执行后判断和先判断后执行两种基本结构: 图2 (4)子程序及其调用 ①子程序的调用 在实际应用中,经常会遇到一些带有通用性的问题,例如:数值转换、数值计算等,在一个程序中可能要使用多次。这时可以将其设计成通用的子程序供随时调用。利用子程序可以使程序结构紧凑,使程序的阅读和调试更加方便。 子程序主要特点是,在执行过程中需要由其它程序来调用,执行完后又需要把执行流程返回到调用该子程序的主程序。子程序调用时要注意两点:一是现场的保护和恢复;二是主程序与子程序的参数传递。 ②现场保护与恢复 在子程序执行过程中常常要用到单片机的一些通用单元,如工作寄存器R0-R7、累加器A、数据指针DPTR,以及有关标志和状态等。而这些单元中的内容在调用结束后的主程序中仍有用,所以需要进行保护,称为现场保护。 在执行完子程序,返回继续执行主程序前恢复其原内容,称为现场恢复。保护与恢复的方法有以下两种: 在主程序中实现; 在子程序中实现。 ③参数传递 由于子程序是主程序的一部分,所以,在程序的执行时必然要发生数据上的联系。在调用子程序时,主程序应通过某种方式把有关参数(即子程序的入口参数)传给子程序,当子程序执行完毕后,又需要通过某种方式把有关参数(即子程序的出口参数)传给主程序。在80C51单片机中,传递参数的方法有三种: 利用累加器或寄存器 在这种方式中,要把预传递的参数存放在累加器A或工作寄存器R0~R7中。 利用存储器 当传送的数据量比较大时,可以利用存储器实现参数的传递。 利用堆栈 利用堆栈传递参数是在子程序嵌套中常采用的一种方法。 一般来说,当相互传递的数据较少时,采用寄存器传递方式可以获得较快的传递速度;当相互传递的数据较多时,宜采用存储器或堆栈方式传递;如果是子程序嵌套时,最好是采用堆栈方式。 2.常用程序举例 (1)算术运算程序 ①多字节数的加、减运算 80C51单片机的指令系统提供的是字节运算指令,所以在处理多字节数的加减运算时,要合理地运用进位(借位)标志。 例1 多字节无符号数的加法:设两个N字节的无符号数分别存放在内部RAM中以DATA1和DATA2开始的单元中。相加后的结果要求存放在DATA2数据区。 MOV R0,#DATA1 ; MOV R1,#DATA2 ; MOV R7,#N ;置字节数 CLR C ; LOOP:MOV A,@R0 ; ADDC A,@R1 ;求和 MOV @R1,A ;存结果 INC R0 ;修改指针 INC R1 ; DJNZ R7, LOOP ; 例2 多字节无符号数的减法:设两个N字节的无符号数分别存放在内部RAM中以DATA1和DATA2开始的单元中。相减后的结果要求存放在DATA2数据区。 MOV R0,#DATA1 ; MOV R1,#DATA2 ; MOV R7,#N ;置字节数 CLR C ; LOOP:MOV A,@R0 ; SUBB A,@R1 ;求差 MOV @R1,A ;存结果 INC R0 ;修改指针 INC R1 ; DJNZ R7, LOOP ; ②多字节数乘法运算 (2)码型转换 ①十六进制数与ASCII码间的转换 十六进制数与ASCII码的对应关系如表所示。当十六进制数在0~9之间时,其对应的ASCII码值为该十六进制数加30H;当十六进制数在A~F之间时,其对应的ASCII码值为该十六进制数加37H。 表1 十六进制与ASCⅡ码的关系表 例3 将1位十六进制数转换成相应的ASCII码。 设十六进制数存放在R0中,转换后的ASCII 码存放于R2中。实现程序如下: HASC:MOV A,R0 ;取4位二进制数

文档评论(0)

haihang2017 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档