单片机原理及应用第6章中断及其应用.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
6.5 系统化程序设计中的概念和方法   程序设计的概念和方法已经分散在前面各章学习指令和控制硬件的过程中了,这里集中总结一下,让读者对程序设计有一个系统的概念和印象。 6.5.1 汇编语言   计算机的语言体系分为机器语言、汇编语言和高级语言。   机器语言是能够被机器直接识别和执行的语言,是一系列的二进制数,就是前面讲的指令代码。对这些二进制代码进行分析、编程、修改等是非常麻烦的事情。为了方便,就采用人们习惯的符号来表示指令的操作码或操作数,这些符号就是第1章讲的助记符(如MOV、XOR等),这种符号语言就称为汇编语言。   用汇编语言编制的程序叫汇编程序,也叫源程序。汇编语言实际上是机器语言的符号化,只是采用助记符来描述。汇编语言只有翻译成机器语言才可以被机器识别和执行,这个翻译过程称为编译。现在,一般的系统开发平台提供集成的开发环境:源程序的编辑和编译,还有的同时也提供仿真等功能。μV3系统就可以完成这些任务。   无论机器语言还是汇编语言,都是面向机器的设计方案,设计目标直接针对硬件,离用户的层次比较远,所以把这种语言称之为低级语言。其优点是硬件控制能力强,代码执行效率高,对指令的执行时间控制能力高,特别适用于实时控制;缺点是没有通用性,程序对硬件依赖性强,移植能力太差,编程工作量大。   高级语言是一种面向过程或者面向对象的语言,如C、VC、VB、PB等都是高级语言。在高级语言环境中,由系统来配置完成对不同硬件的支持,用户使用时主要精力是掌握该语言的语法规则和程序的结构设计等,这样就可以提高用户的编程效率。   随着单片机的发展,存储器的价格非常便宜,空间已经足够,而且也具有足够的运行速度,所以程序设计的首要任务已不是节约空间和精简代码,而是提高编程效率,增加程序的可读性和可维护性。 6.5.2 程序结构   程序的基本结构有三个:顺序、选择和循环。任何复杂的程序都可由这三种基本结构组合完成。 6.5.3 子程序与中断服务程序   这里重点强调一下二者执行机制的不同。子程序是程序在固定的位置主动去调用执行的。而中断服务程序则是在不确定的位置,由硬件去调用执行的。在子程序中也有可能发生中断调用;而在中断服务中也可以安排子程序的调用。不过,堆栈的深度要足够,否则堆栈会溢出而导致程序崩溃。 6.5.4 查表、数据检索与排序   查表、数据检索与排序是程序设计中比较重要的几个算法。   1. 查表   专门的查表指令有两条:MOVC A,@A+PC和MOVC A,@A+DPTR。二者的区别已在第2章介绍基址加变址指令时详细介绍过,请参阅。这里用第二条指令举例说明一下。   TABLE为首地址的表中依次存放了0~10的立方值,利用查表法求出R0 中数的立方,结果放在R2R1中。程序如下: ORG 0000H LJMP START ORG 0100H     START: MOV SP,#60H MOV R0,#08H ; 给R0赋值 LCALL CUBE ; 调用查找立方值 SJMP $ ; 主程序循环     CUBE:     MOV DPTR,#TABLE ; ?DPTR指向立方表 MOV A,R0 ; 读入R0里面的值 RL A ; 双字节存放,所以要乘2 PUSH A ; 把A中的数据保存            MOVC A,@A+DPTR ; 取出立方值的高8位 MOV R2,A ; 放入R2 中 POP A ; 恢复刚才A中的原始值 INC A ; 增加1指向低8位 MOVC A,#A+DPTR ; 取出立方值的低8位 MOV R1,A ; 放入到R1中 RET ; 子程序返回     TABLE: DW 0,1,8,27,64,125  ; 一共存放了11个字,对应 DW 216,343,512,648,1000; ?0~10的立方值 END   3. 开关中断问题   ? 若在执行当前中断时不想被更高级的中断打断,则进入中断服务程序后,首先要关中断,或者屏蔽更高级中断源的中断。例如,执行CLR EA。通常采用的方式就是进入中断服务后关中断,而在中断返回前开中断。   ? 在进行现场的保护或操作时,不能被高优先级的中断打断,否则有可能会破坏现场数据或者造成混乱。通常采取的方法是保护现场前关中断,保护后再开中断;恢复现场前关中断,恢复结束后再开中断。这是一般意义的流程。如果在中断服务中不希望发生中断嵌套,则关中断后中间就不用再开了,直到返回前再开中断。一般意义的中断处理流程如图6-9所示。 图6-9 中断处理过程   4. 处理中断源请求(处理任务)  

文档评论(0)

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

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

1亿VIP精品文档

相关文档