国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

單片機(jī)第一季:零基礎(chǔ)6——定時(shí)器和計(jì)時(shí)器

這篇具有很好參考價(jià)值的文章主要介紹了單片機(jī)第一季:零基礎(chǔ)6——定時(shí)器和計(jì)時(shí)器。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

1,單片機(jī)定時(shí)器原理

2,51單片機(jī)定時(shí)器/計(jì)數(shù)器結(jié)構(gòu)

3,定時(shí)器配置?

4,示例代碼-通過定時(shí)器控制LED燈間隔1s閃爍?


51 單片機(jī)有兩組定時(shí)器/計(jì)數(shù)器,因?yàn)榧瓤梢远〞r(shí),又可以計(jì)數(shù),故稱之為定時(shí)器/計(jì)數(shù)器。

定時(shí)器/計(jì)數(shù)器和單片機(jī)的CPU 是相互獨(dú)立的。定時(shí)器/計(jì)數(shù)器工作的過程是自動(dòng)完成的,不需要CPU 的參與。

51 單片機(jī)中的定時(shí)器/計(jì)數(shù)器是根據(jù)機(jī)器內(nèi)部的時(shí)鐘或者是外部的脈沖信號(hào)對(duì)寄存器中的數(shù)據(jù)加1。

有了定時(shí)器/計(jì)數(shù)器之后,可以增加單片機(jī)的效率,一些簡單的重復(fù)加1 的工作可以交給定時(shí)器/計(jì)數(shù)器處理。CPU 轉(zhuǎn)而處理一些復(fù)雜的事情。同時(shí)可以實(shí)現(xiàn)精確定時(shí)作用。

譬如外部12MHz晶振,單片機(jī)工作在12T模式下,則內(nèi)部時(shí)鐘頻率是1MHz,則時(shí)鐘脈沖寬度為1us(1/1MHz = 1us)。如果單片機(jī)工作在6T模式下,則內(nèi)部時(shí)鐘頻率是2MHz,則時(shí)鐘脈沖寬度為0.5us(1/2MHz = 0.5us)

1,單片機(jī)定時(shí)器原理

STC89C5X 單片機(jī)內(nèi)有兩個(gè)可編程的定時(shí)/計(jì)數(shù)器T0、T1 和一個(gè)特殊功能定時(shí)器T2。定時(shí)/計(jì)數(shù)器的實(shí)質(zhì)是加1 計(jì)數(shù)器(16 位),由高8 位和低8 位兩個(gè)寄存器THx 和TLx 組成(x代表0/1/2)。它隨著計(jì)數(shù)器的輸入脈沖進(jìn)行自加1,也就是每來一個(gè)脈沖,計(jì)數(shù)器就自動(dòng)加1,當(dāng)加到計(jì)數(shù)器為全1 時(shí),再輸入一個(gè)脈沖就使計(jì)數(shù)器回零,且計(jì)數(shù)器的溢出使相應(yīng)的中斷標(biāo)志位置1,向CPU 發(fā)出中斷請(qǐng)求(定時(shí)/計(jì)數(shù)器中斷允許時(shí))。如果定時(shí)/計(jì)數(shù)器工作于定時(shí)模式,則表示定時(shí)時(shí)間已到;如果工作于計(jì)數(shù)模式,則表示計(jì)數(shù)值已滿??梢?,由溢出時(shí)計(jì)數(shù)器的值減去計(jì)數(shù)初值才是加1 計(jì)數(shù)器的計(jì)數(shù)值。

2,51單片機(jī)定時(shí)器/計(jì)數(shù)器結(jié)構(gòu)

單片機(jī)第一季:零基礎(chǔ)6——定時(shí)器和計(jì)時(shí)器,C++,單片機(jī),嵌入式硬件

