91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

中斷流程分析與示例

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

掃碼添加小助手

加入工程師交流群

中斷的概念:
CPU在處理某一事件A時(shí),發(fā)生了另一事件B的請(qǐng)求(中斷請(qǐng)求);CPU暫時(shí)中斷當(dāng)前的工作,轉(zhuǎn)去處理事件B(中斷響應(yīng)和中斷服務(wù));待CPU將事件B處理完畢后,再回到原來(lái)事件A被中斷的地方繼續(xù)處理事件A(中斷返),這一過(guò)程稱為中斷。

wKgaomVhd2qAfwCeAAczh1MgDBc191.png中斷執(zhí)行過(guò)程圖

如何執(zhí)行如上圖所示:先執(zhí)行主程序,到達(dá)斷點(diǎn)的地方出現(xiàn)中斷請(qǐng)求,此時(shí)執(zhí)行中斷響應(yīng),執(zhí)行中斷處理程序,執(zhí)行完中斷返回?cái)帱c(diǎn),再繼續(xù)執(zhí)行主程序。

中斷源:
引起CPU中斷的根源,稱為中斷源。中斷源向CPU提出的中斷請(qǐng)求。CPU暫時(shí)中斷原來(lái)的事務(wù)A,轉(zhuǎn)去處理事件B。對(duì)事件B處理完畢后,再回到原來(lái)被中斷的地方(即斷點(diǎn)),稱為中斷返回。實(shí)現(xiàn)上述中斷功能的部件稱為中斷系統(tǒng)(中斷機(jī)構(gòu))。
中斷的優(yōu)點(diǎn):
分時(shí)操作:CPU可以分時(shí)為多個(gè)外設(shè)服務(wù),提高了計(jì)算機(jī)的利用率;
實(shí)時(shí)響應(yīng):CPU能夠及時(shí)處理應(yīng)用系統(tǒng)的隨機(jī)事件,系統(tǒng)的實(shí)時(shí)性大大增強(qiáng);
可靠性高:CPU具有處理設(shè)備故障及掉電等突發(fā)性事件能力,從而使系統(tǒng)可靠性提高。

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

那么我們?nèi)绾瓮ㄟ^(guò)keil使用51單片機(jī)外部中斷0觸發(fā)數(shù)碼管顯示三位數(shù)字呢?

下面給予chatGPT示例

#include

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

unsigned int num = 0; //定義計(jì)數(shù)器

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

void display(unsigned int n) //數(shù)碼管顯示函數(shù)
{
unsigned char code table[] = { //數(shù)碼管顯示表
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; //關(guān)閉所有數(shù)碼管
switch(i) //選擇要顯示的數(shù)位
{
case 0:
P0 = 0xfe; //第一位數(shù)碼管
break;
case 1:
P0 = 0xfd; //第二位數(shù)碼管
break;
case 2:
P0 = 0xfb; //第三位數(shù)碼管
break;
}
P2 = table[n%10]; //顯示個(gè)位數(shù)字
delay(1); //延時(shí)一段時(shí)間
P2 = 0xff; //關(guān)閉所有數(shù)碼管
switch(i) //選擇要顯示的數(shù)位
{
case 0:
P0 = 0xfd; //第二位數(shù)碼管
break;
case 1:
P0 = 0xfb; //第三位數(shù)碼管
break;
case 2:
P0 = 0xf7; //第四位數(shù)碼管
break;
}
P2 = table[n/10%10]; //顯示十位數(shù)字
delay(1); //延時(shí)一段時(shí)間
P2 = 0xff; //關(guān)閉所有數(shù)碼管
switch(i) //選擇要顯示的數(shù)位
{
case 0:
P0 = 0xfb; //第三位數(shù)碼管
break;
case 1:
P0 = 0xf7; //第四位數(shù)碼管
break;
case 2:
P0 = 0xef; //第五位數(shù)碼管
break;
}
P2 = table[n/100%10]; //顯示百位數(shù)字
delay(1); //延時(shí)一段時(shí)間
P2 = 0xff; //關(guān)閉所有數(shù)碼管
switch(i) //選擇要顯示的數(shù)位
{
case 0:
P0 = 0xf7; //第四位數(shù)碼管
break;
case 1:
P0 = 0xef; //第五位數(shù)碼管
break;
case 2:
P0 = 0xdf; //第六位數(shù)碼管
break;
}
P2 = table[n/1000%10]; //顯示千位數(shù)字
delay(1); //延時(shí)一段時(shí)間
}
}

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

