智能儀表的應用程序設計
日期: 2018-12-181.智能儀表的典型軟件結構
智能儀表是一種較完整的單片機應用系統。一般硬件電路除基本擴展部分外,都配置有采集電路、顯示器、按鍵、打印機等。相應的軟件有采集、采集控制、數據處理、顯示、結果打印等。圖一是智能儀表的一種典型軟件結構。按其功能,可分為三部分,即準備程序、鍵功能程序和系統控制序。
1.1 準備程序
準備程序應完成系統鍵操作之前的準備工作。它包括:
1.1.1 初始化。
將系統中所有的命令、狀態以及有關的存儲單元置位成初始狀態。
1.1.2 系統測試。
利用測試程序檢查程序存儲器、數據存儲器以及硬件功能是否正常。
1.1.3 提示符顯示。
當完成初始化設置和系統測試正常以后,應在顯示器上顯示正常標記,等待健掃描。若測試不正常,可再次初始化,進行系統測試或用手動按鈕使系統強行復位。
1.1.4 鍵掃描等待。
對所有按鍵進行查詢,沒有鍵按下時,繼續顯示提示符。當有鍵按下時,便進入鍵功能軟件控制。當系統上電后,在正常情況下,顯示正常狀態提示符號,并準備接收按鍵的操作控制。
1.2 鍵功能程序
這是一組散轉指令控制選擇的一組鍵功能程序模塊,每個模塊完成按鍵所指定的功能。根據散轉指令(JMP @A+DPTR),設置轉移入口地址表,實現鍵功能程序的長轉移(LJMP add16)時,可設置的鍵功能程序模塊數量為256/3=85 個。鍵功能程序應包括能由按鍵選擇控制的所有功能程序。鍵功能程序大致分為測、控功能程序,外設功能程序和操作控制功能程序。
1.1 準備程序
準備程序應完成系統鍵操作之前的準備工作。它包括:
1.1.1 初始化。
將系統中所有的命令、狀態以及有關的存儲單元置位成初始狀態。
1.1.2 系統測試。
利用測試程序檢查程序存儲器、數據存儲器以及硬件功能是否正常。
1.1.3 提示符顯示。
當完成初始化設置和系統測試正常以后,應在顯示器上顯示正常標記,等待健掃描。若測試不正常,可再次初始化,進行系統測試或用手動按鈕使系統強行復位。
1.1.4 鍵掃描等待。
對所有按鍵進行查詢,沒有鍵按下時,繼續顯示提示符。當有鍵按下時,便進入鍵功能軟件控制。當系統上電后,在正常情況下,顯示正常狀態提示符號,并準備接收按鍵的操作控制。
1.2 鍵功能程序
這是一組散轉指令控制選擇的一組鍵功能程序模塊,每個模塊完成按鍵所指定的功能。根據散轉指令(JMP @A+DPTR),設置轉移入口地址表,實現鍵功能程序的長轉移(LJMP add16)時,可設置的鍵功能程序模塊數量為256/3=85 個。鍵功能程序應包括能由按鍵選擇控制的所有功能程序。鍵功能程序大致分為測、控功能程序,外設功能程序和操作控制功能程序。
1.2.1 測、控功能程序。
系統直接完成其主要測量、處理、控制功能的程序,如智能頻率計的頻率、周期、計數測量、標度換算、存儲記憶等。
1.2.2 外設功能程序。
外部設備的控制程序,如顯示、打印等。
1.2.3 操作控制程序。
對系統要求實現多種模式操作時所附加的控制程序。典型的有按鍵復用功能設置、系統狀態測試、命令/數據的置入以及功能程序中的多種工作方式選擇等。
系統直接完成其主要測量、處理、控制功能的程序,如智能頻率計的頻率、周期、計數測量、標度換算、存儲記憶等。
1.2.2 外設功能程序。
外部設備的控制程序,如顯示、打印等。
1.2.3 操作控制程序。
對系統要求實現多種模式操作時所附加的控制程序。典型的有按鍵復用功能設置、系統狀態測試、命令/數據的置入以及功能程序中的多種工作方式選擇等。
2.鍵功能程序結構
要保證鍵功能程序的模塊化,又要實現鍵功能程序操作方式的多樣化,鍵功能程序中應設有能實現不同操作方式的分支程序。為了能方便靈活地選擇不同的操作方式應設置有命令字以及分支運行的狀態字,這樣,系統控制程序便可根據命令要求,控制功能程序的轉移。
鍵功能程序結構如圖2 所示。
鍵功能程序結構如圖2 所示。
◆狀態標志置位。將本次鍵功能程序運行方式、特點、分支選擇的特征置入RAM 中的狀態標志單元中,以便系統控制程序查詢。
◆命令查詢。根據片內RAM 中狀態命令單元的命令選擇不同的功能分支程序。
◆功能分支程序。在一個按鍵的主要功能中還有不同方式要求時設置的分支程序。例如,頻率測量功能程序中,不同的分支程序可以完成單次測量、連續測量、測量顯示、測量打印、測量存儲等子功能或初始化設置等。
鍵功能程序結構、命令/狀態格式以及分支功能程序出口狀態應和片內RAM 中的命令/狀態區以及系統控制程序相呼應。
◆命令查詢。根據片內RAM 中狀態命令單元的命令選擇不同的功能分支程序。
◆功能分支程序。在一個按鍵的主要功能中還有不同方式要求時設置的分支程序。例如,頻率測量功能程序中,不同的分支程序可以完成單次測量、連續測量、測量顯示、測量打印、測量存儲等子功能或初始化設置等。
鍵功能程序結構、命令/狀態格式以及分支功能程序出口狀態應和片內RAM 中的命令/狀態區以及系統控制程序相呼應。
3.系統控制程序與命令/狀態設置
系統控制程序與命令/狀態設置主要解決應用程序中的循環轉移以及功能程序中的分支選擇。其轉移或選擇的條件是命令和狀態字。狀態字是依靠程序寫入。例如復位后狀態字為全零,表明系統的全部功能程序處于準備狀態。當按下某個按鍵,或一組按鍵,系統執行某一路徑的程序,如“單次頻率測量并打印結果”,隨著程序的執行要在命令/狀態區設置相應的狀態字。
命令字一般由外部輸入或由命令鍵輸入,在鍵功能程序中,根據命令狀態選擇功能分支程序。系統控制程序是在執行完以后,控制系統程序的流向。它根據命令/狀態條件實現條件轉移控制。一般有循環轉移、置A 轉移、等待轉移以及復位轉移等。
循環轉移通常是實現鍵功能的循環操作,如連續采集、循環顯示等。保證功能鍵的入口地址不變,但可選擇分支程序。置A 轉移是不通過按鍵操作的鍵功能程序轉移。當按一次鍵要完成幾個鍵功能操作內容時使用。例如,頻率測量和測量結果打印分屬兩個按鍵功能程序,要實現頻率測量時可按頻率測理按鍵,并選擇置A 轉移,將頻率測理的出口狀態置為打印功能程序的散轉A 值。等待轉移是使系統返回鍵等待狀態,等待下一次鍵操作。復位轉移是使系統返回到上電復位狀態。一般硬件復位按鈕其功能也是復位轉移。
命令字一般由外部輸入或由命令鍵輸入,在鍵功能程序中,根據命令狀態選擇功能分支程序。系統控制程序是在執行完以后,控制系統程序的流向。它根據命令/狀態條件實現條件轉移控制。一般有循環轉移、置A 轉移、等待轉移以及復位轉移等。
循環轉移通常是實現鍵功能的循環操作,如連續采集、循環顯示等。保證功能鍵的入口地址不變,但可選擇分支程序。置A 轉移是不通過按鍵操作的鍵功能程序轉移。當按一次鍵要完成幾個鍵功能操作內容時使用。例如,頻率測量和測量結果打印分屬兩個按鍵功能程序,要實現頻率測量時可按頻率測理按鍵,并選擇置A 轉移,將頻率測理的出口狀態置為打印功能程序的散轉A 值。等待轉移是使系統返回鍵等待狀態,等待下一次鍵操作。復位轉移是使系統返回到上電復位狀態。一般硬件復位按鈕其功能也是復位轉移。
4.內存規劃
與軟件結構設計相配合,必須將程序存儲器(ROM)和數據存儲器(RAM)實現規劃。按照上述的軟件結構,ROM、RAM 規劃內容如圖三所示。圖中除了個別特定區域外,對于一個具體的智能儀表,每個部分規定的區域范圍不同,既要考慮系統的程序構成,還要考慮到二次開發的擴展余地。
4.1 ROM 規劃原則
? 4.1.1 按照MCS-51 單片機的復位及中斷入口地址的規定,002FH單元地址以前的空間都作為中斷、復位入口地址區,在這些地址單元中設置轉移指令,轉移到相應的中斷服務程序或復位啟動程序。
? 4.1.2 程序存儲器中功能程序及子程序數量較多時, 盡可能設置入口地址表。
? 4.1.3 要留有擴展余地。二次開發擴展區盡可能放在高位地址區。
? 4.1.4 一般的常數、表格集中設置表格區。
? 4.1.2 程序存儲器中功能程序及子程序數量較多時, 盡可能設置入口地址表。
? 4.1.3 要留有擴展余地。二次開發擴展區盡可能放在高位地址區。
? 4.1.4 一般的常數、表格集中設置表格區。
4.2 RAM 規劃原則
? 4.2.1 數據存儲器RAM 按照應用程序所使用的數據類型規劃。通常將頻繁使用, 而且內存占用數量較固定的數據盡可能放在高位地址。
? 4.2.2 片內RAM 容量較小,盡可能重疊使用。例如,數據暫存區與顯示、打印緩沖區重疊。
? 4.2.3 當系統中擴展有外部數據存儲器時, 外部數據存儲器一般用作存放大塊數據。如測量結果數據。
? 4.2.2 片內RAM 容量較小,盡可能重疊使用。例如,數據暫存區與顯示、打印緩沖區重疊。
? 4.2.3 當系統中擴展有外部數據存儲器時, 外部數據存儲器一般用作存放大塊數據。如測量結果數據。
5.系統可靠性的軟件設計
為了保證系統可靠運行,應用程序設計應考慮配置有測試程序以及陷阱復位措施。測試程序是用來檢查應用系統軟、硬件是否處于正常狀態。通常有功能測試、初始化狀態測試以及ROM、RAM 初始狀態測試。具體測試程序視具體情況而定。例如,對于通用頻率計可在系統內設置標準信號源,啟動功能測試后,對內部標準信號實現系統的全部功能,如測量、處理、顯示、打印,以及最后顯示是否正常的標記。
在軟件運行時為了防止非正常和程序“逃逸”而出現的死循環,可以采取軟件陷阱復位措施。即在程序存儲器中所有空白區填入特定的數字。當程序“逃逸”后進入程序空白區,在這些特定數字的引導下進入上電復位入口,使系統進入復位狀態。例如,在MCS-51 應用系統的程序存儲器的空白區中連續放置以下的機器碼:20000000020000002000000002000000…并保證不小于兩個循環長度時,只要程序進入此區域便會自動轉入系統復位狀態。
在軟件運行時為了防止非正常和程序“逃逸”而出現的死循環,可以采取軟件陷阱復位措施。即在程序存儲器中所有空白區填入特定的數字。當程序“逃逸”后進入程序空白區,在這些特定數字的引導下進入上電復位入口,使系統進入復位狀態。例如,在MCS-51 應用系統的程序存儲器的空白區中連續放置以下的機器碼:20000000020000002000000002000000…并保證不小于兩個循環長度時,只要程序進入此區域便會自動轉入系統復位狀態。


備案號:滬ICP備18025528號-1