用C語言對循跡小車進行編程

【用C語言對循跡小車進行編程】剛開始寫匯編的中斷應用程序時,曾經為出入堆棧的問題而困擾 。 C51擴展了函數的定義,使它可以直接編寫中斷服務函數,而可以不必考慮出入堆棧的問題,從而提高了工作的效率 。 擴展的關鍵字是in—terrupt,它是函數定義時的一個選項 。 只要在一個函數定義后面加上這個選項,那么這個函數就變成了中斷服務函數 。 定義中斷服務函數時可以用如下的形式 。
函數類型函數名(形式參數)interruptn[usingn]
中斷函數不能通過形式參數進行參數傳遞,也沒有返回值 。 因此建議在定義中斷函數時將其定義為viod類型,以明確說明沒有返回值 。
interru關鍵字是不可缺少的,它告訴編譯器該函數是中斷服務函數,并由后面的n指明所使用的中斷號 。 n的取值范圍為0~31,但具體的中斷號要取決于芯片的型號,像AT89S52實際上就使用O~4號中斷 。 每個中斷號都對應一個中斷向量,具體地址為8n+3,中斷源響應后處理器會跳轉到中斷向量所處的地址執行程序,編譯器會在這地址上產生一個無條件跳轉語句,轉到中斷服務函數所在的地址執行程序 。 51芯片的中斷向量和中斷號,如下表所示 。
中斷號 中斷源 中斷向量 0 外部中斷0 0003H 1 定時器/計數器0 000BH 2 外部中斷1 0013H 3 定時器/計數器1 001BH 4 串行口 00231-1