void Interrupt0() interrupt 0 //外部中斷0中斷服務(wù)函數(shù)
{
num++; //計(jì)數(shù)器加1
LED = ~LED; //LED翻轉(zhuǎn)
}
在上面的代碼中,我們定義了一個(gè)計(jì)數(shù)器num,并在外部中斷0中斷服務(wù)函數(shù)中將其加1。同時(shí),在main函數(shù)中,我們使用display函數(shù)來(lái)顯示num的后三位數(shù)字。display函數(shù)中使用了一個(gè)數(shù)碼管顯示表來(lái)將數(shù)字轉(zhuǎn)換為數(shù)碼管的顯示碼,然后通過(guò)控制數(shù)碼管的選擇位和段選位來(lái)實(shí)現(xiàn)數(shù)碼管的顯示。在每次顯示完一個(gè)數(shù)位后,我們都會(huì)延時(shí)一段時(shí)間,以控制數(shù)碼管的亮度和顯示效果。最后,我們?cè)趍ain函數(shù)的無(wú)限循環(huán)中不斷調(diào)用display函數(shù),以實(shí)現(xiàn)數(shù)碼管的動(dòng)態(tài)顯示。

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

我覺(jué)得還是太復(fù)雜了(主要是太多了不想看又看不懂emmm),下面是我通過(guò)keil使用51單片機(jī)外部中斷0觸發(fā)數(shù)碼管顯示后三位學(xué)號(hào)的示例代碼:

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

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即延時(shí)xms
for(j=112;j>0;j--);
}

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

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運(yùn)行結(jié)果

wKgZomVjGWGADNLKAAhz7ubzg1w506.png硬件顯示效果

顯示效果:顯示4位學(xué)號(hào)7628,通過(guò)外部中斷0使第一位數(shù)碼管不亮,從而顯示學(xué)號(hào)后三位。

