那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

關于AT89C51系統時鐘中斷的應用

電子工程師 ? 來源:網絡整理 ? 作者:工程師姚遠香 ? 2018-07-21 11:08 ? 次閱讀

功能強大的時鐘中斷

單片機程序設計中,設置一個好的時鐘中斷,將能使一個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(Increase Per Interrupt),在中斷中,裝完T0初值后,用INCINCPI指令將其加一。從這個單元中,無論中斷程序還是主程序,都可以從中獲得20mS的1~256之間任意整數倍的信號。例如:有一段向數碼管送顯的程序,需要每0.5秒執行一次以便刷新顯示器,便可以設一單元(稱為等待單元)W_DISP,用/MOV A,INCPI/ADD A,#25/MOV W_DISP,A/語句讓其比當前的INCPI值大25,然后在每次中斷中檢查是否于INCPI值相等。若相等,說明已過了25個中斷周期,便執行送顯程序,并且讓W_DISP再加上25,等待下個0.5秒。我們可以設置多個等待單元,以便取出多個不同的時基信號。讓中斷程序在每次中斷時依次查詢各個等待單元是否與INCPI相等,若相等,則執行相應的處理,并重新設置該等待單元的值,否則跳過。例如:用0.5秒信號刷新或閃爍顯示器,用1秒信號產生實時時鐘,或輸出一定頻率的方波,以一定間隔查詢輸入設備等。

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

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

例:在P1.1輸出1秒的高電平脈沖

MOV A,INCPI

INC A

CJNE A,INCPI$ ;等待一次中斷處理完成

SETB P1.1 ;設P1.1為H,脈沖開始

ADD A,#50 ;50個20mS為1秒

CJNE A,INCPI,$ ;等中斷將INCPI加一50次

CLR P1.1 ;設P1.1為L,脈沖結束

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 時鐘
    +關注

    關注

    11

    文章

    1747

    瀏覽量

    131803
  • 中斷
    +關注

    關注

    5

    文章

    900

    瀏覽量

    41756
  • AT89C51
    +關注

    關注

    27

    文章

    543

    瀏覽量

    81398
