<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > PIC 中斷 服務(wù)程序

PIC 中斷 服務(wù)程序

作者: 時(shí)間:2016-11-23 來(lái)源:網(wǎng)絡(luò ) 收藏
中斷服務(wù)程序有一個(gè)特殊的定義方法: void interrupt ISR(void)其中的函數名“ISR”可以改成任意合法的字母或數字組合,但其入口參數和返回參數類(lèi)型必須是“void”型,亦即沒(méi)有入口參數和返回參數,且中間必須有一個(gè)關(guān)鍵詞“interrupt”中斷函數可以被放置在原程序的任意位置。因為已有關(guān)鍵詞“interrupt”聲明,PICC 在最后進(jìn)行代碼連接時(shí)會(huì )自動(dòng)將其定位到0x0004 中斷入口處,實(shí)現中斷服務(wù)響應。編譯器也會(huì )實(shí)現中斷函數的返回指令“retfie”。

一個(gè)簡(jiǎn)單的中斷服務(wù)示范函數如下:

本文引用地址:http://dyxdggzs.com/article/201611/320363.htm

void interrupt ISR(void) { //中斷服務(wù)程序

if (T0IE && T0IF){ //判TMR0 中斷

T0IF = 0; //清除TMR0 中斷標志 //在此加入TMR0 中斷服務(wù)

}

if (TMR1IE && TMR1IF){ //判TMR1 中斷 T

MR1IF = 0; //清除TMR1 中斷標志

//在此加入TMR1 中斷服務(wù)

}

} //中斷結束并返回

PICC 會(huì )自動(dòng)加入代碼實(shí)現中斷現場(chǎng)的保護,并在中斷結束時(shí)自動(dòng)恢復現場(chǎng),所以編程員無(wú)需象編寫(xiě)匯編程序那樣加入中斷現場(chǎng)保護和恢復的額外指令語(yǔ)句。但如果在中斷服務(wù)程序中需要修改某些全局變量時(shí),是否需要保護這些變量的初值將由編程員自己決定和實(shí)施。用C 語(yǔ)言編寫(xiě)中斷服務(wù)程序必須遵循高效的原則:

z 代碼盡量簡(jiǎn)短,中斷服務(wù)強調的是一個(gè)“快”字。

z 避免在中斷內使用函數調用。 雖然PICC 允許在中斷里調用其它函數,但為了解決遞歸調用的問(wèn)題,此函數必須為中斷服務(wù)獨家專(zhuān)用。既如此,不妨把原本要寫(xiě)在其它函數內的代碼直接寫(xiě)在中斷服務(wù)程序中。

z 避免在中斷內進(jìn)行數學(xué)運算。數學(xué)運算將很有可能用到庫函數和許多中間變量,就算不出現遞歸調用的問(wèn)題,光在中斷入口和出口處為了保護和恢復這些中間臨時(shí)變量就需要大量的開(kāi)銷(xiāo),嚴重影響中斷服務(wù)的效率。

中檔系列PIC 單片機的中斷入口只有一個(gè),因此整個(gè)程序中只能有一個(gè)中斷服務(wù)函數。



關(guān)鍵詞: PIC中斷服務(wù)程

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>