chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

定時器和數(shù)碼管解析(上)

jf_78858299 ? 來源:硬件攻城獅 ? 作者:硬件攻城獅 ? 2023-04-21 14:27 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1.1、基本數(shù)字邏輯門電路

不管是數(shù)字電路,還是C語言,我們都會經(jīng)常遇到邏輯運算和邏輯電路,在這里我介紹一下,大家先簡單了解一下,知道有這么回事,回頭遇到了,再詳細(xì)研究。

首先,在“邏輯”這個概念范疇內(nèi),存在真和假這兩個邏輯值,而將其對應(yīng)到數(shù)字電路或C語言中,就變成了“非0值”和“0值”這兩個值,即邏輯上的“假”就是數(shù)字電路或C語言中的“0”這個值,而邏輯“真”就是其它一切“非0值”。

然后,我們來具體分析一下幾個主要的邏輯運算符。我們假定有2個字節(jié)變量:A和B,二者進(jìn)行某種邏輯運算后的結(jié)果為F。

以下邏輯運算符都是按照變量整體值進(jìn)行運算的,通常就叫做邏輯運算符:

&&:邏輯與,F(xiàn) = A && B,當(dāng)A、B的值都為真(即非0值,下同)時,其運算結(jié)果F為真(具體數(shù)值為1,下同);當(dāng)A、B值任意一個為假(即0,下同)時,結(jié)果F為假(具體數(shù)值為0,下同)。

||:邏輯或,F(xiàn) = A || B,當(dāng)A、B值任意一個為真時,其運算結(jié)果F為真;當(dāng)A、B值都為假時,結(jié)果F為假。

! :邏輯非,F(xiàn) = !A,當(dāng)A值為假時,其運算結(jié)果F為真;當(dāng)A值為真時,結(jié)果F為假。

以下邏輯運算符都是按照變量內(nèi)的每一個位來進(jìn)行運算的,通常就叫做位運算符:

& :按位與,F(xiàn) = A & B,將A、B兩個字節(jié)中的每一位都進(jìn)行與運算,再將得到的每一位結(jié)果組合為總結(jié)果F,例如A = 0b11001100,B = 0b11110000,則結(jié)果F就等于0b11000000。

| :按位或,F(xiàn) = A | B,將A、B兩個字節(jié)中的每一位都進(jìn)行或運算,再將得到的每一位結(jié)果組合為總結(jié)果F,例如A = 0b11001100,B = 0b11110000,則結(jié)果F就等于0b11111100。

~ :按位取反,F(xiàn) = ~A,將A字節(jié)內(nèi)的每一位進(jìn)行非運算(就是取反),再將得到的每一位結(jié)果組合為總結(jié)果F,例如,A = 0b11001100,則結(jié)果F就等于0b00110011;這個運算符我們在前面的流水燈實驗里已經(jīng)用過了,現(xiàn)在再回頭看一眼,是不是清楚多了。

^ :按位異或,異或的意思是,如果運算雙方的值不同(即相異)則結(jié)果為真,雙方值相同則結(jié)果為假。在C語言里沒有按變量整體值進(jìn)行的異或運算,所以我們僅以按位異或為例,F(xiàn) = A ^ B,A = 0b11001100,B = 0b11110000,則結(jié)果F就等于0b00111100。

我們今后要看資料或芯片手冊的時候,會經(jīng)常遇到一些電路符號,表5-1就是數(shù)字電路中的常用符號,知道這些符號有利于我們理解器件的邏輯結(jié)構(gòu),尤其重點認(rèn)識以下表中的“國外流行圖形符號”。在這里我們先簡單看一下,后邊遇到了知道到這里查閱就可以了。

1.2 定時器的學(xué)習(xí)

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

1.2.1 定時器的初步認(rèn)識

時鐘周期:時鐘周期T是時序中最小的時間單位具體計算的方法就是1/時鐘源,我們KST-51單片機開發(fā)板上用的晶振是11.0592M,那么對于我們這個單片機系統(tǒng)來說,時鐘周期=1/11059200秒。

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

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

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

1.2.2 定時器的寄存器描述

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

表5-2 定時值存儲寄存器

名稱 描述 SFR地址
TH0 定時器0高字節(jié) 8CH
TL0 定時器0低字節(jié) 8AH
TH1 定時器1高字節(jié) 8DH
TL1 定時器1低字節(jié) 8BH

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

可位尋址;復(fù)位值:0x00;復(fù)位源:任何復(fù)位
7 6 5 4 3 2 1 0
符號 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

