單片機(jī)實(shí)驗(yàn)報(bào)告——LED燈控制器._第1頁(yè)
單片機(jī)實(shí)驗(yàn)報(bào)告——LED燈控制器._第2頁(yè)
單片機(jī)實(shí)驗(yàn)報(bào)告——LED燈控制器._第3頁(yè)
單片機(jī)實(shí)驗(yàn)報(bào)告——LED燈控制器._第4頁(yè)
單片機(jī)實(shí)驗(yàn)報(bào)告——LED燈控制器._第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、微機(jī)實(shí)驗(yàn)報(bào)告LED燈控制器指導(dǎo)教師: 專業(yè)班級(jí) : 姓名: 學(xué)號(hào): 聯(lián)系方式:任務(wù)要求實(shí)驗(yàn)?zāi)康模杭由顚?duì)定時(shí) / 計(jì)數(shù)器、中斷、 IO 端口的理解,掌握定時(shí) / 計(jì)數(shù)器、中斷的應(yīng) 用編程技術(shù)及中斷程序的調(diào)試方法。實(shí)驗(yàn)內(nèi)容:利用 C8051F310單片機(jī)設(shè)計(jì)一個(gè)LED燈控制器 主要功能和技術(shù)指標(biāo)要求:1. LED 燈外接于 P0.0 端。2. LED燈分別按2Hz, 1Hz和0.5Hz三種不同頻率閃動(dòng),各持續(xù) 10s。3. 在LED燈開始和停止閃爍時(shí)蜂鳴器分別鳴響1次。4. 利用單片機(jī)內(nèi)部定時(shí)器定時(shí),要求采用中斷方式。提高要求:使用按鍵(KINT)控制LED燈閃爍模式的切換。設(shè)計(jì)思路C8051F3

2、10單片機(jī)片上晶振為 24.5MHz,采用8分頻后為3.0625MHz,輸入時(shí)鐘信 號(hào)為 48 個(gè)機(jī)器周期, 所以 T1 定時(shí)器采用定時(shí)方式 1,單次定時(shí)最長(zhǎng)可以達(dá)到的時(shí)間為 1.027s ,可以滿足 0.5Hz 是的定時(shí)要求?;A(chǔ)部分:給TMOD賦值10H,即選用T1定時(shí)器采用定時(shí)方式 1,三種頻率對(duì)應(yīng)的半周期時(shí) 間為 0.25s、0.5s、1s。計(jì)算得需給 TH1 和 TL1 為 C1H B1H; 83H、63H; 06H、C6H= 要使閃爍持續(xù)10s,三種模式需要各循環(huán) 40、20、10次。用LOOP3:MOV C,PSW.5 ; PSW.5為標(biāo)志位,進(jìn)定時(shí)器中斷后置一JNC LOOP3

3、 代替踏步程序等待中斷,以便中斷完后回到主程序繼續(xù)向下執(zhí)行。為了減少代碼長(zhǎng)度,可以采用循環(huán)結(jié)構(gòu),循環(huán)主題中,將R1、R2分別賦給TH1、TL1,R7為循環(huán)次數(shù)(用 DJNZ語(yǔ)句實(shí)現(xiàn));定時(shí)中斷里,重新給 TH1 TL1賦值時(shí)同理。 這樣,循環(huán)時(shí)只要把定時(shí)時(shí)間和循環(huán)次數(shù)賦給R1、R2、R7即可,達(dá)到減少代碼長(zhǎng)度的效果。蜂鳴器也采用 T1 定時(shí)方式 1 ,定時(shí)一秒。提高部分:采用外部中斷0,下降沿觸發(fā)。外部中斷程序里置標(biāo)志位 PSW.1和RO, PSW.5用于 判斷執(zhí)行完一種模式后,是否跳出循環(huán)結(jié)束。 R0用于判斷執(zhí)行何種模式,每按一次后 RO加 一,第四次時(shí)就將 R0和PSW.5清零,這樣程序就

