久久精品99久久_亚洲一区二区综合_狠狠色伊人亚洲综合成人_亚洲综合爱爱久久网

你好!歡迎來到深圳市穎特新科技有限公司!
語言
當前位置:首頁 >> 技術中心 >> 單片機入門 >> 單片機定時器作用原理及學習應用詳解

單片機定時器作用原理及學習應用詳解

作者:admin 來源:不詳 發布時間:2018-05-08  瀏覽:37

定時器是單片機的重點中的重點,但不是難點,大家一定要完全理解并且熟練掌握定時器的應用。

定時器的初步認識

時鐘周期:時鐘周期T是時序中最小的時間單位具體計算的方法就是1/時鐘源,如果大家用的晶振是11.0592M,那么對于這個單片機系統來說,時鐘周期=1/11059200秒。

機器周期:我們的單片機完成一個操作的最短時間。機器周期主要針對匯編語言而言,在匯編語言下程序的每一條語句執行所使用的時間都是機器周期的整數倍,而且語句占用的時間是可以計算出來的,而C語言一條語句的時間是不可計算的。51單片機系列,在其標準架構下一個機器周期是12個時鐘周期,也就是12/11059200秒。現在有不少增強型的51單片機,其速度都比較塊,有的1個機器周期等于4個時鐘周期,有的1個機器周期就等于1個時鐘周期,也就是說大體上其速度可以達到標準51架構的3倍或12倍。因為我們是講標準的51單片機,所以我們后邊的課程如果遇到這個概念,全部是指12個時鐘周期。

這兩個概念了解即可,下邊就來我們的重頭戲,定時器和計數器。定時器和計數器是單片機內部的同一個模塊,通過配置SFR(特殊功能寄存器)可以實現兩種不同的功能,我們大多數情況下是使用定時器功能,因此我們的課程也是主要來講定時器功能,計數器功能大家自己了解下即可。

顧名思義,定時器就是用來進行定時的。定時器內部有一個寄存器,我們讓它開始計數后,這個寄存器的值每經過一個機器周期就會加1一次,因此,我們可以把機器周期理解為定時器的計數周期。我們的秒表,每經過一秒,數字加1,而這個定時器就是每過一個機器周期的時間,也就是12/11059200秒,數字加1。還有一個特別注意的地方,就是秒表是加到60后,秒就自動變成0了,這種情況在單片機和計算機里我們稱之為溢出。那定時器加到多少才會溢出呢?定時器有幾種模式,假如是16位的定時器,也就是2個字節,最大值就是65535,那么加到65535后,再加1就算溢出,如果有其他位數的話,道理是一樣的,對于51單片機來說,溢出后,這個值會直接變成0。從某一個初值,經過計算確定的時間后溢出,這個過程就是其定時的含義。

定時器的寄存器描述

標準的51里邊只有定時器0和定時器1這兩個定時器,現在很多單片機也有多個定時器的,在這里我們先講定時器0和1。那么我前邊提到過,對于單片機的每一個功能模塊,都是由他的SFR,也就是特殊功能寄存器來控制。而和定時器有關的特殊功能寄存器,有以下幾個,大家不需要去記憶這些寄存器的名字和作用,你只要大概知道就行,用的時候,隨時可以查手冊,找到每個寄存器的名字和每個寄存器所起到的作用。

