8051之中斷優先權實驗 8051之INT1中斷實驗 中斷優先權程式
8051之INT0中斷實驗
目的
瞭解中斷觸發及中斷流程原理。
使用材料
8051微電腦一片,包含八個顯示用LED,零件如下:
1. 8051單晶片微處理機1個(40 pin IC)
2. 74LS373位址鎖定1個(20 pin IC)
3. 2764A 8 Kbytes EPROM 1個(28 pin IC)
4. 12MHZ Xtal 石英振盪體 Crystal 1個
5. 10μf 電容1個
6. 20KΩ電阻1個
7. Tact Switch常開式重置開關1個
8. 30pf電容2個
9. LED單直徑3mm或5mm 8個
10. 470Ω 9pin排組1個
功能說明
(1)INT0腳為中斷請求輸入腳,觸發後,會跳到003H位址執行中斷程式。本實驗,將主程式之動作設為8個LED全暗。當INT0之按鈕按下時,LED將先亮一顆,再持續向左亮。
(2 )8051之中斷輸入腳有 INT0,INT1 兩支腳,觸發後所跳位址不同。它們皆可設為負緣觸發 (Falling Edge Triggered ) 或低準位觸發 ( Low Level Triggered );除非有中斷交握之動作時設準位觸發,否則一般應定為負緣觸發才適合。
(3)當中斷腳 ( INT0 )被觸發後,若已在中斷致能 ( EX0=1 ) 情況下 , 則中斷要求旗標 ( IE0 ) 會設立為1,即產生中斷,當 CPU 呼叫中斷服務程式,即自動清除 IE0 並執行中斷程式。嚴格的說,是由IE0 旗標要求中斷,而非 INT0 腳直接要求,故8051亦可直接以指令設定IE0而產生中斷0。
INT0中斷程式
ORG 00H
JMP START
ORG 03H 記憶體位址由03H開始存放
INC P1 中斷0產生時P1加1
RETI
ORG 30H
START:
SETB IT0 設INT0為負緣觸發
MOV IP,#01H 設INT0為高中斷優先權
MOV IE,#10000001B 致能INT0中斷
END目的
瞭解中斷觸發及中斷流程原理。
使用材料
8051微電腦一片,包含八個顯示用LED,零件如下:
1. 8051單晶片微處理機1個(40 pin IC)
2. 74LS373位址鎖定1個(20 pin IC)
3. 2764A 8 Kbytes EPROM 1個(28 pin IC)
4. 12MHZ Xtal 石英振盪體 Crystal 1個
5. 10μf 電容1個
6. 20KΩ電阻1個
7. Tact Switch常開式重置開關1個
8. 30pf電容2個
9. LED單直徑3mm或5mm 8個
10. 470Ω 9pin排組1個
功能說明
(1) INT1腳為中斷請求輸入腳,觸發後,會跳到13H位址執行中斷程式。本實驗,將主程式之動作設為8個LED全暗。當INT1之按鈕按下時,LED將先亮一顆,再持續向左亮。
(2 )8051之中斷輸入腳有 INT0,INT1 兩支腳,觸發後所跳位址不同。它們皆可設為負緣觸發 (Falling Edge Triggered ) 或低準位觸發 ( Low Level Triggered );除非有中斷交握之動作時設準位觸發,否則一般應定為負緣觸發才適合。
(3)當中斷腳(INT1)被觸發後,若已在中斷致能(EX1=1)情況下 , 則中斷要求旗標(IE1)會設立為1,即產生中斷,當CPU呼叫中斷服務程式,即自動清除IE1並執行中斷程式。嚴格的說,是由IE1旗標要求中斷,而非 INT1 腳直接要求,故8051亦可直接以指令設定IE1而產生中斷0。
INT1中斷程式
ORG 00H
JMP START
ORG 13H 記憶體位址由13H開始存放
INC P1 中斷0產生時P1加1
RETI
ORG 30H
START:
SETB IT1 設INT1為負緣觸發
MOV IP,#00000100B 設INT1為高中斷優先權
MOV IE,#10001000B 致能INT1中斷
END
目的
瞭解中斷優先權之原理及如何安排優先權順序
使用材料
8051微電腦一片,包含八個顯示用LED,零件如下:
1. 8051單晶片微處理機1個(40 pin IC)
2. 74LS373位址鎖定1個(20 pin IC)
3. 2764A 8 Kbytes EPROM 1個(28 pin IC)
4. 12MHZ Xtal 石英振盪體 Crystal 1個
5. 10μf 電容1個
6. 20KΩ電阻1個
7. Tact Switch常開式重置開關2個
8. 30pf電容2個
9. LED單直徑3mm或5mm 8個
10. 470Ω 9pin排組1個
功能說明
使PORT1的8支接腳一次只有一支腳為LOW,且一直向左旋轉不停。當同時觸發
INT0及INT1時,會先顯示閃滅,再出現四個燈輪流閃滅。
ORG 00H
JMP START
ORG 003H
JMP INT0_DRV
ORG 13H
JMP INT1_DRV
ORG 30H
START:MOV SP,#60 由記憶體位址61H開始存放
STEB IT0 設INT0為負緣觸發
STEB IT1 設INT1為負緣觸發
MOV IP,#00000100B 設INT1為高中斷優先權
MOV IE,#10000101B 致能INT0及 INT1中斷
MOV A,#11111110B
MAIN:MOV P1,A
MOV R5,#10
CALL DELAY
RL A
JMP MAIN
DELAY:MOV R6,#200
DE1:MOV R7,#250
DJNZ R7,$
DJNZ R6,DL1
DJNZ R5,DELAY
RET
INTO_DRV:PUSH PSW
SETB RS0 設定RS0為進位旗標
SETB RS1 設定RS1為進位旗標
MOV R1,#10
MOV A,#0fh
LP1:
MOV P1,A
MOV R5,#10
CALL DELAY
CPL A 將A值取反向
DJNZ R1,LP1
POP PSW
POP A
RETI
INT1_DRV:PUSH A
PUSH PSW
CLR RS0
SETB RS1
MOV R1,#10
MOV A,#01010101B
LP2:
MOV P1,A
MOV R5,#10
CALL DELAY
DJNZ R1,LP2
POP PSW
POP A
RETI
END