




已閱讀5頁,還剩37頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
本章介紹的主要內(nèi)容 定時(shí)計(jì)數(shù)器結(jié)構(gòu)和工作原理 定時(shí)計(jì)數(shù)器的控制寄存器 定時(shí)計(jì)數(shù)器的應(yīng)用編程 片內(nèi)有2個(gè)16位定時(shí) 計(jì)數(shù)器 定時(shí)器0 T0 和定時(shí)器1 T1 定時(shí)或計(jì)數(shù)功能 應(yīng)用 控制 延時(shí) 計(jì)數(shù)和檢測 定時(shí) 計(jì)數(shù)器實(shí)際上是16位加1計(jì)數(shù)器 T0由2個(gè)8位持殊功能寄存器TH0和TL0構(gòu)成 T1由2個(gè)8位持殊功能寄存TH1和TL1構(gòu)成 可由軟件設(shè)置為定時(shí)方式或計(jì)數(shù)方式 T0和T1受特殊功能寄存器TMOD和TCON控制 7 18XX51定時(shí) 計(jì)數(shù)器結(jié)構(gòu)和工作原理 1 定時(shí)工作方式 設(shè)置為定時(shí)工作方式時(shí) 定時(shí)器計(jì)數(shù)的脈沖是由51單片機(jī)片內(nèi)振蕩器經(jīng)12分頻后產(chǎn)生的 每經(jīng)過一個(gè)機(jī)器周期定時(shí)器 T0或T1 的數(shù)值加1直至計(jì)數(shù)滿產(chǎn)生溢出 如 當(dāng)8051采用12MHz晶體時(shí) 每個(gè)機(jī)器周期為1 s 計(jì)5個(gè)機(jī)器周期即為5 s 即定時(shí)5 s 2 計(jì)數(shù)工作方式 設(shè)置為計(jì)數(shù)工作方式時(shí) 通過引腳T0 P3 4 和T1 P3 5 對外部脈沖信號計(jì)數(shù) 當(dāng)輸入信號由1至0的下降沿時(shí) 定時(shí)器的值加1 每個(gè)機(jī)器周期CPU采樣T0和T1的輸入電平 若前一周期為高 下一周期為低 則計(jì)數(shù)器加1 由于檢測一個(gè)1至0的跳變需要二個(gè)機(jī)器周期 故最高計(jì)數(shù)頻率為振蕩頻率的二十四分之一 雖然對輸入信號的占空比無特殊要求 但為了確保某個(gè)電平在變化之前至少被采樣一次 要求電平保持時(shí)間至少是一個(gè)完整的機(jī)器周期 7 2定時(shí)計(jì)數(shù)器的控制寄存器兩個(gè) 定時(shí)器控制寄存器TCON 88H 定時(shí)器工作模式寄存器TMOD 89H 1 工作模式寄存器TMOD 89H TMOD用于控制T0和T1的操作模式 定時(shí)器T0 定時(shí)器T1 GATE 門控信號GATE 0 TRx 1時(shí)即可啟動(dòng)定時(shí)器工作 GATE 1 TRx 1時(shí)INTx 1才可啟動(dòng)定時(shí)器工作 C T 定時(shí)器 計(jì)數(shù)器選擇位C T 1 為計(jì)數(shù)器方式 C T 0 為定時(shí)器方式 M1M0工作模式選擇位M1M0 00工作方式0 13位方式 M1M0 01工作方式1 16位方式 M1M0 10工作方式2 8位自動(dòng)再裝入方式 M1M0 11工作方式3 T0為2個(gè)8位方式 2 控制寄存器TCON 88H 定時(shí)器控制用高4位 低4位用于外部中斷 TF1 T1溢出中斷請求標(biāo)志 TF0 T0TF1 1 T1有溢出中斷請求 TF1 0 T1無溢出中斷請求 TR1 T1運(yùn)行控制位 TR0 T0TR1 1 啟動(dòng)T1工作 TR1 0 停止T1工作 C T C T 7 3定時(shí)器的四種工作方式 THX TLX X 1或0 表示TH1TL1和TH0TL0 1 方式0 13位定時(shí) 計(jì)數(shù)方式 用于計(jì)數(shù)方式時(shí)最大計(jì)數(shù)值為213 8192個(gè)脈沖用于定時(shí)工作時(shí) 定時(shí)時(shí)間為 t 213一T0初值 時(shí)鐘周期 12 16寄存器 THx和TLx 只用13位 THx占高8位 TLx占低5位 TLx的高3位末用 當(dāng)TLx的低5位溢出時(shí)向THx進(jìn)位 而THx溢出時(shí)硬件置位TF0 并申請中斷 定時(shí) 計(jì)數(shù)溢出否可查詢TF0是否置位 如果開中斷則產(chǎn)生溢出中斷 2 方式1當(dāng)TMOD中M1M0 01時(shí) 定時(shí)計(jì)數(shù)器工作在方式1 該模式是一個(gè)16位定時(shí)計(jì)數(shù)方式 寄存器TH0和TL0是以全16位參與操作 計(jì)數(shù)方式時(shí)最大計(jì)數(shù)216 65536 個(gè)外部脈沖 用于定時(shí)工作方式時(shí) 定時(shí)時(shí)間為 t 216一T0初值 時(shí)鐘周期 12 16寄存器 THx和TLx 中THx提供高8位 TLx提供低8位計(jì)數(shù)初值 3 方式2當(dāng)TMOD中M1M0 10時(shí) 定時(shí)器工作在方式2 方式2是8位的可自動(dòng)重裝載的定時(shí)計(jì)數(shù)方式 16位的計(jì)數(shù)器被拆成兩個(gè)8位 其中TL0用作8位計(jì)數(shù)器 TH0用以保持計(jì)數(shù)初值 當(dāng)TL0計(jì)數(shù)溢出 置TF0 TH0中的初值自動(dòng)裝入TL0 繼續(xù)計(jì)數(shù) 循環(huán)重復(fù)計(jì)數(shù) 用于計(jì)數(shù)工作方式時(shí) 最大計(jì)數(shù)值為 28 256 個(gè)外部脈沖 用于定時(shí)工作方式時(shí) 其定時(shí)時(shí)間為 t 28 TH0初值 振蕩周期 12 這種工作方式可省去用戶重裝常數(shù)的程序 并可產(chǎn)生精確的定時(shí)時(shí)間 特別適用作串行口波待率發(fā)生器 4 方式3當(dāng)TMOD中M1M0 11時(shí) 定時(shí)器工作在方式3 若將T0設(shè)置為模式3 TL0和TH0被分成為兩個(gè)互相獨(dú)立的8位計(jì)數(shù)器TH0和TL0 TL0可工作為定時(shí)或計(jì)數(shù)方式 占用原T0的各控制位 引腳和中斷源 即C T GATE TR0 TF0和T0 P3 4 引腳 INT0 P3 2 引腳 TH0只可用作定時(shí)功能 占用定時(shí)器T1的控制位TR1和T1的中斷標(biāo)志位TF1 其啟動(dòng)和關(guān)閉僅受TRl的控制 定時(shí)器T1無模式3 可工作于方式0 1 2 但當(dāng)T0工作于方式3時(shí)T1不能使用中斷方式 只有將T1用做串行口的波特率發(fā)生器時(shí) T0才工作在方式3 以便增加一個(gè)定時(shí)器 7 4定時(shí)計(jì)數(shù)器的應(yīng)用程序設(shè)計(jì) 7 4 1定時(shí)器的計(jì)數(shù)初值C的計(jì)算和裝入由于采用加1計(jì)數(shù) 因此計(jì)數(shù)初值應(yīng)為負(fù)值 計(jì)數(shù)初值 C 的求法如下 計(jì)數(shù)方式 計(jì)數(shù)初值C 模 X 其中X為要計(jì)的脈沖個(gè)數(shù) 定時(shí)方式 計(jì)數(shù)初值C t MC 補(bǔ) 模 t MC其中t為欲定時(shí)時(shí)間 MC為機(jī)器周期MC 12 fosc當(dāng)采用12MHZ晶振時(shí) MC 1us 當(dāng)采用6MHZ晶振時(shí) MC 2us 方式0 13位方式 C 64H 補(bǔ) 2000H 64H 1F9CH1F9CH 0001111110011100B13位中的高八位11111100B裝入TH0 13位中的低五位xxx11100B裝入TL0 MOVTH0 0FCH MOVTL0 1CH xxx用 0 填入 方式1 16位方式 C 64H 補(bǔ) 10000H 64H FF9CHMOVTH0 0FFHMOVTL0 9CH 例要計(jì)100個(gè)脈沖的計(jì)數(shù)初值 方式2 8位自動(dòng)再裝入方式 C 64H 補(bǔ) 100H 64H 9CH初值既要裝入TH0 也要裝入TL0 MOVTH0 9CHMOVTL0 9CH 7 4 2定時(shí)計(jì)數(shù)器的初始化編程定時(shí)計(jì)數(shù)器的初始化編程步驟 1 根據(jù)定時(shí)時(shí)間要求或計(jì)數(shù)要求計(jì)算計(jì)數(shù)器初值 2 工作方式控制字送TMOD寄存器 3 送計(jì)數(shù)初值的高八位和低八位到THX和TLX寄存器中 4 啟動(dòng)定時(shí) 或計(jì)數(shù) 即將TRX置位 如果工作于中斷方式 需要置位EA 中斷總開關(guān) 及ETX 允許定時(shí) 計(jì)數(shù)器中斷 并編中斷服務(wù)程序 例7 1如圖7 2所示 P1中接有八個(gè)發(fā)光二極管 編程使八個(gè)管輪流點(diǎn)亮 每個(gè)管亮100ms 設(shè)晶振為6MHz 7 4 3應(yīng)用編程舉例 分析利用T1完成100ms的定時(shí) 當(dāng)P1口線輸出 1 時(shí) 發(fā)光二極管亮 每隔100ms 1 左移一次 采用定時(shí)方式1 先計(jì)算計(jì)數(shù)初值 MC 2 s100ms 2 s 50000 C350H C350H 補(bǔ) 10000H C350H 3CB0H 用匯編語言編程 查詢方式如下 ORG0030HMOVA 01H 置第一個(gè)LED亮NEXT MOVP1 AMOVTMOD 10H T1工作于定時(shí)方式1MOVTH1 3CHMOVTL1 0B0H 定時(shí)100msSETBTR1AGAI JBCTF1 SHI 100ms到轉(zhuǎn)SHI 并清TF1SJMPAGAISHI RLASJMPNEXT 中斷方式ORG0000HAJMPMAIN 復(fù)位后從0000H開始執(zhí)行ORG001BHAJMPIV1 轉(zhuǎn)移到IV1ORG0030H 主程序MAIN MOVA 01HMOVP1 A 置第一個(gè)LED亮MOVTMOD 10H T1工作于定時(shí)方式1MOVTH1 3CHMOVTL1 0B0H 定時(shí)100msSETBTR1 啟動(dòng)T1工作 SETBEASETBET1 允許T1中斷WAIT SJMPWAIT 等待中斷IV1 RLA 中斷服務(wù)程序 左移一位MOVP1 A 下一個(gè)發(fā)光二極管亮MOVTH1 3CHMOVTL1 0B0H 重裝計(jì)數(shù)初值RETI 中斷返回中斷子程序直接用A操作 不好 用C語言編程 For TH1 0 x3c TL1 0 xb0 裝載計(jì)數(shù)初值 do while TF1 查詢等待TF1置位 P1 1 定時(shí)時(shí)間到 下一只LED亮 TF1 0 軟件清TF1 查詢方式 includevoidmain void P1 0 x01 第一只LED亮 TMOD 0 x10 定時(shí)器1方式1 TR1 1 啟動(dòng)T C0 voidmain void TMOD 0 x10 T1工作在定時(shí)方式1 P1 0 x01 第一只LED亮 TH1 0 x3c TL1 0 xb0 預(yù)置計(jì)數(shù)初值 EA 1 ET1 1 CPU開中斷 允許T1中 TR1 1 啟動(dòng)T1開始定時(shí) do while 1 等待中斷 中斷方式 includeTimer1 interrupt3using1 T1中斷服務(wù)程序 P1 1 下一只LED亮 TH1 0 x3c TL1 0 xb0 計(jì)數(shù)初值重載 T0采用方式1 X 216 100 103 2 3CB0H T1采用方式2 計(jì)數(shù)初值X 28 5 FBH均采用查詢方式 流程圖和程序如下 例7 2在P1 7端接一個(gè)發(fā)光二極管LED 要求利用定時(shí)控制使LED亮一秒滅一秒周而復(fù)始 設(shè)fosc 6MHZ 解 16位定時(shí)最大為216 2us 131 072ms 不夠 方法1 T0定時(shí)100ms P1 0每次取反 周期200ms 輸入T1作計(jì)數(shù)脈沖 T1計(jì)5個(gè)脈沖正好1s 硬件擴(kuò)展 ORG0000HMAIN CLRP1 7SETBP1 0MOVTMOD 61HMOVTH1 0FBHMOVTL1 0FBHSETBTR1LOOP1 CPLP1 7 LOOP2 MOVTH0 3CHMOVTL0 0B0HSETBTR0 放循環(huán)外LOOP3 JBCTF0 LOOP4SJMPLOOP3LOOP4 CPLP1 0JBCTF1 LOOP1AJMPLOOP2END 程序中用JBC指令對定時(shí) 計(jì)數(shù)溢出標(biāo)志位進(jìn)行檢測 當(dāng)標(biāo)志位為1時(shí)跳轉(zhuǎn)并清標(biāo)志 方法2 T0每隔100ms中斷一次 利用軟件對T0的中斷次數(shù)進(jìn)行計(jì)數(shù) 中斷10次即實(shí)現(xiàn)了1秒的定時(shí) ORG000BH T0中斷服務(wù)程序入口AJMPIP0ORG0030H 主程序開始MAIN CLRP1 7 T0定時(shí)100msMOVTMOD 01HMOVTH0 3CHMOVTL0 0B0HSETBET0SETBEA MOVR4 0AH 中斷10次計(jì)數(shù)SETBTR0SJMP 等待中斷IP0 DJNZR4 RET0 用R4計(jì)數(shù)不好 MOVR4 0AHCPLP1 7RET0 MOVTH0 3CHMOVTL0 0B0HSETBTR0 可去掉RETI C語言實(shí)現(xiàn)方法1 用中斷方式 并用程序計(jì)算計(jì)數(shù)初值 T0定時(shí)100ms初值 100 1000 2 50000 即 50000 T1計(jì)數(shù)5個(gè)脈沖工作于方式2 計(jì)數(shù)初值為 5 includesbitP1 0 P1 0 sbitP1 7 P1 7 timer0 interrupt1using1 T0中斷服務(wù)程序 P1 0 P1 0 100ms到P1 0取反 TH0 50000 256 重載計(jì)數(shù)初值 TL0 50000 256 timer interrupt3using2 T1中斷服務(wù) P1 P1 7 1s到 燈變狀態(tài) main P1 7 0 置燈初始滅 P1 0 保證第一次反向便開始計(jì)數(shù)TMOD 0 x61 T0方式 定時(shí) T1方式 計(jì)數(shù) TH0 50000 256 TL0 50000 256 TH1 5 TL1 5 預(yù)置計(jì)數(shù)初值 IP 0 x08 置優(yōu)先級寄存器 EA 1 ET0 1 ET1 1 開中斷 TR0 1 TR1 1 啟動(dòng)定時(shí)計(jì)數(shù)器 for 等待中斷 例 有P3 4引腳 T0 輸入一低頻信號 其小于0 5kHZ 要求P3 4每發(fā)生一次負(fù)跳變時(shí) P1 0輸出一個(gè)500us同步負(fù)脈沖 同時(shí)P1 1輸出一個(gè)1ms的同步正脈沖 已知晶振頻率為6MHZ 圖7 5 解按提意 設(shè)計(jì)方法如圖7 5所示 初態(tài)P1 1輸出高電平 系統(tǒng)復(fù)位時(shí)實(shí)現(xiàn) P1 1輸出低電平 T0選方式 計(jì)數(shù)方式 計(jì)一個(gè)脈沖 初值為FFH 當(dāng)加在P3 4上的外部脈沖負(fù)跳變時(shí) T0加1 計(jì)數(shù)器溢出 程序查詢到TF0為1 改變T0為500 s定時(shí)工作方式 并使P1 0輸出 P1 1輸出 T0第一次定時(shí)500 s溢出后 P1 0恢復(fù) T0第二次定時(shí)500 s溢出后 P1 1恢復(fù) T0恢復(fù)外部脈沖計(jì)數(shù) 設(shè)定時(shí)500 s的初始值為X 則 256 X 2 10 6 500 10 6解得X 6 源程序如下 BEGIN MOVTMOD 6H 設(shè)T0為方式 外部計(jì)數(shù)MOVTH0 0FFH 計(jì)數(shù)一個(gè)脈沖MOVTL0 0FFHCLRP1 1 P1 1初值為0SETBTR0 啟動(dòng)計(jì)數(shù)器DELL JBCTF0 RESP1 檢測外跳變信號AJMPDELLRESP1 CLRTR0MOVTMOD 02H 重置T0為500 s定時(shí) MOVTH0 06H 重置定時(shí)初值MOVTL0 06HSETBP1 1 P1 1置1CLRP1 0 P1 0清0SETBTR0 啟動(dòng)定時(shí)計(jì)數(shù)器DEL2 JBCTF0 RESP2 檢測第一次500us到否AJMPDEL2RESP SETBP1 0 P1 0恢復(fù)1DEL3 JBCTF0 RESP3 檢測第二次500us到否AJMPDEL3RESP3 CLRP1 1 P1 1復(fù)0CLRTR0AJMPBEGIN 思考 如何改為中斷方式 7 4 4門控位的應(yīng)用GATEx 1時(shí) TRx 1且INTx 1才啟動(dòng)定時(shí)器 利用這個(gè)特性可以測量外部輸入脈沖寬度 例7 4利用T0門控位測試INT0引腳上出現(xiàn)的正脈沖寬度 設(shè)晶振12MHz 將所測得值最高位存入片內(nèi)71H單元 低位存入70H單元 解 設(shè)外部脈沖由 P3 2 輸入 T0工作于定時(shí)方式1 16位計(jì)數(shù) GATE設(shè)為1 測試時(shí) 應(yīng)在INT0低電平時(shí) 設(shè)置TR0為1 當(dāng)INT0變?yōu)楦唠娖綍r(shí) 就啟動(dòng)計(jì)數(shù) 再次變低時(shí) 停止計(jì)數(shù) 此計(jì)數(shù)值與機(jī)器周期的乘積即為被測正脈沖的寬度 因fosc 12MHZ 機(jī)器周期為1us 測試過程如下 源程序如下 MOVTMOD 09H 設(shè)T0為方式1MOVTL0 00H 設(shè)計(jì)初值取最大值MOVTH0 00HMOVR0 70HJBP3 2 等P3 2 INT0 變低SETBTR0 啟動(dòng)T0準(zhǔn)備工作JNBP3 2 等待P3 2 INT0 變高JBP3 2 等待P3 2 INT0 變低CLRTR0 停止計(jì)數(shù) MOV R0 TL0 存放結(jié)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 孕產(chǎn)婦心理健康分析及護(hù)理
- 教師正能量培訓(xùn)
- 中醫(yī)護(hù)理的特點(diǎn)
- HIV陽性患者護(hù)理診斷與干預(yù)策略
- 中藥采購驗(yàn)收培訓(xùn)
- 支原體肺炎防控與診療進(jìn)展
- 愛校教育主題
- 理財(cái)經(jīng)理年終工作總結(jié)
- 2025年仿制藥一致性評價(jià)對醫(yī)藥市場藥品市場準(zhǔn)入門檻調(diào)整影響分析報(bào)告
- 后疫情時(shí)代醫(yī)療行業(yè)創(chuàng)新產(chǎn)品與服務(wù)市場分析報(bào)告
- 富士康職工檔案管理制度
- 7數(shù)滬科版期末考試卷-2024-2025學(xué)年七年級(初一)數(shù)學(xué)下冊期末考試模擬卷04
- 胃管置入術(shù)考試題及答案
- 鄭州大學(xué)cad期末考試試題及答案
- 2025年內(nèi)蒙古高考物理試卷(含答案)
- 保利大劇院面試題及答案
- 中國共產(chǎn)主義青年團(tuán)紀(jì)律處分條例試行解讀學(xué)習(xí)
- 國家能源集團(tuán)陸上風(fēng)電項(xiàng)目通 用造價(jià)指標(biāo)(2024年)
- 2024北京海淀區(qū)三年級(下)期末語文試題及答案
- MOOC 國際商務(wù)-暨南大學(xué) 中國大學(xué)慕課答案
- 密封條范文模板(A4打印版)
評論
0/150
提交評論