正文 第八章 簡單監控程序的剖析(3 / 3)

2.顯示程序流程圖和程序

三、鍵盤分析程序

1.鍵盤的硬件連接

鍵盤的硬件連接配置了一個6行5列的鍵盤,總共有30個按鍵位置,但隻用了28個鍵,其中16個數字鍵,12個命令鍵。鍵盤通過兩個口與連接。

2.鍵值表

是按順序存放的,即表的起始單元存入鍵值1.9,緊接著按順序存入“1”鍵和“好”鍵,共16個數字鍵的鍵值。從單元起順序存入12個命令鍵的鍵值。表的起始地址和存放鍵值的單元地址之差,稱為鍵值偏移量,因為數字鍵放在前,接著是命令鍵,所以,命令鍵的鍵值偏移量乏。

當某一個鍵按下,要識別它的辦法是,一行一行接低電平,稱為行掃描。要把某行接低電平是這樣實現的口寫入輸出口—個數據字,這個數據字應保證低電平行相對應的位為“1”(反相後為“0”),而其餘行相應位是“0”(反相後為“1”)。每掃一行,再從凡口讀入一次數據。如果某列有鍵按下,其對應的值為“0”,其餘位為“1”。根據讀入的列值和相應的行值進行計算得到鍵值,即所謂鍵譯碼。

例如:我們想使第一行為“0”,就必須將數據寫入口,這數據稱為行值,它存放在寄存器內。要檢查哪個鍵按下,則要從口讀入數據,這數據稱為列值,將其送入累加器。例如第一列有鍵按下,讀入的數據為01。

3.鍵盤分折程序

此程序的功能是,先將顯示器關閉,然後快速掃描鍵盤,看是否有鍵按下,這就會使6根行線全部為“0”,然後讀入口的內容。隻要中有一位為“0”,便知道有鍵按下,否則就沒有鍵按下。若沒有鍵按下,就返回去執行程序。若有鍵按下,則要進行鍵掃描,判定是哪一個鍵按下。這時先進行鍵值計算,區分是數字鍵還是命令鍵,如果是數字鍵,則送顯示緩衝區去顯示;若為命令鍵,找到與該命令鍵相對應的服務程序入口地址,然後去執行命令鍵的服務程序。

四、命令鍵動作程序

共有12個命令鍵,每一個命令鍵都有一個動作程序。按下某個命令鍵,通過鍵譯碼程序,找到相應動作程序的入口,去執行動作程序以完成相應的命令功能。下麵分別介紹這些動作程序流程圖和程序。1.顯示或修改存儲器鍵動作程序。這個鍵的功能,請參閱本章第二節鍵功能說明部分,此處不再贅述。這個動作程序由兩個程序段組成:第一段是顯示存儲器內容;第二段是修改存儲器內容,即對存儲器寫入新的數據信息。下麵分別介紹。)顯示存儲器內容(讀出)要顯示某個存儲單元的內容,要求先輸入存儲單元的地址(輸入四位數字)。然後,再按下鍵。

子程序的功能是根據各標誌,如輸入輸出口標誌、寄存器標誌和存儲器標誌從1.0的狀態,來決定將由鍵盤輸入的數據是寫入輸出輸入口,還是主寄存器或輔助寄存器,或是存儲器。

我們知道,在讀出、顯示存儲器內容後,轉入鍵盤分折程序。若此時再按下兩個數字鍵(要更改的內容)則顯示緩衝區已寫入8位數的條件滿是,程序就轉入子程序麼這個子程序的功能是,先判斷是更改1/0口內容,還是更改主寄存器或輔助寄存器或存儲單元的內容。判定後更改相應的內容,並在顯示器上顯示出來。因此,我們隻要搞清楚為的流程圖和程序,則對修改存儲器內容的程序就清楚了。

1.顯示、更改寄存器內容鍵

當要顯示寄存器內容時,各個寄存器的內容已存放在用戶寄存器圖中,用戶寄存器在用戶棧中。假定用戶棧指針,則寄存器的存放。

