智能電磁流量計中斷服務程序
在主程序中,主要進行各種初始化設置和操作,所有功能的實現都是以中斷形式喚醒單片機執行,而單片機大部分時間處于休眠狀態。中斷是MSP430單片機的一大特色,有效地利用中斷可以簡化程序和提高執行效率。本系統軟件設計部分主要涉及到的中斷服務程序主要有3個,分別是定時器中斷服務程序、A/D中斷服務程序和鍵盤輸入中斷服務程序。
4.4.1定時器中斷
定時中斷是定時器最基本的工作應用方式,其功能為,預定一個時間值, 到時間后產生中斷。定時器可以用來計時,同樣也可以按照一定的頻率來執行某一段程序,如定時信號檢測等。運用計數器,隨著每次程序循環的次數來修改定時時間,程序每循環一次,改變一次狀態。程序每一個周期循環結束后, CPU就進入低功耗模式。定時時間到后,觸發中斷,使CPU退出低功耗模式,開始新的循環。由于定時時間不斷地改變,所反映出來的狀態周期也隨著不斷地改變。
定時器中斷服務程序主要是用來控制勵磁方式和輸出PWM信號。在本系統設計中,通過控制定時器中斷程序來調節勵磁的變化及控制單片機輸出電流PWM輸出信號,在程序初始化之后,中斷一被打開,此程序就一直在運行。根據系統設計的需求來設定定時器的溢出時間及周期等。本系統軟件設計中的部分定時器中斷服務程序如下: #pragma vector=TIMERAQ)ECTOR interrupt void Timer.—A(void) { PlOUT^=0x10; nowfltnmb++; if(nowfltnmb>1 50) { nowfltnmb=O; nowfltflg=l; ) if(KeydelayFlag>0) { KeydelayNub=KeydelayNub+l; if(KeydelayNub>50) { KeydelayNub=0; KeydelayFlag=0; KeySwitch(1); >
) )
4.4.2~D轉換中斷
對于AD7790轉換器的數據讀取和控制,系統軟件設計主要用外部中斷服務程序的執行。為了保證流量較小時也能達到較高的精度,在A/D的轉換的軟件設計中提出了要求,同時還考慮到了流量均勻時及流量不均勻時計數的區別。因為對A/D轉換的讀取存在要有實時性,本系統設計采用外部中斷來完成這個功能。本系統設計中ADC為Σ-△型模數轉換器,ADC初始化的內容包括:設定轉換時鐘頻率、數據采集、設置PGA、與CPU通信、選擇數字濾波方式和標定模式、設定轉換速率等。ADC軟件設計的流程圖如圖4.3所示。圖4.3 ADC軟件設計的流程圖
AD7790模數轉換器的具體轉換原理等在第3.2.3節已經作了詳細的介紹,在這里,系統與CPU的通信采用了該芯片*的三線通信方式。當片選信號為低電平時,三線方式選通,在這種情況下,SCLK、DIN和DOU啪Y三線就可以與CPU通信,這種狀態的轉變直到RDY端口的狀態變化而產生。這對于CPU的接口來說是比較適應的,如果片選信號CS認作為一個解碼信號,它就能被當作一個端口引腳。ADC開始工作后,直接進行模擬信號的采樣轉換工作,然后等待轉換的完成。
鍵盤輸入中斷
MSP430單片機指令系統具有的跳轉指令和C語言的switch語句非常適合對鍵盤輸入信息處理,這些指令可以看成是鍵盤信息輸入的軟件接口。鍵盤輸入中斷服務程序主要完成對鍵盤管理工作,鍵盤通過接口與CPU相連,在相應軟件的配合下,CPU可以采取中斷或者查詢方式了解有無鍵信息輸入并檢查是哪個鍵按下,然后執行該按鍵所對應的功能程序。最后再回到原始狀態。對于鍵盤處理,包括硬件和軟件兩部分,硬件電路在前面章節已經給出,在這里不再敘述了,而對于軟件的處理,有如下一些問題要解決:
(1)去抖動問題按鍵和鍵盤采用的是利用機械觸點的閉合與斷開來產生輸入電信號,但是由于機械觸點的彈性作用,在鍵閉合與彈開的時候,往往會產生抖動,若系統處理不好,一次按鍵會被誤認為是連續按了多次鍵。圖4.4給出的是按鍵帶來的電壓波形。一按鍵按下· ~ ∥ 前沿抖動穩定期k沿抖動圖4.4按鍵開、閉時的電壓抖動波形按鍵抖動的時間長短取決于觸點的機械特性,一般按鍵抖動時間大約5.10ms。因此,必須對按鍵的抖動作相應的處理,確保CPU只會對一次鍵入信息作一次處理,處理程序在按鍵穩定后再檢查鍵的信息。當然,克服按鍵抖動的方法很多, 一種是用硬件,即在每個鍵上}JIIRC濾波電路或用一個RS觸發器組成防抖動的電路。另一種方法是加入一個軟件延時程序,然后再確認該按鍵是否被按下,從而防止誤判斷。在本系統中,我們采取的是軟硬件結合的方式來消除鍵盤抖動, 當有按鍵下按時,就會有一個的中斷,在中斷服務程序里,首先有一定的延時, 這里本設計設置為10ms,然后再進行鍵值的讀取。
(2)對于按鍵進行編號以便于識別
為了使CPU能夠識別出鍵入的信息,對不同的按鍵必須有不同的鍵入的值或鍵盤編碼,以便轉入到相應的處理程序。鍵的編碼一般由按鍵的硬件連接方式決定。
(3)按鍵信息的邏輯處理
在系統軟件設計中,除對按鍵能作識別處理外,還要考慮到人在操作時易產生的其他問題的邏輯處理。如多個按鍵同時被按下、在一個鍵功能正在處理的時候另外按鍵被誤按下、按鍵時間長短的影響等,所有這些問題一般情況下都能通過軟件解決。在這給出按鍵的中斷部分服務程序。初始化程序: void InitKey(void) { KEYDIR&=~(KEY0+KEYI+KEY2); //設置端口為輸入KEYIFG&=~(KEY0+KEYI+KEY2); //清除中斷標志KEYIES l=KEY0+KEYI+KEY2; //設置下降沿中斷KEYIE I-KEY0+KEYl+KEY2; //打開端口中斷key0Count=O: //按鍵次數清零keyl Count=0: //按鍵次數清零key2Countl=0: //按鍵次數清零key2Count2=O; //按鍵次數清零) 打開及關閉鍵盤中斷程序: //sw: 0:關閉100-打開void KeySwitch(unsigned char sw) {if(sw—O、KEYIE&=~(KEY0+KEYI+KEY2);//關閉端121中斷elseKEYIE I_KEY0+KEYI+KEY2; //打開端口中斷) 系統用于消除抖動的延時程序如下: void Delay(void) { inti; for(i=100;i一;》0); //延時一點時間 擴展閱讀:開封中儀流量儀表有限公司專業生產電磁流量計、孔板流量計、渦街流量計、文丘里流量計、V錐流量計、V型錐流量計、噴嘴流量計、插入式電磁流量計、智能電磁流量計、分體式電磁流量計、一體式電磁流量計、標準孔板流量計、標準孔板、一體化孔板流量計、標準噴嘴流量計、長徑噴嘴流量計、標準噴嘴、長徑噴嘴、插入渦街流量計、智能渦街流量計,更多信息請訪問開封中儀網站:
免責聲明
客服熱線: 13199863987
加盟熱線: 13199863987
媒體合作: 0571-87759945
投訴熱線: 0571-87759942
下載儀表站APP
Ybzhan手機版
Ybzhan公眾號
Ybzhan小程序