表5-4 TCON--定時器/計數(shù)器控制寄存器的位描述

符號 描述
7 TF1 定時器1溢出標(biāo)志。一旦定時器1發(fā)生溢出時硬件置1。清零有兩種方式:軟件清零,或者進(jìn)入定時器中斷時硬件清零。
6 TR1 定時1運行控制位。軟件置位/清零來進(jìn)行啟動/關(guān)閉定時器。
5 TF0 定時器0溢出標(biāo)志。一旦定時器0發(fā)生溢出時硬件置1。清零有兩種方式:軟件清零,或者進(jìn)入定時器中斷時硬件清零。
4 TR0 定時0運行控制位。軟件置位/清零來進(jìn)行啟動/關(guān)閉定時器。
3 IE1 外部中斷部分,與定時器無關(guān),暫且不看
2 IT1
1 IE0
0 IT0

大家注意在表5-4中的描述中,只要寫到硬件置1或者清0的,就是指一旦符合條件,單片機自動完成的動作,只要寫軟件置1或者清0的,是指我們用程序去完成這個動作,后邊課程中不再做說明。

表5-2中的寄存器,是存儲計數(shù)器的計數(shù)值的,兩個字節(jié)的用于定時器1,兩個字節(jié)用于定時器0。

表5-3中有TF1、TR1、TF0、TR0這4位需要我們理解清楚。兩位定時器1的,兩位定時器0的,我們只解釋定時器1的,定時器0的同理。先看TR1,當(dāng)我們程序中寫TR1 = 1以后,定時器值就會每經(jīng)過一個機器周期加1,當(dāng)我們程序中寫TR1 = 0以后,定時器值就會保持不變化。TF1,這個是一個標(biāo)志位,他的作用是告訴我們定時器溢出了。比如我們的定時器設(shè)置成16位的定時器,那么每經(jīng)過一個機器周期,TL1加1一次,當(dāng)TL1加到255后,再加1,TL1變成0,TH1會加1一次,如此一直加到TH1和TL1都是255(即TH1和TL1組成的16位整型數(shù)為65535)以后,再加1一次,那么就會溢出,TH1和TL1同時都變?yōu)?,只要一溢出,TF1馬上自動變成1,告訴我們定時器溢出了,僅僅是提供給我們一個信號,讓我們知道定時器溢出了,它不會對定時器是否繼續(xù)運行產(chǎn)生任何影響。

表5-5 TMOD--定時器方式控制寄存器的位分配(地址 89H)

不可位尋址;復(fù)位值:0x00;復(fù)位源:任何復(fù)位
7 6 5 4 3 2 1 0
符號 GATE(T1) C/T(T1) M1(T1) M0(T1) GATE(T0) C/T(T0) M1(T0) M0(T0)

細(xì)心的同學(xué)會發(fā)現(xiàn),TCON那個地方標(biāo)注的是“可位尋址”,TMOD這里標(biāo)注的是“不可位尋址”。這個地方的意思就是比如TCON有一位TR1,我們可以在程序中直接進(jìn)行TR1 = 1;這樣操作。但是(T1)M1 = 1;這樣的操作就是錯誤的。我們要操作就必須一次操作一個字節(jié),就是必須一次性對TMOD所有位操作,不能對其中某一位單獨進(jìn)行操作。

表5-6 TMOD--定時器/計數(shù)器方式控制寄存器的位描述

符號 描述
T1/T0 在表5-5中,標(biāo)T1的表示控制定時器1的位,標(biāo)T0的表示控制定時器0的位。
GATE 該位被置1時為門控位。僅當(dāng)’INTx’腳為高并且’TRx’控制位被置1時使能定時器’x’,定時器開始計時,當(dāng)該位被清0時,只要’TRx’位被置1,定時器x就使能開始計時,不受到單片機引腳’INTx’外部信號的干擾,常用來測量外部信號脈沖寬度。這是定時器一個額外功能,本節(jié)課暫不介紹。
C/T 定時器或計數(shù)器選擇位。該位被清零時用作定時器功能(內(nèi)部系統(tǒng)時鐘),被置1用作計數(shù)器功能。

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

M1 M0 工作模式 描述
0 0 0 兼容8048單片機的13位定時器,THn的8位和TLn的5位組成一個13位定時器
0 1 1 THn和TLn組成一個16位的定時器
1 0 2 8位自動重裝模式,定時器溢出后THn重裝到TLn中
1 1 3 禁用定時器1,定時器0變成2個8位定時器

