




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第6章定時器/計數器習題答案一、填空題1.T0/T1作為計數器使用時,T0對引腳的外部脈沖進行計數,T1對引腳的外部脈沖進行計數。答:P3.4P3.52.如果采用晶振的頻率為12MHz,T0/T1方式1的最大定時時間為,方式2的最大定時時間為。答:65536us,256μs3.T0/T1作為定時器使用時,對進行計數。答:系統(tǒng)晶振的12分頻信號(機器周期)4.T0/T1作為計數器模式時,外部輸入脈沖的最高頻率為系統(tǒng)晶振頻率的。答:1/245.晶振頻率為12MHz,T0方式1產生1ms定時,則(TH0)=,(TL0)=。答:(65536-1000)/256(65536-1000)%2566.晶振頻率為12MHz,T1的方式2定時100us,則(TH1)=,(TL1)=。答:256-100=0x9C0x9C7.定時器T2有3種工作方式:、和,可通過對寄存器中的相關位進行軟件設置來選擇。答:捕捉,重新裝載(增計數或減計數),波特率發(fā)生器,T2CON8.占空比是指在一個周期內,信號處于的時間占據整個信號周期的百分比。答:高電平9.PWM技術是技術,通過改變脈沖的寬度進行調制,也就是通過調節(jié)占空比來調節(jié)信號、能量等的變化。答:脈沖寬度調制10.T2的捕捉方式就是及時“捕捉”變化,例如信號發(fā)生的跳變。常用于精確測量輸入信號的脈寬或周期等。答:輸入信號在某一瞬間的二、選擇題1.定時器T1有種工作方式。A.1種 B.2種C.3種 D.4種
答:C2.定時器T0/T1工作于方式1時,其計數器為位。A.8位B.16位C.14位D.13位答:B3.T0定時溢出時,位由硬件自動置1。A.TR0B.TF0C.ET0D.PT0答:B4.定時器T0的GATE=1計數器是否計數的條件。A.僅取決于TR0狀態(tài)B.僅取決于GATE位狀態(tài)C.是由TR0和INT0兩個條件共同控制D.僅取決于INT0的狀態(tài)答:C5.T1計數計滿溢出時,溢出標志位(TF1)=。A.0B.1C.0xffD.0x00答:B6.采用T1方式2,計滿250次溢出,則(TH1)和(TL1)的初值為。A.0x06,0x06B.0xff,0x06C.0x06,0xffD.0x00,0x06答:A7.T0方式1是計數器。A.16位加1B.16位減1C.8位加1D.8位減1答:A8.T2作為波特率發(fā)生器使用時,對進行計數。A.晶振頻率的12分頻信號B.晶振頻率的2分頻信號C.晶振頻率的24分頻信號D.機器周期答:B9.T2作為捕捉方式,則位是“捕捉”或“自動重新裝載”選擇位。A.
C/T2B.CP/RL2C.答:B10.T2工作在16位自動重載方式時,T2既可以增1計數,也可實現減1計數,取決于。A.T2引腳的負跳變B.T2引腳的正跳變C.T2EX引腳的負跳變D.T2EX引腳的正跳變答:C三、問答題1.一個定時器的定時時間有限,如何用兩個定時器的串行定時來實現較長時間的定時?答:方法1,在第一個定時器的中斷程序里關閉本定時器的中斷程序,設置和打開另一個定時器;在另一個定時器的中斷程序中關閉本定時中斷,設置和打開另一個定時器。這種方式的定時時間為兩個定時器定時時間的和。方法2,一個作為定時器,在定時中斷后產生一個外部計數脈沖(比如由P1.0接產生),另一個定時器工作在計數方式。這樣兩個定時器的定時時間為一個定時器的定時時間乘以另一個定時器的計數值。2.說明T0/T1溢出中斷標志位TF0/TF1的撤銷方法。答:采用中斷方式,則有硬件自動撤銷;采用查詢方式,則由軟件撤銷。3.對T0/T1溢出斷標志位TF0/TF1的檢測方法有哪些?各有什么優(yōu)缺點?答:可以采用中斷方式,也可采用查詢方式。中斷方式快速實時性好,CPU執(zhí)行效率高,但編程復雜。查詢方式編程簡單,但需要采用軟件的方式不斷查詢標志位,CPU執(zhí)行效率低。四、仿真練習1.基本要求:利用T1方式1控制發(fā)出1kHz的音頻信號,采用虛擬示波器查看波形。答:1.硬件電路設計2.軟件設計#include<reg52.h> //頭文件reg52.hsbitP20=P2^0; //定義特殊功能寄存器P2的位變量P2.0voidT1_init();//定時器T1初始化/*************主函數************/voidmain(void) //主程序{ T1_init(); while(1) { while(TF1==0);TH1=(65536-500)/256;//重賦初值TL1=(65536-500)%256;//重賦初值 P20=!P20; //P2.0狀態(tài)求反 TF1=0; //TF0標志清零 }}/**********定時器T1初始化*********/voidT1_init(){TMOD=0x10; //設置T0為方式1TH1=(65536-500)/256;//置T0高8位初值TL1=(65536-500)%256;//置T0低8位初值 TR1=1; //啟動T0TF1=0;}仿真運行2.基本要求:利用T0采用方式2在P2.0引腳輸出周期為1ms,占空比為80%的矩形脈沖。答:1.硬件電路設計2.軟件設計#include<reg52.h> //頭文件reg52.h#defineucharunsignedchar#defineuintunsignedintsbitPWM=P2^0; //定義特殊功能寄存器P2的位變量P2.0uintflag;voidT0_init();//定時器T0初始化/*************主函數************/voidmain(void) //主程序{ T0_init(); while(1) { }}/**********定時器T0初始化*********/voidT0_init(){TMOD=0x02; //設置T0為方式2TH0=156; //置T0高8位初值TL0=156; //置T0低8位初值 TR0=1; //啟動T0ET0=1; //開T0中斷EA=1; //開總中斷}voidpwm()interrupt1{ TH0=156; TL0=156; //定時100us flag++; if(flag==10) flag=0; if(flag<8) PWM=1; else PWM=0; }3.仿真運行3.擴展要求:測量脈沖信號的頻率,并在LCD1602上顯示。答:1.硬件電路設計2.軟件設計#include<reg51.h>#defineuintunsignedint#defineucharunsignedcharsbitlcdrs=P1^0;//LCD1602液晶顯示器數據/命令選擇端口sbitlcdrw=P1^1;//LCD1602液晶顯示器讀/寫選擇端口sbitlcden=P1^2;//LCD1602液晶顯示器使能端口 sbitP3_3=P3^3; //INT1測量脈沖輸入引腳定義voiddelay(uintdat);//延時程序voidlcd_init();//lcd初始化voidwrite_cmd(charcmd);//寫指令函數voidwrite_data(uchardat);//寫數據函數voidwrite_str(uchar*str);//寫字符串函數voiddisplay(uintdate);//顯示uintWidth_num,Freq;//脈沖的寬度,T1的計數值/*****主函數******/voidmain(){ lcd_init();//LCD初始化 write_cmd(0x82);//在LCD1602第一行第2個位置顯示write_str("Frequency:"); //顯示Frequency: write_cmd(0xcb);//在LCD1602第二行第11個位置顯示write_str("Hz"); //顯示Hz while(1) { TMOD=0x90; //T1方式1、定時、GATE=1TH1=0; //向定時器T1寫入計數初值0TL1=0;while(P3_3==1);//等待INT1引腳輸入變低TR1=1; //如果INT1為低,TR1=1,等待INT1變高啟動T1while(P3_3==0);//等待INT1變高,INT1變高,硬啟動條件滿足,T1計數開始while(P3_3==1);//等待INT1變低,變低后T1停止計數TR1=0; //復位TR1 Width_num=TH1*256+TL1;//計算T1計數值,即脈沖寬度 Freq=1000000/(2*Width_num); //跟據公式算出脈沖寬度與頻率關系 display(Freq); //顯示頻率}}/*****延時程序******/voiddelay(uintdat){uinti,j;for(j=dat;j>0;j--) for(i=110;i>0;i--);}/********************1602初始化***************/voidlcd_init(){lcdrw=0; lcden=0; write_cmd(0x38); //顯示模式設置 write_cmd(0x0c); //顯示開關,光標關閉 write_cmd(0x06); //顯示光標移動設置 write_cmd(0x01); //清除屏幕}/***************寫指令函數*****************/voidwrite_cmd(ucharcmd){ lcdrs=0; //RS拉低 P2=cmd; //P0口寫入指令 delay(1); lcden=1; delay(1); lcden=0;}/***************寫數據函數*****************/voidwrite_data(uchardat){ lcdrs=1; //RS拉高 P2=dat; //P0口寫入數據 delay(1); lcden=1; delay(1); lcden=0;}/***************寫字符串函數*****************/voidwrite_str(uchar*str)//{ while(*str!='\0')//字符串寫完之前,一直進行寫入操作 { write_data(*str++); delay(1); }}/***************顯示函數*****************/voiddisplay(uintdate){ucharwidth[7]; width[0]=date/10000+0x30;//分離十萬位,轉換為ASCII width[1]=date%100000/10000+0x30;//分離萬位,轉換為ASCII width[2]=date%10000/1000+0x30;//分離千位,轉換為ASCII width[3]=date%1000/100+0x30;//分離百位,轉換為ASCII width[4]=date%100/10+0x30;//分離十位,轉換為ASCII width[5]=date%10+0x30; //分離個萬位,轉換為ASCII width[6]='\0'; //數組末尾填加字符串結束的標志 write_cmd(0xc5);//在LCD第2行第5個位置寫入 write_str(width);//將脈沖寬度轉換為字符數組寫入LCD}3.仿真運行4.擴展要求:采用T2實現秒表,按下按鍵1啟動秒表計時并在數碼管(共陽)顯示,按下按鍵2停止秒表計時,顯示當前值。再按下按鍵1則從0開始計時,重復上述過程。計時范圍00~59s,如果計時到59s,將重新開始從0計時。系統(tǒng)晶振為12MHz。答:1.硬件電路設計2.軟件設計#include<reg52.h> //頭文件reg52.h#defineucharunsignedchar#defineuintunsignedintsfrT2MOD=0xc9;//reg52.h中沒有定義T2MODvoidT2_init();//定時器T2初始化unsignedintcount,shi,ge,aa,temp=0,x,y,z,flag=0;sbitkey1=P1^6;sbitkey2=P1^7; ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共陽0-9段碼voiddelay(uintz) //延時1ms{ uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}voiddisplay0()//數碼管顯示函數{ P0=0x02;//根據接口片選十位 P2=table[shi];//十位顯示 delay(1); P2=0xff;//全部熄滅數碼管,防止重影 P0=0x01;//根據接口片選個位 P2=table[ge];//個位顯示 delay(1); P2=0xff;//全部熄滅數碼管,防止重影}/*************主函數************/voidmain(void) {T2_init();//T2初始化while(1)//死循環(huán) { display0(); if(key1==0&&flag==0)//key1按下中斷開,開始計時,啟動秒表 { delay(2); if(key1==0&&flag==0) { TR2=1; } } if(key2==0)//key2按下中斷關,停止計時,停止秒表 { delay(2); if(key2==0) { TR2=0; flag=1; } } if(key1==0&&flag==1)//key1再次按下,秒表歸零,從新計時 { delay(2); if(key1==0&&flag==1) { temp=0; shi=0; ge=0; flag=0; } } if(shi==6&&ge==0)//計時到60秒,清零 { temp=0; shi=0; ge=0; }}}/**********定時器T2初始化*********/voidT2_init(){RCLK=0;//T2不用作波特率發(fā)生器接收時鐘使用TCLK=0;//T2不用作波特率發(fā)生器發(fā)送時鐘使用CP_RL2=0;//T2捕捉/自動重裝載選擇位=0(自動重裝載)=1(捕捉)EXEN2=0;//=0(T2計滿溢出觸發(fā)自動重裝)//=1(T
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《微生物與免疫學實驗》課程教學大綱
- 《化工制圖2》課程教學大綱
- 浙江實驗中學人教版七年級下冊歷史與社會第六單元第一課 北方地區(qū)教學設計
- 經營活動現金流分析計劃
- 傳統(tǒng)中醫(yī)的拔罐療法詳解
- 教育實踐活動與課外體驗計劃
- 醫(yī)院后期服務質量提升的總結計劃
- 供應鏈創(chuàng)新與商業(yè)模式變革
- 中小企業(yè)發(fā)展扶持政策研究
- 河北省石家莊市八年級政治下冊 第六單元 與大自然和諧相處 第12課 感受大自然 第1框 感受大自然之美教學實錄 魯人版六三制
- 血漿吸附療法課件
- 人工挖孔樁施工危險源辨識與評價及應對措施
- 品管圈成果匯報——提高導管固定正確率PPT課件
- 第2講 麥克斯韋方程組
- 讀懂教材、讀懂學生、讀懂課堂,構建和諧有效的課堂教學
- 裝飾施工進度計劃網絡圖及橫道圖
- 機械畢業(yè)實習報告
- 材料科學與工程專業(yè) 畢業(yè)論文
- 糖尿病視網膜病變PPT課件
- 古詩分類講解五思鄉(xiāng)懷人詩
- 多極磁燃氣環(huán)保節(jié)能器-合力金科技
評論
0/150
提交評論