時鐘中斷

在單片機程式設計中,設定一個好的時鐘中斷,將能使一個CPU發揮兩個CPU的功效,大大方便和簡化程式的編制,提高系統的效率與可操作性。可以把一些例行的及需要定時執行的程式放在時鐘中斷中,還可以利用時鐘中斷協助主程式完成定時、延時等操作。

基本信息

單片機程式設計中,設定一個好的時鐘中斷,將能使一個CPU發揮兩個CPU的功效,大大方便和簡化程式的編制,提高系統的效率可操作性。可以把一些例行的及需要定時執行的程式放在時鐘中斷中,還可以利用時鐘中斷協助主程式完成定時、延時等操作。

簡介

一種時鐘中斷檢測電路,包括:對輸入時鐘以不同分度值進行分頻並輸出多個分頻時鐘的分頻器電路;對輸入時鐘和多個分頻時鐘進行“與”操作的“與”電路;將具有最大分度值的分頻時鐘反相的反相器;對輸入時鐘中其餘分頻時鐘和反相器輸出進行“與”操作的“與”電路;第一和第二開關,具有被提供以各個“與”電路輸出的控制端,控制第一和第二電容器放電路徑的開/關;第一和第二波形形成緩衝器電路,被提供以第一和第二電容器的端電壓;根據延遲電路中使反相器輸出延遲預定時間長度所得的選擇控制信號選擇第一和第二波形形成緩衝器電路的一個輸出的選擇電路。其通過單輸入時鐘系統使時鐘中斷能被檢測,集成更容易,並使時鐘中斷時間能精確地檢測。

套用

以6MHz時鐘的AT89C51系統為例,說明時鐘中斷的套用

定時器初值與中斷周期 時鐘中斷無需過於頻繁,一般取20mS(50Hz)即可。如需要百分之一秒的時基信號,可取10mS(100Hz)。這裡取20mS,用定時器T0工作於16位定時器方式(方式1)。T0的工作方式為:每過一個機器周期自動加1,當計滿0FFFFh,要溢出時,便會產生中斷,並由硬體設定相應的標誌位供軟體查詢。即中斷時比啟動時經過了N+1個機器周期。所以,只要在T0中預先存入一個比滿值0FFFFh小N的數,然後啟動定時器,便會在N個機器周期後產生中斷。這個值便是所謂的“初值”。下面計算需要的初值:時鐘為6MHz,12個時鐘周期為一個機器周期,20mS中有10000個機器周期。(10000)10=(2710)16,則0FFFFh-2710h+1=0D8F0h。由於回響中斷、保護現場及重裝初值還需要7~8個機器周期,把這個值再加上7,即T0應裝入的初值是0D8F7h。每次中斷進入後,先把A及PSW的值壓入堆疊,然後即把0D8F7h裝入T0。

設定一個單元,每次中斷加1,可以取內部RAM中一個單元,取名為INCPI(IncreasePerInterrupt),在中斷中,裝完T0初值後,用INC INCPI指令將其加一。從這個單元中,無論中斷程式還是主程式,都可以從中獲得20mS的1~256之間任意整數倍的信號。例如:有一段向數碼管送顯的程式,需要每0.5秒執行一次以便刷新顯示器,便可以設一單元(稱為等待單元)W_DISP,用/MOVA,INCPI/ADDA,#25/MOVW_DISP,A/語句讓其比當前的INCPI值大25,然後在每次中斷中檢查是否於INCPI值相等。若相等,說明已過了25箇中斷周期,便執行送顯程式,並且讓W_DISP再加上25,等待下個0.5秒。可以設定多個等待單元,以便取出多個不同的時基信號。讓中斷程式在每次中斷時依次查詢各個等待單元是否與INCPI相等,若相等,則執行相應的處理,並重新設定該等待單元的值,否則跳過。例如:用0.5秒信號刷新或閃爍顯示器,用1秒信號產生實時時鐘,或輸出一定頻率的方波,以一定間隔查詢輸入設備等。

在中斷中讀鍵通常,在主程式中讀鍵盤,步驟為:掃描鍵盤,若有鍵按下,則延時幾十毫秒去抖動,再次確認此鍵確實按下,然後處理該鍵對應的工作,完成後再次重上述步驟。但這有兩點不足:1.處理相應工作時無法鎖存按鍵的輸入,即可能漏鍵。2.延時去抖時CPU無法做其它事情,效率不高。如果把讀鍵放入時鐘中斷中,則可避免上述不足。方法為:如果兩次相鄰的中斷中都讀到同一個鍵按下,則這個鍵是有效的(達到了去抖目的),並將其鎖存到先入先出(佇列)的鍵盤緩衝區,等主程式來處理。這樣,主程式處理按鍵的同時,仍可回響鍵盤的輸入。緩衝區深度通常可設為8級,若鎖存的鍵數多於8個,則忽略新的按鍵,並報警提示用戶新的按鍵將無效。若鍵盤緩衝佇列停滯的時間大大長於主程式處理按鍵所需要的最大時間,說明主程式已出錯或跑飛,可以在中斷用指令將系統復位,起到了看門狗的目的。

主程式中的延時 由於有常開的時鐘中斷,所以當主程式中有需要時間較短、精度較高的延時時,應暫時把時鐘中斷關閉。而程式中需要時間較長、精度不高的延時時,便可仿照下需的寫法,避免多層嵌套的循環延時。

例:在P1.1輸出1秒的高電平脈衝
MOVA,INCPI
INCA
CJNEA,INCPI$;等待一次中斷處理完成
SETBP1.1;設P1.1為H,脈衝開始
ADDA,#50;50個20mS為1秒
CJNEA,INCPI,$;等中斷將INCPI加一50次
CLRP1.1;設P1.1為L,脈衝結束

結束語:從上看出,要靈活地套用時鐘中斷,將任務合理分配給中斷和主程式,並且二者要分工明確,接口簡單。這其中的技巧還需要大家在實踐中多多摸索與體會。另外要注意:應儘量縮短中斷處理程式的執行時間,更不要長於20mS。

檢測

一種時鐘中斷檢測電路,包括:電路,其用於根據輸入時鐘,產生其周期是所述輸入時鐘的時鐘周期預定倍數的第一和第二信號,所述第一和第二信號彼此有相位差,這個相位差相當於所述輸入時鐘的所述時鐘周期的所述預定倍數周期的一半;第一開關,其被連線在第一電容器的一端與第一電源之間,所述第一電容器的另一端被連線至所述第一電源,所述第一開關具有控制端,所述控制端被提供了所述第一信號,因此,所述第一開關是開/關可控的;第二開關,其被連線在第二電容器的一端與所述第一電源之間,所述第二電容器的另一端被連線至所述第一電源,所述第二開關具有控制端,所述控制端被提供了所述第二信號,因此,所述第二開關是開/關可控的;其中,所述第一和第二電容器有它們各自的一端,它們通過電阻器元件被連線至第二電源;第一和第二波形形成緩衝器電路,它們具有被連線至所述第一和第二電容器的各一端的輸入端;和從所述第一和第二波形形成緩衝器電路的輸出中選擇一個向外輸出的電路。

相關詞條

 

相關詞條

相關搜尋

熱門詞條

聯絡我們