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

          新聞中心

          PIC單片機(jī)之中斷程序

          作者: 時(shí)間:2013-05-14 來(lái)源:網(wǎng)絡(luò) 收藏

          什么是呢?

          形象的生活比喻就比如你現(xiàn)在這在看我的文章,突然你的朋友喊你一起去烤地瓜,這時(shí)候你就中斷了看文章和朋友烤地瓜去了,烤完地瓜之后你又回來(lái)看文章??镜毓线@件事就好比,他中斷了你看文章這件事。在程序方面來(lái)說(shuō) 當(dāng)CPU在執(zhí)行一個(gè)程序的時(shí)候,突然產(chǎn)生了CPU就去執(zhí)行了,當(dāng)執(zhí)行完成后CPU又回來(lái)執(zhí)行原先的程序。

          什么是,就是引起中斷的事件。對(duì)于單片機(jī)來(lái)說(shuō)這些事件是多種多樣的。比如 說(shuō)一個(gè)按鍵按下,一定的時(shí)間到了,一串?dāng)?shù)據(jù)發(fā)送完畢,或接收完一個(gè)數(shù)據(jù)。

          講到中斷不得不講講和中斷相對(duì)的 查詢。其實(shí)不管是按鍵按下 還是 時(shí)間到,還是數(shù)據(jù)發(fā)送完畢,這些事實(shí)上都可以用查詢的方式辦到。比如 你是經(jīng)理 如果你想知道屬下任務(wù)完成了沒(méi)有 一種方式就是去詢問(wèn)屬下,任務(wù)完成沒(méi)有。早上沒(méi)完成,下午在問(wèn)。下午沒(méi)完成第二天再問(wèn)。。。。一直到完成為止 這種方式就相當(dāng)于查詢的方式,另一種就是然屬下完成任務(wù)好直接匯報(bào),在下屬執(zhí)行任務(wù)的期間你無(wú)需去打撓下屬,當(dāng)下屬任務(wù)完成后就第一時(shí)間向你匯報(bào),這種方式就好像中斷。

          查詢方式:缺點(diǎn)就是可能會(huì)大量浪費(fèi)CPU的時(shí)間,不斷去查詢。如果事情不多還好,可是一旦事情多了會(huì)明顯感到運(yùn)行速度變慢。

          中斷方式:可以用在對(duì)時(shí)間和響應(yīng)速度有要求的場(chǎng)合。

          具體有哪些事件會(huì)引起中斷 可以看

          1,中斷控制寄存器INTCON

          2,外設(shè)中斷允許寄存器 PIEX 注 : X可以是1 2 3 4.。。。不同型號(hào)的單片機(jī)數(shù)目不同

          3,外設(shè)中斷標(biāo)志寄存器 PIRX 注: X可以是1 2 3 4.。。。不同型號(hào)的單片機(jī)數(shù)目不同

          INTCON 中斷控制寄存器講解:

          1開(kāi)啟或關(guān)閉 全體的中斷功能(GIE)

          2開(kāi)啟或關(guān)閉全體外設(shè)的中斷功能(PEIE)外設(shè)就是在外設(shè)中斷允許/標(biāo)志寄存器里面所寫(xiě)的設(shè)備。

          3開(kāi)啟一些中斷事件。

          PIEX 與 PIRX 是相互對(duì)應(yīng)的如:當(dāng)把PIE1的TMR1IE設(shè)置為1 定時(shí)器timr1將開(kāi)啟中斷。等到TMR1定時(shí)器溢出后,則會(huì)在PIR1的TMRIF將為1,并且執(zhí)行中斷程序。

          實(shí)例講解:

          我們把上一講的《之定時(shí)器》中的實(shí)例修改成中斷方式 實(shí)現(xiàn) 每隔 50MS亮起LED,每隔50MS滅掉LED。

          /*開(kāi)發(fā)環(huán)境MPLAB X IDE 芯片型號(hào)PIC16LF1823*/

          #include

          __CONFIG(FOSC_INTOSCWDTE_OFFPWRTE_ONMCLRE_OFFCP_ONCPD_OFFBOREN_ON

          CLKOUTEN_OFFIESO_ONFCMEN_ON);//這個(gè)要放到上一行去

          __CONFIG(PLLEN_OFFLVP_OFF) ;

          #define LED LATA5

          void init_fosc(void)

          {

          OSCCON= 0x68;

          }

          void init_gpio(void)

          {

          PORTA = 0;

          LATA = 0;

          ANSELA = 0;

          TRISAbits.TRISA5=0;

          }


          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          相關(guān)推薦

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