在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

詳細介紹定時器和定時器中斷

GReq_mcu168 ? 2018-02-09 14:00 ? 次閱讀

后來學著學著就了解到中斷的意義了,不過對于第一次接觸單片機的人來說,還是很難解說的清楚的。

所以這里我做個比喻吧。假設你客廳的電話來電時,有鈴聲和閃光提示,而你在房間看書,那么有電話來的時候,你聽到鈴聲,然后放下手上的書,并用書簽記錄你的頁數,再出去聽電話。聽完后,回到房間,從書簽標記的位置繼續看你的書。

OK,分析上面的幾個動作,電話響并被你聽到,那是中斷來了;你用書簽標記位置,那是現場保護;聽電話,就是執行中斷咯;聽完電話,你要從你剛才標記的地方繼續看書,那就是中斷執行完畢后回到原中斷處繼續執行程序。這個就是中斷的過程了。

假設沒有了中斷的話,你會如何?你會用掃描法:電話不會響鈴了,只有閃光,但你必須在房間看書,那你只能每看幾段,就跑出去看看是否有電話到,如果沒有,就跑回去看書,如果有了,那你就聽電話吧。很明顯,掃描法效率非常低,因為你每看一會書就得花時間看看電話的閃光以判斷是否有電話的到來,這樣你看書的效率就大大減低了。而且掃描法還有個最大的缺點,就是中斷丟失,試想如果你掃描的間隔過大(就是看很久書才去看一下電話),那你極有可能丟了幾個重要的來電。

其實上面的比喻,正能很好地表現中斷的作用——其實中斷就是為了處理突發事件。

對于單片機來說,突發的事情實在太多了,例如用戶對單片機輸入數據,按鍵,那都是單片機本身無法估計的事情。外來數據的突然進入,也屬于突發事件。這些外部來的突發信號,一般就由單片機的外部中斷來處理。外部中斷其實就是一個管腳的狀態改變引起的中斷,在之后會說。

這里先介紹定時器和定時器中斷:

在測量控制系統中,常常需要實時時鐘,以實現定時控制、定時測量或定時中斷等。也常需要計數器以實現對外部事件的計數。MCS-51單片機中有兩個(增強型有三個)十六位的定時計數器T0,T1,簡稱定時器0和定時器1,兩者均為可編程定時計數器。

——以上P話抄自《單片微型計算機與接口技術》94頁第一段-_-#!!!!!

其實你問清楚什么叫定時器,我真的不知道用什么言語來說。剛學的時候,聽過這樣一句話“定時器是單片機上的寶貴資源”,當時不了解,為什么這個資源是寶貴的呢??后來才慢慢知道定時器的偉大所在。當然這個是需要一定的時間來領悟的咯,在這里你還是踏踏實實地往下看吧:)

一開始我就說了,看本教材的時候你手上需要至少一本單片機的基礎書,什么書隨便買本就是了,反正現在的單片機書啊,都是你抄我我抄你的了,都一個樣,最重要的還是例子吧。拿起你的書看看單片機的中斷寄存器和定時器寄存器吧,咱們要開始寫程序咯,時間是不等人D~~~~

單片機方式0是13位的,從來就沒用過,有16位不用你用13位?真浪費也~~~

然后是計算裝入值,16位啊,就是16位2進制,2的16次方,就是65536了。16位定時器就是從某個所謂的裝入值開始自加,加到65536就計滿,如果你允許定時器中斷,那就有中斷來臨。所以16位方式裝入值的計算很簡單:

65536-你要計算的脈沖數=裝入值

但我們一般是要定時時間的,而不是單單計多少個脈沖,所以你要計算的脈沖數要轉化為時間,跟你說,一個脈沖的時間就是一個機器周期,51的機器周期就是12/晶振值。如果你的晶振是12M那么這樣一除就是1US咯。1US整數,算什么都好算,所以你現在知道為什么這么多12M,24M的晶振買了吧,都是為51準備的咯。

#i nclude "reg51.h"

void initTimer(void)

{

TMOD=0x1;

TH0=0xd8;

TL0=0xf0;

}

void timer0(void) interrupt 1

{

TH0=0xd8;

TL0=0xf0;

//add your code here.

}

void main(void)

{

initTimer();

TR0=1;

ET0=1;

EA=1;

while(1);

}

上面的代碼是12M晶振下定時10000US的程序,也就是10MS發生一次中斷。initTimer()是初始化函數,設置定時值和中斷的。

10000US在12M晶振下就是100000個機器周期了,65536-100000=55536=D8F0(十六進制),所以上面就是TH0=0xd8;TL0=0xf0;

void timer0(void) interrupt 1就是定時器0中斷函數,我們不需要理會匯編的中斷先,只需要知道當中斷來臨的時候,程序就自動跳到timer0(void)這個函數運行了,運行完后就會回到原來中斷處繼續執行原先的程序。