上圖中的T0 和T1 引腳對(duì)應(yīng)的是單片機(jī)P3.4 和P3.5 管腳。51 單片機(jī)定時(shí)/計(jì)數(shù)器的工作由兩個(gè)特殊功能寄存器控制。TMOD 是定時(shí)/計(jì)數(shù)器的工作方式寄存器,確定工作方式和功能;TCON 是控制寄存器,控制T0、T1 的啟動(dòng)和停止及設(shè)置溢出標(biāo)志。

工作方式寄存器TMOD 用于設(shè)置定時(shí)/計(jì)數(shù)器的工作方式,低四位用于T0,高四位用于T1。其格式如下:

單片機(jī)第一季:零基礎(chǔ)6——定時(shí)器和計(jì)時(shí)器,C++,單片機(jī),嵌入式硬件

GATE 是門控位, GATE=0 時(shí),用于控制定時(shí)器的啟動(dòng)是否受外部中斷源信號(hào)的影響。只要用軟件使TCON 中的TR0 或TR1 為1,就可以啟動(dòng)定時(shí)/計(jì)數(shù)器工作;GATA=1 時(shí),要用軟件使TR0 或TR1 為1,同時(shí)外部中斷引腳INT0/1 也為高電平時(shí),才能啟動(dòng)定時(shí)/計(jì)數(shù)器工作。即此時(shí)定時(shí)器的啟動(dòng)條件,加上了INT0/1 引腳為高電平這一條件。

C/T :定時(shí)/計(jì)數(shù)模式選擇位。C/T =0 為定時(shí)模式;C/T =1 為計(jì)數(shù)模式。

M1M0:工作方式設(shè)置位。定時(shí)/計(jì)數(shù)器有四種工作方式。

單片機(jī)第一季:零基礎(chǔ)6——定時(shí)器和計(jì)時(shí)器,C++,單片機(jī),嵌入式硬件

TCON 的低4 位用于控制外部中斷,已在前面介紹。TCON 的高4 位用于控制定時(shí)/計(jì)數(shù)器的啟動(dòng)和中斷申請(qǐng)。其格式如下:?

單片機(jī)第一季:零基礎(chǔ)6——定時(shí)器和計(jì)時(shí)器,C++,單片機(jī),嵌入式硬件

TF1(TCON.7):T1 溢出中斷請(qǐng)求標(biāo)志位。T1 計(jì)數(shù)溢出時(shí)由硬件自動(dòng)置TF1為1。CPU 響應(yīng)中斷后TF1 由硬件自動(dòng)清0。T1 工作時(shí),CPU 可隨時(shí)查詢TF1 的狀態(tài)。所以,TF1 可用作查詢測試的標(biāo)志。TF1 也可以用軟件置1 或清0,同硬件置1 或清0 的效果一樣。
TR1(TCON.6):T1 運(yùn)行控制位。TR1 置1 時(shí),T1 開始工作;TR1 置0 時(shí),T1 停止工作。TR1 由軟件置1 或清0。所以,用軟件可控制定時(shí)/計(jì)數(shù)器的啟動(dòng)與停止。
TF0(TCON.5):T0 溢出中斷請(qǐng)求標(biāo)志位,其功能與TF1 類同。
TR0(TCON.4):T0 運(yùn)行控制位,其功能與TR1 類同。?

?以方式0為例介紹單片機(jī)的工作方式:

方式0 為13 位計(jì)數(shù),由TL0 的低5 位(高3 位未用)和TH0 的8 位組成。TL0 的低5 位溢出時(shí)向TH0 進(jìn)位,TH0 溢出時(shí),置位TCON 中的TF0 標(biāo)志,向CPU發(fā)出中斷請(qǐng)求。其結(jié)構(gòu)圖如下所示:

單片機(jī)第一季:零基礎(chǔ)6——定時(shí)器和計(jì)時(shí)器,C++,單片機(jī),嵌入式硬件

