欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    第六章监控主程序精选文档.ppt

    • 资源ID:43983649       资源大小:2.97MB        全文页数:81页
    • 资源格式: PPT        下载积分:18金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要18金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第六章监控主程序精选文档.ppt

    第六章监控主程序本讲稿第一页,共八十一页 监控程序的任务是接受、分析和执行监控程序的任务是接受、分析和执行 来自键盘和来自键盘和GP-IBGP-IB接口的命令接口的命令。第六章第六章 监控主程序的设计监控主程序的设计本讲稿第二页,共八十一页 监控程序可分为:(1)监控主程序 其任务是识别按键、解释命令并获得相应的处理子程序的入口地址。(2)接口管理主程序 接受和分析来处GP-IB接口的命令,把控制转到相应的命令处理子程序的入口。(3)命令处理子程序 其任务是具体执行命令、完成命令所规定的各项实际动作。第六章第六章 监控主程序的设计监控主程序的设计本讲稿第三页,共八十一页 命令处理子程序随智能仪器不同而异,即使在同一智能仪器中,也随命令不同而异。但监控主程序在不同智能仪器中却有相同的结构和通用的设计方法,本章介绍监控主程序的两种设计方法。6.1 直接分析法 6.2 状态变量法第六章第六章 监控主程序的设计监控主程序的设计本讲稿第四页,共八十一页6.1 直接分析法 所谓直接分析法,就是只需根据当前按键的编码,把控制直接分支到相应的处理子程序的入口,而无需知道在此之前的按键情况。这种方法适用于一键一义的情况。具体设计时可用选择结构,也可用转移表。本讲稿第五页,共八十一页一、用选择结构法设计监控主序 这种方法适用于比较简单的场合。在单片机应用系统中,键盘接口提供了被按键读数,即有键按下时CPU可得到被按键的读数(即键值),监控主程序根据键读数把控制转到相应的处理子程序入口。本讲稿第六页,共八十一页一、用选择结构法设计监控主序按键数字键命令键主功能命令非主功能命令通常智能仪器键盘上按键分两大类:用选择结构法设计的监控主程序的流程图如图6-1所示:本讲稿第七页,共八十一页一、用选择结构法设计监控主序 本讲稿第八页,共八十一页一、用选择结构法设计监控主序 若某智能仪器键值K为09是数字键,为AF是命令键,设均为主功能命令,且暂不设主功能标志,分别对应于命令处理子程序1、26,键值暂存于寄存器B中。汇编程序如下:本讲稿第九页,共八十一页一、用选择结构法设计监控主序汇编程序如下:MOV A,BCLR CSUBB A,#0AHJC DIGCJNE A,#00H,02HAJMP addr11.1CJNE A,#01H,02H本讲稿第十页,共八十一页 AJMP addr11.2 CJNE A,#05H,02H AJMP addr11.6DIG:一、用选择结构法设计监控主序本讲稿第十一页,共八十一页一、用选择结构法设计监控主序 其中addr11.1、addr11.2、addr11.6分别为各处理子程序入口地址的低11位。这样转移的范围不超过2K字节。也可用LJMP指令,子程序便可在64K范围内任意安排。本讲稿第十二页,共八十一页二、用转移表法设计监控主程序 这种方法的核心是建立一张一维的转移表。转移表:就是顺序登记了各命令处理子程序的入口地址(或转移指令)的数据表格。本讲稿第十三页,共八十一页二、用转移表法设计监控主程序 a)用子程序入口地址构成的转移表。b)用转移指令构成的转移表。本讲稿第十四页,共八十一页 对于前例,若用转移表法设计监控主程序,就是根据当前按键的编码,查阅转移表,便可获得相应命令处理子程序的入口。所设计的监控主程序流程如图6-3所示。二、用转移表法设计监控主程序本讲稿第十五页,共八十一页本讲稿第十六页,共八十一页二、用转移表法设计监控主程序对于6-2(a)所示的转移表,监控主程序如下:MOV DPTR,#TABL MOV A,B ;取键值 CLR C SUBB A,#0AH ;是数字键吗?JC DIG RLC A MOV R3,A MOVC A,A+DPTR本讲稿第十七页,共八十一页二、用转移表法设计监控主程序 MOV R2,A INC DPTR MOV A,R3 MOVC A,A+DPTR MOV DPH,A MOV DPL,R2 CLR A JMP A+DPTR TABL:ADSUB1 ADSUB2 DIG:a)用子程序入口地址 构成的转移表本讲稿第十八页,共八十一页二、用转移表法设计监控主程序对于图6-2(b)所示的转移表,监控主程序如下:MOV A,B CLR C SUBB A,#0AH JC DIG RLC A MOV DPTR,#TABL JMP A+DPTRTABL:AJMP addr11.1 AJMP addr11.2 DIG:b)用转移指令构成的转移表 本讲稿第十九页,共八十一页二、用转移表法设计监控主程序 在一键多义的情况下,一个命令是由一个按键序列所组成,因此对于一键多义的监控程序,首先要判断一个按键序列是否已经构成命令,若已构成合法命令、则执行命令,否则等待新的按键输入。本讲稿第二十页,共八十一页二、用转移表法设计监控主程序 一键多义的监控程序仍可采用转移表法进行设计,但要用多张转移表,前面几张起着引导作用,最后一张可找到命令处理子程序的入口。本讲稿第二十一页,共八十一页二、用转移表法设计监控主程序 例:某电压频率计面板上有A、B、C、D、GATE、SET、OFS、RESET等八个键、按RESET键使仪器初始化并启动测量,初始化后直接按A或B、C、D键,分别进行测频或测周期、测时间间隔、测电压等,按GATE键后再按A或B、C、D键,则输入一个常数(偏移),若按奇数次OFS键,进入偏移工作方式,按偶数次OFS键,则为正常工作方式。本讲稿第二十二页,共八十一页二、用转移表法设计监控主程序 采用转移表法所设计的监控程序如图6-4。该程序内包含了三张转移表。GATE、SET键分别把控制引向转移表2与3,以区别A、B、C、D键的三种含义。每执行完一个命令,微处理器继续扫描键盘,等待新的命令输入。本讲稿第二十三页,共八十一页二、用转移表法设计监控主程序本讲稿第二十四页,共八十一页二、用转移表法设计监控主程序 以查询方式处理键盘接口的方法在智能仪器中有时会遇到困难。因为在智能仪器中,当接到某些命令后,通常要反复执行这些命令,直到接收新的主功能命令为止,这样微处理器就无时间询问并扫描键盘。这时宜采用中断方式处理键盘接口较好。本讲稿第二十五页,共八十一页二、用转移表法设计监控主程序 此外,智能仪器监控程序具有实时性,一旦出现按键中断后,通常应该作废正在进行的一次测量;当中断服务程序完成后,重新启动一次测量,而不回到程序中断点处恢复原来进行的测量多半是一次错误的测量。考虑到这些因素。上例监控程序可设计成图6-5所示的形式。本讲稿第二十六页,共八十一页二、用转移表法设计监控主程序二、用转移表法设计监控主程序本讲稿第二十七页,共八十一页二、用转移表法设计监控主程序 上述这些监控程序的特点是命令的识别与处理子程序的执行交织在一起,相互牵连,结构复杂而凌乱无序,不易修改、阅读与调试。当按键较多、复用次数较多时,这一矛盾尤为突出。在一键多义的情况下,用状态变量法设计监控主程序可以克服这些缺点。本讲稿第二十八页,共八十一页 6.2 状态变量法 一、状态变量法的实质 二、状态变量法设计步骤 三、设计状态图和状态表的原则与技巧 四、用状态变量法设计监控主程序实例本讲稿第二十九页,共八十一页 6.2 状态变量法 所谓状态变量法就是将仪器工作的整个过程划分为若干个状态,在任一状态下,每个按键都有一个准确的含义。即状态与按键的每一种组合均应执行一个子程序并变迁到下一个状态(称为次态,用NEXST表示)。这可用一个矩阵来表示,称状态矩阵或状态表,如表6-1所示:本讲稿第三十页,共八十一页一、状态变量法的实质 按键状态K1K2KnST0SUB01NEXST01SUB02NEXST02SUB0nNEXST0nST1SUB11NEXST11SUB12NEXST12SUB1nNEXST1nSTmSUBm1NEXSTm1SUBm2NEXSTm2SUBmnNEXSTmn本讲稿第三十一页,共八十一页一、状态变量法的实质 这样智能仪器内部CPU只要记住仪器当前的状态即现态,当有键入时,根据当前按键和现态这两个关键字查阅状态表,便可确定按键的含义,这就是状态变量法的实质。本讲稿第三十二页,共八十一页一、状态变量法的实质 上述状态表中表示仪器有n个按键、m+1个状态。若在STi(0 i m)态按Kj(1 j n)键,则将执行SUBi子程序(i为子程序号数或首址),并变迁到NEXSTr态(0 r m)。本讲稿第三十三页,共八十一页一、状态变量法的实质 表6-1是一个稀疏矩阵,若直接利用则占用内存量大,程序运行速度也慢。因而必须进行压缩,将那些无效组合集中起来进行处理,稍微改变排列,就成为表6-2所示形式。本讲稿第三十四页,共八十一页一、状态变量法的实质本讲稿第三十五页,共八十一页一、状态变量法的实质 表中“*”号表示各无意义按键的集合。这一状态表明确规定了仪器在每个状态下接受各种按键时所应进行的实际动作,也规定了状态的变迁,因而是监控程序的“大纲”。本讲稿第三十六页,共八十一页一、状态变量法的实质 用状态变量法设计监控主程序是将仪器工作的整个过程划分为若干个“状态”,在任一状态下,每个按键都有一个确定的含义,即执行另一个子程序且变迁到另一个状态(次态),把这种状态与按键对应关系的组合列成一张表 状态表,存入存储器中。仪器现在所处的状态即现态专门用一个存储单元来记忆,监控主程序就根据现态和当前按键这两个关键字查阅状态表,便可确定按键的确切含义。本讲稿第三十七页,共八十一页二、状态变量法设计步骤 下面举例来说明设计步骤。设某电压频率计的键盘安排如图6-6所示。本讲稿第三十八页,共八十一页二、状态变量法设计步骤 其中F、T、TA-B及V键规定了仪器的测量功能,SET键规定数字键09及小数点键作输入常数或自诊断用,GATE键规定数字键作闸门时间或电压量程用。若按OFS键奇数次,则进入偏移工作方式,按OFS键偶数次,为正常工作方式,按CHS键改变常数符号,负数为负偏移方式,正数为正偏移方式。本讲稿第三十九页,共八十一页 第一步画出键盘状态图,本例可设计成如图6-7的键盘状态图。二、状态变量法设计步骤本讲稿第四十页,共八十一页二、状态变量法设计步骤本讲稿第四十一页,共八十一页二、状态变量法设计步骤第二步画出与状态图对应的状态表1、先画符号形式的状态表,如表6-3所示。本讲稿第四十二页,共八十一页 1DIGCHSSETRESET*1135078060 2DIGRESET*550960 3DIGRESET*3401000 4RESET*546115*00状 态按 键次 态子 程 序 0FTTA-BVSETGATEOFS*5555125512340050本讲稿第四十三页,共八十一页二、状态变量法设计步骤 在符号形式状态表中,各按键是用符号表示的,显然这是不能存到存贮器的,必须用键码代替。在键盘接口中已经可以获得键码了,但为了压缩状态表,通常对按键进行重新编码,将键码分为FNKY和NUMB两个部分:对于数字键,令FNKY=1,对于命令键,令NUMB=0。列出表6-4所示的键码表。2、画出机器码形式的状态表。本讲稿第四十四页,共八十一页键 名键 码FNKYNUMB键 名键 码FNKYNUMB0123456789000102030405060708090101010101010101010100010203040506070809FTTA-BVSETGATEOFSCHSRESET0A0B0C0D0E0F101112130102030405060708090A0A000000000000000000本讲稿第四十五页,共八十一页二、状态变量法设计步骤 2、画出机器码形式的状态表。这样我们便可以把符号形式的状态表转换为机器码形式的状态表,如表6-5。本讲稿第四十六页,共八十一页二、状态变量法设计步骤 2、画出机器码形式的状态表。STFNKYTNEXSTSUB 0020304050607080005050505010205050102030400000500 1010906010103070800本讲稿第四十七页,共八十一页二、状态变量法设计步骤STFNKYTNEXSTSUB 10A0005000600 2010A00050500090600 3010A00030400100000 40A00050406115000000本讲稿第四十八页,共八十一页二、状态变量法设计步骤第三步 编写程序1.画出程序流程图本例流程图如图6-8所示:本讲稿第四十九页,共八十一页本讲稿第五十页,共八十一页二、状态变量法设计步骤说明:(1)为了避免不必要的两 次按键,通常将“0”态设计成不稳定态。程序中当判明取来的NEXST为“0”时,就自动再查一次状态表,便可脱离“0”,迁移到另一个状态。本讲稿第五十一页,共八十一页二、状态变量法设计步骤 (2)若输入的是主功能命令键,则 把相应的标志置入MAINFN单元,并连续执行其测量程序,若输入的是非主功能命令键,则当完成中断服务程序后,或等待,或恢复原来的测量功能。本讲稿第五十二页,共八十一页二、状态变量法设计步骤 (3)状态表中每一栏的最后一行用“*”号(符号形式)或00(16进制数形 式)表示各无意义按键的集合,所以在程序中如本栏查完了,还找不到FNKYT=FNKY,则该按键一定为无意义的按键,就应该把最后一行的NEXST和SUB取出来用。本讲稿第五十三页,共八十一页二、状态变量法设计步骤 2、用汇编语言来编写程序。本讲稿第五十四页,共八十一页三、设计状态图和状态表的原则与技巧 设计状态图和状态表是用状态变量法设计监控主程序的关键技术,下面讨论设计状态图和状态表的一些原则与技巧。本讲稿第五十五页,共八十一页三、设计状态图和状态表的原则与技巧1.在一个状态每个按键只能有一个含义;所有按键中只要有一个按键具有两个含义,就必须设立两个状态加以区别。如图6-9中的1态和2态不能合并。本讲稿第五十六页,共八十一页三、设计状态图和状态表的原则与技巧 2.若在两个或两个以上状态中所有按键含义都相同,则不论它们由何态、何键迁移而来,均可合并。如图6-10所示本讲稿第五十七页,共八十一页三、设计状态图和状态表的原则与技巧 3.状态变量法与标志的结合应用 虽然单独利用状态变量法能设计各种智能仪器的监控程序,但有时以状态表为主体结合采用其它一些编程技术能有效地提高程序质量。如图6-7中使用标志配合,否则相应部分必须改成图6-11所示。本讲稿第五十八页,共八十一页三、设计状态图和状态表的原则与技巧本讲稿第五十九页,共八十一页三、设计状态图和状态表的原则与技巧 4.状态变量法与转移表的结合使用 先用状态变量法区分多义键,在键的意义子集确定后,再用转移表法分支到确定的处理子程序。如图6-7中,在状态3,各数字键起着命令键的作用,但在状态图中仅用一根流线(状态表内列一项)表示,另用一张转移表根据数字键的NUMB值进行分支,这样效果较好。本讲稿第六十页,共八十一页三、设计状态图和状态表的原则与技巧 5.不稳态0态的设立不仅如前所述避免了不必要的两次按键,而且大大减少了状态间流线的互连,也就大大精简了状态表。如图6-12所示,设了不稳定态后流线大大减少。本讲稿第六十一页,共八十一页三、设计状态图和状态表的原则与技巧 6.状态图必须具有循环性。7.状态表的安排和查找。状态表的每个记录包含ST、FNKYT、NEXST、SUB四个数据项。由于状态表是按ST递增次序排列的,所以ST可以不出现,而 FNKYT在满足表示范围的情况下,位数越少越好。本讲稿第六十二页,共八十一页三、设计状态图和状态表的原则与技巧下面讨论对NEXST、SUB两项的处理:(1)NEXST项的处理 有两种方法可供处理NEXST项:a)把下态子表首址放入记录,每次只 要查找子表,速度快,但占用内存空间多。b)把状态序号放入记录,占用内存少,但每次都要查总表,速度慢。本讲稿第六十三页,共八十一页三、设计状态图和状态表的原则与技巧 较好的方法是把状态用序号装入状态表,另设一张索引表,既可缩小存贮空间,又可提高查找速度。如图6-13所示:本讲稿第六十四页,共八十一页本讲稿第六十五页,共八十一页三、设计状态图和状态表的原则与技巧(2)SUB项的处理 有两种方法可供处理SUB项:a)把子程序入口地址直接记入状态表。b)把子程序号数记入状态表,另用一张转移表登记子程序的入口地址。哪种方法好,应根据具体情况分析。本讲稿第六十六页,共八十一页三、设计状态图和状态表的原则与技巧(3)为节省内存,FNKYT、NEXST、SUB三项应组装起来。如图6-14所示状态表内的记录:本讲稿第六十七页,共八十一页四、用状态变量法设计监控主程序实例 试按图6-7所示的键盘状态图要求设计仪器的监控主程序,状态表已列于表6-5,但为节省空间,对该表作进一步处理,把FNKYT和NEXST两项组装成一个字节,如“0”态子表的第一个记录这两项组装后结果如图6-15所示。本讲稿第六十八页,共八十一页四、用状态变量法设计监控主程序实例图6-16所示为对子程序两种处理方法的状态表。本讲稿第六十九页,共八十一页四、用状态变量法设计监控主程序实例 我们选取6-16 b)的状态表为加快查找速度,又设计了一张索引表,如图6-17所示。本讲稿第七十页,共八十一页四、用状态变量法设计监控主程序实例 下面的监控主程序首先根据现态PREST查找索引表,获得子表首地址,然后由此开始,根据键码逐个记录查找状态表,可以实现按键的功能定义。本讲稿第七十一页,共八十一页四、用状态变量法设计监控主程序实例程序清单如下:MOV A,B ;取按键信息 CLR C SUBB A,#0BH;判断按键是功能键还是数字键 JC DIG ;为数字键,转DIG SUBB A,#03H ;判断是否为主功能键 JNC NMFN ;非主功能键,转NMFN SETB FO ;置主功能标志位FO为1NMFN:ACALL FUN ;调用功能键处理子程序 AJMP START本讲稿第七十二页,共八十一页四、用状态变量法设计监控主程序实例DIG:MOV 30H,#01H ;FNKY值放在30H单元中 MOV 31H,B ;NUMB值放在31H单元中START:MOV DPTR,#PREST MOVX A,DPTR ;取得现态 CLR C RLC A ;(A)2TAB0:MOV R3,A MOV DPTR,#0080H ;查索引表 MOVC A,A+DPTR;取得子表首址低字节 MOV R2,A ;暂存于R2本讲稿第七十三页,共八十一页四、用状态变量法设计监控主程序实例 MOV A,R3 INC A MOVC A,A+DPTR;取高位地址 MOV DPH,A MOV DPL,R2 ;DPTR指到子表的首址TAB1:CLR A MOVC A,A+DPTR;取出记录的第一字节 MOV B,A PUSH DPL PUSH DPH本讲稿第七十四页,共八十一页四、用状态变量法设计监控主程序实例 RL A SWAP A ANL A,#0FH ;(A)=FNKYT JZ OK ;FNKYT=0 查到子表的最后一个记录 MOV 04H,A ;(04H)FNKYT MOV DPTR,#MFNKY MOVX A,DPTR ;(A)=FNKY,取得当前 ;按键读数的FNKY CJNE A,04H,NEXT;FNKYFNKYT,转本讲稿第七十五页,共八十一页四、用状态变量法设计监控主程序实例OK:MOV A,B ;查找成功,记录的第一个 ;字节回送A ANL A,#07H ;取出下态 MOV DPTR,#PREST MOVX DPTR,A ;下态送PREST单元 POP DPH ;调用SUB POP DPL INC DPTR CLR A MOVC A,A+DPTR 本讲稿第七十六页,共八十一页 MOV R2,A CLR A INC DPTR MOVC A,A+DPTR MOV DPH,A MOV DPL,R2 CLR A JMP A+DPTR ;转处理子程序CHOST:MOV DPTR,#PREST ;现态是否为0 MOVX A,DPTR JNZ TAB2 ;现态不为0,转 AJMP TAB0 ;现态为0,再查一次状态表本讲稿第七十七页,共八十一页TAB2:AJMP SCAN ;等待新命令或查询MAINFNNEXT:POP DPH ;转下一条子表记录,;一条记录占用3个字节 POP DPL INC DPTR INC DPTR INC DPTR AJMP TAB1FUN:MOV A,B ;功能键处理子程序 CLR C SUBB A,#09H MOV 30H,A MOV 31H,#00H RET本讲稿第七十八页,共八十一页四、用状态变量法设计监控主程序实例注意:按上述方法处理,各处理子程序后面用指令LJMP CHOST回到本程序的CHOST处,判断现态是否为0。总之,状态变量法设计键盘监控程序具有下列优点:(1)应用一张状态表,统一处理任何一组按键状态的组合,使复杂的按键序列的编译过程变得简洁、直观、容易优化,设计的程序易懂、易读。本讲稿第七十九页,共八十一页四、用状态变量法设计监控主程序实例 (2)翻译、解释按键序列与执行子程序完全分离,因此键盘监控程序的设计不受其它程序的影响,可单独进行,避免两者纠缠交叉。本讲稿第八十页,共八十一页四、用状态变量法设计监控主程序实例(3)若仪器功能发生改变,监控程序的结构不变,仅需改变状态表。(4)设计任务越复杂,按键复用次数越多,此方法的效率越高。对于复杂的仪器仅是状态表规模大些,监控程序的设计方法完全一样。本讲稿第八十一页,共八十一页

    注意事项

    本文(第六章监控主程序精选文档.ppt)为本站会员(石***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开