interrupt是C51中的關鍵字,后面跟有interrupt的函數都是中斷函數,那么對應哪個中斷呢?請大家參考:一開始為大家介紹的 Keil Software –Cx51 編譯器用戶手冊 中文完整版,(名字太長了,以后叫KEIL手冊)的第125頁。

中斷號 中斷地址

0 0003H

1 000BH

2 0013H

3 001BH

4 0023H

5 002BH

6 0033H

7 003BH

8 0043H

9 004BH

10 0053H

11 005BH

12 0063H

13 006BH

14 0073H

15 007BH

16 0083H

17 008BH

18 0093H

19 009BH

20 00A3H

21 00ABH

22 00B3H

23 00BBH

24 00C3H

25 00CBH

26 00D3H

27 00DBH

28 00E3H

29 00EBH

30 00F3H

31 00FBH

看到了吧,中斷號就是對應中斷進入地址的,至于什么是中斷進入地址?那就是發生某個中斷的時候單片機自動跳進的一個地址段了.

對于定時器0來說,就是000BH,所以對應中斷號1。其他中斷地址看看書就知道了。由上面的表可以看出,KEILC支持32個中斷,不過到現在為止,我還沒看到過有51單片機有32個中斷的:)

好了,進入調試實踐中了,把上面的代碼敲進去吧,又或者直接下載我這個編譯好的工程:

timer0

進入工程后,你需要設置點東西:

Debug Information是調試信息,你選擇這個東西,才可以在C語言上進行仿真(不管是軟還是硬仿真),否則你的仿真環境是匯編的!

軟仿真設置:

Go till main()就是在仿真的時候直接跳到MAIN函數上。如果沒有選,那就由0地址開始運行。這里說個概念,在C51中,mian()函數并不代表0地址的,要知道,keilc在一開始的時候是需要經過比較多的初始化,例如清空RAM內容,設置堆棧等東西,這些都是不需要你做的,你的用戶程序也不包括這些,做完這些初始化后,KEIL才自動跳到你的mian進行處理.

軟件仿真是可以選晶振的,我們選的12M。下面的這些東西你就按圖中的來選吧,具體內容以后再說。

如果編譯成功的話,那么我們就開始第一次的軟件仿真咯:

上面的是已經進入仿真狀態的了,因為我們選擇了Debug Information所以可以在C下面調試,也因為選擇了Go till main()我們可以看到一開始就有個箭頭指著main()的第一句話。而程序旁深色的東東,也就是我圈著的東西,就是有效代碼段,程序只會在那里跑,也就是那個黃色箭頭只會在那個區域跑?,F在你已經可以仿真的了,可以選單步,全速來運行了。關于KEIL的具體仿真,將在下一章為大家解說。

詳細介紹定時器和定時器中斷

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

    關注

    51

    文章

    4240

    瀏覽量

    135316
  • 中斷
    +關注

    關注

    5

    文章

    904

    瀏覽量

    42525
  • 定時器
    +關注

    關注

    23

    文章

    3288

    瀏覽量

    117233

