測控系統的微機化監控程序設計
引言
本文引用地址:http://dyxdggzs.com/article/194041.htm監控程序負責系統中全部硬件和軟件資源的分配、調度工作,是系統設計中的一個(gè)重要組成部分。它提供用戶(hù)接口, 使用戶(hù)獲得友好的工作環(huán)境, 使計算機獲得很高的效率和高度的自動(dòng)化。隨著(zhù)系統結構的日益復雜和功能的全面, 其監控程序的設計難度也越來(lái)越大。監控程序的質(zhì)量直接影響系統的操作和運行,一個(gè)高質(zhì)量的監控程序應是功能齊全、鍵數合理、操作方便、容錯性好。監控程序在一定的意義上就是鍵盤(pán)分析程序,因此如何在面積較小的面板上設計一個(gè)功能多、操作簡(jiǎn)便的鍵盤(pán)操作系統成為智能儀器設計中非常重要的任務(wù)之一。
鍵盤(pán)上的按鍵可分為2類(lèi):?jiǎn)瘟x鍵和多義鍵。單義鍵,是指按鍵的含義是固定的,一個(gè)按鍵代表一個(gè)命令或一個(gè)數字,執行一種功能,即一鍵一義;多義鍵是指一個(gè)按鍵的鍵義不是單一的,而是具有多重含義,多個(gè)鍵互相配合才產(chǎn)生一個(gè)動(dòng)作,執行一種功能,即一鍵多義。下面結合實(shí)例介紹這2種鍵盤(pán)監控程序的設計。
1 單義鍵監控程序的設計
CPU對鍵盤(pán)管理的方式一般有3種,即查詢(xún)法、中斷法和定時(shí)查詢(xún)法。這3種方式的主要差別在于CPU轉向鍵盤(pán)處理程序的方法。如果從程序設計邏輯講,都是“有鍵按下則轉去處理”。因此它們的鍵盤(pán)管理程序是可以相互轉化的。下面以查詢(xún)法為例,介紹一鍵一義鍵盤(pán)管理程序的設計。
微處理器周而復始地掃描鍵盤(pán),當發(fā)現按鍵時(shí),首先判別是命令鍵還是數字鍵。若是數字鍵,則把按鍵讀數讀入存儲器,通常還進(jìn)行顯示;若是命令鍵,則根據按鍵讀數查閱轉移表,以獲得處理子程序的入口。設一4×8的鍵盤(pán),其中下面16個(gè)鍵為數字鍵,上面16個(gè)鍵為功能鍵。通過(guò)鍵盤(pán)掃描已經(jīng)獲得按鍵的編碼,并且將該編碼存儲于累加器A中。那么,當鍵碼小于10H時(shí)為數字鍵,否則為功能鍵。具體程序如下:
MOV R1,A
CLR C
SUBB A,#10H
JC DIGIT
MOV DPTR,#TBJ2
MOV A,R1
ANL A,#0FH
ADD A,A
JMP @A+DPTR
TBJ2: AJMP PROG1
AJMP PROG2
……
AJMP PROGn
DIGIT:……
一鍵一義鍵盤(pán)管理的核心是一張一維的轉移表,在轉移表內順序登記了各個(gè)處理子程序的轉移命令。
2 多義鍵監控程序的設計
對于功能復雜的微機化系統,若仍然采用“一鍵一義”,則按鍵使用往往過(guò)多,不但增加了費用,而且面板難以布置,操作也不方便。因此,有些鍵盤(pán)設計成一鍵多義方式。在一鍵多義的情況下,一個(gè)命令不是由按鍵,而是由一個(gè)按鍵序列組成。也就是說(shuō),對于一個(gè)按鍵的解釋除了本次的按鍵外,還取決于這之前按了一些什么鍵。一鍵多義的監控程序有2種方法,即轉移表法和狀態(tài)轉移法。下面對這兩種方法進(jìn)行介紹。
2.1 轉移表法實(shí)現多義鍵監控程序
多義鍵的監控程序仍然可以采用轉移表法進(jìn)行設計,不過(guò)這時(shí)要用多張轉移表。首先,要判斷一個(gè)按鍵序列是否構成了一個(gè)合法的命令。若已經(jīng)構成了合法命令,則根據前幾個(gè)按鍵把控制引向某張合適的轉移表,根據最后一個(gè)按鍵編碼查閱該轉移表,就找到了要求的子程序入口。
以一個(gè)8回路微機溫控儀為例。該系統中有6個(gè)按鍵:C(回路號為1~8,第8回路為環(huán)境溫度補償,其余為控溫點(diǎn))、P(參數號,有實(shí)測值、設定值、P、I、D參數,上下限報警值,輸出控制值等8個(gè)參數)、 Δ(加1)、Δ(減1)、R(運行)和S(停止運行)。顯然,這些按鍵都是一鍵多義的。 Δ和Δ鍵的工作執行與否,取決于前面按過(guò)的C和P鍵;R鍵的功能執行與否,取決于當前的C值。用轉移表法實(shí)現這些功能的流程如圖1所示。
圖1 轉移表法實(shí)現多義鍵監控程序流程
從流程圖可以看出,用轉移表法實(shí)現多義鍵的設計需要兩級轉移表。
一級轉移表
TBJ1 AJMP RUM
AJMP STOP
AJMP INCR
AJMP DECR
AJMP CHAL
AJMP PARA
二級轉移表
TBJ2 AJMP C1P0
……
AJMP C1P7
AJMP C2P0
……
AJMPC7P7
2.2 狀態(tài)轉移法實(shí)現多義鍵監控程序
狀態(tài)轉移法是整體地來(lái)考慮應用系統,把它看作是一個(gè)系統,從而引入“狀態(tài)”的概念。將系統工作過(guò)程劃分為若干個(gè)“狀態(tài)”,在任一狀態(tài)下,每個(gè)按鍵都有一個(gè)確定的含義,即執行某一個(gè)子程序且變遷到下一個(gè)狀態(tài)(稱(chēng)為“次態(tài)”,NEXST)。因此,就需要在存儲器內開(kāi)辟一個(gè)單元記住當前狀態(tài)(稱(chēng)為“現態(tài)”,PREST),根據當前狀態(tài)和當前按鍵這兩個(gè)關(guān)鍵詞,就能對當前按鍵的含義作出正確的解釋。用狀態(tài)轉移法設計的監控程序,其程序基本框架是相同的,具有通用性強、修改方便、便于閱讀的優(yōu)點(diǎn)。本文結合“多功能波形發(fā)生器”應用實(shí)例,詳細介紹了狀態(tài)轉移法的監控程序設計過(guò)程。
2.2.1 鍵語(yǔ)分析的定義
鍵語(yǔ)必須有明確的定義, 而且應有一套無(wú)二意的語(yǔ)法規則。假設多功能波形發(fā)生器的按鍵如圖2 所示,且各按鍵的定義如下: AMPL(幅度)、FREQ(頻率)、FUNC(函數)、OFST(偏移)、MODE(模式)、UNIT(單元號)、ON(開(kāi))、OFF(關(guān))、CHS(換符號)、DIG(數字鍵統稱(chēng))、MULT(乘法)。
圖2 多功能波形發(fā)生器的按鍵
2.2.2 建立鍵語(yǔ)狀態(tài)圖
用普通語(yǔ)言對全部鍵語(yǔ)做出詳盡準確的規定是很困難的, 可以用鍵語(yǔ)狀態(tài)圖的方法對全部的鍵語(yǔ)做出完備的定義。這里用圖3所示的鍵語(yǔ)狀態(tài)圖來(lái)描述鍵語(yǔ)的完備集。狀態(tài)圖中每一個(gè)方框表示一個(gè)狀態(tài)(按過(guò)一次鍵), 框內的數字是狀態(tài)的代號。箭頭表示狀態(tài)變遷的方向, 箭頭上的標語(yǔ)是一個(gè)按鍵的代名, 表示變遷的條件, 其中非法鍵統稱(chēng)為“*”。假設最初開(kāi)機時(shí)初始化使系統處于0態(tài), 只要按過(guò)一個(gè)鍵之后, 系統就不可能再處于0態(tài)。假定系統現在處于0態(tài),按下AMPL鍵后系統就轉入了1態(tài)。在1態(tài)中,如果按下CHS或者DIG鍵就可以進(jìn)行幅值的設定;如果按下其他的鍵,則為無(wú)效鍵,系統重新回到0態(tài)。
評論