熟女俱乐部五十路二区av,又爽又黄禁片视频1000免费,国产卡一卡二卡三无线乱码新区,中文无码一区二区不卡αv,中文在线中文a

新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > PIC 中斷 服務程序

PIC 中斷 服務程序

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

一個簡單的中斷服務示范函數如下:

本文引用地址:http://www.bjwjmy.cn/article/201611/320363.htm

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

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

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

}

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

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

//在此加入TMR1 中斷服務

}

} //中斷結束并返回

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

z 代碼盡量簡短,中斷服務強調的是一個“快”字。

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

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

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



關鍵詞: PIC中斷服務程

評論


技術專區(qū)

關閉