1. 程式人生 > >惠州學院-微控制器實驗1-P1口亮燈實驗

惠州學院-微控制器實驗1-P1口亮燈實驗

   計算機科學系實驗報告(首頁)

課程名稱

微控制器原理及應用

班級

14計科2班

實驗名稱

P1口亮燈實驗

教導教師

王明安

姓名

 張欽穎

學號

1414080901218

組號

17

日期

2016年10月13日


   



 

一、實驗目的

     1、熟悉程式設計和程式除錯

2、學習P1口的使用方法

3、學習延時子程式的編寫

 

二、實驗內容

P1口做輸出口,接八隻發光二極體,編寫程式,使發光二極體迴圈點亮,修改程式,改變延時常數,使發光二極體閃亮時間改變,並使發光二極體閃亮移位方向改變。

 

三、程式框圖


四、實驗步驟

1、用8芯線將P1.0~P1.7連至L1~L8;

2、執行程式HW01.asm,觀察發光二極體閃亮移位情況。

五、實驗結果

程式原始碼:

        ORG 0000H
        LJMPSE18
        ORG0080H
SE18:   MOVP1,#0FFH    ;送P1口
LO34:   MOVA,#0FEH     ;L1發光二極體點亮
LO33:   MOVP1,A
       	LCALLSE19      ;延時
        RLA            ;左移位
        SJMPLO33       ;迴圈
 
SE19:  MOV R6,#0A0H    ;延時子程式
LO36: MOVR7,#0FFH
LO35: DJNZR7,LO35
DJNZ R6,LO36
       RET
       END



改變延時常數,使發光二極體閃亮時間改變,並使發光二極體閃亮移位方向改變

原始碼:

       ORG 0000H
       LJMP SE18
       ORG 0080H
SE18:     MOV P1,#0FFH    ;送P1口
LO34:    MOV A,#0FEH     ;L1發光二極體點亮
LO33:    MOV P1,A
LCALL SE19      ;延時
LCALL SE19      ;延時
LCALL SE19      ;延時
LCALL SE19      ;延時
LCALL SE19      ;延時
LCALL SE19      ;延時
LCALL SE19      ;延時
LCALL SE19      ;延時
LCALL SE19      ;延時
 
       RR  A          ;右移位
       SJMP LO33      ;迴圈
 
SE19:   MOV R6,#0A0H    ;延時子程式
LO36:    MOV R7,#0FFH
LO35:    DJNZ R7,LO35
       DJNZ R6,LO36
        RET
        END

 

七、實驗結論、實驗體會

     此次實驗是微控制器上機操作的第一次實驗,由於此前已經在軟體實驗中接觸過所需的Keil軟體,遂在軟體安裝等方面沒有花費太多時間;實驗前半部分是將既定程式通過軟體連線至機箱執行,其實驗結果為LED燈從左到右依次點亮,在第二個燈點亮時前一個燈熄滅,形成流水燈效果,此部分沒有遇到太大的困難;更改延時程式部分,經過查詢,由於Keil該軟體不支援傳送立即數資料首位為子母位以及一些未知問題、且經過測試更改R6為#0A00H或者#0A000H均無法實現相應延時效果,其結果不是不能執行,即是程式報錯,我們遂採取下策,將原程式的延時子程式多次呼叫以實現LED燈亮滅間隔達到1S的效果;另外把左移指令RL改為右移指令RR,則可以使發光二極體閃亮方向改變。