娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2024年09月28日(星期六)

2021年09月28日 | 51單片機之晶振與定時器

發布者:美好夢想 來源: eefocus關鍵字:51單片機  晶振  定時器 手機看文章 掃描二維碼
隨時隨地手機看文章

Part1 晶振

晶振,也就是晶體振蕩器,主要作用是產生穩定的振動頻率用于單片機時鐘電路。


一、晶振的工作原理

壓電效應:

晶體振蕩器結構圖

如圖所示,晶體振蕩器主要由引線構成的電極和晶體片構成。


當我們在晶體兩電極外加電壓后,晶體會發生形變,反過來,如果外力使得晶體變形,兩極上又會產生電壓。


因此當我們在晶體兩端施加一個交變電壓時,隨著電壓正負的改變,晶體交替形變,進而以一定的頻率發生諧振–單頻振蕩(振蕩頻率固定不變)。


二、晶體單頻振蕩產生時鐘脈沖

在這里插入圖片描述

我們知道,脈沖信號是一個按一定電壓幅度、一定時間間隔連續發出的信號。

而我們的晶體振蕩器,既有電壓幅度–晶體兩端施加的電壓,又有時間間隔–振蕩頻率 f 的倒數作為周期。因此我們可以通過我們的晶體振蕩器產生一個穩定的時鐘脈沖信號來為我們的單片機提供精準計時。


三、單片機的時間單位

現在我們有了由晶體振蕩器產生的精準時鐘脈沖,可以給我們的單片機計時了。但對于單片機來講,用我們所熟知的時分秒等計時單位來計時,并不合適。因此我們根據單片機的工作特性和原理,引入了時鐘周期、狀態周期、機器周期、指令周期幾個概念來作為我們單片機的時間單位。


1、時鐘周期


也叫振蕩周期或者晶振周期,即晶振的單位時間發出的脈沖數。如12Mhz晶振的時鐘周期為1/ f =1/12Mhz,也就是1/12微秒。


時鐘周期是計算機中最基本、最小的時間單位。


8051單片機中把一個時鐘周期定義為一個節拍(用P表示),二個節拍定義為一個狀態周期(用S表示)


2、機器周期


計算機中,為了便于管理,常把一條指令的執行過程劃分為若干個階段,每一階段完成一項工作。例如,取指令、存儲器讀、存儲器寫等,這每一項工作稱為一個基本操作。完成一個基本操作所需要的時間稱為機器周期。51單片機中一個機器周期等于12個時鐘周期。


在標準的51單片機中,一般情況下,一個機器周期等于12個時鐘周期,也就是機器周期=12*時鐘周期,(上面講到的原因)如果是12MHZ,那么機器周期=1微秒。單片機工作時,是一條一條地從RoM中取指令,然后一步一步地執行。單片機訪問一次存儲器的時間,稱之為一個機器周期,這是一個時間基準。


機器周期不僅對于指令執行有著重要的意義,而且機器周期也是單片機定時器和計數器的時間基準。例如一個單片機選擇了12MHZ晶振,那么當定時器的數值加1時,實際經過的時間就是1us,這就是單片機的定時原理。


3、指令周期


指令周期是執行一條指令所需要的時間,一般由若干個機器周期組成。指令不同,所需的機器周期數也不同。


對于一些簡單的的單字節指令,在取指令周期中,指令取出到指令寄存器后,立即譯碼執行,不再需要其它的機器周期。


對于一些比較復雜的指令,例如轉移指令、乘法指令,則需要兩個或者兩個以上的機器周期


Part2 定時計數器

在我們的單片機中,說到時間就離不開上面所提的時鐘脈沖。而我們的定時計數器就是對這些脈沖進行計數,來進行時間計算的,本質上我們的定時計數器是一個加1計數器,也就是每輸入一個脈沖,計數加一。


但要注意的一點是,定時器和計數器是兩個不同的功能單元。


定時器是由單片機自身提供的一個非常穩定的計數器(晶振),接受的是內部脈沖;


而計數器則不同,記錄的是單片機外部發生的事情,接受的是外部脈沖。


舉一個計數器的例子,方便大家理解,我現在讓我的計數器記錄我的一個獨立按鍵按下的次數,那它所接受的脈沖便是我們按鍵按下過程中產生外部脈沖。


