单片机原理第4章2.ppt

  1. 1、本文档共105页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Powerpoint 制作: 五邑大学信息工程学院 刘焕成 电话:0750-3299035(O) 课程主讲:XXX 第4章 单片机应用系统编程基础内容: 从源程序到可执行代码 机器码-汇编语言-高级语言 MCS-51汇编语言指令分析 汇编语言程序组成与结构 从C语言过渡到C51 程序设计举例 4.6 程序设计举例 4.6.1程序流程图 在编写程序前,先对算法进行描述,再动手编程是一个好的习惯。算法描述的方法很多,这里只讨论程序流程图法。 程序流程图是一种直观形象的算法描述方法。美国国家标准协会(American National Standard Institute ANSI),规定了一些常用的流程图符号,如图4-5所示。 4.6.2与I/O操作无关的程序设计 这类程序与单片机的硬件无关。一般有数值计算、数据移动、数据类型转换、排序等,这类程序注重算法、程序结构和单片机的原理部分,与C语言程序设计所学内容有重合之处。也是单片机程序设计的基础之基础。 预期目标:通过汇编和C程序设计方法的对比,透视两种程序之间共性与差异、特点及优势。 1 循环程序设计 计算机处理数据的一个有效方法就是循环。重复做某一类工作正是工程实际中最常见的任务,我们首先要能掌握这一技术的要点。 【例4-14】应用循环结构,编写一个延时子程序,具有可变延时长度的功能。 解:为了使延时长度达到一定宽度,采用三个时间参数R5~R7来调节延时长度,参考子程序清单如下: DELAY: DJNZ R5,DELAY DJNZ R6,DELAY DJNZ R7,DELAY RET 注意: DJNZ型指令的用法。 这是一个通用的软件延时子程序。R5、R6、R7的初值,决定程序运行的时间,即延时长度。初值的设置和子程序调用方法如下完整程序如下。 ORG 0000H SJMP MAIN MAIN: MOV SP,#5FH MOV R5,#60 ;确定延时时间 MOV R6,#210 MOV R7,#8 LCALL DELAY SJMP $ DELAY: DJNZ R5,DELAY DJNZ R6,DELAY DJNZ R7,DELAY RET END 对比DJNZ与C的for循环结构,两者非常相似。C实现本例题功能的函数为: void delay() { unsigned char i,j,k; for (i=0;i8;i++) for (j=0;j210;j++) for (k=0;k60;k++); } 注:程序中延时参数每变化1时,延时时间的变化量,称为该参数的延时分度。在本程序中的三个延时分度,各不相同,最大者称为“粗调”,其它可依次称为“细调”和“微调”延时参数,汇编程序中为R7、R6、R5,对应C程序中的i、j、k。 2 算术运算类程序设计 算术运算采用的数据格式有定点数和浮点数两种。单片机实际工程中的数据,多数是正整数或能转为正整数处理。所以本书只讨论正整数的定点算术运算的编程方法。对于复杂的运算,建议不要用汇编语言(虽然可以),而用C语言编程来完成。 【例4-15】编写计算两个存放于片内,长度为n字节的无符号二进制整数加法程序 ,要求和存于被加数对应单元中。数据采用“小端”存储结构 。 分析:编写通用子程序的方法。“通用”就是使子程序具有解决一类共性问题的能力。 1)本例的共性? (1)加法会产生进位,这是共性。因此,程序必须对进位进行处理。否则程序只对不产生进位的计算才正确,失去通用性。 (2)两个n位无符号整数相加,其和最多为n+1位,最高位是进位的结果,只能是0或1。因此在程序设计时,要准备一个字节或一个位单元来存放和的进位。本程序预留一个字节单元存放进位。 2) 通用性程序设计方法 通用性对程序来说就是能解决同类问题。就本例而言,通用性程序就表现在程序能计算1 ~n字节各种长度的数字之和,被加数和加数的首地址可任意。 3)限制条件 限制条件是单片机硬件的一些限制。本例要求被加数、加数存放于片内,数据长度受到片内RAM容量的限制。在实际应用中,由7~8个字节构成的整数情况已经极少见了,片内RAM的容量不成问题。 4)算法与程序结构 程序循环n次,循环体为以ADDC指令为核心的加法运算,同时进行部分进位处理。循环初始条件包括被加数、加数首地址、数据长度n。计数循环n次后结束。最后处理总进位。子程序流程如图4-6所示,注意学习流程图的表达方式及画法。 下面是本例题的参考子程序清单,名为TWOADD。 T

您可能关注的文档

文档评论(0)

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

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

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档