單片機定時器實驗報告_第1頁
單片機定時器實驗報告_第2頁
單片機定時器實驗報告_第3頁
單片機定時器實驗報告_第4頁
單片機定時器實驗報告_第5頁
已閱讀5頁,還剩4頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、精選優質文檔-傾情為你奉上XXXX大學信息工程與自動化學院學生實驗報告( 2009 2010 學年 第 二 學期 )課程名稱:單片機 開課實驗室: 2010年 5月14日年級、專業、班學號姓名成績實驗項目名稱定時器實驗(十進制計數器)指導教師教師評語該同學是否了解實驗儀器原理 A.了解 B.基本了解 C.不了解 該同學的實驗能力 A.強 B.中等 C.差 該同學的實驗是否達到要求 A.達到 B.基本達到 C.未達到 實驗報告是否規范 A.規范 B.基本規范 C.不規范 實驗過程是否詳細記錄 A.詳細 B.一般 C.無 教師簽名: 年 月 日一實驗目的: 掌握定時器T0、T1的方式選擇和編程方法

2、,了解中斷服務程序的設計方法,學會實時程序的調試技巧。二實驗原理: MCS51單片機內設置了兩個可編程的16位定時器T0和T1,通過編程,可以設定為定時器和外部計數方式。T1還可以作為其串行口的波特率發生器。定時器T0由特殊功能寄存器TL0和TH0構成,定時器T1由TH1和TL1構成,特殊功能寄存器TMOD控制定時器的工作方式,TCON控制其運行。定時器的中斷由中斷允許寄存器IE,中斷優先權寄存器IP中的相應位進行控制。定時器T0的中斷入口地址為000BH,T1的中斷入口地址為001BH。定時器的編程包括:1) 置工作方式。2) 置計數初值。3) 中斷設置。4) 啟動定時器。定時器/計數器由四

3、種工作方式,所用的計數位數不同,因此,定時計數常數也就不同。在編寫中斷服務程序時,應該清楚中斷響應過程:CPU執行中斷服務程序之前,自動將程序計數器PC內容(即斷點地址)壓入堆棧保護(但不保護狀態寄存器PSW,更不保護累加器A和其它寄存器內容),然后將對應的中斷矢量裝入程序計數器PC使程序轉向該中斷矢量地址單元中以執行中斷服務程序。定時器T0和T1對應的中斷矢量地址分別為000BH和001BH。中斷服務程序從矢量地址開始執行,一直到返回指令“RETI”為止。“RETI”指令的操作一方面告訴中斷系統該中斷服務程序已經執行完畢,另一方面把原來壓入堆棧保護的斷點地址從棧頂彈出,裝入到程序計數器PC,

4、使程序返回到被到中斷的程序斷點處,以便繼續執行。因此,我們在編寫中斷服務程序時注意。1在中斷矢量地址單元放一條無條件轉移指令,使中斷服務程序可以靈活地安排在64K字節程序存儲器的任何空間。2在中斷服務程序中應特別注意用軟件保護現場,以免中斷返回后,丟失原寄存器、累加器的信息。3若要使執行的當前中斷程序禁止更高優先級中斷,可以先用軟件關閉CPU中斷,或禁止某中斷源中斷,在返回前再開放中斷。三實驗內容:編寫并調試一個程序,用AT89C51的T0工作方式1產生1s的定時時間,作為秒計數時間,當1s產生時,秒計數加1;秒計數到60時,自動從0開始。實驗電路原理如圖1所示。計算初值公式定時模式1 th0

5、=(216-定時時間) /256tl0=(216-定時時間) mod 256圖1 定時器實驗電路原理圖四實驗步驟:1打開Proteus ISIS編輯環境,按下表所列的元件清單添加元件。實驗所用元件清單元件名稱所屬類所屬子類AT89C51Microprocessor ICs8051 FamilyCAPCapacitorsGenericCAP-ELECCapacitorsGenericCRYSTALMiscellaneous-RESResistorsGeneric7SEG-COM-CAT-GRNOptoelectronics7-Segment DisplaysPULLUPModelling Pri

6、mitivesDigitalMiscellaneousAT889C51元件,界面如圖所示: 元件全部添加時,點擊所添加的文件,并點擊右鍵,選擇“編輯屬性”;元件全部添加后,在Proteus ISIS的編輯區域中按實驗原理圖連接硬件電路,連接結果如下圖所示;2按實驗要求在KeilC中創建項目,編輯、編譯程序,程序如下圖所示; 由編譯結果可見,程序無誤,可進行導入。3將編譯生成的目標碼文件(后綴為.Hex)傳入Proteus的實驗電路中。在proteus軟件已經完成實驗電路圖中選中元件“AT89C51”,單擊元件,添加已生成的.hex文件,點擊“確定”,即可導入,如下圖所示;4在Proteus I

7、SIS仿真環境中運行程序,觀察實驗運行結果并記錄。 點擊左下角的運行按鈕,即可看到運行結果,從00開始循環計數,秒計數到60時,自動從0開始,點擊暫停按鈕,記錄實驗結果如下圖所示: 當計數器到59后,自動從00開始,如下圖所示; 由此可見,電路連接正確,源代碼正確,實現了實驗的相應要求。五參考程序:second equ 30hcount equ 31h org 00h ljmp start org 0bh ljmp int_t0start: mov second,#00h mov count,#00h mov dptr,#table ;段碼表首址 mov p0,#3fh mov p2,#3fh

8、 mov tmod,#01h mov th0,#(65536-50000)/256 mov tl0,#(65536-50000) mod 256 ;定時50ms setb tr0 mov ie,#82h sjmp $int_t0: mov th0,#(65536-50000)/256 mov tl0,#(65536-50000) mod 256 inc count mov a,count cjne a,#20,i2 ;是否到1s mov count,#00h inc second mov a,second cjne a,#60,i1 ;是否到60s mov second,#00hi1: mov

9、 a,second mov b,#10 div ab movc a,a+dptr mov p0,a mov a,b movc a,a+dptr mov p2,ai2: retitable: db 3fh,06h,5bh,4fh,66h db 6dh,7dh,07h,7fh,6fh end六思考題:若用定時器1方式2,程序如何修改?答:程序修改如下:SECOND EQU 30HCOUNT EQU 31HORG 00HLJMP STARTORG 1BH ;T1中斷入口地址LJMP INT_T1 START: MOV SECOND,#00HMOV COUNT,#00HMOV DPTR,#TABLE

10、;段碼表首址MOV P0,#3FHMOV P2,#3FHMOV TMOD,#20H ;T1模式2,定時MOV TH1,#06h ;定時500微秒MOV TL1,#06h SETB TR1MOV IE,#88HSJMP $INT_T1: INC COUNTMOV A,COUNTCJNE A,#2000,I2 ;是否到1sMOV COUNT,#00HINC SECONDMOV A,SECONDCJNE A,#60,I1 ;是否到60sMOV SECOND,#00HI1: MOV A,SECONDMOV B,#10DIV ABMOVC A,A+DPTRMOV P0,AMOV A,BMOVC A,A+DPTRMOV P2,AI2: RETITABLE: DB 3FH,06H,5BH,4FH,66HDB 6DH,7DH,07H,7FH,6FHEND七實驗總結:通過本次實驗,使我對Proteus 7

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論