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