




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、方式0應用通過設置TMOD寄存器中的M1M0位00選擇定時器方式0,方式0的計數(shù)位數(shù)是13位,對T0來說,TL0寄存器的低5位(高3位未用)和TH0寄存器的8位組成。TL0的低5位溢出時向TH0進位,TH0溢出時,置位TCON中的TF0標志,向cpu發(fā)出中斷請求。其邏輯圖如下定時器方式0位13位計數(shù)器,最多能裝載的個數(shù) 2的13次方=8192個,當TL0和TH0的初始值為0時,最多經(jīng)過8192個機器周期該計數(shù)器就會溢出一次,向cpu申請中斷。THX=(8192-N)/32 TLX=(8192-N)%32。機器周期=12 X (1/時鐘頻率)單片機定時器程序的步驟: 對TMOD賦值、計算初值、中
2、斷方式,對IE賦值,開放中斷、使TR0或TR1置位,啟動定時器讓發(fā)光二極管以1s亮滅閃爍 代碼:#include#define uchar unsigned char#define uint unsigned intsbit led1=P10;/ 假定發(fā)光二極管接P10口uchar num;void main()TMOD=0x00;/設置定時器0的工作方式為0TH0=(8192-4607)/32;/裝初值TL0=(8192-4607)%32;EA=1;/開總中斷ET0=1;/開定時器0中斷TR0=1;/啟動定時器0while(1)if( num=20 )num=0;led1=led1;void
3、 T0_time() interrupt 1TH0=( 8192-4607 )/32;TL0=( 8192-4607 )%32;num ;方式1應用定時器方式1 位16位計數(shù)器,最多能裝載的個數(shù) 2的16次方=65536個,當TL0和TH0的初始值為0時,最多經(jīng)過65536個機器周期該計數(shù)器就會溢出一次,向cpu申請中斷。TH0=(65536-N)/256;TL0=(65536-N)/256;。機器周期=12 X (1/時鐘頻率)#include #define uchar unsigned char#define uint unsigned int sbit led1=P00;uchar t
4、;void main()TMOD=0x01; TH0=(65536-50000)/256;TL0=(65536-50000)/256;EA=1; ET0=1; TR0=1; while(1) if(t=20)t=0;led1=led1;void T0_time() interrupt 1TH0=(65536-50000)/256;TL0=(65536-50000)/256; t+;方式2應用在定時器的方式0和1中,當計數(shù)溢出后,計數(shù)器變?yōu)?,因此在循環(huán)定時過程中反復的裝初值必然會影響到定時的精度。方法2可解決裝初值的問題。通過設置TMOD寄存器中的M1M0位為10選擇定時器方式2,方式2被稱為
5、8位初值自動重裝的8位定時器/計數(shù)器,THX被稱為常數(shù)緩沖器,當TLX溢出時,在TFX置1時的同時,還自動的將THX中的常數(shù)重新裝入TLX中,使TLX從初值開始重新計數(shù),這樣避免了人為軟件重裝初值所帶來的時間誤差,從而提高定時精度代碼,讓發(fā)光二極管以1s亮滅閃爍#include#define uint unsigned intsbit led1=P10;/二極管接P10口uint num;void main()TMOD=0x02;TH0=6;/ TH0、TL0取6和下面的num取3686是為了得到1s的時間。也可取其他的數(shù)字TL0=6;EA=1;ET0=1;TR0=1;while( 1 )if
6、( num=3686 )num=0;led1=led1;void T0_time() interrupt 1num ;方式3應用方式3只適用于定時器/計數(shù)器 T0,當設定定時器T0處于方式3時,定時器T1不計數(shù)。方式3將T0分成2個獨立的8位計數(shù)器TL0和TH0,定時器3的邏輯結構圖分析上圖可知,定時器被分成2個獨立的計數(shù)器。其中TL0為正常的8位計數(shù)器,計數(shù)溢出后置位TF0,向cpu發(fā)出中斷申請,之后再重裝初值。TH0也被固定為一個8位計數(shù)器,它占用定時器T1的中斷請求標志TF1和定時器啟動控制位TR1。代碼 讓第一個二極管1s閃爍、第二個二極管0.5s閃爍#include#define u
7、char unsigned char#define uint unsigned intsbit led1=P10;/二極管接一個P10口另一個接P12口sbit led2=P11;uint num_1,num_2;void main()TMOD=0x03;TH0=6;/ TH0、TL0取6和下面的num取3686是為了得到1s的時間。也可取其他的數(shù)字TL0=6;EA=1;ET0=1;ET1=1;TR1=1;TR0=1;while( 1 )if( num=3686 )num_1=0;led1=led1;if( num_2=1843 )num_2=0;led2=led2;void TL0_time
8、() interrupt 1TL0=6;num_1 ;void TH0_time() interrupt 3TH0=6;num_2 ;256的意思:定時器0設置于模式1時,計數(shù)寄存器為16位模式,由高8位TH0和低8位TL0兩個8位寄存器組成,當設定計算值為65536-50000=15536(D)時,轉換為十六進制就是3CB0(H),此時,TH0=3C,TL0=B0分別裝入即可,為了免除這些計算步驟,很多編程者采用“TH0=(65536-50000)/256;TL0=(65536-50000)%256“的編程方式,去讓單片機自己去計算結果,那么為什么要介入256呢?其實并不難理解,做一下101
9、6進制的換算就知道了,256(D)=0100(H),這里01就是高8位的數(shù)據(jù),00就是低8位的數(shù)據(jù),通俗點說,15536(D)里有多少個256,就相當于高8位有多少數(shù)值,就是除的關系了,商存入高8位寄存器后余下的數(shù)存入低8位即可,取商計算就是TH0=(65536-50000)/256;而取余計算就是TL0=(65536-50000)%256 。TMOD |= 0x01;請問中間“ |=”是什么意思?P3 &= 0x7f意思為 P3=P3&0x7f 表示P3的最高位(P3.7)清0,不影響P3其他位 P3 |= 0x80意思是 P3=P3|Ox80 表示P3的最高位(P3.7)為1,不影響P3其
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 母嬰體驗活動方案
- 梵高畫展活動方案
- 汽車加油充值活動方案
- 愛心行動心理健康課件
- 愛家愛校愛師班會課件
- 愛國主義課件(小學生)
- 高壓變電站設計與安全評估
- 殘奧單板滑雪運動學特征研究
- 舞蹈編創(chuàng):創(chuàng)意靈感與藝術作品實踐研究
- 新商科背景下的數(shù)字經(jīng)濟實踐教學體系研究
- 2025年巡檢機器人市場環(huán)境分析
- 教學設計培訓課件
- DAISY SKY雛菊的天空:國貨眼油第一品牌
- (2025)《公共基礎知識》試真題庫與答案
- 2025盤錦市雙臺子區(qū)輔警考試試卷真題
- DB13T 2770-2018 焊接熔深檢測方法
- 關于衛(wèi)生院“十五五”發(fā)展規(guī)劃(完整本)
- 夫妻存款贈與協(xié)議書
- 2025海南中考:歷史必考知識點
- 2024年常州工學院輔導員考試真題
- 公司財務內控培訓
評論
0/150
提交評論