国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

中斷流程分析與示例

田豐 ? 來源:jf_35235301 ? 作者:jf_35235301 ? 2023-11-25 12:30 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

中斷的概念:
CPU在處理某一事件A時,發生了另一事件B的請求(中斷請求);CPU暫時中斷當前的工作,轉去處理事件B(中斷響應和中斷服務);待CPU將事件B處理完畢后,再回到原來事件A被中斷的地方繼續處理事件A(中斷返),這一過程稱為中斷。

wKgaomVhd2qAfwCeAAczh1MgDBc191.png中斷執行過程圖

如何執行如上圖所示:先執行主程序,到達斷點的地方出現中斷請求,此時執行中斷響應,執行中斷處理程序,執行完中斷返回斷點,再繼續執行主程序。

中斷源:
引起CPU中斷的根源,稱為中斷源。中斷源向CPU提出的中斷請求。CPU暫時中斷原來的事務A,轉去處理事件B。對事件B處理完畢后,再回到原來被中斷的地方(即斷點),稱為中斷返回。實現上述中斷功能的部件稱為中斷系統(中斷機構)。
中斷的優點:
分時操作:CPU可以分時為多個外設服務,提高了計算機的利用率;
實時響應:CPU能夠及時處理應用系統的隨機事件,系統的實時性大大增強;
可靠性高:CPU具有處理設備故障及掉電等突發性事件能力,從而使系統可靠性提高。

定義中斷函數的一般形式:
viod 函數名() interrupt n
(1) interrupt必須要加,表示定義成中斷服務函數。
(2)后面n是中斷號,中斷號是編譯器識別不同中斷的唯一編號.
中斷服務函數和普通函數的異同:
同:函數的形式非常類似,中斷響應過程和普通函數調用過程也非常相似。
異:①中斷服務函數不需要聲明,普通函數一般需要聲明。②普通函數的執行是可預測的;而中斷服務函數的執行是不可預測的。③普通函數的跳轉是軟件(函數調用語句)完成的;中斷的跳轉(中斷響應)是由硬件完成的,只要發生了中斷事件,并且中斷被允許,硬件自動會幫我們完成中斷的跳轉(中斷響應)。④普通函數:通過函數名找到被調用函數;中斷服務函數:通過中斷號找到中斷服務函數。所以我們可以知道,中斷服務函數中的函數名其實并沒有什么作用。
使用中斷函數時應遵循以下規則:
(1)中斷函數不能進行參數轉遞;
(2)在任何情況下,都不能直接調用中斷函數。

那么我們如何通過keil使用51單片機外部中斷0觸發數碼管顯示三位數字呢?

下面給予chatGPT示例

#include

sbit LED = P1^0; //定義LED連接的IO口
sbit KEY = P3^2; //定義KEY連接的IO口

unsigned int num = 0; //定義計數器

