国产成人av人人爽人人澡-亚洲国产日韩欧美一区-好吊日视频这里只有精品-日本高清精品视频在线

你好!歡迎來到深圳市穎特新科技有限公司!
語言
當(dāng)前位置:首頁 >> 技術(shù)中心 >> 單片機入門 >> 實例講解PIC單片機之中斷程序

實例講解PIC單片機之中斷程序

關(guān)鍵字:PIC單片機 中斷程序 作者:admin 來源:不詳 發(fā)布時間:2018-05-18  瀏覽:12

 什么是中斷程序呢?

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

中斷事件

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

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

查詢方式:缺點就是可能會大量浪費CPU的時間,不斷去查詢。如果事情不多還好,可是一旦事情多了會明顯感到運行速度變慢。

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

具體有哪些事件會引起中斷 可以看

1,中斷控制寄存器INTCON

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

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

INTCON 中斷控制寄存器講解:

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

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

3開啟一些中斷事件。

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

實例講解:

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

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

#include

__CONFIG(FOSC_INTOSC&WDTE_OFF&PWRTE_ON&MCLRE_OFF&CP_ON&CPD_OFF&BOREN_ON

&CLKOUTEN_OFF&IESO_ON&FCMEN_ON);//這個要放到上一行去

__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是個關(guān)鍵字說明該函數(shù),是中斷函數(shù)。

{

LED = ~LED;//改變LED的狀態(tài)

INTCONbits.TMR0IF=0;//清零中斷標(biāo)志位 如果在離開中斷程序前沒有清零,程序?qū)⒉煌5闹袛唷?/p>

TMR0=61;//給TMR0付初始值61 ,開始下一個50ms計時做準(zhǔn)備。

//中斷函數(shù)結(jié)束 返回主函數(shù)。哪里來回 回那里去,也就是回到主函數(shù)的while(1);處

}

int main(int argc, char** argv)

{

init_fosc();

init_gpio();

init_timer0();

INTCONbits.GIE=1; //開啟總中斷

INTCONbits.TMR0IF=0;//清零TMR0溢出中斷標(biāo)志位

INTCONbits.TMR0IE=1;//開啟TMR0溢出中斷

TMR0=61;

while(1);//主函數(shù) 在此什么都沒做一直在死循環(huán)。但等到50ms時間到了TMR0將會溢出,程序就會跳到void interrupt isr(void)處執(zhí)行。

}

我?guī)痛蠹依砬逑轮袛喑跏荚O(shè)置大致的步驟

1 ,開啟總中斷,開啟外設(shè)中斷。INTCONbits.GIE=1; INTCONbits.PEIE=1;其實即使沒用到外設(shè)開啟也無妨。

2 ,清楚相應(yīng)中斷的標(biāo)志位。如INTCONbits.TMR0IF=0;

3 ,開啟相應(yīng)中斷。如INTCONbits.TMR0IE=1;

中斷函數(shù)/程序 中要注意的就是 清零相應(yīng)的中斷標(biāo)志位 如INTCONbits.TMR0IF=0; 否則單片機會認為中斷未被執(zhí)行 則一直中斷。

編輯:admin  最后修改時間:2018-05-18

聯(lián)系方式

0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤豐創(chuàng)業(yè)園A棟2樓A08

Copyright © 2014-2023 穎特新科技有限公司 All Rights Reserved.  粵ICP備14043402號-4

日本精品理论在线观看| 亚洲一级在线免费观看| 国产日韩精品欧美综合区| 色丁香一区二区黑人巨大| 日韩精品综合免费视频| 自拍偷拍福利视频在线观看| 色鬼综合久久鬼色88| 久久精品国产熟女精品| 亚洲国产91精品视频| 亚洲一区二区三区福利视频| 97人妻精品一区二区三区免| 又色又爽又黄的三级视频| 欧美日韩国产黑人一区| 91精品日本在线视频| 老熟妇乱视频一区二区| 日本在线高清精品人妻| 日韩精品一区二区三区av在线| 激情五月天深爱丁香婷婷| 日韩欧美高清国内精品| 欧洲日韩精品一区二区三区| 男人操女人下面国产剧情| 欧美熟妇一区二区在线| 人妻亚洲一区二区三区| 日韩成人高清免费在线| 少妇特黄av一区二区三区| 日韩人妻有码一区二区| 欧美成人免费夜夜黄啪啪| 欧美日韩乱码一区二区三区| 亚洲熟妇熟女久久精品 | 夜夜嗨激情五月天精品| 日韩精品毛片视频免费看| 国产传媒欧美日韩成人精品| 国产亚洲精品俞拍视频福利区| 日本一本不卡免费视频| 国产超碰在线观看免费| 美女黄色三级深夜福利| 日韩欧美一区二区久久婷婷| 九九热国产这里只有精品| 亚洲中文在线男人的天堂| 国产中文字幕一二三区| 久久亚洲精品中文字幕|