以上這4種模式的配置,其中模式0是為了兼容老的8048單片機而設(shè)的,現(xiàn)在的51幾乎不會用到這種模式,而模式3根據(jù)我的應(yīng)用經(jīng)驗,他的功能模式2完全可以取代,所以基本上也是不用,那么我們重點就學(xué)習(xí)模式1和模式2。

模式1就是THn和TLn組成了一個16位的定時器,取值范圍是0到65535,溢出后,只要不對THn和TLn重新賦值,則從0開始計數(shù)。模式2的功能是自動裝載,就是TLn溢出后,TFn就直接置1了,并且THn的值直接賦給TLn,然后TLn從新賦值的這個數(shù)字開始計數(shù)。這個功能可以用來產(chǎn)生串口的通信波特率,我們講串口的時候要用到,本章節(jié)我們重點來學(xué)習(xí)模式1。為了加深大家理解這個定時器原理,我們來看一下他的模式1的電路示意圖5-1。

圖片

圖5-1 定時器/計數(shù)器模式1示意圖

我?guī)е蠹襾矸治鲆幌逻@個示意圖,后邊如果手冊中遇到,大家也就會自己研究了。OSC框表示時鐘頻率,因為我們1個機器周期等于12個時鐘周期,所以那個d就等于12。下邊GATA右邊的那個門是一個非門電路,再右側(cè)是一個或門,再往右是一個與門電路,大家可以對照一下5-1節(jié)的內(nèi)容。

圖上可以看出來,下邊部分電路是控制了上邊部分,那我們先來看下邊是如何控制的,我們以定時器0為例。

1、TR0和下邊或門電路的結(jié)果要進(jìn)行與門運算,TR0如果是0的話,與運算完了肯定是0,所以確定如果要讓定時器工作,TR0 = 1。

2、與門結(jié)果要想是1,那或門出來的信號必須也得是1才行。在GATE位為1的情況下,經(jīng)過一個非門變成0,或門電路結(jié)果要想是1的話,那INT0即P3.2引腳必須是1的情況下,這個時候定時器才會工作,而INT0引腳是0的情況下,定時器不工作,這就是GATE位的作用。

3、當(dāng)GATE位為0的時候,經(jīng)過一個非門變成1,不管INT0引腳是什么電平,經(jīng)過或門電路后則肯定是1,定時器就會工作。

4、要想讓定時器工作,就是加1,從圖上看有兩種方式,第一種方式是那個開關(guān)打到上邊的箭頭,就是C/T = 0的時候,一個機器周期TL就會加1一次,當(dāng)開關(guān)打到下邊的箭頭,即C/T =1的時候,T0引腳即P3.4引腳來一個脈沖,TL就加1一次,這也就是計數(shù)器功能。

