51單片機中斷系統概念及結構

来源:http://www.cnblogs.com/hughdong/archive/2017/05/19/6878684.html
-Advertisement-
Play Games

———————————————————————————————————————————— 中斷的過程: 對於單片機來講,中斷是指CPU在處理某一時間A時,發生了另一事件B請求CPU立刻去處理(中斷發生);CPU暫時停止當前的工作(中斷響應),轉而去處理事件B(中斷服務),待CPU處理事件B完成後,再 ...


————————————————————————————————————————————

中斷的過程:

對於單片機來講,中斷是指CPU在處理某一時間A時,發生了另一事件B請求CPU立刻去處理(中斷發生);CPU暫時停止當前的工作(中斷響應),轉而去處理事件B(中斷服務),待CPU處理事件B完成後,再回到原來事件A被中斷的地方繼續處理事件A(中斷返回)

中斷源 // 5個中斷源都有一個中斷入口地址,當某個中斷源產生中斷時,CPU響應中斷便到相應的中斷入口地址執行中斷服務程式

中斷的嵌套與優先順序處理

中斷的響應過程

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

中斷系統結構

  • 外部中斷請求源:INT0、INT1

    外部中斷0(INT0)由外部引腳P3.2引入,外部中斷1(INT1)由外部引腳P3.3引入

  • 內部中斷請求源:T0、T1、串口中斷

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

程式定義方式

  • 定義中斷函數的一般形式

    void 函數名() interrupt 中斷號 using 寄存器工作組

    p.s.如果中斷函數中調用了其他函數,則被調用函數所使用的寄存器組必須與中斷函數相同。中斷函數不能參數傳遞,沒有返回值,不能直接被調用。

  • 中斷序號

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

中斷優先順序

   

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

中斷系統寄存器

  • TCON:低4位給外部中斷請求源使用,高4位給內部中斷請求源定時器T0 T1使用

    外部請求源

    • IT0:INT0觸發方式控制位,可由軟體進行置位和複位。IT0=0時,INT0為低電平觸發方式。IT0=1時,INT0為負跳變觸發方式。
    • IE0:INT0中斷請求標誌位。當有外部的中斷請求時,該位置1(這由硬體來完成),在CPU響應中斷後,由硬體將IE0清0。
    • IT1、IE1的用途和IT0、IE0相似。

    內部請求源

    • TF0:定時/計數器T0溢出中斷標記,當T0產生溢出時,TF0置位。當CPU響應中斷後,硬體將TF0複位
    • TR0:T0的開閉控制位,TR0=1時定時計數器打開,TR0=0時定時計數器關閉
    • TF1、TR1與TF0、TR0相似。
  • SCON:低2位與串口中斷相關

    內部請求源

    • TI、RI:串列口發送、接收中斷
  • IE:中斷允許寄存器

    • EA:中斷總控制位。EA=1,CPU開放所有中斷;EA=0,CPU禁止所有中斷。
    • ES:串列口中斷控制位。ES=1,允許串列口中斷;ES=0,屏蔽串列口中斷。
    • ET1:定時/計數器TI中斷控制位。ET1=1,允許T1中斷;ET1=0,禁止T1中斷。
    • EX1:外部中斷1中斷控制位。EX1=1,允許外部中斷1中斷;EX1=0,禁止外部中斷1中斷。
    • ET0:定時/計數器T0中斷控制位。ET0=1,允許T0中斷;ET0=0,禁止T0中斷。
    • EX0:外部中斷0中斷控制位。EX0=1,允許外部中斷0中斷;EX0=0,禁止外部中斷0斷。
  • IP:中斷優先順序寄存器

    在該寄存器中,優先順序分為1 0兩級,對應的位置為1則為高優先順序,位置為0則為低優先順序。執行時先將高優先順序的中斷執行完後才會執行低優先順序(同樣高優先順序情況下,按預設優先順序排)。

    • PS:串列口中斷優先順序控制位
    • PT1:定時器1優先順序控制位
    • PX1:外部中斷1優先順序控制位
    • PT0:定時器0優先順序控制位
    • PX0:外部中斷0優先順序控制位

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

補充:

外部中斷的觸發方式選擇

  • 電平觸發方式(低電平觸發)

    CPU在每個機器周期採樣到的外部中斷輸入線的電平。在中斷服務程式返回之前,外部中斷請求輸入必須無效(即變為高電平),否則CPU返回主程式後會再次響應中斷。

    適於外中斷以低電平輸入且中斷服務程式能清除外部中斷請求(即外部中斷輸入電平又變為高電平)的情況。

  • 跳沿觸發方式

    連續兩次採樣,一個機器周期採樣到外部中斷輸入為高,下一個機器周期採樣為低,則置"1"中斷請求標誌,直到CPU響應此中斷時,該標誌才清0。這樣不會丟失中斷,但輸入的負脈衝寬度至少保持1個機器周期。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1. 首先安裝Scala插件,File->Settings->Plugins,搜索出Scla插件,點擊Install安裝; 2. File->New Project->maven,新建一個Maven項目,填寫GroupId和ArtifactId; 3. 編輯pom.xml文件,添加項目所需要的依賴: ...
  • 今天用navcat往一個表添加外鍵的時候報錯: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to u ...
  • 數據進位: 1bit = 1位 1byte =8bit 1k=1024b 1m=1024k 1g=1024m 1t=1024g 1p=1024t 1e=1024p 1z=1024e 1y=1024z 存儲 1、分割 分散式 :dfs 2、運算 mapreduce : map (映射) reduce( ...
  • 話說BIT類型欄位之前,先看“詭異”的一幕,執行Update成功,但是查詢出來的結果依然是1,而不是Update的2 當別人問起我來的時候,本人當時也是處於懵逼狀態的,後面聯想具體的業務突然想起來這個欄位是bit類型的 如果把這個現象跟BIT類型欄位連續起來就不覺得奇怪了。 廢話不多,直接上代碼看結 ...
  • 用了兩個的centos之後,也想看看它的腳本,我們知道shell這個東西就像windows里的批處理,它可以將一些語句進行組合,然後統一去執行,感覺挺方便的。 shell文件的組成 shell語言環境 說明 使用#開頭的一行表示為“註釋”,它不會被執行,只是起到說明的作用 文件許可權 r(Read,讀 ...
  • 為何要有操作系統 程式員無法把所有的硬體操作細節都瞭解到,因為管理這些硬體並加以優化使用是非常繁瑣的工作,這個繁瑣的工作就是操作系統來乾的,有了他,程式員就從這些繁瑣的工作中解脫出來,只需要考慮自己的應用軟體的編寫就可以了,應用軟體直接使用操作系統提供的功能來間接使用硬體 操作系統的位置 操作系統位 ...
  • 線上環境集群storage節點啟動腳本 !/bin/bash chkconfig: 2345 15 85 description:fastdfs storage node start/stop . /etc/init.d/functions uid= cmd=/usr/local/sandai/tf ...
  • pwd 當前工作目錄 cd(不加參數) 進root cd(folder) 進入文件夾 cd .. 上級目錄 cd ~ 返回root cd - 返回上一個訪問的目錄 rm 文件名 刪除 cat 文件名(|less) 在終端下查看文件 ls 列出目錄下所有文件 cp 文件名 目標目錄 將文件拷貝到目標目 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...