㈠ 單片機中斷有什麼作用
51單片機中的外部中斷有什麼作用?
可以打個比方,每天上班你都隨時需要知道你同事的工作進度情況,你是希望你不停地打個電話去問「你做完了嗎」,還是希望他做完了主動打個電話給你講「我做完了,我們談談吧」。這就是中斷的意義,在不需要的時候不影響處理 器做其它的事情,提高效率,增強程序的實時性。
51單片機中什麼是中斷?其作用是什麼?怎麼用?用自己的理解回答把
中斷就是中途打斷。
通俗解釋:
你在看影碟,有人敲門(中斷源),中斷了你看影碟,觀看暫停。處理敲門的事宜(中斷目的),處理完成(中斷結束),繼續看影碟(繼續執行原來的任務)。
再比如:你在看電視,水開了(中斷源),把水灌到暖瓶里(中斷目的),再燒上一壺(繼續開中斷),回去看電視。水又開了。。。。。。。。(循環中斷)
以51單片機16位定時計數器0(T0)來講,
計數是T1是一個能盛65536(十六位時)滴水的水盆,在水龍頭下水一滴滴地滴入盆中。如果盆是空的那水在滴完65536滴水時盆子的水就滿了再滴一滴的時候就溢出了。這時就會產生中斷。
如果盆裡面已經裝入65500滴水(即初裝值),那麼只需要36滴水後就溢出了。
每一個水滴計數時即一個脈沖(高低電平變換一次)。
定時時每一個水滴即一個機器周期,水滴的速度即機器周期,等於12個振盪周期(晶振的振盪頻率除以12),直接影響到溢出的時間。
51單片機中斷系統的作用?
如果沒有中斷系統,就只能由 CPU 按照程序編寫的先後次序,對各個外設,進行巡迴檢查與處理。
這就是查詢式工作方式。
貌似公平,實際效率卻不高。
如果有了中斷系統,整個計算機系統,就具有了應付突發事件的處理能力。
這就是中斷式工作方式。
單片機的中斷標志位是有什麼作用?
四個問號分為四點一一解答:
1、一般來說單片機的中斷發生有兩個條件,一是中斷標志位置位,二是中斷允許,如果這兩個條件都滿足則進入中斷,因為正常情況下中斷一直是允許的,那麼只能通過標志位來區分是否有中斷掛起,
2、如果進入中斷不清除標志位,那麼這一中斷服務程序結束後由於標志位還是置位的並且中斷是允許的,那麼還會再次進入該中斷,就會發生一直在執行中斷程序的情況
3、周期性中斷是由定時器輔助完成的,只要定時時間到,硬體就會自動置位標志位,這時中斷發生,定時器還在運行,與中斷處理是並行的沒有沖突,因此周期性的中斷不是從中斷標志位清零開始的。
4、如果中斷程序沒有執行完並且一下個中斷又來了,那麼硬體還是會自動置位標志位的,如果在這之前已經清零標志位那麼中斷結束後會再進入一次該中斷,如果這時還沒有清除中斷標志位,則第二個1毫秒中斷無效。
單片機全局中斷有什麼用
本人覺得是因為現在有中斷正在執行,為了不讓高優先順序的中斷使現在的中斷發生中斷,而採取的保護程序
51單片機中斷有什麼作用
打個比方,你在房間看書,看書這個事是持久性的,拖延幾分鍾也沒事。突然淘寶買的衣服送到了,鏢局的人敲門,你用書簽做好標記去開門。拿回衣服,回去繼續看書。這個事的發生過程很正常。
同樣的,看書就像單片機的一般事務處理,收快遞就像中斷。主要是應對緊急的,有時效要求的事件的發生。書簽就是進出中斷相關的現場保護。
具體點,主程序中有LED不停的閃爍,由於外部按鍵的觸發,告訴你該發個位元組出去。這時,可以產生個按鍵相關的中斷(引腳電平中斷),去中斷發個位元組,然後趕緊回來繼續閃爍LED。
重要總結:就這么回事!
單片機程序什麼作用啊 尤其是X++作用 定時器中斷作用是什麼呢?
x應該是一個全局變數,每次中斷函數都會將x加1,程序的其餘函數會掃描x的值來做出相應的動作,
interrupt 1 是計時器中斷,這里應該是用一個全局變數計時,main函數或者其他中斷函數檢查x的數值做到定時的響應,如閃燈或者屏幕刷新又或者PWM輸出 ,
定時器中斷的作用是在CPU運行期間 ,定時器在不幹擾CPU正常運行的情況下不停地將自身寄存器(從你的函數初始化看是TH0和TL0並起來的一個16位值)減一,當寄存器值為0時候發起中斷(從1減去1開始到寄存器值為0之間發起的),這樣可以做到CPU不用一直等待一個時間的到來而空轉,或者運行一個程序的過程中計算運行的時間並定時插入一個額外的工作,
C51的計時器有4個工作模式(對於At89S51或者STC89C52及以上型號來說)不同的模式有不同的功能,這個網路文庫能看到的,另外TMOD寄存器和其他寄存器還設定了計時器是外部的跳變信號或者單片機內部時鍾來引起計時器的一次減1動作(計時動作)。
另外計時器可以設置為外部輸入模式,這樣就能作為計數器,比如說一個外接的按鍵,按10次後才觸發中斷,如果用外中斷處理,那麼整個主函數會被中斷九次做無效中斷才能等到第十次按鍵執行需要的中斷處理動作。
這一點在操作系統中也用到了,比如我們的PC的多任務操作系統,就是用時鍾中斷來把一個程序中斷執行另一個程序(比如操作系統和應用程序間)實現了時間片輪轉,不過PC的操作系統把所有的中斷處理函數都包含進去了,所以我們基本不用去管硬體中斷就能編程。 反觀單片機,因為資源有限,想要做到多任務(主函數與各個中斷函數及其子函數)必須用定時器(也可以通過外部信號做計數器)以及外中斷作為契機來切換多個任務。
如果需要解答整個中斷函數的功能,最好把全部的程序都帖出來,因為x這個全局變數的作用沒有在中斷函數中體現
有問題可以繼續跟我交流,我現在是大學本科生,學過C51單片機,正在學STM32
單片機中斷寄存器的作用是什麼?
中斷寄存器就是用於存貯中斷狀態的 包含是否啟用中斷 或者是 是否發生中斷
#include void InitUART(void){ TMOD = 0x20; 計時器類型 SCON = 0x50; TH1 = 0xFD; TL1 = TH1; PCON = 0x00; EA = 1; 中斷寄存器的操作 ES = 1; TR1 = 1; 計時器1的中斷}void SendOneByte(unsigned char c){ SBUF = c; while(!TI); TI = 0;}void main(void){ InitUART();}void UARTInterrupt(void) interrupt 4{ if(RI) { RI = 0; add your code here! } else TI = 0;}
單片機中斷 的interrupt 0 using 1中的using有什麼作用
看到樓上二位說的有誤,特糾正。
void INT0()interrupt 0 using 1
{....
棱....
}
interrupt 0 指明是外部中斷0;
interrupt 1 指明是定時器中斷0;
interrupt 2 指明是外部中斷1;
interrupt 3 指明是定時器中斷1;
interrupt 4 指明是串列口中斷;
using 0 是第0組寄存器;
using 1 是第1組寄存器;
using 2 是第2組寄存器;
using 3 是第3組寄存器;
51單片機內的寄存器是R0--R7(不是R0-R3)
R0-R7在數據存儲器里的實際地址是由特殊功能寄存器PSW里的RS1、RS0位決定的。
using 0時設置 RS1=0,RS0 =0,用第0組寄存器,R0--R7的在數據存儲區里的實際地址是00H-07H。R0(00H)....R7(07H)
using 1時設置 RS1=0,RS0 =1,用第1組寄存器,R0--R7的在數據存儲區里的實際地址是00H-07H。R0(08H)....R7(0FH)
using 2時設置 RS1=1,RS0 =0,用第2組寄存器,R0--R7的在數據存儲區里的實際地址是08H-0FH。R0(10H)....R7(17H)
using 3時設置 RS1=1,RS0 =1,用第3組寄存器,R0--R7的在數據存儲區里的實際地址是00H-07H。R0(18H)....R7(1FH)
單片機為什麼使用中斷
中斷保護現場,是為了你中斷子程序執行完以後能夠返回到你程序中中斷點,即產生中斷的地方,使程序能夠繼續向下執行!!!!
如過你說的不用保護現場的話,那麼程序執行完以後就不能夠回到現場,那麼你的程序將不知道要跳轉到那裡去了,也就是飛鳥,呵呵……
你說的中斷嵌套,也是一樣的,兩者都要保護現場,不然你也不能夠回到現場,程序也會飛的!!!!
而我們保護現場的數據都是放在堆棧中的,因此,你的中斷次數也不能夠超過堆棧的級數,那樣數據也會丟失!!!!
說白了,中斷它不同於子程序,子程序是固定好了的,返回的位置也固定了;而中斷我們不能夠預知它在那裡發生中斷,因此要保護現場,使中斷子程序執行完後返回到中斷的地方!!!
呵呵……說的太多了!!!
我知道你說的意思了,但是你要知道,中斷現場保護是在中斷子程序中進行的,因此當你高一級的中斷發生的時候(他們不可能共用一個中斷子程序,如果是同一中斷,那也不可能,因為51中斷中你進入中斷子程序後要將禁止該中斷再次中斷,好象似的,嘿嘿……你可以試試),在高一級的中斷子程序中也有現場保護,你的問題就是沒有把現場保護放對地方!!!!!
============================================================
它們是把現場保護在同一堆棧中,我跟你打個比方吧,假如說堆棧的地址是80H,低一級的中斷要保護的是1,2,3;高一級要保護的現場是4,5,6,那麼在低一級的中斷發生的時候,現場保護1,2,3將壓如堆棧,(順序書上應該有,這里是個比喻),那我先壓入1,堆棧閥址加1,壓入2,堆棧地址再加1,如果這個時候高一級的中斷發生,那麼現在就應該跳到高一級中斷的子程序,堆棧地址就是82H了,在將4,5,6分別壓入堆棧,這樣堆棧的地址就是85H,當高一級的中斷子程序結束後,返回現場,堆棧的數據要從85H開始彈出,這樣現場返回的就是6,5,4,這個時候程序就會跳到中斷之前的地方,即底一級的中斷那裡,將要繼續將3保護到堆棧中,在執行低一級的中斷子程序.(其中,你要在中斷保護現場完了後將中斷標志清0啊,不然它始終會中斷的,不可能去執行程序去了...)
㈡ 單片機中在開啟AD中斷的前提下,是不是AD一旦轉換結束會就立馬進入中斷函數啊
轉換完成就會進入中斷,中斷函數執行完就自動退出。如果硬體置為位就不用清除中斷標志位。
㈢ STC12C5A60S2單片機做AD轉換的中斷的時候中斷只能執行幾次後就進不去中斷程序了
肯定是你程序上
處理ADC_FLAG
標志出現了問題
否則沒道理槐缺
不過由於這種單片機速度比較快
最好鉛歷辯不使用中斷方法
以爛畢免頻繁進入中斷
浪費資源
㈣ 求助,單片機的AD取值時間過長影響中斷
你可以理解這個CPU執行程序是有優先順序的吧,雖然你死循環,但是在某個時間片,就只有1條語句在執行,然後這個中斷的優先派伏級春悔高,所以會塵森攜進入中斷
㈤ 單片機adc中斷查詢次序號是多少
在單片機中,ADC中斷查漏纖詢次序號是根據具體的單片機架構和中斷控制器而定的,並不是固定的。每個中斷的查詢次序號都是根據其優先順序和中斷控制器的實現方式確定的。在ATmega328P中,ADC中斷的查詢次序號為ADC的中斷向量。其優先順序僅次於RESET、外部硬體中斷和TIMER中斷,位於第四位。而在STM32系列單片機中,中斷查詢次序號是通過NVIC(Nested Vector Interrupt Controller,嵌套向量中斷控制器)進行管理的。因此,具體的中斷查答纖詢次序清搜仿號需要具體查看相關單片機的手冊或參考資料。
㈥ 單片機的AD中斷功能是不是開啟後就會不停的轉換,不能定周期的轉換這樣單片還能幹別的嗎
這個你要看手冊才行,看看你的單片機有沒有連續轉換功能.
有的單片機是轉換成功一次後就停止比如SH88FXX,ATmega16系列,有的單片機是可以設置連續轉換和單次轉換此敏的,比如STM32,也就是拍滑說,幾乎所有的單片機都可以實現單次轉換後就停止.
你想定周期轉換,就把單片機AD轉換設置成單次轉換模式,或者採用只能單次轉換的單片機,然後用定時器來幫忙,比如,設置定時器,每1秒鍾轉換一次.
另外,再說明一下,AD轉換的過程中是非常短暫的,你只要用定周期辦法,或者如果有DMA功能,都不會影響你做別的事情.
AD中斷,一般都是AD轉換完成後即引發中斷,AD查詢,就是你要人為的去等待AD轉換結束,前者比後者能多多少少節省時間,提高性能.就好比你早晨起床,有兩種辦法,一是定個森賀枝鬧鍾,讓鬧鍾叫醒你,這就好比中斷方式,二是,你睡一會兒起來看一下時間,這就好比查詢功能,採用後者肯定你睡不好覺.
不過,就我接觸的單片機而言,他們的AD轉換都非常快,大約1個毫秒不到就完成了,所以AD中斷與查詢區別不是很大.
㈦ AVR單片機ADC中斷程序問題
你用的是單觸發采樣模式,而不是連續采樣模式,在采樣中斷中要加一句ADC禁止中斷,這樣就好了。
㈧ STC12C5A16S2單片機的AD轉換功能,採用中斷方式的C代碼問題。
void adc_isr() interrupt 5 using 1
{
......
ch++;
...
}
請教您是或飢如何測試判斷,程序根本衫鉛返就沒有進入激陵過AD的中斷處理程序?
㈨ 求助likyo,6747 AD采樣,定時器中斷
1.中斷服務程扒升序裡面盡量不要有過多的程序,只置標志位。其他的在主循環裡面輪詢標志位來做。2.AD處理程序超過1ms,也是可以使1ms定時器按時觸發的。具體看你中斷服務程序裡面怎麼寫。3.通過SPI讀取AD數據,按照我的理解,你是6747外接外部AD采樣晶元,然後晶元通過SPI把AD轉換信號發送給6747。如果是手搏這樣的話,應該查閱AD采樣晶元發送數據的頻率是多少。如果它每隔4毫秒發一次采樣信號,你的定時器也應該調到4毫秒。還有一種方法就是相應的SPI管腳接到示波器上,看每隔多少時間發送一次。4.你可以使用CCS的profile->clock功能來查看每個功能模塊所消耗的指令周期數。結合硬體模擬加斷點,你可以很直觀的看到哪裡是你處理時間最長的地方。4.ti官網、隨板子附送的光碟里及其他地方有很多6747的常式。通過學習、模仿例畢此祥程可以加快你學習的速度。
㈩ PIC單片機AD中斷什麼時候開啟
AD模數轉換,是把模擬電壓數值采樣進來,然後轉換成數字信號。這一采樣和轉換是需要時間的。並不是一開AD就能讀到數字信號數據。
一般來說其時間都只有幾微秒到幾百微秒(根據設置不同而定)。如果單片機沒有其他工作的時候,可以用循環等待的方式等AD轉換結束(轉換結束後DONE位會被置位)。但如果你的單片機還有其他工作,那就沒必要在等待它上面花費時間。可以開AD操作後,繼續執行其他程序。而轉換結束後,AD中斷可以暫時斷開現有炒作,而把AD數據讀進來。這就是AD中斷的作用。