本文以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及 W的值壓入堆棧,然后即把0D8F7h裝入T0。
設置一個單元,每次中斷加1 我們可以取內部RAM中一個單元,取名為INCPI(Increase Per Interrupt),在中斷中,裝完T0初值后,用INC INCPI指令將其加一。從這個單元中,無論中斷程序還是主程序,都可以從中獲得20mS的1~256之間任意整數倍的信號。例如:有一段向數碼管送顯的程序,需要每0.5秒執行一次以便刷新顯示器,便可以設一單元(稱為等待單元)W_DI ,用/MOV A,INCPI/ADD A,#25/MOV W_DI ,A/語句讓其比當前的INCPI值大25,然后在每次中斷中檢查是否于INCPI值相等。若相等,說明已過了25個中斷周期,便執行送顯程序,并且讓W_DI 再加上25,等待下個0.5秒。我們可以設置多個等待單元,以便取出多個不同的時基信號。讓中斷程序在每次中斷時依次查詢各個等待單元是否與INCPI相等,若相等,則執行相應的處理,并重新設置該等待單元的值,否則跳過。例如:用0.5秒信號刷新或閃爍顯示器,用1秒信號產生實時時鐘,或輸出一定頻率的方波,以一定間隔查詢輸入設備等。
在中斷中讀鍵 通常,我們在主程序中讀鍵盤,步驟為:掃描鍵盤,若有鍵按下,則延時幾十毫秒去抖動,再次確認此鍵確實按下,然后處理該鍵對應的工作,完成后再次重上述步驟。但這有兩點不足:1.處理相應工作時無法鎖存按鍵的輸入,即可能漏鍵。2.延時去抖時CPU無法做其它事情,效率不高。如果把讀鍵放入時鐘中斷中,則可避免上述不足。方法為:如果兩次相鄰的中斷中都讀到同一個鍵按下,則這個鍵是有效的(達到了去抖目的),并將其鎖存到先入先出(隊列)的鍵盤緩沖區,等主程序來處理。這樣,主程序處理按鍵的同時,仍可響應鍵盤的輸入。緩沖區深度通常可設為8級,若鎖存的鍵數多于8個,則忽略新的按鍵,并報警提示用戶新的按鍵將無效。若鍵盤緩沖隊列停滯的時間大大長于主程序處理按鍵所需要的最大時間,說明主程序已出錯或跑飛,可以在中斷用指令將系統復位,起到了看門狗的目的。
主程序中的延時 由于有常開的時鐘中斷,所以當主程序中有需要時間較短、精度較高的延時時,應暫時把時鐘中斷關閉。而程序中需要時間較長、精度不高的延時時,便可仿照下需的寫法,避免多層嵌套的循環延時。
例:在P1.1輸出1秒的高電平脈沖
MOV A,INCPI
INC A
CJNE A,INCPI$ ;等待一次中斷處理完成
SET P1.1 ;設P1.1為H,脈沖開始
ADD A,#50 ;50個20mS為1秒
CJNE A,INCPI,$ ;等中斷將INCPI加一50次
CLR P1.1 ;設P1.1為L,脈沖結束
結束語:從上看出,要靈活地應用時鐘中斷,將任務合理分配給中斷和主程序,并且二者要分工明確,接口簡單。
注意:應盡量縮短中斷處理程序的執行時間,更不要長于20mS。
上一篇:基于Proteus 的單片機演奏系統的整體設計
下一篇:基于單片機控制技術的電子萬年歷系統設計
推薦閱讀
史海拾趣
Gulf Semiconductor在電子行業中的五個發展故事
故事一:進入中國市場與本地化生產
Gulf Semiconductor(海灣電子)自1987年起便踏入中國市場,成為較早一批在中國設立生產基地的國際化整流二極管制造商。公司迅速適應了中國市場的需求,并建立了完善的管理體系,通過了ISO14001:2004、ISO9001:2000、ISO/TS 16949:2002等質量及環境管理體系認證。這一舉措不僅提升了產品質量,還增強了客戶信心,使Gulf Semiconductor在照明、電源、消費類電子等領域迅速占據一席之地。通過本地化生產,公司有效降低了成本,提高了競爭力,并成功吸引了如Samsung、LG、Philips等國際知名企業的合作。
故事二:技術創新與產品升級
Gulf Semiconductor始終將技術創新視為企業發展的核心動力。公司不斷投入研發,掌握了先進的光阻玻璃燒結、特制的SIPOS工藝等多種工藝技術,這些技術使得公司產品在高壓、高溫等極端環境下依然能夠保持高可靠性。特別是公司主推的GP類產品(玻融鈍化整流器),憑借其出色的性能,獲得了眾多國際客戶的全面認證和使用。此外,公司還積極開發世界著名整流器制造商的替用產品,產品性能可達到原廠的同等水平,進一步提升了市場競爭力。
故事三:客戶服務與售后支持
Gulf Semiconductor深知客戶滿意是企業發展的關鍵。公司建立了完善的客戶服務體系,為客戶提供從產品設計、試產到批量投產的全程支持。在產品應用過程中,一旦出現個別產品缺陷或失效,公司能夠迅速響應,分析問題原因,并采取糾正及預防措施,確保客戶利益最大化。這種以客戶為中心的服務理念,贏得了廣大客戶的信任和好評。
故事四:市場拓展與國際合作
隨著全球電子行業的快速發展,Gulf Semiconductor不斷拓寬市場領域,積極與國際知名企業建立合作關系。公司通過參加國際展會、舉辦技術交流會等方式,向世界展示其先進的技術和產品。同時,公司還加強與國際同行的交流與合作,共同推動電子行業的發展。這些努力不僅提升了Gulf Semiconductor在國際市場的知名度,還為其帶來了更多的商業機會。
故事五:可持續發展與環保理念
作為一家負責任的企業,Gulf Semiconductor始終將可持續發展和環保理念貫穿于生產經營的全過程。公司積極采用節能減排技術,減少碳排放,并致力于綠色生產。此外,公司還積極參與社會公益活動,為環保事業貢獻自己的力量。這些舉措不僅提升了公司的社會形象,還為其贏得了更多消費者的青睞。在未來,Gulf Semiconductor將繼續堅持可持續發展和環保理念,為推動電子行業的綠色發展貢獻更多力量。
在激烈的市場競爭中,ELDECO公司始終堅持質量至上的原則。公司建立了嚴格的質量管理體系和檢測機制,確保每一臺出廠的ELD產品都符合高質量標準。同時,公司還注重售后服務體系建設,為客戶提供及時、專業的技術支持和解決方案。正是憑借過硬的產品質量和優質的售后服務,ELDECO公司的ELD產品贏得了客戶的廣泛認可和信賴。
隨著技術的成熟和市場的認可,FerriShield開始拓展產品線。公司研發團隊不斷改進和優化原始的鐵磁屏蔽材料,并推出了針對不同應用場景的系列產品。例如,針對智能手機和平板電腦的輕薄型電磁屏蔽膜,以及針對大型數據中心的高效電磁屏蔽板。這些新產品的推出,使得FerriShield的市場份額逐步擴大。
FCI Connector的前身可以追溯到1937年成立的費城絕緣體公司(Philadelphia Insulation Company)。這家公司最初專注于電子零件的制造和銷售。隨著時間的推移,公司在1976年被德州儀器(Texas Instruments)收購,并更名為TI Electronic Components(TIEC)。然而,TIEC在1981年做出了一個重大的戰略決策:將連接器業務剝離出來,成立了FCI Connector公司。這一決策讓FCI能夠更專注于電子連接器的研發、生產和銷售,為其后續的快速發展奠定了基礎。
2010年3月15日,BLACK&DECKER迎來了公司歷史上的一個重要時刻——與史丹利公司合并組建史丹利百得公司。這一合并不僅使BLACK&DECKER獲得了更強大的資源和市場支持,還為其未來的發展提供了更廣闊的空間。合并后的史丹利百得公司致力于提供整合的五金工具、存儲設備和安防系統解決方案,以滿足全球消費者的多樣化需求。通過整合雙方的優勢資源和技術力量,史丹利百得公司有望在電子行業中取得更加輝煌的成就。
綜上所述,BLACK&DECKER公司在電子行業中的發展故事充滿了創新、進取和成功的元素。從創立初期的艱苦創業到如今的全球領先品牌,BLACK&DECKER憑借其卓越的產品質量、技術創新和市場拓展能力,贏得了消費者的信任和市場的認可。未來,隨著科技的不斷進步和市場需求的不斷變化,BLACK&DECKER將繼續保持創新精神,推動電子行業的持續發展。
在計算機信息技術普及的今天,CAD/CAE/CAM /PDM 的應用極大地促進了汽車研發技術的進步。如果說CAD 是在幫助工程師創造更豐富、更優美、更實用的車型實體設計,CAE 則是在保證汽車設計的質量、壽命、性能、成本等方面發揮著重要作用。 CAE ...… 查看全部問答∨ |
Virtex-6 FPGA System Monitor User Guide This guide describes the System Monitor functionality.… 查看全部問答∨ |
企業安防系統主要是基于三層結構的七大子系統。主要包括前端信息捕獲、中間信息轉換傳輸、后臺信息處理三個層次,以及紅外報警系統、電子圍欄報警系統、視頻監控系統、消防報警系統、門禁系統、人工電話報警系統和安防信息綜合管理系統七大子系統, ...… 查看全部問答∨ |
我在xps中新建了一個工程,使用microblaze軟核,然后添加了自定制的ip核,生成得user logic中有一個軟件可尋址的寄存器,我想在軟件代碼中實現寫這個寄存器,將這個寄存器各個位連接到板子外邊的8個發光二極管上,實現對應位的亮和滅,但我不知道怎 ...… 查看全部問答∨ |
tcpmp 運行在 A4 ce6.0 上crash的問題(現金酬謝) http://topic.eeworld.net/u/20090807/13/9938dac1-f26b-41b9-9da6-440b6b5f64db.html?seed=1771456370&r=59046093#r_59046093 還是原來的那個貼子,報個價請留下QQ,現金酬勞! … 查看全部問答∨ |
為什么要用ST庫,一個從業軟件工程師如何看待庫。借此機會討論工具思維論。 發現網上經常有人問庫的問題,下面說說我的理解,我做嵌入式也蠻久了,接觸的構建也蠻多,也許我的觀點能給大家一點借鑒。 什么是庫?在我接觸stm32之前,玩過lpc和s3c系列的arm,這些芯片,程序員編程的時候,很大精力都要用在操作寄存器上,而且 ...… 查看全部問答∨ |
IAR和Keil哪個更好用一些呢?目前手頭有一個J-Link。 這兩種IDE哪個更好一些呢?拋開仿真器的因素。我看J-Link好像也可以在Keil下面用的。以前用過IAR for C8051和MSP430,沒用過Keil。不知道ARM的環境下,哪個更好一些?… 查看全部問答∨ |