內容是各個寄存器名稱鍵在用戶寄存器圖內的位置與棧底的位移量。

在顯示寄存器程序中,標誌議置位後,就調用子程序。這個子程序的主要功能是:使指向所要找的寄存器在(棧區)用戶寄存器圖中的位置。

更改寄存器程序顯示寄存器之後,若要更改寄存器的內容,可以從鍵盤輸入所要更改的內容,即按兩個數字鍵。按下第一個數字鍵時,通過鍵盤分折程序將其存入顯示緩衝區,按下第二個數字鍵時,通過鍵盤分析程序又將其存入顯示緩衝區05/17。

2.子程序的主要功能是,使指向所耍找的輔助寄存器在用戶寄存器圖中的位置。

當顯示器上出現提示符“?”後,輸入兩位十六進製數表示口地址,再按鍵,對口進行一次讀操作並顯示讀出內容。

請注意,雖然顯示器已將由口中讀出數據顯示出來,但是否是真正口的內容,這由該口能否讀出來決定。

請注意,雖然這時顯示器已將輸出的新數據顯示出釆,但是否能真正寫入3中,這要看該口能否寫入。

沒置斷點鍵完成在用戶程序中設置斷點的操作。要在用戶區(指令的第一個操作單元地址)設斷點,必須先輸入地址(四位十六進製數),然後按壓鍵,這就設置一個斷點了。

如果用戶要清除斷點,隻要將斷點標誌單元清“0”就可以。清除斷點標誌有如下四種方法,恢複輔助寄存器和主寄存器。恢複後,開中斷,執行指令,這相當於執行指令。這裏指令的功能是將用戶寄存器圖中?的值(單步指令入口地址)彈回。定時時間到,發出脈衝,引起.負跳。但返回用戶程序,執行一條用戶程序指令,而一條指令未執行完不能響應非屏蔽中斷,當這條指令執行完,才響應中斷申請進入非屏蔽中斷服務程序。在服務程序中完成寄存器進棧(壓入寄存器圖中以備檢查或更改),清單步標誌,關閉顯示和累加器等。

①按單步鍵進入單步鍵處理程序後,設置為定時器,在定時時間到,發出正脈衝,引起非屏蔽中斷申請,

②在設有斷點的情況下按隻:鍵,進入鍵處理程序後,轉到單步鍵處理程序八處,實現設置單步標誌和定時初始化。由定時到引起非屏蔽中斷申請,進入非屏蔽中斷服務程序,在非屏蔽中斷服務程序中完成裝配斷點,恢複現場返問用戶程序。

③當用從鍵來終止現行程序的執行,也會進入非屏蔽中斷服務程序。此種情況是這樣實現的:在鍵處理程序中安排一段程序,使鍵所在的行輸出為低電平,又設定為計數方式,時間常數為1。這時,如果按鍵來退出用戶程序,由於的按下,使單穩翻轉,通過單穩電路向的外觸發端送入一個計數觸發脈衝,使的輸出一脈衝,送入的胃端一個負跳變,產生非拝蔽中斷申請。當響應後,進入非屏蔽中斷服務程序,將各寄存器保護進棧,然後轉到鍵掃描和顯示循環,從而中止現行用戶程序的執行。

當運行設置有斷點的用戶程序過程中,遇到指令操作碼時,自動進入地址為:它的服務程序。這段程序的主要功能是,將用戶棧指針和全部口;寄存器保護進用戶寄存器圖中;關中斷;使複位由標誌伏態,判別有無斷點,若有斷點則恢複斷點操作碼中的操作碼搬回用戶程序斷點處,然後顯示斷點和累加器的內容。

五、實用子程序

在有12個子程序和1個通道的中斷服務程序有些子程序在上述程序段中多次調用過了。這些子程序不僅是供上述程序使用,用戶也可以調用,下麵逐一介紹一些上麵程序段中經常調用的子程序。