門控位GATE 具有特殊的作用。當(dāng)GATE=0 時(shí),經(jīng)反相后使或門輸出為1,此時(shí)僅由TR0 控制與門的開啟,與門輸出1 時(shí),控制開關(guān)接通,計(jì)數(shù)開始;當(dāng)GATE=1時(shí),由外中斷引腳信號(hào)控制或門的輸出,此時(shí)控制與門的開啟由外中斷引腳信號(hào)和TR0 共同控制。當(dāng)TR0=1 時(shí),外中斷引腳信號(hào)引腳的高電平啟動(dòng)計(jì)數(shù),外中斷引腳信號(hào)引腳的低電平停止計(jì)數(shù)。這種方式常用來測量外中斷引腳上正脈沖的寬度。計(jì)數(shù)模式時(shí),計(jì)數(shù)脈沖是T0 引腳上的外部脈沖。計(jì)數(shù)初值與計(jì)數(shù)個(gè)數(shù)的關(guān)系為:X=213-N。?

3,定時(shí)器配置?

在使用定時(shí)器時(shí),應(yīng)該如何配置使其工作?其步驟如下(各步驟順序可任意):
①對(duì)TMOD 賦值,以確定T0 和T1 的工作方式,如果使用定時(shí)器0 即對(duì)T0 配置,如果使用定時(shí)器1 即對(duì)T1 配置。

②根據(jù)所要定時(shí)的時(shí)間計(jì)算初值,并將其寫入TH0、TL0 或TH1、TL1。

③如果使用中斷,則對(duì)EA 賦值,開放定時(shí)器中斷。

④使TR0 或TR1 置位,啟動(dòng)定時(shí)/計(jì)數(shù)器定時(shí)或計(jì)數(shù)。上述中有一個(gè)定時(shí)/計(jì)數(shù)器初值的計(jì)算,下面我們來看下如何計(jì)算定時(shí)/計(jì)數(shù)器初值。

前面我們介紹過機(jī)器周期的概念,它是CPU 完成一個(gè)基本操作所需要的時(shí)間。其計(jì)算公式是:機(jī)器周期=1/單片機(jī)的時(shí)鐘頻率。51 單片機(jī)內(nèi)部時(shí)鐘頻率是外部時(shí)鐘的12 分頻,也就是說當(dāng)外部晶振的頻率輸入到單片機(jī)里面的時(shí)候要進(jìn)行12分頻。比如說你用的是12MHZ 晶振,那么單片機(jī)內(nèi)部的時(shí)鐘頻率就是12/12MHZ,當(dāng)你使用12MHZ 的外部晶振的時(shí)候,機(jī)器周期=1/1M=1us。如果我們想定時(shí)1ms的初值是多少呢?1ms/1us=1000。也就是要計(jì)數(shù)1000 個(gè),初值=65535-1000+1(因?yàn)閷?shí)際上計(jì)數(shù)器計(jì)數(shù)到65536(2 的16 次方)才溢出,所以后面要加1)=64536=FC18H,所以初值即為THx=0XFC,TLx=0X18。知道了如何計(jì)算定時(shí)/計(jì)數(shù)器初值,那么想定時(shí)多長時(shí)間都可以計(jì)算出,當(dāng)然由于定時(shí)計(jì)數(shù)器位數(shù)有限,我們不可能直接通過初值定時(shí)很長時(shí)間,如果要實(shí)現(xiàn)很長時(shí)間的定時(shí),比如定時(shí)1 秒鐘??梢酝ㄟ^初值設(shè)置定時(shí)1ms,每當(dāng)定時(shí)1ms結(jié)束后又重新賦初值,并且設(shè)定一個(gè)全局變量累計(jì)定時(shí)1ms 的次數(shù),當(dāng)累計(jì)到1000 次,表示已經(jīng)定時(shí)1 秒了。需要其他定時(shí)時(shí)間類似操作,這樣我們就可以使用定時(shí)器來實(shí)現(xiàn)精確延時(shí)來替代之前的delay 函數(shù)。這里以定時(shí)器0 為例介紹配置定時(shí)器工作方式1、設(shè)定1ms 初值,開啟定時(shí)器計(jì)數(shù)功能以及總中斷,如下:?