這里需要注意的是,計數器自動加1需要檢測從1到0的下降沿,因此需要兩個計數周期,最高計數頻率為24晶振頻率。


由于不同型號的51單片機的定時器個數不同,下面以最基礎的8951單片機為例進行闡述


一、定時計數器的寄存器

說了這么多,那單片機具體應該怎么使用呢,別急,咱們還得從最基本的寄存器開始看起。


首先我們來看一下定時計數器的定時方式寄存器–TMOD

GATE :定時操作開關控制位,當GATE=1時,INT0或INT1引腳為高電平,同時TCON中的TR0或TR1控制位為1時,計時/計數器0或1才開始工作。若GATE=0,則只要將TR0或TR1控制位設為1,計時/計數器0或1就開始工作。


C/T :定時器或計數器功能的選擇位。C/T=1為計數器,通過外部引腳T0或T1輸入計數脈沖。C/T=0時為定時器,由內部系統時鐘提供計時工作脈沖。


M1 M0:T0、T1工作模式選擇位

設置好方式,當然還有具體的定時器控制寄存器–TCON

TF1:定時器T1溢出標志,可由程序查詢和清零,TF1也是中斷請求源,當CPU響應T1中斷時由硬件清零。


TF0:定時器T0溢出標志,可由程序查詢和清零,TF0也是中斷請求源,當CPU響應T0中斷時由硬件清零。


TR1:T1充許計數控制位,為1時充許T1計數(定時)。


TR0:T0充許計數控制位,為1時充許T0計數(定時)。


下面四個屬于中斷部分,這里不多做闡述。


IE1:外部中斷1請示源(INT1,P3.3)標志。IE1=1,外部中斷1正在向CPU請求中斷,當CPU響應該中斷時由硬件清“0”。


IT1:外部中斷源1觸發方式控制位。此位為1設置為底電平觸發,為0設置為下降沿觸發。


IE0:外部中斷0請示源(INT0,P3.2)標志。IE0=1,外部中斷1正在向CPU請求中斷,當CPU響應該中斷時由硬件清“0”。


IT0:外部中斷源0觸發方式控制位。此位為1設置為底電平觸發,為0設置為下降沿觸發。


二、我們來看一下定時器的4種工作模式

1、工作模式0:


由TL0的低5位和TH0的全部8位共同構成一個13位的定時器/計數器,定時器/計數器啟動后,定時或計數脈沖個數加到TL0上,從預先設置的初值(時間常數)開始累加,不斷遞增1,當 TL0計滿后,向TH0進位,直到13位寄存器計滿溢出,TH0溢出時,置位TCON中的TF0標志,向CPU發出中斷請求。并且定時器/計數器硬件會自動地把13位的寄存器值清0,如果需要進一步定時/計數,需要使用相關指令重置時間常數,并把定時器/計數器的中斷標記TF0置0。


2、工作模式1:最常用的定時器工作模式


模式1與模式0幾乎完全相同,唯一的區別就是,模式1中的寄存器TH0和TL0共同構成的是一個16位定時器/計數器來參與操作,因此比模式0中的定時/計數范圍更大


3、工作模式2: 工作方式2特別適合于用作較精確的脈沖信號發生器


這種模式又稱為自動再裝入預置數模式。有時候,我們的定時/計數操作是需要多次重復定時/計數的,如果溢出時不做任何處理,那么,在第二輪定時/計數時就是從0開始定時/計數了,而這并不是我們想要的。所以,要保證每次溢出之后,再重新開始定時/計數的操作是我們想要的,那就要把預置數(時間常數)重新裝入某個地方,而重新裝入預置數的操作是硬件設備自動完成的,不需要人工干預,所以這種工作模式就叫自動再裝入預置數方式。在工作模式2中,把自動重裝入的預置數存放在定時器/計數器的寄存器的高8位中,也就是存放在TH0中,而只留下TL0參與定時/計數操作。


這個工作模式常用于波特率發生器(串口通信),T1工作在串口模式2;用于這種方式時,定時器就是為了提供一個時間基準;計數溢出之后,不需要做太多的事情,只做一件事就可以,就是重新裝入預置數,再開始重新計數,而且中間不需要任何延時。


4、工作模式3:


方式3只適用于定時/計數器T0,定時器T1處于方式3時相當于TR1=0,停止計數由于定時器/計數器T1沒有工作模式3,如果把定時器/計數器T0設置為工作模式3,那么TL0和TH0將被分割成兩個相互獨立的8位定時器/計數器。