表2 定時值存儲寄存器


  表3 TCON--定時器/計數器控制寄存器的位分配(地址:88H)

       可位尋址;復位值:0x00;復位源:任何復位

  表4 TCON--定時器/計數器控制寄存器的位描述


  大家注意在表4中的描述中,只要寫到硬件置1或者清0的,就是指一旦符合條件,單片機自動完成的動作,只要寫軟件置1或者清0的,是指我們用程序去完成這個動作,后邊課程中不再做說明。
  表2中的寄存器,是存儲計數器的計數值的,兩個字節的用于定時器1,兩個字節用于定時器0。
  表3中有TF1、TR1、TF0、TR0這4位需要我們理解清楚。兩位定時器1的,兩位定時器0的,我們只解釋定時器1的,定時器0的同理。先看TR1,當我們程序中寫TR1 = 1以后,定時器值就會每經過一個機器周期加1,當我們程序中寫TR1 = 0以后,定時器值就會保持不變化。TF1,這個是一個標志位,他的作用是告訴我們定時器溢出了。比如我們的定時器設置成16位的定時器,那么每經過一個機器周期,TL1加1一次,當TL1加到255后,再加1,TL1變成0,TH1會加1一次,如此一直加到TH1和TL1都是255(即TH1和TL1組成的16位整型數為65535)以后,再加1一次,那么就會溢出,TH1和TL1同時都變為0,只要一溢出,TF1馬上自動變成1,告訴我們定時器溢出了,僅僅是提供給我們一個信號,讓我們知道定時器溢出了,它不會對定時器是否繼續運行產生任何影響。
  表5 TMOD--定時器方式控制寄存器的位分配(地址 89H)
  不可位尋址;復位值:0x00;復位源:任何復位
  

  細心的同學會發現,TCON那個地方標注的是“可位尋址”,TMOD這里標注的是“不可位尋址”。這個地方的意思就是比如TCON有一位TR1,我們可以在程序中直接進行TR1 = 1;這樣操作。但是(T1)M1 = 1;這樣的操作就是錯誤的。我們要操作就必須一次操作一個字節,就是必須一次性對TMOD所有位操作,不能對其中某一位單獨進行操作。
  表6 TMOD--定時器/計數器方式控制寄存器的位描述
  

  表7 TMOD--定時器方式控制寄存器M1/M0工作模式

  以上這4種模式的配置,其中模式0是為了兼容老的8048單片機而設的,現在的51幾乎不會用到這種模式,而模式3根據我的應用經驗,他的功能模式2完全可以取代,所以基本上也是不用,那么我們重點就學習模式1和模式2。
  模式1就是THn和TLn組成了一個16位的定時器,取值范圍是0到65535,溢出后,只要不對THn和TLn重新賦值,則從0開始計數。模式2的功能是自動裝載,就是TLn溢出后,TFn就直接置1了,并且THn的值直接賦給TLn,然后TLn從新賦值的這個數字開始計數。這個功能可以用來產生串口的通信波特率,我們講串口的時候要用到,本章節我們重點來學習模式1。為了加深大家理解這個定時器原理,我們來看一下他的模式1的電路示意圖1。
  圖1 定時器/計數器模式1示意圖


  我帶著大家來分析一下這個示意圖,后邊如果手冊中遇到,大家也就會自己研究了。OSC框表示時鐘頻率,因為我們1個機器周期等于12個時鐘周期,所以那個d就等于12。下邊GATA右邊的那個門是一個非門電路,再右側是一個或門,再往右是一個與門電路。
  圖上可以看出來,下邊部分電路是控制了上邊部分,那我們先來看下邊是如何控制的,我們以定時器0為例。
  1、TR0和下邊或門電路的結果要進行與門運算,TR0如果是0的話,與運算完了肯定是0,所以確定如果要讓定時器工作,TR0 = 1。
  2、與門結果要想是1,那或門出來的信號必須也得是1才行。在GATE位為1的情況下,經過一個非門變成0,或門電路結果要想是1的話,那INT0即P3.2引腳必須是1的情況下,這個時候定時器才會工作,而INT0引腳是0的情況下,定時器不工作,這就是GATE位的作用。
  3、當GATE位為0的時候,經過一個非門變成1,不管INT0引腳是什么電平,經過或門電路后則肯定是1,定時器就會工作。
  4、要想讓定時器工作,就是加1,從圖上看有兩種方式,第一種方式是那個開關打到上邊的箭頭,就是C/T = 0的時候,一個機器周期TL就會加1一次,當開關打到下邊的箭頭,即C/T =1的時候,T0引腳即P3.4引腳來一個脈沖,TL就加1一次,這也就是計數器功能。
  INT0引腳是P3.2,INT1引腳是P3.3,T0引腳是P3.4,T1引腳是P3.5。
  定時器程序應用
  了解了定時器相關的寄存器,那么我們下面就來做一個定時器的程序,鞏固一下我們學到的內容。我們這節課的程序先使用定時器0,在使用定時器的時候,需要以下幾個步驟:
  第一步:設置特殊功能寄存器TMOD,配置好工作模式;
  第二步:設置計數寄存器TH0和TL0的初值;
  第三步:設置TCON,通過打開TR0位來讓定時器開始計數。
  第四步:判斷TCON寄存器的TF0位,監測定時器溢出情況。
  寫程序之前,我們要先來學會計算如何用定時器定時時間。我們以晶振是11.0592M為例講解,時鐘周期就是1/11059200,機器周期就是12/11059200,我們假如要定時20ms,就是0.02秒,要經過x個機器周期得到0.02秒,我們來算一下x*12/11059200=0.02,得到x= 18432。那么我們現在16位的定時器溢出值是65536,我們可以這樣,先給TH0和TL0一個初值,讓他們經過18432個機器周期后剛好溢出,溢出后我們可以通過檢測TF0位得知,就剛好是0.02秒。這個初值y = 65536 - 18432 = 47104,轉成16進制就是0xB800,那么就是TH0 = 0xB8,TL0 = 0x00。
  那0.02秒我們已經定時出來了,細心的同學會發現,我們如果初值直接給一個0x0000,一直到65536溢出,定時器定時值最大也就是71ms左右,那么我們想定時更長時間怎么辦呢?用你小學學過的邏輯,倍數關系就可以解決此問題。
  那好了,我們下面就用程序來實現以下這個功能。
  #include //包含寄存器的庫文件
  sbit LED = P0^0;
  sbit ADDR0 = P1^0;
  sbit ADDR1 = P1^1;
  sbit ADDR2 = P1^2;
  sbit ADDR3 = P1^3;
  sbit ENLED = P1^4;
  void main()
  {
  unsigned char counter = 0;
  ENLED = 0; ADDR0 = 0; ADDR1 = 1;
  ADDR2 = 1; ADDR3 = 1; LED = 1; //74HC138和LED燈初始化部分
  TMOD = 0x01; //設置定時器0為模式1
  TH0 = 0xB8;
  TL0 = 0x00; //定時值初值
  TR0 = 1; //打開定時器0
  while(1)
  {
  if(1 == TF0) //判斷定時器0是否溢出
  {
  TF0 = 0;
  TH0 = 0xB8; //一旦溢出后,重新賦值
  TL0 = 0x00;
  counter++;
  if(50 == counter) //判斷定時器0溢出是否達到50次
  {
  counter = 0; //counter清0,重新計數
  LED = !LED; //LED取反操作,0-->1,1-->0
  }
  }
  }
  }
  程序都有注釋,不難理解,這里要解釋一個地方,就是兩次if判斷,細心的同學會發現,if(1 == TF0)這句,我把1寫前邊,這個地方我推薦新手按照我這樣來寫,因為如果我們寫if(TF0 == 1),作為新手來說,不小心丟掉一個’=’號后,寫成if(TF0 = 1),這樣實際上在語法上是可以通過的,我們用的Keil4還會出一個警告說明一下,Keil以前的版本以及一些其他軟件,可能根本不會出任何錯誤或者警告提示,但是這樣產生的Hex文件下載到單片機里邊,程序就錯了,大家可以改改試試看。
  本程序實現的結果是小燈點亮持續一秒,熄滅持續一秒,也就是以0.5HZ的頻率進行閃爍。

