久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 13968|回復: 8
打印 上一主題 下一主題
收起左側

51單片機定時器/計數(shù)器基礎知識介紹

  [復制鏈接]
跳轉到指定樓層
樓主
ID:101489 發(fā)表于 2016-1-5 01:38 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

一、基本概念

1、89C51有兩個計數(shù)器T0和T1,89C52還有一個T2。每個計數(shù)器都是由兩個8位的RAM 單元組成的,即每個計數(shù)器都是16 位的計數(shù)器,最大的計數(shù)容量是216=65536,記住是從0-65535。

2、提供給定時器的計數(shù)源又是從哪里來的呢?就是由單片機的晶振經過12 分頻后獲得的一個脈沖源。一個12M 的晶振,它提供給計數(shù)器的脈沖時間間隔是就是1us。

3、預置數(shù)計數(shù)法。如果每個脈沖是1微秒,則計滿65536個脈沖需時65.536毫秒。但是如果只需要10毫秒就可以了,怎么辦?只要在計數(shù)器里預先放進55536,這樣只需要計數(shù)65536-55536=10000次,也就是10毫秒了。

 

二、相關寄存器

特殊功能寄存器TMOD(89H)
      用于T1          用于T0

GATE   C/T   M1   M0   GATE   C/T   M1   M0

GATE:0用于內部脈沖;1用于外部脈沖。

C/T:0用于定時器;1用于計數(shù)器。

M1M0:工作方式

 

 

M1,M0      范圍            特性

0,0工作方式0   13位,8192次       為了和51 的前輩48系列兼容。

0,1工作方式1   16位,65536次      16位,其他特性與工作方式0相同,比較常用。

1,0工作方式2   8位,256次        自動再裝入預置數(shù),預置數(shù)放在T0(或T1)

                         的高8位中,只有低8 位參與計數(shù),通常用于

                         波特率發(fā)生器。

 

1,1工作方式3   8位,256次        TH0只能作為定時器用,TL0可作定時器或計數(shù)

                         器。溢出標記:TL0 還是用原來的T0的標記,

                         而TH0則借用T1的標記,因此只有在T1 以工

                         作方式2 運行時,才讓T0 工作于方式3。

 

特殊功能寄存器TCON(88H)

     用于定時/計數(shù)器              用于中斷

TF1    TR1    TF0    TR0    IE1    IT1    IE0    IT0

TR0/TR1:定時器的開關。

TF0/TF1:計數(shù)溢出后由0變?yōu)?

IT0/IT1:定時器/計數(shù)器中斷允許位。



在今天的分享中我們學習下單片機/計數(shù)器的使用,在前面的分享中我們接觸到了單片機時鐘周期、機器周期和指令周期的概念,我們再溫習下:


  1時鐘周期 1/晶振頻率M

 

  1機器周期 12(51系列為12時鐘周期,有的改進型單片機是1時鐘周期)×時鐘周期=12(1)×(1/晶振頻率M)=1us(1/12us,如采用12M晶體)。


 

  如果12MHZ晶振工作在51單片機12T模式下,需要使用定時器進行50ms定時操作,定時器工作在方式1,那么我們該怎樣編寫程序呢?

  我們知道:

  12M的晶振每秒(s)可產生1M(106us)個機器周期。

 

  50ms就需要50×1000us×1us(1機器周期)個機器周期=50000個機器周期。


 

  如果定時器在方式1工作,是16位計數(shù)器,最大值為65536(216),也就是能進行最大65536次計數(shù)。而50ms定時操作需要50000個機器周期,1個機器周期=1us,所以需要50000次計數(shù)操作。


 

為了計數(shù)器定時器工作,需要預先填充定時器初值(初值=定時器計數(shù)最大計數(shù)次數(shù)-所需定時計數(shù)次數(shù))。所以需設置定時器初值 15536=65536-50000,即3CB0H(10進制15536轉換成16進制數(shù)3CB0),所以TH0=0x3c,TL0=0xb0,高位就是 TH0的值,低位為TL0的值。


 

   如果使用11.0592MHZ的晶振,其他條件不變,11.0592M的晶振每秒可產生0.9216M個機器周期,50ms就需要46080 個機器周期。定時器在方式1工作,是16位計數(shù)器,最大值為65536,所以需設置初值19456=65536-46080,即4C00H,所以 TH0=0x4c,TL0=0x00。


   由上面的分析,我們可以得出推導16位定時器/計數(shù)器初值設定高8位TH0,低TL0的公式為:

   TH0=(65536-所需計數(shù)次數(shù))/256=初值/256;

 

   TL0=(65536-所需技術次數(shù))%6=初值%6;


 

   公式中的256是什么意思呢?我們的計時器是兩個8位組成的,那么要把那些差值裝進這兩個8位,計數(shù)從低8位開始,那么低8位最多能裝256 個機器周期,那么256計滿了就用高8位的,就是說低8位滿一次高8位加1,那么高8位裝多少,低8位就滿了幾次,算法就是用差值除一下256取其整數(shù), 剩下的,就是還剩了小于256次數(shù)的就放在低8位,就是差值的余數(shù)。


  下面我們看個定時器/計數(shù)器0,產生定時中斷的例程。

 

  晶振頻率12M,其程序如下:


#include<reg51.h>

 

void timer0_init()

{

 TMOD = 0x01;      //定時器在方式1工作,是16位計數(shù)器,最大值為65536

 TL0 = 0xb0;         //給TL0賦計數(shù)初值0xb0

 TH0 = 0x3c;         //給TH0賦計數(shù)初值0x3c

 TR0 = 1;           //定時器開始計數(shù)

 ET0 = 1;           //定時器中斷允許

 EA = 1;           //開總中斷

}

 

void main()

{

 timer0_init();

 while(1);

}

 

void timer0() interrupt 1

{

 TH0=(65536-50000)/256;    //在中斷處理函數(shù)中需要重新給TH0賦初值。

 TL0=(65536-50000)%6;    //在中斷處理函數(shù)中需要重新給TL0賦初值。

 

 加上我們希望的語句。

 

 

}


 

  上面給大家看了一段例程,講的是如何用定時器/計數(shù)器0實現(xiàn)中斷。單片機一般還有一個定時器/計數(shù)器1,它的編程和定時器/計數(shù)器0差不多。


 

另外,單片機定時器/計數(shù)器的使用不單單體現(xiàn)在定時器中斷方面,但它們的使用都萬變不離其綜,大家掌握了一種用法,對于其它的應用也就不難掌握了。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏8 分享淘帖 頂1 踩

相關帖子

回復

使用道具 舉報

沙發(fā)
ID:153747 發(fā)表于 2016-12-10 18:38 | 只看該作者
挺好的學習資料,謝謝樓主分享
回復

使用道具 舉報

板凳
ID:255559 發(fā)表于 2018-4-7 13:08 | 只看該作者
我學了,挺好的
回復

使用道具 舉報

地板
ID:371054 發(fā)表于 2018-7-16 08:36 | 只看該作者
知識很詳細,謝謝樓書,已學!
回復

使用道具 舉報

5#
ID:421232 發(fā)表于 2018-12-12 19:43 | 只看該作者
挺好的,謝謝分享
回復

使用道具 舉報

6#
ID:466667 發(fā)表于 2019-1-22 06:44 | 只看該作者
好的學習資料,謝謝樓主
回復

使用道具 舉報

7#
ID:232366 發(fā)表于 2021-1-1 11:49 | 只看該作者
定時器學起來有點吃力感覺  卡就卡在初值計算方面了一直弄不明白是怎么計算的
回復

使用道具 舉報

8#
ID:1043071 發(fā)表于 2022-8-27 16:24 | 只看該作者
我是看不懂,但還是要謝謝樓主
回復

使用道具 舉報

9#
ID:515309 發(fā)表于 2024-6-14 13:51 | 只看該作者
TL0應該這樣寫吧1(65536-50000)%256才對啊
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美理论片在线观看 | 国产在线黄色 | 99爱视频| 91精品国产综合久久久蜜臀 | 久久久久久中文字幕 | 久久久在线视频 | 日韩欧美在线视频观看 | 日韩特级| 成人做爰9片免费视频 | 伊人9999 | 中文字幕+乱码+中文乱码91 | 成人91看片| 成人看片网 | 国产黄色精品视频 | 日韩黄视频| 日韩精品久久久久久久酒店 | 欧美资源在线 | 国产一级免费视频 | 日本成人精品 | 色中色av| 亚洲成人免费在线 | www亚洲| 黄色免费在线视频 | 久久精品视频一区 | 黄色福利视频 | 中文字幕的 | 综合久久99 | 国产成人免费在线视频 | 日韩av手机在线观看 | 久久网av | 91黄色免费| 亚洲综合在线视频 | 亚洲一区不卡 | 午夜影院在线 | 成人免费网站黄 | 国产一区二区网站 | 欧美成人精品一区二区三区在线看 | 日本中文字幕在线播放 | 欧美午夜精品久久久久免费视 | 亚洲激情偷拍 | 青草在线视频 |