收藏 人收藏

    評論

    相關推薦

    EE-188:使用C語言在ADSP-219x DSP上實現中斷驅動系統

    電子發燒友網站提供《EE-188:使用C語言在ADSP-219x DSP上實現中斷驅動系統.pdf》資料免費下載
    發表于 01-15 16:06 ?0次下載
    EE-188:使用<b class='flag-5'>C</b>語言在ADSP-219x DSP上實現<b class='flag-5'>中斷</b>驅動<b class='flag-5'>系統</b>

    EE-192:使用C語言在Blackfin處理器上創建中斷驅動系統

    電子發燒友網站提供《EE-192:使用C語言在Blackfin處理器上創建中斷驅動系統.pdf》資料免費下載
    發表于 01-03 15:03 ?0次下載
    EE-192:使用<b class='flag-5'>C</b>語言在Blackfin處理器上創建<b class='flag-5'>中斷</b>驅動<b class='flag-5'>系統</b>

    求解答!用STC89C51系列數字秒表

    實驗室學51單片機,用STC89C51系列,作業太難了,求佬給源代碼幫助一下謝謝 1.通過定時器,8位數碼管,8個獨立按鍵完成1000秒以內的數字秒表,最小分辨0.1秒,設置啟動計秒鍵,暫停計秒鍵
    發表于 12-08 16:48

    c51單片機中斷

    返回:當中斷服務程序執行完后,CPU 會從堆棧中恢復之前保存的程序計數器(PC)和其他關鍵寄存器的值,然后繼續執行被中斷的程序。 中斷的優勢 實時性 :可以及時響應外部事件。例如,在一個工業控制
    發表于 11-25 21:43

    基于51單片機的7人多數投票表決器設計

    設計編號:P13 1.主要功能: ? ? ? ? ? 基于51單片機AT89C51/52(與AT89S51/52、AT89C51/52、STC89
    的頭像 發表于 11-09 09:48 ?1032次閱讀
    基于<b class='flag-5'>51</b>單片機的7人多數投票表決器設計

    京準時鐘科普:關于北斗衛星同步時鐘的那些事?

    京準時鐘科普:關于北斗衛星同步時鐘的那些事?
    的頭像 發表于 10-29 09:28 ?374次閱讀
    京準<b class='flag-5'>時鐘</b>科普:<b class='flag-5'>關于</b>北斗衛星同步<b class='flag-5'>時鐘</b>的那些事?

    TMS320C6000系統時鐘電路示例

    電子發燒友網站提供《TMS320C6000系統時鐘電路示例.pdf》資料免費下載
    發表于 10-28 10:33 ?0次下載
    TMS320<b class='flag-5'>C</b>6000<b class='flag-5'>系統</b><b class='flag-5'>時鐘</b>電路示例

    Protues中自己封裝的芯片元件無Program File、Clock Frequency選項怎么解決,跪求大神解決解決了

    第一個圖是AT89C51第二個圖是自己畫的元件
    發表于 07-16 14:54

    基于AT89C52的多功能數字時鐘系統

    本設計基于單片機技術原理,以單片機芯片AT89C52作為核心控制器、通過硬件電路的制作以及軟件程序的編制,設計了多功能數字時鐘系統[1]。該時鐘系統
    發表于 06-15 11:26 ?2次下載

    求助,關于STM8S103外部中斷問題求解

    */ PB_CR1_C14 = 0;/* 設置0 懸浮輸入1 上拉輸入--查看STM8寄存器.pdf P88 */ //PB_CR2_C24 = 1;/* 設置PB4中斷輸入 STM8寄存器.pdf
    發表于 05-16 07:25

    基于單片機AT89C51的數字電壓表仿真實現,原理圖,論文,源碼

    概述 本設計是基于Atmel 51單片機開發平臺和自動控制原理的基礎上實現的一種數字電壓表系統。 該系統采用AT89C51單片機作為控制核心,以ADC0809為模數轉換芯片,實現量程0
    發表于 04-03 20:16

    畢設,51單片機的自動售貨計設計與實現(C程序+硬件+論文)

    概述 本文設計了一款以AT89C51單片機為核心的自動售貨機系統,并且著重詳細地介紹了自動售貨機的整體系統設計方案、硬件選擇基礎、軟件使用方法及技巧。 以AT89C51作為CPU處理單
    發表于 03-29 18:35

    基于51單片機的車輛倒車雷達報警系統,HC-SR04超聲波測距,全套資料

    系統概述 本課題以AT89C51單片機為核心設計一種超聲波倒車雷達系統,同時兼顧車內溫度測量。 系統AT89C51控制器、HC-SR0
    發表于 03-19 14:17

    基于單片機多功能洗衣機控制

    需注意仿真中51單片機芯片是兼容的,AT89C51,AT89C52是51單片機的具體型號,內核是一樣的。相同的原理圖里,無論stc還是at都一樣,引腳功能都是一樣的,程序是兼容的,芯片
    發表于 03-18 10:13 ?845次閱讀
    基于單片機多功能洗衣機控制

    AT89S51中文資料介紹

    電子發燒友網站提供《AT89S51中文資料介紹.pdf》資料免費下載
    發表于 02-20 09:24 ?13次下載
    大发888下载 df888gfxzylc8| 8运24山风水图解| 永利高娱乐| 哪个百家乐官网网站信誉好| 大发888帐号注册| 百家乐外挂程式| A8百家乐官网现金网| 御匾会百家乐的玩法技巧和规则 | 大发888游戏平台46| 百家乐筹码订做| 真人百家乐官网信誉| 皇家百家乐的玩法技巧和规则| 红树林百家乐官网的玩法技巧和规则 | 百家乐暗红色桌布| 百家乐官网庄89| 澳门彩票| 百家乐软件代打| 网上百家乐官网真的假的| 大发888黄金版网址| 百家乐投注怎么样| 个人百家乐官网策略| 娱乐论坛| 威尼斯人娱乐场官网是多少| 百家乐博彩博彩网| 百家乐官网马宝| 东方夏威夷娱乐| 新澳博百家乐的玩法技巧和规则 | 六合投注系统| 威尼斯人娱乐城会员注册| 88百家乐现金网| 玩百家乐官网澳门368娱乐城| 华人博彩| 百家乐老千| 澳门百家乐官网娱乐场开户注册| 百家乐官网波浪法则| 现金网游戏| 百家乐怎么玩最保险| 新加坡百家乐官网规则| 至尊百家乐官网20111110| 大发娱乐场| 宁波水果机遥控器|