4、又回到了基礎(chǔ)部分的循序執(zhí)行。因?yàn)橹袛喑绦驁?zhí)行完后, 會(huì)回到原來(lái)程序中斷的地方, 繼續(xù)向下執(zhí)行而給程序運(yùn)行帶來(lái) 諸多不便。所以,查看了 RETI語(yǔ)句的實(shí)現(xiàn)形式:將棧頂壓入 PCH POP后再將棧頂壓入 PCL ,利用這個(gè)定義,只要將需要返回的地址壓入PCH和PCL就能返回到指定地址。三、資源分配P0.0:為L(zhǎng)ED燈控制端口,高電平觸發(fā)。P3.1 :為蜂鳴器控制端口,高電平觸發(fā)。P0.1 :為KINT鍵控制端口,下降沿觸發(fā)。R1、R2:用于存放計(jì)時(shí)器計(jì)時(shí)數(shù)據(jù),R1賦給TH1 R2賦給TL1。R7 :存放三種模式的循環(huán)次數(shù)。R0 :在外部中斷程序中賦值,用于判斷采用何種模式。PSW.1 :為標(biāo)志位,

5、用于等待定時(shí)器中斷,中斷執(zhí)行完清零,并在中斷處向下繼續(xù)執(zhí)行程序。PSW.5 :為標(biāo)志位,用于判斷執(zhí)行一種中斷還是三種,在外部中斷程序中改變。四、流程圖1. 主程序流程圖(含提高部分)開始初始化允許外部中斷0 ,下降沿觸發(fā)允許定時(shí)器1中斷,定時(shí)方式1R0=02HNYR002HNR1 1Q6H R2 歸 0C6H R7b0AHR1.0C1H R21 0B1H R71 28HR 83H R2i 63H R7-1J4H14H跳轉(zhuǎn)到case2N等待外部中斷3定時(shí)器中斷流程圖2外部中斷流程圖C定時(shí)器溢出觸發(fā)中斷重新賦值TH1 |R1TL1 1R2標(biāo)志位PSW.1 置關(guān)定時(shí)LED(P0.0)取反五、源代碼

6、(含文件頭說(shuō)明、資源使用說(shuō)明、語(yǔ)句行注釋) *J;Filename: LED 燈閃爍 .asm;Decription: LED LED 燈分別按 2Hz, 1Hz 和 0.5Hz 三種不同頻率閃動(dòng),各持續(xù)10s。;在LED燈開始和停止閃爍時(shí)蜂鳴器分別鳴響1次。按一次按鈕,LED以; 2Hz頻率閃動(dòng); 按第二次以 1Hz 頻率閃動(dòng);按第二次以 0.5Hz 頻率閃動(dòng);;第四次時(shí)又順序執(zhí)行三種模式(可以在任何時(shí)候按按鈕,不必等上一模;式閃爍完);Designed by: gxy;Date:2012.10.31 *$include (C8051F310.inc)燈控制端口蜂鳴器控制端口LED BIT

7、P0.0 ;LEDBEEP BIT P3.1;KINT BIT P0.1 ;KINT按鈕端口ORG 0000H LJMP MAINORG 0003HLJMP T_KINTORG 001BHLJMP TIME1復(fù)位入口外部中斷 0 入口定時(shí)器 1 入口MAIN: LCALL Init_DeviceMOV R0,#00HCLR LED;CLR BEEPCLR PSW.1CLR PSW.5初始化配置關(guān) led 燈標(biāo)志位 1 清零標(biāo)志位 2 清零SETB EX0SETB IT0MOV TMOD,#10HSETB ET1外部中斷 0 允許 下降沿延觸發(fā) 置 T1 為定時(shí)方式 1 定時(shí)器 T1 允許中斷

8、* ;外部中斷返回處,選擇模式 *CHOO: CJNE R0,#02H,LOOP ; 選擇模式LJMP CASE2 ;R0 等于 02H, 跳轉(zhuǎn)到模式 2LOOP: JC CASE1;R0小于 02H, 跳轉(zhuǎn)到模式 1LJMP CASE3;R0大于 02H, 跳轉(zhuǎn)到模式 3 *J;模式1 , 2Hz閃爍10s *CASE1:MOV R1,#0C1HMOV R2,#0B1HMOV R7,#28HLJMP START *J;模式2, 1Hz閃爍10s *JCASE2:MOV R1,#83HMOV R2,#63HMOV R7,#14HLJMP START *J; 模式 3, 0.5Hz 閃爍 10s