void time0_init(void)
{
    TMOD|=0X01;//選擇為定時(shí)器0 模式,工作方式1
    TH0=0XFC; //給定時(shí)器賦初值,定時(shí)1ms
    TL0=0X18;
    ET0=1;//打開定時(shí)器0 中斷允許
    EA=1;//打開總中斷
    TR0=1;//打開定時(shí)器
}

其中ET0和EA的設(shè)置是在中斷允許寄存器IE中:

CPU 對(duì)中斷系統(tǒng)所有中斷以及某個(gè)中斷源的開放和屏蔽是由中斷允許寄存器IE 控制的。?

單片機(jī)第一季:零基礎(chǔ)6——定時(shí)器和計(jì)時(shí)器,C++,單片機(jī),嵌入式硬件

EA (IE.7), CPU 中斷允許(總允許)位。

ET0(IE.1),定時(shí)/計(jì)數(shù)器T0 中斷允許位。

4,示例代碼-通過定時(shí)器控制LED燈間隔1s閃爍?

#include <reg51.h>

//使用T0定時(shí)器控制LED燈間隔1s閃爍
unsigned int u16 = 0;  //計(jì)數(shù)初始值
sbit led = P0^0;

void time0_ini()
{
	TMOD = 0x01; //T0工作在定時(shí)模式,工作方式1:16位定時(shí)/計(jì)數(shù)器
	TR0 = 1;     //T0 運(yùn)行控制位,TR0 置1 時(shí),T0 開始工作
	TH0 = 0xfc;
	TL0 = 0x18;		 //按一秒時(shí)間計(jì)時(shí),先計(jì)算1ms的對(duì)應(yīng)的初值65535 - 1000 + 1 = 64536
				     //對(duì)應(yīng)16進(jìn)制 0xFBB4
	EA = 1;		     //中斷總開關(guān)
	ET0 = 1;         //T0中斷開關(guān)

}

void time0_isr() interrupt 1  //定時(shí)器0中斷處理程序
{
	u16++;
	TH0 = 0xfc;
	TL0 = 0x18;

	if(u16 == 1000)
	{
	  u16 = 0;
	  led = !led;
	}


}

void main()
{
	time0_ini();  //調(diào)用定時(shí)器配置函數(shù),即打開定時(shí)器和允許定時(shí)器的中斷

    while(1);   //主程序
}

內(nèi)部時(shí)鐘頻率是1MHz,時(shí)鐘周期是1us。最多能定65535(16位定時(shí)器),也就是說最大定時(shí)時(shí)間為65535*1us=65535us=65.535ms。
如果要定比較長的時(shí)間(譬如2s),定時(shí)器直接是不能滿足的,解決辦法是多次定時(shí)后加起來構(gòu)成一個(gè)長時(shí)間。

實(shí)驗(yàn)?zāi)康模?br> (1)使用定時(shí)器來完成LED閃爍;
(2)原來實(shí)現(xiàn)閃爍時(shí)中間的延遲是用delay函數(shù)實(shí)現(xiàn)的,在delay的過程中CPU要一直耗在這里不能去做別的事情。這是之前的缺點(diǎn);
(3)本節(jié)用定時(shí)器來定一個(gè)時(shí)間(譬如1s),在這個(gè)定時(shí)器定時(shí)時(shí)間內(nèi)CPU還可以去做主任務(wù),定時(shí)時(shí)間到產(chǎn)生中斷,在中斷處理程序isr中讓LED閃爍即可。?文章來源地址http://www.zghlxwxcb.cn/news/detail-557485.html