三、定時計數器初值的確定

1、計數器計數初值確定


計數初值C=模-X

注:模為選用定時方式的最大數值,如方式一的模為65536


2、定時器定時初值


定時初值C=[t/MC] 注: MC-- 機器周期,t預定時間


3、定時器不同方式初值


工作方式0:13位定時器/計數器工作模式,最多可計數2的13次方次,即:8192次


工作方式1:16位定時器/計數器工作模式,最多可計數2的16次方次,即:65536次


工作方式2:8位定時器/計數器工作模式,最多可計數2的8次方次,即:256次,


工作方式3:8位定時器/計數器工作模式,最多可計數2的8次方次,即:256次


4、定時計數器初值載入寄存器

TH0=(65536-9216)/256


TL0=(65536-9216)%256


四、定時計數器的具體使用

定時:定時計數器作為定時器使用,配置步驟如下:


1.模式設置,配置TMOD寄存器


2.定時器初值設置 假設10ms中斷


3.開定時器中斷


4.開總中斷


5.打開定時器


#include


sbit led=P1^0;


unsigned int flag;


void main()


{


TMOD=0x01;//1.模式設置,00000001,采用的是定時器0,工作與式1(M1=0,M0=1)。


TH0=(65536-10000)/256; //2.定時器設置,每隔10毫秒發起一次中斷。


TL0=(65536-10000)%256;


ET0=1; //3.開定時器0中斷


EA = 1; //4.開總中斷


TR0=1; //5.打開定時器


while(1)


{


if(flag==100)


{


led=~led;


flag=0;


}


}


}


void TIM0() interrupt 1 //中斷服務程序


{


TH0=(65536-10000)/256; //進入中斷要重新設置定時器處置,要注意。


TL0=(65536-10000)%256;


flag++;


}


計數:定時計數器作為計數器使用,配置步驟如下:


1.模式設置,配置TMOD寄存器。


2.開計數器中斷


3.開總中斷


4.打開計數器


通過這簡單的四步,我們就打開了一個計數器,可以對P3.4或者P3.5進行下降沿的脈沖計數,這里有一點要注意就是計數器可以不開中斷,這樣溢出時只是不會進去中斷服務程序。


計數器示例程序


#include


sbit led=P1^0;


sbit s=P3^4;


unsigned int count;


void main()


{


TMOD=0x05; //1.模式設置,00000101,采用的是計數器0,工作模式1(M1=0,M0=1)。


TH0=0; //計數器清零


TL0=0;


ET0=1; //2.開計數器0中斷


EA=1; //3.開總中斷


TR0=1; //4.打開計數器


led=1;


while(1)


{


count=(TH0<<8)|TL0;


if((count*10000)==50000)//按5下按鍵led狀態取反


{


led=0;


TH0=0XFF;


TL0=0XFF; //人為的讓計數器進入中斷


}


}


}


void TIM0() interrupt 1 //中斷服務程序


{


led=1;


TH0=0;


TL0=0;


}

關鍵字:51單片機  晶振  定時器 引用地址:51單片機之晶振與定時器

上一篇:51驅動兩相四線步進電機
下一篇:51單片機之串口通信詳解

推薦閱讀

在各國政策積極推動、各項技術逐步到位的互聯網時代下,智能制造引領制造業轉型已勢在必行,目的在降低生產維護成本、提升生產效率、因應彈性生產及解決缺工等。據估計,2018年全球智能制造及智能工廠相關市場規模將達2500億美元,復合增速約為12.5%。?智能制造是將制造技術與數字技術、智能技術、網絡技術的集成應用于設計、生產、管理和服務的全生命周...
預計今年QLED電視和OLED電視之間的巨大差距將進一步擴大。 QLED電視和OLED電視目前引領著全球高端電視市場。三星電子是QLED電視最有代表性的生產商,而LG電子是OLED電視陣營的標準承擔者。兩家公司正在為8K電視的畫質爭辯。 市場研究公司IHS Markit于9月25日預測,今年將銷售545萬臺QLED電視。這個數字比它的490萬個單位的估計增加了11%。 三星電子在提...
隨著汽車攝像頭技術的發展,其分辨率、動態范圍和幀速率越來越高,電源架構需要根據具體的用例需求進行調整。在本文中,我將回顧三種可用于為汽車攝像頭模塊供電的策略:全離散全集成部分集成 本文重點介紹小外形攝像頭模塊,該模塊不包含任何數據處理、可將原始視頻數據輸出到獨立的電子控制單元。這些模塊通常位于環視、駕駛員監控和后視鏡更換系統中,...
一、簡述記--使用定時器4輸出PWM來實現呼吸燈效果。在人眼辨識能力范圍內,調節LED亮的時間,達到LED燈的亮度不同。例:給低電平LED就亮,如果一個脈沖中全是低電平那么LED最亮,如果一個脈沖一半是高電平,一半是低電平,那么LED就顯得有點暗,這樣調整脈沖中的高低電平的比例就可以達到LED的亮度調節。 二、效果LED1逐漸由暗變亮,接著由亮變暗。 三、工...

