首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言問答

51單片機 C語言中斷函數語法詳解

     編輯:C 語言問答

Keil C51 中斷服務程式 (ISR) 宣告格式

void Time1(void) interrupt 3

逐詞解析

關鍵字含義
void返回類型:中斷函數無返回值
Time1函數名稱:開發者自訂,建議語意化
(void)參數列表:中斷函數不接受參數
interrupt關鍵字:告訴編譯器這是中斷服務程式
3中斷號:對應硬體中斷向量表項號

51 系列常見中斷號對照表

中斷號來源向量地址
0外部中斷 0 (INT0)0x0003
1定時器 0 溢位 (TF0)0x000B
2外部中斷 1 (INT1)0x0013
3定時器 1 溢位 (TF1)0x001B
4串口中斷 (RI/TI)0x0023

啟用中斷的完整步驟

void Timer1_Init(void)
{
    TMOD |= 0x10;       // 定時器1 模式1 (16位)
    TH1 = 0xFC;         // 1ms @ 11.0592MHz
    TL1 = 0x18;
    ET1 = 1;            // 開啟定時器1中斷
    EA  = 1;            // 開啟總中斷
    TR1 = 1;            // 啟動定時器1
}

void Timer1_ISR(void) interrupt 3
{
    TH1 = 0xFC; TL1 = 0x18; // 重裝初值
    // 用戶任務代碼...
}

注意事項

  • 中斷函數 不可手動呼叫,由硬體自動觸發。
  • ISR 應極短、不阻塞、避免呼叫非重入函數 (如 printf)。
  • 共享變數需宣告為 volatile,必要時關中斷保護。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved