摘 要:介紹在匯編語言中進行非線性處理的編程技術。
關鍵詞:非線性處理;結構化程序設計;單片機
單片機結構的測量儀表,經常需要對測量變量進行非線性處理。比如,工業(yè)測量中經常使用的熱電阻感溫元件的電阻(電壓)與溫度的關系就是非線性的。計算機對這類測量變量進行工程值轉換時,通常是將它們的電壓/電流信號值及對應工程值的非線性列表(表1)存入計算機中,然后,當檢測該變量時,通過查表比較,換算出對應的工程值。當然,查表換算所需的分段轉換斜率也應存入計算機。
查表法用高級程序語言很容易處理,但在匯編語言中實現(xiàn)卻比較困難。我們注意到,MCS-51單片機指令系統(tǒng)雖然沒有單獨的比較指令,但設計了多條比較轉移指令,它們既有比較功能,又能根據比較結果控制程序轉移。特別是CJNEA,direct,rel指令,具有A和direct兩個可變參數的單元,可以說是這類指令中功能最強的指令。將測量信號的A/D轉換值放入直接地址單元direct,累加器A用來依次取查表值,就可以很方便地實現(xiàn)查表比較,我們設計查表循環(huán)結構就以該指令為核心來實現(xiàn)。
對程序的數據結構進行合理設計,也可以大大簡化和優(yōu)化程序。為了便于讀取表值,可在程序初始化時,就將Xi表值從外部存儲器讀入8031片內RAM工作區(qū),并使其地址碼與Yi表對應,這樣可以共用一個地址指針。如圖1所示。Xi/Yi表各包含16個參數,由于查表時讀取Xi的操作最頻繁,將Xi表調入片內RAM無疑會提高程序的運行效率。
為了提高計算精度,我們在外部存儲器中除保存轉換表外,還存儲了Xi+1-Xi的差值,沒有直接使用轉換斜率Ki。
在此數據結構的基礎上,該程序流程圖設計如圖2。
入口:被測信號經數字濾波后的計數值→RAM6AH單元
出口:經過非線性轉換的工程值→RAM6BH單元該程序清單如下:
可以在儀表面板設置一個“參數設定”鍵,用于輸入和保存轉換表的參數。保存參數的外部存儲器可以選用6264RAM。目前各種非易失存儲器芯片已獲得廣泛應用,其中DS1225芯片與6264完全兼容,它自帶鋰電池,保存數據的有效期為10年。將轉換表存儲在該芯片中就更加方便實用,同時DSl225還可用于保存歷史數據。
參考文獻
[1]孫涵芳,徐愛卿.MCS-51/96系列單片機原理及應用[M].北京:北京航空航天出版社,1988.
摘自 儀表技術