1. 51單片機T0作為定時器和計數器有哪些區別
51單片機T0作為定時器和計數器的區別:變化不同,含義不同。
一、變化不同:計數器記錄外部脈沖信號,信號每變化一次,計數器才加1;而定時器則是使用單片機內部的規則脈沖信號,脈沖的間隔是相同的。
二、含義不同:定時器T1沒有方式3 ,方式3隻適合定時器T0,使其增加一個8位定時器。若定時器T1選擇方式3,T1將停止工作,相當於TR1=0的情況。在工作方式寄存器TMOD中,高4位控制定時器T1,低4位控制定時器T0。
簡介
單片機又稱單片微控制器,它不是完成某一個邏輯功能的晶元,而是把一個計算機系統集成到一個晶元上。相當於一個微型的計算機,和計算機相比,單片機只缺少了I/O設備。概括的講:一塊晶元就成了一台計算機。它的體積小、質量輕、價格便宜、為學習、應用和開發提供了便利條件。同時,學習使用單片機是了解計算機原理與結構的最佳選擇。
2. 51系列單片機的定時器和計數器有哪幾種工作方式
定時器0有四種工作方式:方式0:13位定時 /計數器模式方式1:16位定時 /計數器模式方式2:8位可重裝載定時 /計數器模式方式3:兩個單獨8位定時 /計數器模式定時器1隻有三種方式,同上面三種
標准8051單片機內部有2個蔽雹定時器/計數器 分別是T0和T1。每個定時器有4種工作方式,方式0:13位定時計數方式,最大計數值為2^13=8192,定時8192個機器周期。1:16位定時 /計數器模式方式2:8位可重裝載定時 /計數器模式方式3:兩個單獨8位定時 /計數器模式定時器1隻有三種方式,同上面三種。
要講定時離不開中斷,兩者結合使用的。定時計數器主要用到TMOD工作模式寄存器,TCON定時器的控制寄存器,EA中塌鬧斷允許控制寄存器,IP中斷優先順序寄存器 定時器控制寄團並罩存器TCON (88H)TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
3. 利用51單片機定時器編寫一個C語言程序,實現一個發光二極體定時亮、滅,要求亮一秒、滅一秒交替閃爍不
利用51單片機定時器編寫一個C語言程序,實現一個發光二極體定時亮、滅,
要求亮一秒、滅一秒交替閃爍不止。最好有硬體電路簡圖
電路與程序如下:
晶振頻率,採用 12MHz。
定時器 0,定時 8ms。
中斷 125 次,即為一秒。令 IO 介面取反即可。
4. 51單片機中斷/定時器/計數器
89C51/52的中斷系統有5個中斷源 ,2個優先順序,可實現二級中斷嵌套 。
1、(P3.2)可由IT0(TCON.0)選擇其為低電平有效還是下降沿有效。當CPU檢測到P3.2引腳上出現有效的中斷信號時,中斷標志IE0(TCON.1)置1,向CPU申請中斷。
2、(P3.3)可由IT1(TCON.2)選擇其為低電平有效還是下降沿有效。當CPU檢測到P3.3引腳上出現有效的中斷信號時,中斷標志IE1(TCON.3)置1,向CPU申請中斷。
3、TF0(TCON.5),片內定時/計數器T0溢出中斷請求標志。當定時/計數器T0發生溢出時,置位TF0,並向CPU申請中斷。
4、TF1(TCON.7),片內定時/計數器T1溢出中斷請求標志。當定時/計數器T1發生溢出時,置位TF1,並向CPU申請中斷。
5、RI(SCON.0)或TI(SCON.1),串列口中斷請求標志。當串列口接收完一幀串列數據時置位RI或當串列口發送完一幀串列數據時置位TI,向CPU申請中斷。
IE寄存器:
中斷允許控制寄存器分為兩層結構,第一級結構為中斷允許總控制EA,只有當EA處於中斷允許狀態,中斷源中斷請求才能夠得到允許;當EA處於不允許狀態時,無論IE寄存器中其他位處於什麼狀態,中斷源中斷請求都不會得到允許。第二級結構為5個中斷允許控制位,分別對應5個中斷源的中斷請求,當對應中斷允許控制位為1時,中斷源中斷請求得到允許。
EX0:外部中斷0允許位。EX0=1,允許外部中斷0中斷;EX0=0,禁止外部中斷0中斷。當EX0=1( SETB EX0 )時,同時單片機P3.2引腳上出現中斷信號時,單片機中斷主程序的執行而「飛」往中斷服務子程序,執行完後通過中斷返回指令RET 動返回主程序。當EX0=0( CLR EX0)時,即使單片機P3.2引腳上出現中斷信程序也不會從主程序「飛」 出去執行,因為此時單片機的CPU相當於被「堵上了耳朵」,根本接收不到P3.2引腳上的中斷信號,但是這並不表示這個信號不存在。如果單片機的CPU有空查一下TCON中的IE0位,若為1就說明有中斷信號出現過。
ET0:T0溢出中斷允許位。ET0=1,允許T0中斷;ET0=0,禁止T0中斷。
EX1:外部中斷1允許位。EX1=1,允許外部中斷1中斷;EX1=0,禁止外部中斷1中斷。當EX1=1( SETB EX1)時,並且外部P3.3引腳上出現中斷信號時,單片機CPU會中斷主程序而去執行相應的中斷服務子程序;當EX1=0( CLR EX1)時使外部P3.3引腳上即使出現中斷信號,單片機的CPU也不能中斷主程序轉而去行中斷服務子程序。 [3] 因此,可以這樣認為,EX0和EX1是決定CPU能否感覺到外部引腳P3.2P3.3上的中斷信號的控制位。
ET1:T1溢出中斷允許位。ET1=1,允許T1中斷;ET1=0,禁止T1中斷。
ES:串列中斷允許位。ES=1,允許串列口中斷;ES=0,禁止串列口中斷。
EA:中斷總允許位。EA=1,CPU開放中斷;EA=0,CPU禁止所有的中斷請求。總允許EA好比一個總開關。EA就相當於每家水管的總閘,如果總閘不開,各個龍頭即使開了也不會有水;反過來,如果總閘開了而各個分閘沒開也不會有水,所當我們想讓P3.2和P3.3引腳上的信號能夠中斷主程序則必須將EA位設置為0(CLR EA)。
TCON寄存器:
各位的標識如下:
TF1:定時器1溢出標志位。當定時器1計滿溢出時,由硬體使TF1置1,並且申請中斷,進入中斷服務程序,有硬體自動清0 ,在查詢方式下用軟體清0.
TR1:定時器運行控制位,TR1置1是開啟定時器1,TR1置0時關閉定時器1.
TF0:定時器0溢出標志位。當定時器0計滿溢出時,由硬體使TF0置1,並且申請中斷,進入中斷服務程序,有硬體自動清0 ,在查詢方式下用軟體清0.
TR0:定時器運行控制位,TR0置1是開啟定時器0,TR0置0時關閉定時器0.
IE1:外部中斷1請求標志位。
IT1:外部中斷1觸發方式選擇位。當IT1置0時,為低電平觸發;當IT1置1時,為下降沿觸發。
IE0:外部中斷0請求標志位。
IT0:外部中斷0觸發方式選擇位。當IT0置0時,為低電平觸發;當IT0置1時,為下降沿觸發。
51單片機外部中斷響應條件:
1、中斷源有中斷請求;
2、中斷源的中斷允許位為1(設置IE寄存器相關位);
3、CPU開中斷(設置IE寄存器開中斷,即EA=1)
CPU時序的有關知識:
振盪周期:為單片機提供定時信號的振盪源的周期(晶振周期或外加振盪周期)
狀態周期:2個振盪周期為1個狀態周期,用S表示。
機器周期:1個機器周期含6個狀態周期,12個振盪周期。
指令周期:完成1條指令所佔用的全部時間,它以機器周期為單位。
定時器的其他知識點:
1、51單片機有兩組定時器/計數器,因為既可以定時,又可以計數,故稱之為定時器/計數器。
2、定時器/計數器和單片機的CPU是相互獨立的。定時器/計數器工作的過程是自動完成的,不需要CPU的參與。
3、51單片機中的定時器/計數器是根據機器內部的時鍾或者是外部的脈沖信號對寄存器中的數據加1。
4、有了定時器/計數器之後,可以增加單片機的效率,一些簡單的重復加1的工作可以交給定時器/計數器處理。CPU轉而處理一些復雜的事情。同時可以實現精確定時作用。
與定時器/計數器有關的寄存器:
1、TMOD寄存器
2、TCON寄存器
3、IE寄存器
4、THx/TL寄存器
工作方式寄存器TMOD:
工作方式寄存器TMOD用於設置定時/計數器的工作方式,低四位用於T0,高四位用於T1。其格式如下:
M1M0:工作方式設置位。定時/計數器有四種工作方式。一般我們廳方式1和方式2:
控制寄存器TCON:
TCON的低4位用於控制外部中斷,已在前面介紹。TCON的高4位用於控制定時/計數器的啟動和中斷申請。其格式如下:
TF1(TCON.7):T1溢出中斷請求標志位。T1計數溢出時由硬體自動置TF1為1。CPU響應中斷後TF1由硬體自動清0。T1工作時,CPU可隨時查詢TF1的狀態。所以,TF1可用作查詢測試的標志。TF1也可以用軟體置1或清0,同硬體置1或清0的效果一樣。
TR1(TCON.6):T1運行控制位。TR1置1時,T1開始工作;TR1置0時,T1停止工作。TR1由軟體置1或清0。所以,用軟體可控制定時/計數器的啟動與停止。
TF0(TCON.5):T0溢出中斷請求標志位,其功能與TF1類同。
TR0(TCON.4):T0運行控制位,其功能與TR1類同。
IE中斷開關寄存器:
用於開啟cpu中斷和對應的中斷位。
THx和TL定時/計數存儲寄存器:
THx存儲高8位數據,TLx存儲低8位數據。
定時器/計算器初值計數公式:
計數個數與計數初值的關系為:X=2^n-N
N是需要計數的值;n與設置定時器/計數器的工作方式有關(可能為8、13、16);X是需要設置在THx和TLx的初值。
使用定時器/計算器的初始化流程:
1、對TMOD賦值,以確定T0和T1的工作方式。
2、計算初值,並將其寫入TH0、TL0或TH1、TL1。
3、中斷方式選擇,則對EA賦值,開放定時器中斷。
4、使TR0或TR1置位,啟動定時/計數器定時或計數。
5. 51單片機T0定時器通過什麼寄存器來設定
51單片機的 T0 定時器可以通過 TH0 和 TL0 兩個寄存器來設定。TH0 寄存器保存 T0 定時器的高 8 位,TL0 寄存器保存 T0 定時器的低 8 位。這兩個寄存器組合起來宏攔就構成了 T0 定時器的 16 位計數器。
要設定 T0 定時器,你裂毀需要先設定 T0 定時器的工作模式,然後再設定 TH0 和 TL0 寄存器肆絕備的值。T0 定時器的工作模式可以通過 TMOD 寄存器來設定,TH0 和 TL0 寄存器的值可以通過程序代碼直接賦值。
例如,如果你想設定 T0 定時器的計數器值為 1000,你可以這樣寫代碼:
TH0 = 0x03; // 設定 T0 定時器的高 8 位為 0x03
TL0 = 0xE8; // 設定 T0 定時器的低 8 位為 0xE8
這樣就可以設定 T0 定時器的計數器值為 1000。