单片机10-1

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第十章实用程序一、主程序和子程序概念主程序:系统控制程序的主框架,它是一个顺序执行的无限循环的程序,运行过程必须构成一个圈。主程序应不停地顺序查询各种软件标志,并根据其变化调用有关的子程序和执行相应的中断服务子程序,以完成对各种实时事件的处理。一、主程序和子程序概念一、主程序和子程序概念子程序:在一段程序中.往往有许多地方需要执行同样的一种操作,这时可以把该操作单独编制成一个子程序,LCALLRET可以反复调用,这样处理可以简化程序的逻辑结构,缩短程序长度.便于模块比,便于调试,一、主程序和子程序概念主程序调用子程序时要注意两个问题:主程序和子程序间参数传递主程序现场保护子程序中:一般应有保护现场和恢复现场参数传递:一、主程序和子程序概念参数传递:主程序先把有关参数(即入口参数),放到约定的位置,子程序在运行时,可以从约定的位置得到有关的参数;子程序在运行结束前,也应该把运算结果(出口参数)送到约定位置。在返回主程序后。主程序可以从这些地方得到需要的结果。一、主程序和子程序概念一、主程序和子程序概念中断服务子程序:当主程序运行时,如果遇到中断申请,CPU执行完当前的一条指令如“MOVA,#00H”后,首先自动压入断点1002H,然后转去执行中断服务子程二、水位控制程序二、水位控制程序二、水位控制程序二、水位控制程序ORG0000HLJMPLOOPORG0030HLOOP:ORLP1,#03HMOVA,P1JNBACC.0,ONE;P1.0=0转JBACC.1,TWO;P1.1=1转BACK:ACALLD10S;延时10sAJMPLOOPONE:JNBACC.1,THREE;P1.1=0转CLR93H;P1.3=0,报警SETB92H;P1.2=1,停止电机FOUR:SJMPFOURTHREE:CLR92H;P1.2=0,启动电机AJMPBACKTWO:SETB92H;P1.2=1,停止电机AJMPBACKORG0100HD10S:…….…….RETEND三、软件抗干扰很多人有这样的经历:实验室能正常模拟运行的系统,到工业现场进行实际运行时,几乎都不能正常工作。有的一开机就失灵,有的时好时坏。原因:工业环境有强大的干扰,系统没有采取抗干扰的措施,或者措施不力。经过反复修改硬件设计和软件设计,增加不少对症措施之后.系统才能够适应现场环境。三、软件抗干扰可能为抗干扰而做的工作比前期实验室研制样机的工作还要多,有时甚至多几倍。由此可见抗干扰技术的重要性。三、软件抗干扰干扰可以沿各种线路侵入微机系统.也可以以场的形式(高电压、大电流、电火花等)从空间侵入电网中各种浪涌电压入侵、系统的接地装置不良或不合理等。也是引入干扰三、软件抗干扰干扰对微机系统的作用可以分为三个部位前向通道,CPU内核,后向通道。1、软件陷阱技术当CPU受到干扰后,往往将一些操作数当作指令码来执行,造成程序执行混乱要尽快将程序纳入正轨(执行真正的指令)软件陷阱就是用一条引导指令强行将捕获的程序引向一个指定的地址,在那里有一段专门对程序出错进行处理的程序,以使程序按既定目标执行。如果把这段程序的入口标号称为ERR1、软件陷阱技术软件陷阱即为一条指令:LJMPERR为加强其捕捉效果,一般还在它前面加两条NOP指令。因此,真正的软件陷阱由三条指令构成;NOPNOPLJMPERR(1)未使用的中断向量区当干扰使未使用的中断开放,并激活这些中断时,会导致混乱。ORG0000H0000START:LJMPMAIN0003LJMPPGINT00006NOP0007NOP0008LJMPERR000BLJMPPGT0000ENOP000FNOP0010LJMPERR0013(1)未使用的中断向量区0013LJMPERR0016NOP0017NOP0018LJMPERR001BLJMPPGT1001ENOP001FNOP0020LJMPERR0023LJMPPGT10026NOP0027NOP0028LJMPERR(2)未使用的大片ROM空间一个微机控制系统或应用系统都很少能将ROM全部用完。对于剩余的大片未编程ROM空间,一般都维持原状(0FFH)0FFH:一条单字节指令MOVR7,A程序弹飞到这一区域后将顺流而下,不再跳跃这样,只要每隔一段设置一个陷阱,就能捕捉到弹飞的程序。NOPNOPLJMPERR(3)表格表格有两类:一类是数据表格.供“MOvcA,@A千PC”指令或”MOVcA,叵A千DPTK”指令使用.其内容完全不是指令;另一类是散转表格,供“JMP④AfDPTR”指令使用,其内容(2)未使用的大片ROM空间为一系列的三字节指今LJMP或两字节指今AjMP。由于表格中内容相检索值存在一一对应关系,在表格中安排陷阱将会破坏其连续性相对应关系,所以,只能在表格的最后安排五字节陷阱(NUP.N(5P.LJMPERR).(2)未使用的大片ROM空间、惧什d程序区是由一系列执行指令构成的,一般不能在这些指令串中间任意安排陷阱,否则,正常执行的程序也可能被捕获。在这些指令串中间常有一些断裂点,正常执行的程序到此便不会继续往下执行了,这类指令有LJMP,sJMP,A』MP,RET,RETl。这时.Pc的值应发生正常跳转,如果还要顺次往下执行,就必然要出错了。如果弹飞来的程序刚奸落到断裂点的操作数上或落到前面指令的操作数上(又没有在这条指令之前使用冗余指令J,则程序就会越过断裂点.继续往前冲,在这种地方安排陷阱后,就能有效地捕获到它.而又不会影响正常执行的程序流程。例如,在一个根据累加器A中内容的正.负.零情况进行三分支的程序中,软件陷阱的安置方式如下;(2)未使用的大片ROM空间10.5.2软件看门狗前面已经提到,当程序弹飞到一个临时构成的死循环中时,软件陷阱也就无能为力/,这时系统将完全瘫痪÷如果操作者在场,就可以按下人工夏位按钮,强制系统复位,摆脱死循环。但操作者不能一直监视着系统,即使监视着系统,也往往是在引起不良后果之后才进行人工复位.能不能不要人来监视,而由计算机自己来监视系统运行情况呢?当然可以,这就是程序运行监视系统(wATcH叫Gj;这好比是王人养了一条拘,毛人在正常干活的时候总是不忘每隔一段固定时间就给拘吃点东西,拘屹过东西就安静下来,不影响王人干活。如果主人打瞌睡不干活了,到一定时间,拘饿了.发现主人还没有给它吃东西,就会大叫起来,把主人吵醒,国外把程序运行监视系统称为wATcHOuG(看门拘,也就是这个意思‘从这个比喻中可以看出,(2)未使用的大片ROM空间了本身能独立工作.基本上不依赖于cPu。②CPU在一个固定的时间间隔内和该系统打一次交道(喂正常。②当CPU陷入死循环后,能及时发觉井使系统复位。在8096系列单片机和增强型805l系列单片机芯片中已经内嵌/程序运行监视系统.使用起来很方便。而在普通型51系列单片机中,必须由用户自己建立、如果要实观wATCHDO乙的真正目标,该系统还必须包括完全独立十CPU之外的硬件电路,有时为了简化硬件电路.也可以采用纯软件的wATcHDO乙系统。当硬件电路设计未采用wATcHDO乙时.软件wATCHDO乙是一个比较好的补救措施.只是其可靠性稍差一些。当系统陷入死循环后,什么样的程序才能使它跳出来呢?只有比这个死循环更高级的中断子程序才能夺走对cPu的控制权。为此.可以用一个定时器来做wATCHm)c,将它的溢出中断设定为高优先级中断(樟电中断选用1^To时,世可设为高级中断.井享有比定时中断更莴的优先级,,系统的其他中断均设为低优先级中断。例如,用Tu作wA丁cHDu乙,定时约为(2)未使用的大片ROM空间以上初始化过程可与其他初始化过程一井进行;如果T)世作为』6位定时器,则可以用“MOVTMUD.R11H”宋代替‘MUVTMUD.Ro)H”指令。wATCl①06启动以后,系统工作程序必须经常“喂它”.且每两次之间的间隔不得大于)6ms(如可以每10ms“喂”一次)。执行一条-MUVTHo,:oEo㈠”指今即可将它竹时“喂饱”,若改用“MOvTHo,900H”指令来“喂”它,它将“安静”13Lms(而不是我们要求的16ms,.这条指令的设置原则相硬件wATCHDO乙相同;当程序陷入死循环后,)6ms之内即可引起一次To溢出,产生莴优先级中断.从而跳出死循环。丁。中断可直接转向出错处理程序.在中断问量区放置一条“LJMPERR叩p可;由出错处理程序来完成各种善后工作.井用软件方法使系统复位.下而是一个完整的看门拘程序,它包括模拟主程序,喂拘(DO乙,程序和空弹返回rJnuoH(2)未使用的大片ROM空间(2)未使用的大片ROM空间

1 / 31
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功