總結(jié):P3.2由ITO(TCON.0)選擇其為低電平有效。當(dāng)CPU檢測(cè)到P3.2引腳上出現(xiàn)有效的中斷信號(hào)時(shí),中斷標(biāo)志 IEO(TCON.1)置1,向CPU申請(qǐng)中斷。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6076

    文章

    45495

    瀏覽量

    670444
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11279

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    RK806中斷處理流程深度解析:從架構(gòu)到調(diào)試實(shí)戰(zhàn)

    RK806 作為瑞芯微主流 PMIC(電源管理芯片),其中斷機(jī)制是實(shí)現(xiàn)“電源鍵響應(yīng)、電壓異常保護(hù)、休眠喚醒、 watchdog 超時(shí)處理” 等核心功能的基礎(chǔ)。Linux 驅(qū)動(dòng)基于regmap_irq框架設(shè)計(jì),屏蔽了底層寄存器操作細(xì)節(jié),但調(diào)試時(shí)若不理解中斷流程,往往會(huì)陷入“
    的頭像 發(fā)表于 02-05 13:46 ?980次閱讀
    RK806<b class='flag-5'>中斷</b>處理<b class='flag-5'>流程</b>深度解析:從架構(gòu)到調(diào)試實(shí)戰(zhàn)

    深圳南柯電子|EMC摸底測(cè)試整改:“定位-分析-優(yōu)化-驗(yàn)證”全流程

    深圳南柯電子|EMC摸底測(cè)試整改:“定位-分析-優(yōu)化-驗(yàn)證”全流程
    的頭像 發(fā)表于 01-28 09:42 ?193次閱讀

    超級(jí)法拉電容均壓板漏電嚴(yán)重怎么辦?

    文章總結(jié):超法拉電容均壓板漏電問(wèn)題需通過(guò)檢測(cè)、優(yōu)化和維護(hù)解決,涵蓋診斷流程、場(chǎng)景化方案及預(yù)防措施。
    的頭像 發(fā)表于 11-27 09:19 ?758次閱讀
    超級(jí)法拉電容均壓板漏電嚴(yán)重怎么辦?

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

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

    視頻卡頓分析流程

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

    電能質(zhì)量在線監(jiān)測(cè)裝置歷史波形回放的操作流程是怎樣的

    電能質(zhì)量在線監(jiān)測(cè)裝置的歷史波形回放操作需結(jié)合設(shè)備類型、存儲(chǔ)方式及訪問(wèn)權(quán)限,通常分為本地操作和遠(yuǎn)程訪問(wèn)兩類流程。以下是基于主流設(shè)備特性的詳細(xì)步驟說(shuō)明,涵蓋數(shù)據(jù)檢索、波形查看、分析及導(dǎo)出全流程,并附典型
    的頭像 發(fā)表于 11-05 11:32 ?859次閱讀

    eVTOL艙內(nèi)噪聲響應(yīng)分析的仿真流程

    上一節(jié)中介紹了eVTOL旋翼噪聲的表征以及通過(guò)聲學(xué)BEM模型分析旋翼噪聲到eVTOL機(jī)體外表面的噪聲傳播分析流程,本節(jié)將在上節(jié)內(nèi)容的基礎(chǔ)上繼續(xù)介紹eVTOL艙內(nèi)噪聲響應(yīng)分析的仿真
    的頭像 發(fā)表于 09-23 14:06 ?643次閱讀
    eVTOL艙內(nèi)噪聲響應(yīng)<b class='flag-5'>分析</b>的仿真<b class='flag-5'>流程</b>

    碳化硅襯底 TTV 厚度測(cè)量數(shù)據(jù)異常的快速診斷與處理流程

    摘要 本文針對(duì)碳化硅襯底 TTV 厚度測(cè)量中出現(xiàn)的數(shù)據(jù)異常問(wèn)題,系統(tǒng)分析異常類型與成因,構(gòu)建科學(xué)高效的快速診斷流程,并提出針對(duì)性處理方法,旨在提升數(shù)據(jù)異常處理效率,保障碳化硅襯底 TTV 測(cè)量準(zhǔn)確性
    的頭像 發(fā)表于 08-14 13:29 ?1212次閱讀
    碳化硅襯底 TTV 厚度測(cè)量數(shù)據(jù)異常的快速診斷與處理<b class='flag-5'>流程</b>

    第二十七章 W55MH32?Interrupt示例

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

    協(xié)議分析儀支持哪些高級(jí)觸發(fā)選項(xiàng)?

    SYN-ACK包 客戶端發(fā)送ACK包且數(shù)據(jù)部分包含\"GET /\" 優(yōu)勢(shì):分析協(xié)議流程是否符合預(yù)期,定位握手失敗或狀態(tài)機(jī)錯(cuò)誤。 狀態(tài)觸發(fā) 功能:基于協(xié)議狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)移條件觸發(fā)(如
    發(fā)表于 07-23 14:21

    RK3128 Android 7.1 進(jìn)入深度休眠流程分析

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

    電源變換器EMC整改:需求分析到整改報(bào)告的標(biāo)準(zhǔn)化流程

    南柯電子|電源變換器EMC整改:需求分析到整改報(bào)告的標(biāo)準(zhǔn)化流程
    的頭像 發(fā)表于 06-24 11:12 ?738次閱讀

    突然黑屏不要怕,聚徽分享安卓工控機(jī)工業(yè)級(jí)屏幕無(wú)顯示的快速診斷流程

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

    伺服電機(jī)測(cè)試流程分析

    伺服電機(jī)的測(cè)試流程是確保電機(jī)正常工作的關(guān)鍵步驟。以下是對(duì)伺服電機(jī)測(cè)試流程的詳細(xì)分析。 ?一、初步檢查與準(zhǔn)備 1. 外觀檢查:首先,對(duì)伺服電機(jī)進(jìn)行外觀檢查,確保電機(jī)完好無(wú)損,沒(méi)有明顯的物理?yè)p傷或變形
    的頭像 發(fā)表于 04-23 17:56 ?1560次閱讀

    封裝失效分析流程、方法及設(shè)備

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