概况简单程式设计分支程式设计循环程式设计.pptVIP

概况简单程式设计分支程式设计循环程式设计.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
4.1 概 述 4.2 简单程序设计 图4.5 例4.1题意分析示意图 图4.6 例4.2题意分析示意图 4.3 分支程序设计 图4.7 两数比较流程图 图4.9 在实训1原理图基础之上的例4.5硬件原理图 图4.11 指令转移表的存储格式 图4.12(a)表示当条件满足时执行分支程序1,否则执 行分支程序2,例4.3就是这样的一种结构。 图4.12(b)表示当条件满足时跳过程序段2,从程序段 3往下执行,否则顺序执行程序段2和3。 另外,分支结构程序允许嵌套,即一个分支接一个分 支,形成树形多级分支结构程序,例4.4就是这样的结构。 2. 散转程序 在实际应用中,常常需要从两个以上的出口中选一个,称 为多分支程序或散转程序。MCS-51单片机指令系统中专门提 供了散转指令,使得散转程序的编制更加简洁。 例4.5中采用转移地址表法实现散转程序,转移表是由双 字节短转移指令“AJMP”组成的,各转移指令地址依次相差两 个字节,所以累加器A中变址值必须作乘2修正。若转移表是 由三字节长转移指令“LJMP”组成,则累加器A中变址值必须乘 3。当修正值有进位时,则应将进位先加在数据指针高位 字节DPH上。 此外,转移表中使用“AJMP”指令,这就限制了转移的 入口地址ONE、TWO、THREE、FOUR必须和散转表首地址 TABLE位于同一个2 KB范围内。为了克服上述局限性,除了 可以使用“LJMP”指令组成跳转表外,还可采用双字节的寄存 器存放散转值,并利用对DPTR进行加法运算的方法,直接修 改DPTR,然后再用散转指令实现散转。 散转程序除了转移指令表法之外,还可以采用地址偏移 量表法、转向地址表法及利用“RET”指令(子程序返回指令) 实现散转程序等,具体实现参见习题4.11题。 4.4 循环程序设计 4.13 例4.6初步设想的程序流程图 执行上面程序后,结果是8个灯全部被点亮,跟预想 的结果不符,为什么呢?这是因为程序执行得很快,逐一 点亮LED的间隔太短,在我们看来就是同时点亮了,因此, 必须在点亮一个LED后加一段延时程序,使该显示状态稍 事停顿,人眼才能区别开来。正确的程序流程图参见实训 中的图4.4。 (2) 汇编语言源程序。 本例完整的汇编语言源程序见实训4程序3。 由于程序设计中经常会出现如图4.14所示的次数控制循 环程序结构,为了编程方便,单片机指令系统中专门提供了 循环指令DJNZ,以适用于上述结构的编程。 DJNZ R2,NEXT ;R2中存放控制次数,R2-1→R2,R2≠0,转移到NEXT继续循环, ;否则执行下面指令 2.双重循环程序设计——延时程序设计 在上例中使用了延时程序段之后,我们才能看到正确 的显示结果。延时程序在单片机汇编语言程序设计中使用 非常广泛,例如,键盘接口程序设计中的软件消除抖动、 动态LED显示程序设计、LCD接口程序设计、串行通信接 口程序设计等。所谓延时,就是让CPU做一些与主程序功 能无关的操作(例如将一个数字逐次减1直到为0)来消耗 掉CPU的时间。由于我们知道CPU执行每条指令的准确时 间,因此执行整个延时程序的时间也可以精确计算出来。 也就是说,我们可以写出延时长度任意而且精度相当高的 延时程序。 例4.7 设计一个延时1 s的程序,设单片机时钟晶振频 率为fosc=6 MHz。 (1) 题意分析。 设计延时程序的关键是计算延时时间。延时程序一般采 用循环程序结构编程,通过确定循环程序中的循环次数和循 环程序段两个因素来确定延时时间。对于循环程序段来讲, 必须知道每一条指令的执行时间,这里涉及到几个非常重要 的概念——时钟周期、机器周期和指令周期。 时钟周期T时钟是计算机基本时间单位,同单片机使用的 晶振频率有关。题目给定fosc=6 MHz,那么T时钟=1/fosc=1/6 M=166.7 ns。 机器周期T机器是指CPU完成一个基本操作所需要的时 间,如取指操作、读数据操作等,机器周期的计算方法:T 机器=12T时钟=166.7 ns×12=2 μs。 指令周期是指执行一条指令所需要的时间。由于指令 汇编后有单字节指令、双字节指令和三字节指令,因此指 令周期没有确定值,一般为1~4个T机器。在附录2

文档评论(0)

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

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

1亿VIP精品文档

相关文档