INT0引腳是P3.2,INT1引腳是P3.3,T0引腳是P3.4,T1引腳是P3.5,這個可以從我們KST-51開發(fā)板原理圖上看出來。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7630

    瀏覽量

    141005
  • 定時器
    +關(guān)注

    關(guān)注

    23

    文章

    3297

    瀏覽量

    117616
  • 數(shù)字電路
    +關(guān)注

    關(guān)注

    193

    文章

    1638

    瀏覽量

    81763
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    基于單片機的綜合應(yīng)用程序數(shù)碼管【C語言】定時器控制數(shù)碼管

    基于單片機的綜合應(yīng)用程序數(shù)碼管【C語言】定時器控制數(shù)碼管
    發(fā)表于 01-06 13:44 ?27次下載

    LESSON3_數(shù)碼管靜態(tài)顯示及定時器和中斷應(yīng)用

    LESSON3_數(shù)碼管靜態(tài)顯示及定時器和中斷應(yīng)用
    發(fā)表于 02-18 18:21 ?0次下載

    LESSON3_數(shù)碼管靜態(tài)顯示及定時器和中斷應(yīng)用

    數(shù)碼管靜態(tài)顯示及定時器和中斷應(yīng)用 可以給初學(xué)者學(xué)習(xí)使用 如果有需要可以下載。
    發(fā)表于 03-14 10:40 ?1次下載

    LESSON3_數(shù)碼管靜態(tài)顯示及定時器和中斷應(yīng)用

    LESSON3_數(shù)碼管靜態(tài)顯示及定時器和中斷應(yīng)用。
    發(fā)表于 04-29 16:50 ?5次下載

    定時器掃描數(shù)碼管(不閃爍)

    定時器掃描數(shù)碼管(不閃爍) C51單片機源碼,KEIL源文件,C語言編寫
    發(fā)表于 06-20 16:36 ?7次下載

    LESSON3_數(shù)碼管靜態(tài)顯示及定時器和中斷應(yīng)用

    數(shù)碼管是如何顯示出字符的 數(shù)碼管靜態(tài)顯示與動態(tài)顯示原理 中斷概念 單片機的定時器應(yīng)用
    發(fā)表于 07-01 17:17 ?1次下載

    基于8051的Proteus仿真-定時器控制數(shù)碼管顯示

    基于8051的Proteus仿真-定時器控制數(shù)碼管顯示
    發(fā)表于 09-01 23:33 ?19次下載

    基于SOPC的定時器控制數(shù)碼管顯示

    運行在DE1,通過程序的控制使數(shù)碼管顯示,從而實現(xiàn)時鐘的功能,實驗結(jié)果表明,基于SOPC的系統(tǒng)環(huán)境下,可以利用定時器控制數(shù)碼管顯示。此外,還可以根據(jù)不同的用戶需求實現(xiàn)不同的功能,方便
    發(fā)表于 11-13 17:07 ?12次下載
    基于SOPC的<b class='flag-5'>定時器</b>控制<b class='flag-5'>數(shù)碼管</b>顯示

    定時器1秒計數(shù),數(shù)碼管顯示0-999程序代碼【下載】

    定時器1秒計數(shù),數(shù)碼管顯示0-999
    發(fā)表于 12-20 14:23 ?18次下載

    數(shù)碼管顯示的原理靜態(tài)顯示及中斷概念單片機的定時器應(yīng)用視頻教程

    本文檔的主要內(nèi)容詳細(xì)介紹的是數(shù)碼管顯示的原理靜態(tài)顯示及中斷概念單片機的定時器應(yīng)用視頻教程包括了:1.數(shù)碼管是如何顯示出字符的,2.數(shù)碼管靜態(tài)顯示與動態(tài)顯示原理,3.中斷概念,4.單片機
    發(fā)表于 03-26 14:35 ?17次下載
    <b class='flag-5'>數(shù)碼管</b>顯示的原理靜態(tài)顯示及中斷概念單片機的<b class='flag-5'>定時器</b>應(yīng)用視頻教程

    使用定時器控制數(shù)碼管顯示的程序和工程文件免費下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用定時器控制數(shù)碼管顯示的程序和工程文件免費下載。
    發(fā)表于 06-10 16:54 ?5次下載
    使用<b class='flag-5'>定時器</b>控制<b class='flag-5'>數(shù)碼管</b>動<b class='flag-5'>管</b>顯示的程序和工程文件免費下載

    使用定時器控制數(shù)碼管動態(tài)顯示的程序和工程文件免費下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用定時器控制數(shù)碼管動態(tài)顯示的程序和工程文件免費下載。
    發(fā)表于 06-10 16:54 ?19次下載
    使用<b class='flag-5'>定時器</b>控制<b class='flag-5'>數(shù)碼管</b>動態(tài)顯示的程序和工程文件免費下載

    STM32+Proteus仿真實現(xiàn)滴答定時器計時和數(shù)碼管實時顯示功能

    STM32+Proteus仿真實現(xiàn)滴答定時器計時和數(shù)碼管實時顯示功能
    發(fā)表于 11-24 21:06 ?73次下載
    STM32+Proteus仿真實現(xiàn)滴答<b class='flag-5'>定時器</b>計時<b class='flag-5'>和數(shù)碼管</b>實時顯示功能

    定時器和數(shù)碼管解析(下)

    了解了定時器相關(guān)的寄存,那么我們下面就來做一個定時器的程序,鞏固一下我們學(xué)到的內(nèi)容。我們這節(jié)課的程序先使用定時器0,在使用定時器的時候,需
    的頭像 發(fā)表于 04-21 14:40 ?1262次閱讀
    <b class='flag-5'>定時器</b><b class='flag-5'>和數(shù)碼管</b><b class='flag-5'>解析</b>(下)

    使用定時器和數(shù)碼管實現(xiàn)簡易秒計時

    從今天開始,我們利用上前幾天學(xué)習(xí)的定時器和數(shù)碼管,一起設(shè)計一個簡單的秒計時
    的頭像 發(fā)表于 11-02 10:50 ?2831次閱讀
    使用<b class='flag-5'>定時器</b><b class='flag-5'>和數(shù)碼管</b>實現(xiàn)簡易秒計時<b class='flag-5'>器</b>