9、 *CASE3:MOV R1,#06HMOV R2,#0C6HMOV R7,#0AHLJMP START *J;閃爍控制程序 *JSTART:LCALL VOICE ; 蜂鳴 1sMOV TH1,R1MOV TL1,R2MOV A,R7BACK: SETB TR1J開定時(shí)LOOP1:MOV C,PSW.5J等待中斷,中斷會(huì)置一標(biāo)志位 PSW.5JNC LOOP1 ;中斷結(jié)束,繼續(xù)向下運(yùn)行CLR PSW.5;清零標(biāo)志位DJNZ R7,BACKJ循環(huán),使閃爍達(dá)到 10sMOV C,PSW.1JC THERE;PSW.1為 1 則只執(zhí)行一種模式跳轉(zhuǎn)到; 部中斷CJNE A,#14H,LOOP2J順序

10、執(zhí)行時(shí),判斷下一模式LJMP CASE3;A=14H則跳轉(zhuǎn)到模式 3LOOP2:JC THERELJMP CASE2;A14H則跳轉(zhuǎn)到模式 2THERE等待夕卜THERE:LCALL VOICE; 蜂鳴 1sSJMP $ ;踏步,等待外部中斷 * J; 蜂鳴器響 1s *JMOV TH1,#06HMOV TL1,#0C6HCLR PSW.5SETB TR1 ;開定時(shí)器 1LOOP3:MOV C,PSW.5; 等待中斷JNC LOOP3CLR BEEP; 關(guān)蜂鳴RET *J; 外部中斷 0 *T_KINT:SETB PSW.1 ;標(biāo)志位 1 置一,用于判斷是否順序執(zhí)行三種模式INC R0;R0加

11、一,用于判斷何種模式CJNE R0,#04H,K_RETCLR PSW.1;R0到 04H 時(shí)清零標(biāo)志位和 R0MOV R0,#00HK_RET: CLR TR1J關(guān)定時(shí)器 1POP SPPOP SP ;出棧兩次MOV DPTR,#0036H;0036H 為選擇處地址PUSH DPL;DPL壓入棧頂PUSH DPH;DPH壓入棧頂RETI ;返回到知道位置 *J;定時(shí)器 1 中斷 *JTIME1: MOV TH1,R1MOV TL1,R2 ; 重新置數(shù)SETB PSW.5 ; 標(biāo)志位置一CLR TR1關(guān)定時(shí)CPL LED;LED取反RETI *J; 初始化配置 *JPCA_Init: ; 關(guān)閉

12、看門狗 anl PCA0MD, #0BFh mov PCA0MD, #000h retTimer_Init:mov TMOD, #010hmov CKCON, #002h ret定時(shí)器 1 初始化配置Port_IO_Init:mov XBR1, #040h retInterrupts_Init:mov IE, #009h retInit_Device:lcall PCA_Initlcall Timer_Initlcall Port_IO_Initlcall Interrupts_Initret端口初始化配置中斷初始化配置END六、程序測(cè)試方法與結(jié)果、軟件性能分析1、軟件調(diào)試總體界面:r5T&

13、r7 Sndn DdU QrfHMW QxW Q紳 Q朋2 恥 LJMP K1IN2LE OHG口 DD3 日捉:W訊加02001E LJMFMAItf(CEOOlE)22 : 14MP T KIHT|1-/ 固 JletUdmTimer/C-OLinter 1|n: 13 Imtr-CouicrTmer;円爍攔彳一邏.序Trnf-tOllff 1 McKte如E* TC $ stUsSBCQQ沁0x00QsdJTDjTOxnoo cowoooo01(0000000SuWT: LCALL TOICEHOT rEH,.RlHOV TLhR2 14OV ArR7 BAK: STB 1RL IiOO

14、PXNOT CrPM.5JHC LCOP1CLR旳幕丐DJWg MPBAO!NOV CrPSW.l JC THERECJWELJMPLOOP2:JCLUMPAFfl4HPLOCP2OL5E3IKE&ECASE:Fr-zijert SiRegisItrsTOON:TH:|MaOKk r riM rCoiwlTOCOTL1i;-.t r TFIr TFI1 r GATH p INT11TParallel Port 33:rt3P3HDIN *FF R5PUUP3 IfF 酬s 詁Ptn:|acFF PFI7PI?PDOUT |MK) rTTTTM2、定時(shí)器1測(cè)試軟件調(diào)試時(shí)利用標(biāo)志位用 LOOP1:

15、MOV C,PSW.5JNC LOOP1語(yǔ)句,可以在中斷返回后,在中斷處繼續(xù)向下執(zhí)行代碼硬件調(diào)試時(shí),可以順序以2Hz, 1Hz和0.5Hz三種不同頻率閃動(dòng),各持續(xù)10s,并且蜂鳴器鳴叫1s正常3、定時(shí)循環(huán)代碼測(cè)試:開始時(shí),R7為28H例如執(zhí)行模式1定時(shí)0.25s,要循環(huán)40次才能跳出一次循環(huán)后R7為27HRegister| Value-Kegsr0OxDlrlOkcIOsblr30x00r4OxOCrSOxOCr60x00Ox2S|Regi sterValue-1 Regsr0OkOIrlOkcIr2OkS6r3OsOOr4Ok90rSOkDOr&OkOO|r7OkZTJa:52口R71061

16、06107 7曲110HI112113114115re117118119 住20I0E907U07107207307407507S07707B079 oeoOfflBACK: SETH TRIOx6S0x000x034、外部中斷測(cè)試如圖,軟件調(diào)試時(shí),進(jìn)入中斷程序執(zhí)行到RETI后,DPTF被賦為0036H, pc在OOACH處所以,定時(shí)循環(huán)程序正常古Sled .asm二 K1NT:SETE PSW.LCJNE RDfK RETCLR PSW.lI40V RO, #OCHMOV DPTR,FUSE DELPUSH DPEOs280x000x01 OxOb 0x0036C:QxOOSE3306185

17、910.79670873OxS2sp_maxdptr PC $states0x280x000x003S C:OxOOA 3062TL71.0000703& 0x82;外部中斷0RETI跳出循環(huán)時(shí),R7為0tteci ster0x01 OmcI0x000x90OkOO OjcOOsp_max dptr FC $ztatez:0x0 26ECfFl(OxDO.1)uxuu0x00A2D1MOVJC THERE5TAT:LCALL VOICEJNC LOOF1CLR PSW.5DJNE R7,3ACKC,PSW .3JC THERE再執(zhí)行一步rl0x27aOisebOmOOspQxO 1OxOldp

18、tr0x0036FC $C:0x00353062722sec1 00007249psw0x62567 8 901234 一03030303030404040404MCfV TMOEfSETE ET1:模式2HZ|ZHOC: CJNE R0f *02H,LOOFLJH? CASE2LOCP: JC CASE!LJMP CA5E3CA5E3 =匚:0x00537 8 9 00404M05LJMP START2 A3 El :MOfVMOVMOVRlr +301R7,#23Pc在0036H處,返回到了指定位置。所以,這說(shuō)明不管程序運(yùn)行到了哪里,只要按下KINT鍵,就會(huì)返回到指定位置,選擇下一種模式運(yùn)行。Program Size: data=8.0 xdata=O code=219代碼利用合理空行和注釋,不僅在視覺上美化了,而且讓各個(gè)子段程序的功能一目了然,方便調(diào)試和檢錯(cuò)硬件調(diào)試時(shí),在 C8051F310單片機(jī)開發(fā)板上跑代碼:不按KINT鍵時(shí),LED燈以2Hz, 1Hz和0.5Hz三種不同頻率閃動(dòng),各持續(xù)10s,在開始、結(jié)束和切換模式時(shí),蜂鳴器都響1s,按下一次時(shí),LED燈以2Hz閃爍10s后結(jié)束;按下兩次時(shí),LED燈以1Hz閃爍10s后結(jié)束;按下三次時(shí),LED燈以0.5Hz閃爍10s后結(jié)束;當(dāng)按下第四次時(shí),又切換回順序執(zhí)行三種模

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論