編輯:admin  最后修改時間:2019-09-06

聯系方式

0755-82591179

郵箱:ivy@yingtexin.net

地址:深圳市南山區桃源街道平山社區平山一路2號南山云谷創業園二期11棟410-411

Copyright © 2014-2026 穎特新科技有限公司 All Rights Reserved.  粵ICP備14043402號-4

久久精品99久久_亚洲一区二区综合_狠狠色伊人亚洲综合成人_亚洲综合爱爱久久网
久久精品xxx| 亚洲自偷自拍熟女另类| 丝袜制服一区二区三区| 欧美 日本 亚洲| 久久精品国产sm调教网站演员| av在线网站免费观看| 伊人精品视频在线观看| 老司机午夜网站| 97中文字幕在线| 少妇av一区二区三区无码| 国产亚洲综合视频| 伊人成人222| 伊人再见免费在线观看高清版| 91网站在线观看免费| 婷婷五月综合缴情在线视频| 91视频 -- 69xx| 最近中文字幕一区二区| 天天爱天天做天天操| 成人黄色片免费| 日本三区在线观看| 亚洲精品mv在线观看| 国产 欧美 日韩 一区| 激情内射人妻1区2区3区| 一级片黄色免费| heyzo亚洲| 亚洲网中文字幕| 日韩日韩日韩日韩日韩| 少妇一级淫免费播放| 亚洲精品蜜桃久久久久久| 男人搞女人网站| 日韩成人手机在线| 999在线观看| 日本三级免费网站| 秋霞在线一区二区| 亚洲视频在线a| 亚洲熟妇无码av在线播放| 福利在线一区二区三区| 日本wwwcom| 小说区视频区图片区| 日韩亚洲在线视频| 东北少妇不带套对白| 欧美爱爱视频网站| 天堂在线资源视频| 欧美成人高潮一二区在线看| www.久久久久久久久久久| 国产xxxxx在线观看| 欧美男女爱爱视频| 国产日本欧美在线| 亚洲国产高清av| 97公开免费视频| 免费成人在线视频网站| 日本熟妇人妻xxxx| 国产精品无码电影在线观看| 在线无限看免费粉色视频| 91精品999| 婷婷激情5月天| 8x8x成人免费视频| 奇米视频888| 手机免费看av网站| 天天做天天干天天操| 深爱五月综合网| 五月天色婷婷综合| 国产日产欧美一区二区| 女人床在线观看| 波多野结衣av一区二区全免费观看| 国产av不卡一区二区| 亚洲国产一二三精品无码 | 国产高清精品在线观看| 欧美二区在线视频| 日批视频在线免费看| 黄色a级片免费| 91制片厂毛片| 手机免费av片| 裸体裸乳免费看| 美女黄色免费看| 欧美视频在线观看网站| 日本成人中文字幕在线| 国产一级片自拍| 看一级黄色录像| www.爱色av.com| 国产福利在线免费| 国产欧美自拍视频| 黄色免费视频大全| 污视频网址在线观看| 国产女主播av| av片中文字幕| 国产日本欧美在线| 国产aaa一级片| 亚洲精品性视频| 男女超爽视频免费播放| 中文字幕成人在线视频| 国产va亚洲va在线va| 亚洲色图久久久| 男女日批视频在线观看| 茄子视频成人免费观看| 99久re热视频精品98| 国产在线观看福利| 成人国产在线看| 国产喷水theporn| 日韩伦理在线免费观看| 91 在线视频观看| 无码精品a∨在线观看中文| 亚洲 欧洲 日韩| 午夜dv内射一区二区| 91九色丨porny丨国产jk| 欧美在线a视频| 欧美日韩亚洲一二三| 草草视频在线免费观看| 日本一二三区在线| www.涩涩涩| 久久久精品在线视频| 日韩专区第三页| 91小视频在线播放| 一区二区xxx| 2022亚洲天堂| 熟女少妇在线视频播放| 久久香蕉视频网站| 一区二区三区一级片| 九九精品久久久| xx欧美撒尿嘘撒尿xx| av免费网站观看| 91av俱乐部| 狠狠热免费视频| 国产免费视频传媒| 麻豆av免费在线| 久久网站免费视频| 黄色a级片免费| 亚洲成熟丰满熟妇高潮xxxxx| 少妇高潮喷水在线观看| 日韩欧美国产免费| 每日在线更新av| www.四虎成人| 在线观看免费黄网站| 黄色永久免费网站| 欧美视频国产视频| 看全色黄大色大片| 福利视频免费在线观看| 黄色www网站| 爱情岛论坛亚洲首页入口章节| 亚洲xxxx2d动漫1| 久久久久久综合网| 最新av在线免费观看| 日韩精品一区二区免费| 免费在线激情视频| 波多野结衣xxxx| 国产欧美123| 国内外成人激情视频| 九一精品久久久| 欧美午夜小视频| 久久精品影视大全| 青青在线免费视频| 韩国日本在线视频| 中文字幕久久av| 欧美成人精品免费| 别急慢慢来1978如如2| 午夜一区二区视频| 欧美精品久久久久久久免费| 亚洲欧美日韩综合网| 成人av在线播放观看| 精品一卡二卡三卡| 亚洲色图都市激情| 成人免费毛片播放| www.69av| 九色porny自拍| 无罩大乳的熟妇正在播放| 小早川怜子一区二区三区| 国产素人在线观看| 亚洲制服在线观看| 99热在线这里只有精品| 黄色网络在线观看| 亚洲福利精品视频| 日本xxxxxxxxxx75| 精品一区二区成人免费视频| 妞干网在线免费视频| 9191国产视频| 亚洲一二三av| 欧美美女性视频| 久久精品国产精品亚洲色婷婷| 超碰免费在线公开| 天天综合天天添夜夜添狠狠添| 国产免费成人在线| 成人综合视频在线| 免费的一级黄色片| 日本a级片在线播放| www.久久com| 欧美一级特黄aaa| 性猛交ⅹ×××乱大交| 妺妺窝人体色www在线小说| 精品丰满人妻无套内射| 91视频成人免费| 成人短视频在线看| 性生活免费观看视频| 91女神在线观看| 日本黄大片一区二区三区| 国产aaaaa毛片| 日韩一区二区三区久久| 国产成人在线综合| 日韩欧美中文在线视频| 欧美h视频在线观看| 97在线免费视频观看|