8051 中斷號簡介

FBshark發表於2024-08-09

8051架構是一種經典的微控制器架構,廣泛應用於各種嵌入式系統中。在8051架構中,中斷是一種重要的機制,用於處理非同步事件,如外部裝置的輸入、定時器的溢位等。每個中斷都有一個對應的中斷號,用於標識和處理不同的中斷源。

以下是8051架構中常見的中斷號及其對應的硬體資源:

  1. 外部中斷0 (INT0)

    • 中斷號: 0
    • 描述: 外部中斷0,通常連線到P3.2引腳。
  2. 定時器0中斷

    • 中斷號: 1
    • 描述: 定時器0溢位中斷。
  3. 外部中斷1 (INT1)

    • 中斷號: 2
    • 描述: 外部中斷1,通常連線到P3.3引腳。
  4. 定時器1中斷

    • 中斷號: 3
    • 描述: 定時器1溢位中斷。
  5. 序列通訊中斷 (UART)

    • 中斷號: 4
    • 描述: 序列通訊中斷,用於處理UART的接收和傳送事件。
  6. 定時器2中斷 (僅在某些8052系列中存在)

    • 中斷號: 5
    • 描述: 定時器2溢位中斷。

每個中斷號對應一箇中斷向量地址,CPU在響應中斷時會跳轉到相應的中斷向量地址執行中斷服務程式(ISR)。中斷向量地址通常是固定的,例如:

  • 中斷號0的中斷向量地址是0x0003。
  • 中斷號1的中斷向量地址是0x000B。
  • 中斷號2的中斷向量地址是0x0013。
  • 中斷號3的中斷向量地址是0x001B。
  • 中斷號4的中斷向量地址是0x0023。
  • 中斷號5的中斷向量地址是0x002B(僅在8052系列中存在)。

在編寫中斷服務程式時,需要確保ISR的入口地址與中斷向量地址一致,並且ISR的執行時間儘可能短,以避免影響其他中斷的響應。

例如,一個典型的定時器0中斷服務程式可能如下所示:

void Timer0_ISR(void) interrupt 1 {
    // 中斷服務程式程式碼
    // 清除定時器0中斷標誌
    TF0 = 0;
}

在這個例子中,interrupt 1 表示這是一個定時器0的中斷服務程式。TF0 = 0 用於清除定時器0的中斷標誌,以確保下次中斷能正確觸發。

相關文章