到了這里,關(guān)于單片機(jī)第一季:零基礎(chǔ)6——定時(shí)器和計(jì)時(shí)器的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 單片機(jī)第一季:零基礎(chǔ)13——AD和DA轉(zhuǎn)換

    單片機(jī)第一季:零基礎(chǔ)13——AD和DA轉(zhuǎn)換

    51 單片機(jī)系統(tǒng)內(nèi)部運(yùn)算時(shí)用的全部是數(shù)字量,即0 和1,因此對(duì)單片機(jī)系統(tǒng)而言,無法直接操作模擬量,必須將模擬量轉(zhuǎn)換成數(shù)字量。所謂數(shù)字量,就是用一系列0 和1 組成的二進(jìn)制代碼表示某個(gè)信號(hào)大小的量。用數(shù)字量表示同一個(gè)模擬量時(shí),數(shù)字位數(shù)可以多也可以少,位數(shù)越多

    2024年02月13日
    瀏覽(23)
  • 單片機(jī)第一季:零基礎(chǔ)10——串口通信和RS485

    單片機(jī)第一季:零基礎(chǔ)10——串口通信和RS485

    目錄 1,串口通訊基礎(chǔ) 1.1,同步和異步 1.2,并行和串行? 1.3,單工、半雙工與全雙工通信? 1.4,通信速率? 2,單片機(jī)串口通訊 2.1,接口標(biāo)準(zhǔn)? 2.2,通訊協(xié)議? 2.3,串口內(nèi)部結(jié)構(gòu)? 3,串口相關(guān)寄存器? 4,波特率計(jì)算? 5,串口初始化? 6,開發(fā)板硬件設(shè)計(jì)? 7,串口發(fā)送和接收

    2024年02月04日
    瀏覽(26)
  • 單片機(jī)第一季:零基礎(chǔ)9——直流電機(jī)和步進(jìn)電機(jī)

    單片機(jī)第一季:零基礎(chǔ)9——直流電機(jī)和步進(jìn)電機(jī)

    目錄 1,直流電機(jī) 2,步進(jìn)電機(jī)? 直流電機(jī)是指能將直流電能轉(zhuǎn)換成機(jī)械能(直流電動(dòng)機(jī))或?qū)C(jī)械能轉(zhuǎn)換成直流電能(直流發(fā)電機(jī))的旋轉(zhuǎn)電機(jī)。它是能實(shí)現(xiàn)直流電能和機(jī)械能互相轉(zhuǎn)換的電機(jī)。當(dāng)它作電動(dòng)機(jī)運(yùn)行時(shí)是直流電動(dòng)機(jī),將電能轉(zhuǎn)換為機(jī)械能;作發(fā)電機(jī)運(yùn)行時(shí)是直流

    2024年02月16日
    瀏覽(29)
  • 單片機(jī)第一季:零基礎(chǔ)12——I2C和EEPROM

    單片機(jī)第一季:零基礎(chǔ)12——I2C和EEPROM

    目錄 1,EEPROM 2,I2C? 2.1,I2C物理層? 2.2,I2C協(xié)議層? 3,AT24C02介紹? 4,代碼? 為什么需要EEPROM? 單片機(jī)內(nèi)部的ROM只能在程序下載時(shí)進(jìn)行擦除和改寫,但是程序運(yùn)行本身是不能改寫的。單片機(jī)內(nèi)部的RAM中的數(shù)據(jù)程序運(yùn)行時(shí)可以改,但是掉電就丟失了。有時(shí)候我們有一些數(shù)據(jù)要

    2024年02月14日
    瀏覽(29)
  • STM32單片機(jī)入門學(xué)習(xí)筆記——定時(shí)器TIM第一部分

    STM32單片機(jī)入門學(xué)習(xí)筆記——定時(shí)器TIM第一部分

    筆記整理自B站UP主 江科大自化協(xié) 教程 《STM32入門教程-2023持續(xù)更新中》 ,所用單片機(jī)也為教程推薦單片機(jī)。 第一部分:定時(shí)器基本定時(shí)的功能,定時(shí)器每隔這個(gè)時(shí)間產(chǎn)生一個(gè)中斷,來實(shí)現(xiàn)每隔一個(gè)固定時(shí)間執(zhí)行一段程序的目的,比如要做一個(gè)時(shí)鐘、秒表或者使用一些程序算

    2024年02月03日
    瀏覽(24)
  • 51單片機(jī)定時(shí)器基礎(chǔ)知識(shí)

    經(jīng)驗(yàn)總結(jié):定時(shí)器0工作方式1的溢出中斷初始值計(jì)算 1.晶振11.0592M 11.0592MHz除12為921600Hz,就是一秒921600次機(jī)器周期,50ms=46080次機(jī)器周期。 65536-46080=19456(4c00) TH0=0x4c,TL0=0x00 2.晶振12M 12MHz除12為1MHz,也就是說一秒=1000000次機(jī)器周期。50ms=50000次 機(jī)器周期。 65536-50000=15536(3cb0) TH0=0x

    2024年02月04日
    瀏覽(26)
  • 【51單片機(jī)】:定時(shí)器的詳解(包括對(duì)單片機(jī)定時(shí)解釋、各類定時(shí)方式,以及中斷方式)

    【51單片機(jī)】:定時(shí)器的詳解(包括對(duì)單片機(jī)定時(shí)解釋、各類定時(shí)方式,以及中斷方式)

    ? ? ? ? ? 51定時(shí)/計(jì)數(shù)器的詳解。 ? ? ? ? ? ? ? ? ? 碼字不易,如有幫助請(qǐng)收藏,點(diǎn)贊哦。 ? ? ? ? 前提:首先我們知道51單片機(jī)內(nèi)部有21~26個(gè)特殊功能寄存器: P.x口寄存器:P0、P1、P2、P3 數(shù)據(jù)指針寄存器:DP0H、DP0L、DP1H、DP1L 定時(shí)器: TH1、TL1、TH0、TL0、TMOD、TCON 串口:

    2024年02月07日
    瀏覽(51)
  • 【單片機(jī)】STM32單片機(jī)的各個(gè)定時(shí)器的定時(shí)中斷程序,標(biāo)準(zhǔn)庫

    【單片機(jī)】STM32單片機(jī)的各個(gè)定時(shí)器的定時(shí)中斷程序,標(biāo)準(zhǔn)庫

    高級(jí)定時(shí)器和普通定時(shí)器的區(qū)別(https://zhuanlan.zhihu.com/p/557896041): TIM1是高級(jí)定時(shí)器,使用的時(shí)鐘總線是RCC_APB2Periph_TIM1,和普通定時(shí)器不一樣。 timer.c timer.h 調(diào)用 timer.c timer.h 調(diào)用 timer.c timer.h 調(diào)用 timer.c timer.h 調(diào)用 timer.c timer.h 調(diào)用

    2024年02月11日
    瀏覽(25)
  • 51單片機(jī)定時(shí)器

    51單片機(jī)定時(shí)器

    目錄 前言 一、定時(shí)器的介紹及其作用 二、定時(shí)器的內(nèi)部構(gòu)造及其原理 計(jì)算機(jī)周期 定時(shí)器的工作模式與流程 定時(shí)器中斷相關(guān)寄存器 寄存器的配置 ?三、程序 總結(jié) ????????下面來介紹學(xué)習(xí)51單片機(jī)第一個(gè)也是最常用的片上外設(shè)——定時(shí)器。該硬件是集成在單片機(jī)內(nèi)部的,

    2024年02月05日
    瀏覽(25)
  • 單片機(jī)中定時(shí)器

    單片機(jī)中定時(shí)器

    1. 定時(shí)器的使用步驟 1)主函數(shù); 2)對(duì)中斷和定時(shí)器進(jìn)行初始化=先設(shè)置計(jì)數(shù)器的工作方式,設(shè)定TH0、TL0或TH1、TL0的初值,即:TH0=(8192-C)/32,TL0=(8192-C)%32,開啟中斷和定時(shí)器,即:TR=1; 3)設(shè)置中斷服務(wù)程序-》執(zhí)行對(duì)應(yīng)中斷需要做的內(nèi)容。 51單片機(jī)擁有兩個(gè)定時(shí)器,分別為

    2024年02月08日
    瀏覽(14)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包