本帖最后由 時(shí)光無痕 于 2017-12-22 20:05 編輯
硬件實(shí)驗(yàn)十一 外部中斷實(shí)驗(yàn)(51/96) 姓名:袁*杰 學(xué)號:1517623
一、實(shí)驗(yàn)要求
用單次脈沖申請中斷,在中斷處理程序中對輸出信號進(jìn)行反轉(zhuǎn)。
二、實(shí)驗(yàn)?zāi)康?/font>
1、學(xué)習(xí)外部中斷技術(shù)的基本使用方法。
2、學(xué)習(xí)中斷處理程序的編程方法。
三、實(shí)驗(yàn)電路及連線
0.png (11.6 KB, 下載次數(shù): 50)
下載附件
2017-12-21 22:58 上傳
連線
| 連接孔 1
| 連接孔 2
| 1
| P1.0
| L0
| 2
| 單脈沖輸出
| INT0 (51 系列)
| 2
| 單脈沖輸出
| EINT (96 系列)
|
四、實(shí)驗(yàn)說實(shí)明
中斷服務(wù)程序的關(guān)鍵是:
1.保護(hù)進(jìn)入中斷時(shí)的狀態(tài),并在退出中斷之前恢復(fù)進(jìn)入時(shí)的狀態(tài)。
2.必須在中斷程序中設(shè)定是否允許中斷重入,即設(shè)置 EXO 位。
3.對于 80C196,要選擇相應(yīng)的中斷源,并設(shè)置中斷屏蔽寄存器的相應(yīng)位。
本例中使用了 INTO 中斷(80C196 為EXTINT 中斷),一般中斷程序進(jìn)入時(shí)應(yīng)保護(hù) PSW,
ACC 以及中斷程序使用但非其專用的寄存器。本例的中斷程序保護(hù)了 PSW,ACC 等三個(gè)寄存器并且在退出前恢復(fù)了這三個(gè)寄存器。另外中斷程序中涉及到關(guān)鍵數(shù)據(jù)的設(shè)置時(shí)應(yīng)關(guān)中斷,即設(shè)置時(shí)不允許重入。本例中沒有涉及這種情況。
INTO(P32)端(80C196 為 EINT 端)接單次脈沖發(fā)生器。P1.0 接 LED 燈,以查看信號反轉(zhuǎn).
五 實(shí)驗(yàn)框圖:
0.png (11.76 KB, 下載次數(shù): 67)
下載附件
2017-12-21 22:59 上傳
+
單片機(jī)源程序如下:
- COUNT_INT EQU 30H
- LEDVALUE EQU 31H
- ORG 0000H
- LJMP START
- ORG 001BH
- LJMP Timer1Interrupt
-
- START:
- MOV SP,#60H
- MOV COUNT_INT,#0
- MOV LEDVALUE,#01H
- LCALL InitTimer1
-
- LOOP:
- MOV A,LEDVALUE
- MOV P2,A
- LJMP LOOP
-
- InitTimer1:
- MOV TMOD,#10H;定時(shí)器T1為工作方式1,產(chǎn)生50ms定時(shí)
- MOV TH1,#3CH
- MOV TL1,#0B0H
- SETB EA
- SETB ET1
- SETB TR1
- RET
-
- Timer1Interrupt:
- PUSH DPH
- PUSH DPL
- PUSH ACC
- MOV TH1,#3CH
- MOV TL1,#0B0H
- ;========================
- INC COUNT_INT
- MOV A,COUNT_INT;每50ms加1,
- CJNE A,#2,Timer1Interrupt_EXIT;100ms
- MOV COUNT_INT,#0
- MOV A,LEDVALUE
- RL A
- MOV LEDVALUE,A
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
外部中斷.docx
(24.59 KB, 下載次數(shù): 18)
2017-12-21 19:14 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|