原文標題:從定時器開始說中斷

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    STM32定時器(二)定時器中斷

    常規定時器:基本定時器TIM6&TIM7)、通用定時器(TIM2~TIM5,TIM9~TIM14)、高級定時器(TIM1&TIM8)
    的頭像 發表于 07-21 14:54 ?4818次閱讀
    STM32<b class='flag-5'>定時器</b>(二)<b class='flag-5'>定時器</b><b class='flag-5'>中斷</b>

    定時器中斷跑馬燈

    定時器中斷跑馬燈 這里我們用定時器方式再次實現,定時器方式有效率高,定時準確等優點。一個編程經驗是,所有的
    發表于 08-09 22:58 ?6133次閱讀

    定時器中斷應用

    定時器中斷應用。
    發表于 03-15 14:56 ?3次下載

    stm32定時器中斷程序

    STM32的定時器是個強大的模塊,定時器使用的頻率也是很高的,定時器可以做一些基本的定時,還可以做PWM輸出或者輸入捕獲功能。 以下是進行stm32
    發表于 10-12 16:59 ?1.4w次閱讀

    介紹中斷定時器特點及應用

    中斷定時器
    的頭像 發表于 07-10 03:51 ?5629次閱讀
    <b class='flag-5'>介紹</b><b class='flag-5'>中斷</b>與<b class='flag-5'>定時器</b>特點及應用

    定時器中斷程序資料合集免費下載

    本文檔的主要內容詳細介紹的是定時器中斷程序資料合集免費下載。
    發表于 05-16 08:00 ?1次下載
    <b class='flag-5'>定時器</b><b class='flag-5'>中斷</b>程序資料合集免費下載

    51單片機定時器中斷詳細理解

    char uint i,j; main(){i=0;j=0;EA=1; //中斷總開關開 ET0=1;//定時器T0中斷允許 ET1=1;//定時器T1
    發表于 11-22 12:36 ?10次下載
    51單片機<b class='flag-5'>定時器</b><b class='flag-5'>中斷</b>的<b class='flag-5'>詳細</b>理解

    STC51定時器定時器中斷

    1.定義定時器介紹: 51單片機的定時器屬于單片機的內部資源,其電路的連接和運轉均在單片機內部完成。2.作用定時器作用:1.用于計數系統,可實現軟件計時,或者使程序每隔一固
    發表于 11-22 14:51 ?5次下載
    STC51<b class='flag-5'>定時器</b>與<b class='flag-5'>定時器</b><b class='flag-5'>中斷</b>

    51單片機中斷主要關于計時--定時--計算定時器初值--的簡介 ~~~看到的關于中斷? 計時/定時器介紹,覺得

    看到的關于中斷 計時定時器介紹,個人看明白了。目錄:1、單片機中斷簡介2、中斷允許寄存
    發表于 11-23 18:06 ?13次下載
    51單片機<b class='flag-5'>中斷</b>主要關于計時--<b class='flag-5'>定時</b>--計算<b class='flag-5'>定時器</b>初值--的簡介  ~~~看到的關于<b class='flag-5'>中斷</b>? 計時<b class='flag-5'>器</b>/<b class='flag-5'>定時器</b>的<b class='flag-5'>介紹</b>,覺得

    定時器中斷實現步驟及實例筆記

    定時器中斷實現步驟使能定時器時鐘。 RCC_APB1PeriphClockCmd();初始化定時器,配置ARR,PSC。 TIM_TimeBaseInit()
    發表于 11-23 18:06 ?13次下載
    <b class='flag-5'>定時器</b><b class='flag-5'>中斷</b>實現步驟及實例筆記

    STM32定時器-基本定時器

    目錄定時器分類基本定時器功能框圖講解基本定時器功能時鐘源計數時鐘計數自動重裝載寄存
    發表于 11-23 18:21 ?32次下載
    STM32<b class='flag-5'>定時器</b>-基本<b class='flag-5'>定時器</b>

    STM32-通用定時器-定時器中斷

    1STM32的定時器STM32F103ZET6一共有8個定時器,其中分別為:高級定時器(TIM1、TIM8);通用定時器(TIM2、TIM3、TIM4、TIM5);基本
    發表于 11-26 15:36 ?16次下載
    STM32-通用<b class='flag-5'>定時器</b>-<b class='flag-5'>定時器</b><b class='flag-5'>中斷</b>

    STM32定時器的分類及中斷原理

    本文主要介紹常規定時器中的TIM3,實現定時器中斷的功能。STM32定時器的分類在其中一篇文章中已經介紹
    的頭像 發表于 01-12 17:29 ?8004次閱讀
    STM32<b class='flag-5'>定時器</b>的分類及<b class='flag-5'>中斷</b>原理

    定時器中斷是什么意思,定時器中斷的工作原理

    定時器中斷是由單片機中的定時器溢出而申請的中斷。51單片機中有兩個定時器T0和T1。STM32中共有11個
    的頭像 發表于 07-23 09:45 ?6888次閱讀

    定時器中斷程序怎么寫

    達到預定的定時時間時,它會產生一個中斷信號,稱為定時器中斷。在本文中,我們將詳細了解如何編寫定時器
    的頭像 發表于 09-01 10:17 ?2350次閱讀
    主站蜘蛛池模板: 国产精品毛片久久久久久久 | 亚洲人成www在线播放 | 丁香五月网久久综合 | 亚洲一区二区高清 | 天天舔天天色 | 国产一区二区三区免费大片天美 | 久久亚洲免费视频 | 午夜69成人做爰视频网站 | 国产福利网站 | 99综合在线| 四虎影视永久在线观看 | 天天摸日日摸人人看 | 国产性videosgratis| 亚洲毛片基地4455ww | 激情五月综合 | 年轻的护士3在线观看 | 欧美1819| 欧美一区二区三区在线观看免费 | 四虎精品免费永久在线 | 久久久夜 | 在线网站黄| 色妞综合网 | 在线观看亚洲成人 | 免费在线黄色网 | 琪琪午夜免费影院在线观看 | 一级骚片超级骚在线观看 | 婷婷六月综合网 | 男女交性视频播放视频视频 | 国产在线视频资源 | 一级看片 | 亚洲欧美视频网站 | 国产成人亚洲日本精品 | 色秀视频免费网站在线观看 | 么公的好大好硬好深好爽视频 | 亚洲 欧美 日韩 在线 中文字幕 | 国产人成精品免费视频 | 视频网站黄色 | 97影院午夜在线观看视频 | 奇米一区二区 | 色婷婷亚洲十月十月色天 | 亚洲精品你懂的 |