惠州學院-微控制器實驗2-P1口轉彎燈實驗
計算機科學系實驗報告(首頁)
課程名稱 |
微控制器原理及應用 |
班級 |
14計2班 |
|||||
實驗名稱 |
P1口轉彎燈實驗 |
教導教師 |
王明安 |
|||||
姓名 |
張欽穎 |
學號 |
1414080901218 |
組號 |
17 |
日期 |
2016/10/20 |
|
一、實驗目的
進一步瞭解P1口的使用,學習組合語言程式設計方法及除錯技巧。
二、實驗目的
P1.0接開關上撥為5V,左轉彎燈閃亮,P1.1接開關為5V時右轉彎燈閃亮,P1.0,P1.1接開關同時接5V或接地時,轉彎燈均不閃亮。
三、實驗程式框圖
四、實驗原理圖
五、實驗步驟
1、P1.0 接開關K1,P1.1接開關K2,用雙頭線將P1.4~P1.7分別接到發光二極體L1、L2、L7、L8;
2、連續執行程式HW02.asm,撥動開關K1、K2,應看到轉彎燈正確閃亮;
3、再用單步方式除錯本程式時需修改延時子程式,(例可把延時程式第一個位元組改成返回指令22H),以便觀察。
五、實驗結果
程式原始碼
ORG 0000H LJMP PX00 ORG 0080H PX00: MOV P1,#0FFH ;初始化 PX03: MOV A,P1 MOV B,A ANL A,#03H CJNEA,#01H,PX01 ;滿足只是P1.0為高條件 JB 00H,PX04 ;閃爍標誌位 CLR P1.4 CLR P1.5 ;開右燈 SETB P1.6 SETB P1.7 ;關左燈 MOV R2,#20H LCALL DELY ;延時 SETB 00H ;置標誌位 LJMP PX03 ;繼續查詢狀態 PX04: SETB P1.4 SETB P1.5 SETB P1.6 SETB P1.7 ;關燈 MOV R2,#20H LCALL DELY ;延時 CLR 00H ;清標誌位 AJMP PX03 ;繼續查詢狀態 PX01: CJNEA,#02H,PX02 ;滿足只是P1.1為高條件嗎? JB 01H,PX05 ;判斷標誌位 SETB P1.4 SETB P1.5 ;開左燈 CLR P1.6 CLR P1.7 ;關右燈 MOV R2,#20H LCALL DELY ;延時 SETB 01H ;置標誌位 LJMP PX03 ;繼續查詢 PX05: SETB P1.4 SETB P1.5 SETB P1.6 ;關燈 SETB P1.7 MOV R2,#20H LCALL DELY ;延時 CLR 01H ;置標誌位 LJMP PX03 ;繼續查詢狀態 PX02: SETB P1.4 SETB P1.5 SETB P1.6 SETB P1.7 ;關燈 LJMP PX03 ;繼續 DELY: PUSH 02H ;延時 DEL2: PUSH 02H DEL3: PUSH 02H DEL4: DJNZ R2,DEL4 POP 02H DJNZ R2,DEL3 POP 02H DJNZ R2,DEL2 POP 02H DJNZ R2,DELY RET END
實驗現象:在未撥動K1與K2開關時,P1各個LED燈不亮;當撥動開關K1,關閉開關K2時,P1左轉向燈亮(L1與L2);當關閉開關K1,撥動開關K2時,P1右轉向燈亮(L7與L8);當同時撥動開關K1與K2時,P1各個LED燈不亮。
實驗截圖
未撥動K1與K2開關
撥動開關K1,關閉開關K2
關閉開關K1,撥動開關K2
同時撥動開關K1與K2
更改程式原始碼
ORG 0000H
LJMPPX00
ORG0080H
PX00: MOVP1,#0FFH ;初始化
PX03: MOV A,P1
MOVB,A
ANLA,#03H
CJNEA,#01H,PX01 ;滿足只是P1.0為高條件
JB00H,PX04 ;閃爍標誌位
CLRP1.4
CLRP1.5 ;開右燈
SETBP1.6
SETBP1.7 ;關左燈
MOVR2,#80H
LCALLDELY ;延時
SETB00H ;置標誌位
LJMPPX03 ;繼續查詢狀態
PX04: SETBP1.4
SETBP1.5
SETBP1.6
SETBP1.7 ;關燈
MOV R2,#80H
LCALLDELY ;延時
CLR00H ;清標誌位
AJMPPX03 ;繼續查詢狀態
PX01: CJNEA,#02H,PX02 ;滿足只是P1.1為高條件嗎?
JB01H,PX05 ;判斷標誌位
SETBP1.4
SETBP1.5 ;開左燈
CLRP1.6
CLRP1.7 ;關右燈
MOV R2,#80H
LCALLDELY ;延時
SETB01H ;置標誌位
LJMPPX03 ;繼續查詢
PX05: SETBP1.4
SETBP1.5
SETBP1.6 ;關燈
SETBP1.7
MOV R2,#80H
LCALLDELY ;延時
CLR01H ;置標誌位
LJMPPX03 ;繼續查詢狀態
PX02: SETBP1.4
SETBP1.5
SETBP1.6
SETBP1.7 ;關燈
LJMPPX03 ;繼續
DELY: PUSH02H ;延時
DEL2: PUSH02H
DEL3: PUSH02H
DEL4: DJNZR2,DEL4
POP02H
DJNZR2,DEL3
POP02H
DJNZR2,DEL2
POP02H
DJNZR2,DELY
RET
END
實驗現象:更改延時程式,是LED發光二極體閃亮時間改變。
五、實驗體會
此時實驗較為簡單,在按照電路圖連線,接著執行程式碼指令即可,但是修改程式,使得延時增加,LED發光二極體閃亮時間改變,就涉及到DJNZ這條令。DJNZ RN,REL 是一條件轉移指令,先將工作暫存器Rn中的數減“1”,判斷結果是否為“0”,不為“0”程式就跳轉到行標為REL的地方執行,否則,為“0”就不轉移,利用這條指令的功能修改增大R2暫存器變數的值,通過4個巢狀迴圈中使用DJNZ指令,這樣就能使得延時增加,LED發光二極體閃亮時間改變。