void delay(unsigned int x) //延時函數
{
unsigned int i, j;
for(i=0; i for(j=0; j<125; j++);
}

void display(unsigned int n) //數碼管顯示函數
{
unsigned char code table[] = { //數碼管顯示表
0x3f, //0
0x06, //1
0x5b, //2
0x4f, //3
0x66, //4
0x6d, //5
0x7d, //6
0x07, //7
0x7f, //8
0x6f //9
};
unsigned int i, j;
for(i=0; i<3; i++)
{
P2 = 0xff; //關閉所有數碼管
switch(i) //選擇要顯示的數位
{
case 0:
P0 = 0xfe; //第一位數碼管
break;
case 1:
P0 = 0xfd; //第二位數碼管
break;
case 2:
P0 = 0xfb; //第三位數碼管
break;
}
P2 = table[n%10]; //顯示個位數字
delay(1); //延時一段時間
P2 = 0xff; //關閉所有數碼管
switch(i) //選擇要顯示的數位
{
case 0:
P0 = 0xfd; //第二位數碼管
break;
case 1:
P0 = 0xfb; //第三位數碼管
break;
case 2:
P0 = 0xf7; //第四位數碼管
break;
}
P2 = table[n/10%10]; //顯示十位數字
delay(1); //延時一段時間
P2 = 0xff; //關閉所有數碼管
switch(i) //選擇要顯示的數位
{
case 0:
P0 = 0xfb; //第三位數碼管
break;
case 1:
P0 = 0xf7; //第四位數碼管
break;
case 2:
P0 = 0xef; //第五位數碼管
break;
}
P2 = table[n/100%10]; //顯示百位數字
delay(1); //延時一段時間
P2 = 0xff; //關閉所有數碼管
switch(i) //選擇要顯示的數位
{
case 0:
P0 = 0xf7; //第四位數碼管
break;
case 1:
P0 = 0xef; //第五位數碼管
break;
case 2:
P0 = 0xdf; //第六位數碼管
break;
}
P2 = table[n/1000%10]; //顯示千位數字
delay(1); //延時一段時間
}
}

void main()
{
EA = 1; //開啟總中斷
EX0 = 1; //開啟外部中斷0
IT0 = 1; //設置外部中斷0為下降沿觸發
while(1)
{
display(num%1000); //顯示后三位數字
}
}

void Interrupt0() interrupt 0 //外部中斷0中斷服務函數
{
num++; //計數器加1
LED = ~LED; //LED翻轉
}
在上面的代碼中,我們定義了一個計數器num,并在外部中斷0中斷服務函數中將其加1。同時,在main函數中,我們使用display函數來顯示num的后三位數字。display函數中使用了一個數碼管顯示表來將數字轉換為數碼管的顯示碼,然后通過控制數碼管的選擇位和段選位來實現數碼管的顯示。在每次顯示完一個數位后,我們都會延時一段時間,以控制數碼管的亮度和顯示效果。最后,我們在main函數的無限循環中不斷調用display函數,以實現數碼管的動態顯示。

需要注意的是,在使用外部中斷0時,我們需要先開啟總中斷(EA=1),然后再開啟外部中斷0(EX0=1)。同時,我們還需要設置外部中斷0的觸發方式,可以選擇下降沿觸發(IT0=1)或者上升沿觸發(IT0=0),具體根據實際情況而定。在外部中斷0中斷服務函數中,我們可以進行一些需要立即響應的操作,比如計數器加1、LED翻轉等。

我覺得還是太復雜了(主要是太多了不想看又看不懂emmm),下面是我通過keil使用51單片機外部中斷0觸發數碼管顯示后三位學號的示例代碼:

#include
#define duan P0
#define uchar unsigned char
sbit wei1 = P2^4;//定義第一位數碼管
sbit wei2 = P2^5;//定義第二位數碼管
sbit wei3 = P2^6;//定義第三位數碼管
sbit wei4 = P2^7;//定義第四位數碼管

uchar code sz[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};

void delay (unsigned int xms)
{
unsigned int i,j;
for(i=xms;i>0;i--) //i=xms即延時xms
for(j=112;j>0;j--);
}

void main()
{
EX0 = 1;//INT0中斷允許
EA = 1;//全局中斷打開
IT0 = 0;//觸發方式為低電平觸發

while(1)
{
duan = sz[8];
wei1 = 0;
wei2 = 0;
wei3 = 0;
wei4 = 1;
delay(0);
duan = sz[2];//0111 1100 "b"
wei1 = 0;
wei2 = 0;
wei3 = 1;
wei4 = 0;
delay(0);
duan = sz[6];
wei1 = 0;
wei2 = 1;
wei3 = 0;
wei4 = 0;
delay(0);
duan = sz[7];
wei1 = 1;
wei2 = 0;
wei3 = 0;
wei4 = 0;
delay(0);
}
}

void low()interrupt 0
{
wei1 = 0;
delay(0);
}

wKgaomVjGM-APz5EAADIZdO7cxQ736.png運行結果

wKgZomVjGWGADNLKAAhz7ubzg1w506.png硬件顯示效果

顯示效果:顯示4位學號7628,通過外部中斷0使第一位數碼管不亮,從而顯示學號后三位。

總結:P3.2由ITO(TCON.0)選擇其為低電平有效。當CPU檢測到P3.2引腳上出現有效的中斷信號時,中斷標志 IEO(TCON.1)置1,向CPU申請中斷。

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6076

    文章

    45494

    瀏覽量

    670275
  • cpu
    cpu
    +關注

    關注

    68

    文章

    11277

    瀏覽量

    224954
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    RK806中斷處理流程深度解析:從架構到調試實戰

    RK806 作為瑞芯微主流 PMIC(電源管理芯片),其中斷機制是實現“電源鍵響應、電壓異常保護、休眠喚醒、 watchdog 超時處理” 等核心功能的基礎。Linux 驅動基于regmap_irq框架設計,屏蔽了底層寄存器操作細節,但調試時若不理解中斷流程,往往會陷入“
    的頭像 發表于 02-05 13:46 ?923次閱讀
    RK806<b class='flag-5'>中斷</b>處理<b class='flag-5'>流程</b>深度解析:從架構到調試實戰

    深圳南柯電子|EMC摸底測試整改:“定位-分析-優化-驗證”全流程

    深圳南柯電子|EMC摸底測試整改:“定位-分析-優化-驗證”全流程
    的頭像 發表于 01-28 09:42 ?181次閱讀

    超級法拉電容均壓板漏電嚴重怎么辦?

    文章總結:超法拉電容均壓板漏電問題需通過檢測、優化和維護解決,涵蓋診斷流程、場景化方案及預防措施。
    的頭像 發表于 11-27 09:19 ?752次閱讀
    超級法拉電容均壓板漏電嚴重怎么辦?

    在CW32F030 MCU上設置外部中斷和RTC喚醒條件的示例

    示例1:外部中斷喚醒 假設我們有一個按鍵連接到CW32F030的某個外部中斷引腳上,當按鍵被按下時,MCU將從Sleep模式喚醒。 c #include \"cw32a030.h
    發表于 11-25 08:00

    視頻卡頓分析流程

    視頻卡頓分析流程
    發表于 11-10 16:55 ?0次下載

    電能質量在線監測裝置歷史波形回放的操作流程是怎樣的

    電能質量在線監測裝置的歷史波形回放操作需結合設備類型、存儲方式及訪問權限,通常分為本地操作和遠程訪問兩類流程。以下是基于主流設備特性的詳細步驟說明,涵蓋數據檢索、波形查看、分析及導出全流程,并附典型
    的頭像 發表于 11-05 11:32 ?847次閱讀

    eVTOL艙內噪聲響應分析的仿真流程

    上一節中介紹了eVTOL旋翼噪聲的表征以及通過聲學BEM模型分析旋翼噪聲到eVTOL機體外表面的噪聲傳播分析流程,本節將在上節內容的基礎上繼續介紹eVTOL艙內噪聲響應分析的仿真
    的頭像 發表于 09-23 14:06 ?637次閱讀
    eVTOL艙內噪聲響應<b class='flag-5'>分析</b>的仿真<b class='flag-5'>流程</b>

    碳化硅襯底 TTV 厚度測量數據異常的快速診斷與處理流程

    摘要 本文針對碳化硅襯底 TTV 厚度測量中出現的數據異常問題,系統分析異常類型與成因,構建科學高效的快速診斷流程,并提出針對性處理方法,旨在提升數據異常處理效率,保障碳化硅襯底 TTV 測量準確性
    的頭像 發表于 08-14 13:29 ?1208次閱讀
    碳化硅襯底 TTV 厚度測量數據異常的快速診斷與處理<b class='flag-5'>流程</b>

    第二十七章 W55MH32?Interrupt示例

    介紹了 TOE?中斷的概念、特點、應用場景、中斷源以及使用中斷接收數據的流程,幫助讀者理解其在提升系統響應速度和資源利用率方面的實際應用價值。
    的頭像 發表于 07-24 16:14 ?709次閱讀
    第二十七章 W55MH32?Interrupt<b class='flag-5'>示例</b>

    協議分析儀支持哪些高級觸發選項?

    SYN-ACK包 客戶端發送ACK包且數據部分包含\"GET /\" 優勢:分析協議流程是否符合預期,定位握手失敗或狀態機錯誤。 狀態觸發 功能:基于協議狀態機的狀態轉移條件觸發(如
    發表于 07-23 14:21

    RK3128 Android 7.1 進入深度休眠流程分析

    RK3128 Android 7.1 進入深度休眠流程分析RK3128是瑞芯微電子推出的一款低功耗四核Cortex-A7處理器,運行Android 7.1系統時進入深度休眠(Deep Sleep
    發表于 07-22 10:45

    電源變換器EMC整改:需求分析到整改報告的標準化流程

    南柯電子|電源變換器EMC整改:需求分析到整改報告的標準化流程
    的頭像 發表于 06-24 11:12 ?726次閱讀

    突然黑屏不要怕,聚徽分享安卓工控機工業級屏幕無顯示的快速診斷流程

    案例,提出一套從黑屏到恢復的標準化診斷流程,涵蓋硬件、軟件、電源及通信四大維度,助力工程師在30分鐘內定位問題根源。 一、故障分級與初步排查 工業級屏幕無顯示問題需按緊急程度分級處理: 一級故障:完全黑屏,無任何
    的頭像 發表于 06-10 10:20 ?2229次閱讀

    伺服電機測試流程分析

    伺服電機的測試流程是確保電機正常工作的關鍵步驟。以下是對伺服電機測試流程的詳細分析。 ?一、初步檢查與準備 1. 外觀檢查:首先,對伺服電機進行外觀檢查,確保電機完好無損,沒有明顯的物理損傷或變形
    的頭像 發表于 04-23 17:56 ?1545次閱讀

    封裝失效分析流程、方法及設備

    本文首先介紹了器件失效的定義、分類和失效機理的統計,然后詳細介紹了封裝失效分析流程、方法及設備。
    的頭像 發表于 03-13 14:45 ?2161次閱讀
    封裝失效<b class='flag-5'>分析</b>的<b class='flag-5'>流程</b>、方法及設備