PIC單片機(jī)中斷程序?qū)嵗?p>什么是中斷程序呢?
形象的生活比喻就比如你現(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ì)的 查詢(xún)。其實(shí)不管是按鍵按下 還是 時(shí)間到,還是數(shù)據(jù)發(fā)送完畢,這些事實(shí)上都可以用查詢(xún)的方式辦到。比如 你是經(jīng)理 如果你想知道屬下任務(wù)完成了沒(méi)有 一種方式就是去詢(xún)問(wèn)屬下,任務(wù)完成沒(méi)有。早上沒(méi)完成,下午在問(wèn)。下午沒(méi)完成第二天再問(wèn)。。。。一直到完成為止 這種方式就相當(dāng)于查詢(xún)的方式,另一種就是然屬下完成任務(wù)好直接匯報(bào),在下屬執(zhí)行任務(wù)的期間你無(wú)需去打撓下屬,當(dāng)下屬任務(wù)完成后就第一時(shí)間向你匯報(bào),這種方式就好像中斷。
查詢(xún)方式:缺點(diǎn)就是可能會(huì)大量浪費(fèi)CPU的時(shí)間,不斷去查詢(xún)。如果事情不多還好,可是一旦事情多了會(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í)例講解:
我們把上一講的《PIC單片機(jī)之定時(shí)器》中的實(shí)例修改成中斷方式 實(shí)現(xiàn) 每隔 50MS亮起LED,每隔50MS滅掉LED。
/*開(kāi)發(fā)環(huán)境MPLAB X IDE 芯片型號(hào)PIC16LF1823*/
#include
__CONFIG(FOSC_INTOSC&WDTE_OFF&PWRTE_ON&MCLRE_OFF&CP_ON&CPD_OFF&BOREN_ON
&CLKOUTEN_OFF&IESO_ON&FCMEN_ON);//這個(gè)要放到上一行去
__CONFIG(PLLEN_OFF&LVP_OFF) ;
#define LED LATA5
void init_fosc(void)
{
OSCCON= 0x68;
}
void init_gpio(void)
{
PORTA = 0;
LATA = 0;
ANSELA = 0;
TRISAbits.TRISA5=0;
}
void init_timer0(void)
{
OPTION_REG=0x87;
}
void interrupt isr(void)//中斷程序,interrupt是個(gè)關(guān)鍵字說(shuō)明該函數(shù),是中斷函數(shù)。
{
LED = ~LED;//改變LED的狀態(tài)
INTCONbits.TMR0IF=0;//清零中斷標(biāo)志位 如果在離開(kāi)中斷程序前沒(méi)有清零,程序?qū)⒉煌5闹袛唷?p>
TMR0=61;//給TMR0付初始值61 ,開(kāi)始下一個(gè)50ms計(jì)時(shí)做準(zhǔn)備。
//中斷函數(shù)結(jié)束 返回主函數(shù)。哪里來(lái)回 回那里去,也就是回到主函數(shù)的while(1);處
}
int main(int argc, char** argv)
{
init_fosc();
init_gpio();
init_timer0();
INTCONbits.GIE=1; //開(kāi)啟總中斷
INTCONbits.TMR0IF=0;//清零TMR0溢出中斷標(biāo)志位
INTCONbits.TMR0IE=1;//開(kāi)啟TMR0溢出中斷
TMR0=61;
while(1);//主函數(shù) 在此什么都沒(méi)做一直在死循環(huán)。但等到50ms時(shí)間到了TMR0將會(huì)溢出,程序就會(huì)跳到void interrupt isr(void)處執(zhí)行。
}
我?guī)痛蠹依砬逑轮袛喑跏荚O(shè)置大致的步驟
1 ,開(kāi)啟總中斷,開(kāi)啟外設(shè)中斷。INTCONbits.GIE=1; INTCONbits.PEIE=1;其實(shí)即使沒(méi)用到外設(shè)開(kāi)啟也無(wú)妨。
2 ,清楚相應(yīng)中斷的標(biāo)志位。如INTCONbits.TMR0IF=0;
3 ,開(kāi)啟相應(yīng)中斷。如INTCONbits.TMR0IE=1;
中斷函數(shù)/程序 中要注意的就是 清零相應(yīng)的中斷標(biāo)志位 如INTCONbits.TMR0IF=0; 否則單片機(jī)會(huì)認(rèn)為中斷未被執(zhí)行 則一直中斷。
上一篇:PIC單片機(jī)電熱剪電路原理圖
下一篇:pic 單片機(jī)應(yīng)用問(wèn)答14篇
推薦閱讀
史海拾趣
對(duì)不起,我無(wú)法提供關(guān)于Allen Avionics Inc 公司的相關(guān)故事。
在Harry Hoffman的領(lǐng)導(dǎo)下,Hoffman Engineering不斷擴(kuò)展其產(chǎn)品線(xiàn)。從最初的壓力機(jī)安全保護(hù)裝置,公司逐漸研發(fā)出蒲公英掘具、碟靶投擲器、廚房用電動(dòng)攪拌器等一系列創(chuàng)新產(chǎn)品。這些產(chǎn)品不僅豐富了Hoffman Engineering的市場(chǎng)布局,也展現(xiàn)了公司在不同領(lǐng)域的技術(shù)實(shí)力。特別是Hoffman的機(jī)柜系列產(chǎn)品,如接線(xiàn)箱和電源插座,逐漸成為市場(chǎng)上的熱門(mén)產(chǎn)品,為公司帶來(lái)了穩(wěn)定的收入來(lái)源。
AMD(Advanced Micro Devices)在半導(dǎo)體行業(yè)中的發(fā)展經(jīng)歷了一個(gè)從追趕到逆襲的過(guò)程。在英特爾的強(qiáng)大市場(chǎng)壓力下,AMD通過(guò)不斷創(chuàng)新和技術(shù)提升,逐漸在處理器市場(chǎng)上獲得了一席之地。尤其是在游戲和高端計(jì)算領(lǐng)域,AMD的處理器憑借其出色的性能和性?xún)r(jià)比贏得了眾多消費(fèi)者的青睞。
隨著國(guó)內(nèi)市場(chǎng)的逐漸飽和,CTC Coils Ltd公司開(kāi)始將目光投向海外市場(chǎng)。公司首先在歐洲設(shè)立了銷(xiāo)售分支機(jī)構(gòu),通過(guò)參加國(guó)際電子展會(huì)、與當(dāng)?shù)仄髽I(yè)建立合作關(guān)系等方式,逐步打開(kāi)了歐洲市場(chǎng)。隨后,公司又進(jìn)一步拓展到北美和亞洲其他地區(qū),實(shí)現(xiàn)了業(yè)務(wù)的國(guó)際化布局。
在快速發(fā)展的同時(shí),Bkc始終堅(jiān)持質(zhì)量第一的原則。公司建立了嚴(yán)格的質(zhì)量管理體系,從原材料采購(gòu)到產(chǎn)品生產(chǎn)的每一個(gè)環(huán)節(jié)都進(jìn)行嚴(yán)格把控。通過(guò)不斷提升產(chǎn)品質(zhì)量和客戶(hù)服務(wù)水平,Bkc逐漸贏得了客戶(hù)的信任和市場(chǎng)的認(rèn)可。同時(shí),公司還積極參與行業(yè)標(biāo)準(zhǔn)的制定和推廣,進(jìn)一步提升了品牌的影響力和行業(yè)地位。
隨著全球環(huán)保意識(shí)的提高,Bkc積極響應(yīng)綠色發(fā)展的號(hào)召。公司不僅加大了對(duì)環(huán)保技術(shù)和綠色生產(chǎn)的投入,還積極參與社會(huì)公益事業(yè)和環(huán)保活動(dòng)。通過(guò)實(shí)際行動(dòng)履行企業(yè)社會(huì)責(zé)任,Bkc不僅贏得了社會(huì)的尊重和支持,也為公司的可持續(xù)發(fā)展注入了新的動(dòng)力。
這些故事框架是基于一般性的電子行業(yè)和公司發(fā)展邏輯構(gòu)建的,并不代表Bkc Semiconductors Inc公司的真實(shí)情況。如果您需要更具體、更準(zhǔn)確的信息,建議直接查閱該公司的官方網(wǎng)站、年報(bào)或相關(guān)新聞報(bào)道。
CODEC聲音驅(qū)動(dòng)的難題!藍(lán)牙有關(guān)的 雙PCM 接口的CODEC如何進(jìn)行聲音的切換,就是從系統(tǒng)聲音切換到藍(lán)牙聲音,謝謝!… 查看全部問(wèn)答∨ |
(1)短路保護(hù):對(duì)電動(dòng)機(jī)及其線(xiàn)路的短路大電流作及時(shí)的切斷保護(hù),否則很大的短路電流會(huì)很快燒壞電動(dòng)機(jī)。線(xiàn)路及其他電氣設(shè)備,造成重大損失。對(duì)500V以下的低壓電動(dòng)機(jī),一般采用熔絲或斷路器的電磁瞬時(shí)脫扣器作短路保護(hù)。 (2)過(guò)載(過(guò)負(fù)荷)保護(hù):對(duì)于電 ...… 查看全部問(wèn)答∨ |
這份寫(xiě)得不錯(cuò),在STM32平臺(tái)上實(shí)現(xiàn)Cortex-M3的位帶特性 replyreload += \',\' + 1100566;在STM32平臺(tái)上實(shí)現(xiàn)Cortex-M3的位帶特性 位操作是指單獨(dú)操作某個(gè)數(shù)據(jù)中的某一位。在嵌入式程序設(shè)計(jì)中很常見(jiàn),諸如設(shè)置標(biāo)志位、判斷一個(gè)字節(jié)某一位的值、取反一個(gè)字節(jié)的某一位等都需要通過(guò)位操 ...… 查看全部問(wèn)答∨ |
8位單片機(jī)開(kāi)發(fā)技術(shù)技巧與規(guī)范 何宗彬 介本書(shū),嗯嗯,等我看完了再寫(xiě)簡(jiǎn)介。網(wǎng)上除了CSDN再也找不到下載的地兒了,我在這補(bǔ)充上,以后就不擔(dān)心該死的CSDN下載分了。CSDN,上帝詛咒你!… 查看全部問(wèn)答∨ |
定義全局變量FrequencyCounter用于Timer0_A3中斷程序中計(jì)數(shù),很簡(jiǎn)單的一個(gè),但是出現(xiàn)了問(wèn)題! unsigned int FrequencyCounter; main(){ ... ...} #pragma vector=TIMER0_A1_VECTOR__interrupt void Timer0_A1(void){&nb ...… 查看全部問(wèn)答∨ |
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦
- 【下載】LAT1526 利用SPI的下溢實(shí)現(xiàn)回顯功能
- 【下載】LAT1509 STM32G0B1的FDCAN進(jìn)行通信丟包和多包案例分享
- 【下載】LAT1511 運(yùn)行Ux_Host_HUB_HID_MSC通過(guò)Hub連接U盤(pán)讀寫(xiě)不穩(wěn)定問(wèn)題分析
- 【下載】LAT1466 USB x Device HID Standalone的移植
- 【下載】LAT1488 STM32 USBxDevice MSC standalone移植示例
- 【下載】LAT1482 STM32G0單線(xiàn)串口通信幀錯(cuò)誤問(wèn)題解析
- Microchip 升級(jí)數(shù)字信號(hào)控制器(DSC)產(chǎn)品線(xiàn) 推出PWM 分辨率和 ADC 速度業(yè)界領(lǐng)先的新器件
- 意法半導(dǎo)體STM32MP23x:突破成本限制的工業(yè)AI應(yīng)用核心
- 意法半導(dǎo)體推出用于匹配遠(yuǎn)距離無(wú)線(xiàn)微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開(kāi)發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹(shù)莓派進(jìn)行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲(chǔ)html,css,js文件,以及網(wǎng)頁(yè)和arduino的通訊
- ESP32 freeRTOS使用測(cè)試
- 方案分享 | ARXML 規(guī)則下 ECU 總線(xiàn)通訊與 ADTF 測(cè)試方案
- 車(chē)載SerDes產(chǎn)業(yè)起飛!國(guó)產(chǎn)新品密集炸場(chǎng)
- 出貨量激增1.34倍! 5G車(chē)規(guī)模組成標(biāo)配,三大廠商新品同臺(tái)競(jìng)技
- 6月新能源市場(chǎng):零跑創(chuàng)新高;比亞迪海外突破;理想滑坡
- 基于中科芯車(chē)規(guī)MCU的LED矩陣大燈應(yīng)用方案
- 蘋(píng)果被判侵犯3G專(zhuān)利,需向西班牙公司TOT賠償1.1億美元
- 從設(shè)計(jì)概念到 FPGA 原型僅需數(shù)分鐘,印度 InCore 完成 SoC Generator 平臺(tái)硅驗(yàn)證
- 消息稱(chēng)因難尋客戶(hù),三星推遲美國(guó)芯片工廠的完工時(shí)間
- BOE(京東方)聯(lián)合榮耀打造榮耀Magic V5 以領(lǐng)先LTPO技術(shù)打造行業(yè)新標(biāo)桿
- 華為ADS 4發(fā)布:多傳感器融合,提升自動(dòng)駕駛安全性
- 下載有禮|ADI 最新《模擬對(duì)話(huà)》合訂本
- ADI有獎(jiǎng)下載活動(dòng)之11 ADI鋰電池測(cè)試設(shè)備解決方案
- 尋寶大冒險(xiǎn),搜索有好禮!
- TI系列有獎(jiǎng)直播|電源設(shè)計(jì)實(shí)戰(zhàn)進(jìn)階:從數(shù)字電源控制、LDO優(yōu)化到PCB布局全攻略
- 新春尋寶記,泰克送福利!快來(lái)開(kāi)啟你的尋寶之旅~
- 悅覽 PI 節(jié)能技術(shù)資料,參與測(cè)試、評(píng)論贏雙重好禮!
- 參加RT-Thread軟件包賽,贏取RoboMaster等豐厚獎(jiǎng)品!
- 希望一月 愛(ài)上EEWORLD——論壇推廣月(恩智浦全程贊助)
- 有獎(jiǎng)直播報(bào)名:大聯(lián)大世平集團(tuán)&恩智浦 | AI 無(wú)所不在,單板電腦也可以
- 華為稱(chēng)正等待美商務(wù)部給出的指引,可否使用安卓系統(tǒng)?
- 印度5G負(fù)責(zé)人:排除了中國(guó)供應(yīng)商參與5G測(cè)試
- 英偉達(dá)下一代GPU計(jì)劃采用三星7nm EUV工藝
- 首款12nm展銳虎賁T310發(fā)布!海信F30S系列全新上市
- 華為和中國(guó)國(guó)家博物館簽署戰(zhàn)略合作協(xié)議
- 機(jī)器換人浪潮來(lái)臨 中小制造企業(yè)轉(zhuǎn)型迫在眉睫
- 協(xié)作機(jī)器人從概念化產(chǎn)品已成為工業(yè)自動(dòng)化產(chǎn)業(yè)中增長(zhǎng)最快的領(lǐng)域
- 機(jī)器人在交通領(lǐng)域頻頻亮相 但發(fā)展過(guò)程中仍舊存在短板
- 國(guó)產(chǎn)的工業(yè)機(jī)器人與歐美發(fā)達(dá)國(guó)家相比 還有很長(zhǎng)的一段距離
- 撰稿機(jī)器人誕生 數(shù)字化媒體大勢(shì)所趨