<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ī)的內(nèi)中斷處理

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

          作者: 時(shí)間:2016-11-23 來(lái)源:網(wǎng)絡(luò) 收藏
          1、用定時(shí)器中斷控制信號(hào)燈。

          ORG 0000H

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

          LJMP MAIN

          ORG 000BH ;內(nèi)中斷T0入口地址

          LJMP T0INT

          ORG 02400H

          MAIN: MOV SP,#30H

          MOV A,#00H

          MOV TMOD,#01H

          MOV TH0,#3CH

          MOV TL0,#0B0H

          SETB EA

          SETB ET0

          SETB TR0

          LOOP: LJMP LOOP

          ORG 0340H

          T0INT: MOV TH0,#3CH

          MOV TL0,#0B0H

          MOV P1,A

          CPL A ;亮點(diǎn)閃爍

          RETI

          END

          分析:在本程序中,使用定時(shí)器0的中斷方式產(chǎn)生100ms的延時(shí),實(shí)現(xiàn)8個(gè)LED的亮點(diǎn)閃爍。當(dāng)給SP、A賦值后,程序員給TMOD、TH0、TL0,將TR0置1,然后執(zhí)行“LOOP: SJMP LOOP”指令,這樣不斷的循環(huán)。

          2、 用定時(shí)器中斷和外中斷控制信號(hào)燈。

          ORG 0000H

          LJMP MAIN

          ORG 0003H ;外中斷入口地址

          LJMP INT

          ORG 000BH ;內(nèi)中斷入口地址

          LJMP T0INT

          ORG 0100H

          MAIN: MOV SP,#30H

          MOV A,#0FEH

          MOV TMOD,#01H

          SETB EA

          SETB EX0

          SETB IT0

          SETB ET0

          SETB PX0 ;設(shè)置外部中斷0為高優(yōu)先級(jí)

          MOV TH0,#3CH

          MOV TL0,#0B0H

          SETB TR0

          LOOP0: LJMP LOOP0

          ORG 0200H ;內(nèi)中斷程序塊

          T0INT: MOV TH0,#3CH

          MOV TL0,#0B0H

          MOV R3,#08H

          MOV P1,A

          LCALL DELAY

          RL A ;亮點(diǎn)流動(dòng)

          RETI

          ORG 0300H ; 外中斷程序塊

          INT: PUSH ACC

          MOV A,#00H

          MOV R3,#08H

          LOOP1: MOV P1,A

          LCALL DELAY

          CPL A ;亮點(diǎn)閃爍

          DJNZ R3,LOOP1

          POP ACC

          RETI

          ORG 0400H ;延遲程序塊

          DELAY: MOV R0,#0FFH

          D1: MOV R1,#0FFH

          D2: MOV R2,#0FFH

          D3: DJNZ R2,D3

          DJNZ R1,D2

          DJNZ R0,D1

          RET

          END

          分析:程序開始時(shí),使用定時(shí)器0的中斷方式產(chǎn)生100ms的延時(shí),實(shí)現(xiàn)8個(gè)LED的亮點(diǎn)流動(dòng)。在亮點(diǎn)流動(dòng)的過(guò)程中,如果按下單脈沖鍵,由于將外部中斷0的優(yōu)先級(jí)設(shè)置為高優(yōu)先級(jí),所以8個(gè)LED的發(fā)光狀態(tài)將改為同時(shí)閃爍,閃爍8次恢復(fù)亮點(diǎn)流動(dòng)(閃爍時(shí)間間隔由延時(shí)程序完成)。

          3、實(shí)驗(yàn)心得

          計(jì)數(shù)器/定時(shí)器本質(zhì)上都是是對(duì)一個(gè)脈沖源進(jìn)行加1計(jì)數(shù)。它的計(jì)數(shù)的脈沖源是什么取決了它是計(jì)數(shù)器還是定時(shí)器;加1計(jì)數(shù)器的脈沖源是來(lái)自于晶體振蕩器時(shí),為定時(shí)狀態(tài);脈沖源是來(lái)自于單片機(jī)外部,由于外部的的脈沖間隔不一定相等,計(jì)數(shù)和時(shí)間就沒有明確的關(guān)系密切,所以這時(shí)只能是對(duì)外部的脈沖進(jìn)行“計(jì)數(shù)”。在實(shí)驗(yàn)中,由于沒有給單片機(jī)輸入外部信號(hào),這說(shuō)明定時(shí)/計(jì)數(shù)器的計(jì)數(shù)脈沖來(lái)自于單片機(jī)的晶體振蕩,即定時(shí)/計(jì)數(shù)器工作在定時(shí)狀態(tài)下。

          由振蕩頻率來(lái)計(jì)數(shù),因?yàn)橐粋€(gè)機(jī)器周期包括12個(gè)振蕩周期,計(jì)數(shù)器加1實(shí)際上累加的是機(jī)器周期,每一個(gè)機(jī)器周期,計(jì)數(shù)器就加1。根據(jù)振蕩頻率,可以得出計(jì)數(shù)脈沖的間隔時(shí)間,即計(jì)數(shù)器加1的時(shí)間間隔。當(dāng)已知計(jì)數(shù)/定時(shí)器的差值時(shí),就可得達(dá)到定時(shí)效果。



          評(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); })();