史海拾趣

問答坊 | AI 解惑

LPC2418原理圖,絕對好用!

LPC2418原理圖,絕對好用!供大家參考…

查看全部問答∨

不知道壇里有多少朋友在用NIOSS2呢

我看見群里沒有多少朋友發有關NIOSS2方面的資料,我來發點有關NIOSS的資料。我也是剛開始學這個的,希望能夠與大家多多交流!…

查看全部問答∨

壇子里有沒有稱重傳感器方面的高手

壇子里有沒有稱重傳感器方面的高手…

查看全部問答∨

上海工作機會

要求: 驅動開發2年以上經驗(USB驅動開發經驗為佳), 溝通能力強, 團隊協作意識好. 待遇: 8-10k. 地點: 徐家匯. 性質: 全職. 有意向者請emai至: window.d(at)gmail.com …

查看全部問答∨

請教大家(關于ADC12單通道多次轉換)

我剛接觸msp430單片機,最近要用ADC12的單通道多次轉換模式,請教大家轉換的次數怎么設置?比如說我要轉換10次,然后求平均值。先謝謝各位了。…

查看全部問答∨

ucos中任務刪除自身后,其他任務不運行了,是怎么回事?

#include <includes.h> #define  TASK_STK_SIZE    128 //定義任務堆棧的大小 OS_STK TaskOneStack[TASK_STK_SIZE]; //為任務TaskOne建立一個堆棧OS_STK TaskTwoStack[TASK_STK_SIZE]; //為任務TaskTwo建立一個堆棧OS_ST ...…

查看全部問答∨

關于FPGA選型

FPGA選型的時候,除了考慮用戶可用管腳,邏輯單元,內存之外還需要考慮啥嗎? 比如我寫了個程序用到2000個LEs,和4000個Memory bits, 我在選型的時候除了考慮著兩個還需要考慮什么嗎…

查看全部問答∨

不明不白的死循環

最近遇到一個非常不解的問題,一個尋常的for循環,卻無緣無故的陷入了死循環。試過很多種寫法還是沒調試出來,貼出來讓大家討論一下。 …

查看全部問答∨

sama5d34 在IAR下面使用ucos遇到問題

我從ucos官網上下載了ucos-ii在IAR下的5d3x移植好的版本,但是我無論是在在線仿真還是實際的使用過程都村子問題。我在線仿真的時候,程序會在初始化的停留在prefetch interrupt,也就是中斷向量表的第四條;但是我如果在cstartup.s中將MMU初始化相 ...…

查看全部問答∨

拆個用了四年半的插座

四年前貌似30多買的吧,最近發現外皮裂了,雖說用了這么久也可以了, 不過窮的還是拆開重新焊接一下繼續用吧 可惡的三角螺絲,不過還是很輕松的拆了,誰讓平時愛拆呢,工具還是有的,雖然沒你們那么多 質量還行吧,1800W的水壺一直用 ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 威海市| 武穴市| 湛江市| 鹤山市| 民乐县| 巨鹿县| 桐庐县| 长汀县| 油尖旺区| 枣庄市| 清流县| 灵石县| 乡宁县| 淮南市| 基隆市| 惠安县| 霍州市| 怀仁县| 吉水县| 微博| 台北县| 来宾市| 酉阳| 南乐县| 和龙市| 新竹市| 榆树市| 九江县| 九江市| 武陟县| 栾城县| 达州市| 砀山县| 扎兰屯市| 肥西县| SHOW| 涿鹿县| 昔阳县| 阿荣旗| 义马市| 双鸭山市|