<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 實(shí)驗(yàn)二、單片機(jī)的中斷處理

          實(shí)驗(yàn)二、單片機(jī)的中斷處理

          作者: 時(shí)間:2016-11-23 來源:網(wǎng)絡(luò) 收藏
          一、

          ORG 0000H

          本文引用地址:http://www.ex-cimer.com/article/201611/320488.htm

          AJMP MAIN

          ORG 0209H

          MAIN: MOV SP,#50H PC=0209H

          MOV 30H,#1

          MOV 31H,#2

          MOV 32H,#3

          MOV DPTR,#TABLE TABLE=040EH

          MOV A,30H

          LCALL SQR PC=021AH,當(dāng)前指針為021DH,

          mov b,#7 SP=50H

          push b

          MOV R1,A SP=51H,51H=07H

          MOV A,31H

          LCALL SQR PC=0225H,當(dāng)前指針為0228H

          mov b,#3 SP=51H

          push b

          ADD A,R1 SP=52H,52H=03H

          MOV R1,A

          MOV A,32H

          LCALL SQR PC=0231H,當(dāng)前指針為0234H

          pop b SP=52H,B=06H

          ADD A,R1 SP=51H,B=03H

          MOV 33H,A

          ORG 0309H

          LOOP:SJMP LOOP

          ORG 0409H

          SQR: MOVC A,@A+DPTR PC=0409H 第一次調(diào)用:SP=52H,51H=1DH,52H=02H

          第二次調(diào)用:SP=53H,52H=28H,53H=02H

          第三次調(diào)用:SP=54H,53H=34H,54H=02H

          mov b,#6

          RET

          TABLE: DB 00,01,04,09,16,25,36,49,64,81

          END

          二、外中斷INT0的響應(yīng)。

          程序如下:

          ORG 0000H

          LJMP MAIN

          ORG 0003H ;/INT0的入口地址

          LJMP INT

          ORG 0209H

          MAIN: MOV SP,#30H

          MOV A,#0FEH

          SETB EA ;CPU開中斷

          SETB EX0 ;允許/INT0中斷

          SETB IT0 ;設(shè)置INT0的中斷觸發(fā)類型

          LOOP: MOV P1,A

          LCALL DELAY

          RL A ;右移A中的數(shù)據(jù),以實(shí)現(xiàn)亮點(diǎn)流動(dòng)

          LJMP LOOP

          ORG 0309H

          INT: PUSH ACC ;保存現(xiàn)場(chǎng)

          MOV A,#00H

          MOV R3,#08H ;閃爍8次

          LOOP1: MOV P1,A

          CPL A ;將A中的內(nèi)容取反,以實(shí)現(xiàn)亮滅

          LCALL DELAY

          DJNZ R3,LOOP1

          POP ACC ;恢復(fù)現(xiàn)場(chǎng)

          RETI

          ORG 0409H

          DELAY: MOV R0,# 100

          D1: MOV R1,#0FFH

          D2: MOV R2,#0FFH

          D3: DJNZ R2,D3

          DJNZ R1,D2

          DJNZ R0,D1

          RET

          END

          分析:在單脈沖鍵按下之前,LED處于一個(gè)亮點(diǎn)流動(dòng)的狀態(tài)。采用中斷方式,當(dāng)按下單脈沖鍵時(shí),LED狀態(tài)改為同時(shí)閃爍。閃爍8次再恢復(fù)原來的亮點(diǎn)流動(dòng)。

          2、同級(jí)別的外中斷INT0和INT1的響應(yīng)。

          程序如下:

          ORG 0000H

          LJMP MAIN

          ORG 0003H ;/INT0的入口地址

          LJMP T0INT

          ORG 0013H ;/INT1的入口地址

          LJMP T1INT

          ORG 0209H

          MAIN: MOV SP,#30H

          MOV A,#0FEH

          SETB EA ;CPU開中斷

          SETB EX0 ;允許/INT0中斷

          SETB IT0 ;設(shè)置INT0的中斷觸發(fā)類型

          SETB EX1 ;允許/INT1中斷

          SETB IT1 ;設(shè)置INT1的中斷觸發(fā)類型

          ;SETB PX1 ;設(shè)置/INT1為高優(yōu)先級(jí)(將在步驟三中用到)

          LOOP: MOV P1,A

          LCALL DELAY

          RL A ;右移A中的數(shù)據(jù),以實(shí)現(xiàn)亮點(diǎn)流動(dòng)

          LJMP LOOP

          ORG 0309H

          T0INT: PUSH ACC ;保存現(xiàn)場(chǎng)

          MOV A,#00H

          MOV R3,#08H ;閃爍8次

          LOOP1: MOV P1,A

          CPL A ;將A中的內(nèi)容取反,以實(shí)現(xiàn)亮滅

          LCALL DELAY

          DJNZ R3,LOOP1

          POP ACC ;恢復(fù)現(xiàn)場(chǎng)

          RETI

          ORG 0409H

          T1INT: PUSH ACC ;保存現(xiàn)場(chǎng)

          MOV A,#55H ;同時(shí)亮滅4個(gè)

          MOV R4,#08H ;閃爍8次

          LOOP2: MOV P1,A

          CPL A

          LCALL DELAY

          DJNZ R4,LOOP2

          POP ACC ;恢復(fù)現(xiàn)場(chǎng)

          RETI

          ORG 0509H

          DELAY: MOV R0,# 100

          D1: MOV R1,#0FFH

          D2: MOV R2,#0FFH

          D3: DJNZ R2,D3

          DJNZ R1,D2

          DJNZ R0,D1

          RET

          END

          分析:在單脈沖鍵按下之前,LED處于一個(gè)亮點(diǎn)流動(dòng)的狀態(tài)。采用中斷方式,當(dāng)按下INT0的單脈沖鍵時(shí),LED狀態(tài)改為同時(shí)閃爍,閃爍8次再恢復(fù)原來的亮點(diǎn)流動(dòng);當(dāng)按下INT1的單脈沖鍵時(shí),LED狀態(tài)改為同時(shí)亮滅4個(gè),亮滅8次再恢復(fù)原來的亮點(diǎn)流動(dòng)。當(dāng)同時(shí)按下INT0和INT1的當(dāng)脈沖鍵時(shí),單片機(jī)先響應(yīng)外中斷INT0,然后再響應(yīng)外中斷INT1。

          3、不同級(jí)別的外中斷INT0和INT1的響應(yīng)。

          在步驟二的主程序中加多一條指令:SETB PX1 ;設(shè)置/INT1為高優(yōu)先級(jí)

          分析:在單脈沖鍵按下之前,LED處于一個(gè)亮點(diǎn)流動(dòng)的狀態(tài)。采用中斷方式,當(dāng)按下INT0的單脈沖鍵時(shí),LED狀態(tài)改為同時(shí)閃爍,閃爍8次再恢復(fù)原來的亮點(diǎn)流動(dòng);如果此時(shí)按下INT1的單脈沖鍵時(shí),由于INT1的優(yōu)先級(jí)比INT0的優(yōu)先級(jí)高,所以CPU將響應(yīng)高級(jí)中斷請(qǐng)求,即LED狀態(tài)改為同時(shí)亮滅4個(gè),亮滅8次后,再返回低級(jí)中斷服務(wù)程序。當(dāng)同時(shí)按下INT0和INT1的單脈沖鍵時(shí),單片機(jī)先響應(yīng)優(yōu)先級(jí)高的外中斷INT1,然后再響應(yīng)優(yōu)先級(jí)底的外中斷INT0,最后才回到主程序。

          如果將T1INT和T0INT一樣使用R3來作為倒數(shù)器,在軟件中調(diào)試時(shí)會(huì)出錯(cuò)。當(dāng)從高級(jí)中斷返回低級(jí)中斷時(shí),R3的值會(huì)變?yōu)镕F,而不是0—8。所以在程序中使用R3和R4兩個(gè)寄存器。

          而在實(shí)際硬件操作中,很難同時(shí)觸發(fā)兩種中斷,不易進(jìn)行觀察。



          關(guān)鍵詞: 單片機(jī)中斷處

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();