微控制器中斷問題,51微控制器外部中斷問題

2022-11-03 18:51:59 字數 3683 閱讀 2915

1樓:匿名使用者

不太明白你問的問題。

t0還有空間呢?

如果想在t0中斷內增加程式,也是可以的,**長度和t0沒有關係,只要微控制器的儲存空間夠就可以了。

儘量不要在中斷中執行程式,會影響整個流程的合理性。所以一般只在中斷中設定標誌。

2樓:寒竹真人

微控制器的中斷入口都是排列在地址的最低端的,分別為0003,000b,0013,001b,0023,002b……以此類推,如果你的中斷程式量少於8個位元組,就可以直接安排在中斷入口間的地址內,如果你的程式較大,編譯器會在中斷入口處安排一條跳轉指令,將程式放置在後面,從入口處直接跳轉到程式處,因此你不用擔心外部中斷0的程式能寫多大,這個不是問題。

3樓:匿名使用者

在000bh這個地址只是你的中斷向量。一般只有很少的幾個位元組(看你的地址線是16位還是32位,就是2個或者4個位元組),只是一個地址,是你的中斷處理程式的地址。

當發生中斷的時候,系統會自動跳轉到你的中斷向量所指向的地址去執行你的中斷處理程式,而不是從你的中斷向量開始執行。

51微控制器外部中斷問題

4樓:匿名使用者

外部中斷引腳是p3.2和p3.3,你確定你的按鍵連線到這兩個引腳了嗎?

還有這個是什麼玩意兒?學過c嗎?

if(mode=1) mode=0;

5樓:本無酩

中斷裡面也要做一個消抖處理,否則會出現連續中斷。

關於微控制器中斷的問題

6樓:查有福季嫣

外部中斷,計數器定時器中斷,串列埠行中斷。具有不一樣的中斷向量,具有不一樣的中斷優先順序,處理不一樣的中斷響應。中斷請求是根據你自身對中斷的配置好之後,只要發生符合條件的事件,就會觸發中斷,跳轉到中斷處理程式。

#include

void

inittimer0(void)//定時100usvoid

inituart(void)

void

initirt(void)

void

main(void)

void

timer0interrupt(void)interrupt

1//處理定時器1中斷的程式,當定時器計數到100us時程式跳到這裡void

uartinterrupt(void)

interrupt

4//當發生串列埠中斷時,程式跳轉到這裡

elseti=

0;}void

intinterrupt(void)

interrupt

0//當外部引腳p3^0有低電平的時候,程式跳轉到這裡

微控制器的中斷問題

7樓:

你好!1、中斷標誌是在進入中斷程式時清零的。

2、會置位的,等上一個中斷處理完,會馬上再次進入中斷(如果沒有高優先順序的中斷來)。

你可以使用開發軟體的debug功能試驗一下。

對於第2個不太肯定,你可以自己在實物上做一下試驗。

我做了實驗了,證明第2個的結論也是正確的。

8樓:ts毛毛雨

微控制器的中斷標誌位不都是自動清零的,比如外部中斷就必須自己清零,一般是剛進入就清零吧,至於你說的再次中斷問題我覺得不用考慮。因為如果是外部中斷或者是串列埠中斷的話,你清零後只要不再操作這些埠就不會再次中斷,如果是定時器中斷的話就更沒事兒了,一般的定時器都得是ms級的,而一箇中斷一般都可以在us級內解決掉,所以不會影響到你

微控制器中的中斷問題,

9樓:果映房驪

過程是這樣的:

程式一直在while(1)裡面,直到定時器計滿產生中斷;

產生中斷後,執行中斷服務程式,定時器重新賦值,tt自加1;

回到while(1),等待下一次中斷,定時器繼續計數;

定時器產生中斷,......反覆20次,p10取反。

所以你的問題:

1.中斷函式是隻執行一次嗎

不是,每次執行完之後,由於中斷未關,並且t0繼續計數,所以後面一直會有中斷;

2.還有中斷函式對th0,tl0的賦值是不是多餘?

不是。每次產生中斷後t0的值已經是0了,不能滿足每0.5s/20產生一次中斷的初衷,所以重新賦值。

微控制器的中斷問題。。。

10樓:

「那個中斷函式和主函式直接是什麼關係?為什麼寫在主函式後邊但是主函式又沒引用?」

中斷函式無需被顯式呼叫。當有相應的中斷產生時,程式會自動中止當前的執行、記錄位置,然後跳轉到相應的中斷入口處。而在中斷入口會進行二次跳轉,到程式中對應的中斷處理函式內並執行。

中斷處理函式執行完畢返回後,跳回到剛才中止執行的位置繼續執行。

「電平觸發方式應該是exo=0呀,為什麼那個主函式裡的exo=1??」

ex0=1;代表使能外部中斷0。後面的it0=1;才是設定觸發方式。這裡的程式設定為了下降沿觸發,的確與題目的要求不符。

「while(1),無限迴圈是咋回事」

while(1)意味著永遠滿足迴圈條件,因此會永遠執行後面大括號裡的函式體。這裡一般放的都是主迴圈體。如果沒有主迴圈體,微控制器執行一次主程式之後就會繼續向後執行跑到空白區,從而產生各種未知的執行結果並不斷復位。

11樓:匿名使用者

看得出來

你對cpu的中斷機制沒有弄清楚

中斷函式是由中斷事件直接呼叫的

所以主函式中沒有【引用】

.中斷函式和主函式沒有任何直接關係

唯一的間接關係就是:

在主函式中開放了中斷請求(exo=1)

如果沒有這行

中斷就不可能發生

中斷函式就永遠不被執行

按鈕就沒有任何反應

.【要產生一個低電平觸發的外部中斷請求】

這句話你要看完整啊,不要只看一段就亂說了

主語是什麼?別亂瞎說好不

這個低電平是由按鈕k1產生的

不是由**產生的

你的語文閱讀能力不咋地

.【那個主函式裡的exo=1】

不是用來觸發中斷的

而是用來開放中斷請求的(前面已經說過了)

**的右邊明明都寫了註釋呀

說明你沒看,或者就是看不懂

.【while(1),無限迴圈是咋回事】

你有沒有看迴圈體?

pi=0;

就是所有led都接地

就是點亮所有led呀

只要不按k1按鈕

所有led都亮著

.如果你沒有cpu的中斷概念

我上面說的,你肯定看不懂了,你得從0學起

我不可能在這裡給你補課的

12樓:覃學家康樂

樓上的沒理解你的硬體,你描述的也有問題,那種紅外遙控用的接收頭,接收到的是數字編碼,在有資料輸入的時候你測到4.5v是因為資料中有1有0.平均值是4.

5v。樓上的確是個高手,不過你不把電路說清楚也沒用啊。

13樓:沃寶橋雁芙

把所有需要產生中斷的引用一個邏輯晶片連線在一起,比如用一個多與非門,把要產生中斷的腳都接在輸入端,輸出端就接在int0或int1上,當輸入引腳任一一個腳變為低電平就觸發低電平中斷或邊延中斷,這樣一來不就完成了p0口和中斷的關聯了。

51微控制器pwm波形頻率問題,51微控制器pwm波形輸出問題

很多微控制器帶pwm模組,可以出很工整的pwm波,非用定時器做也可以,比較耗資源.定時器做pwm好處是任意的io都可以輸出且沒有通道個數的限制.定時器用作pwm你需要兩個中斷,一個是pwm週期中斷 所有通道置低 一個是pwm的開關點中斷 置高電平 有些微控制器還是難以實現一個定時器兩種中斷,另一個做...

51微控制器的位定址區問題,MCS 51微控制器內部RAM中 單元為位定址區,其位地址範圍為

51單片bai機的位定址區問題書上寫著du位定址zhi區是20h 2fh,位地址00h 7fh,這不是超過dao這個位定址區了嘛內,這兩容個區域是什麼意思的?是這樣的,請你參考 51微控制器的位定址區問題書上寫著位定址區是20h 2fh 這裡的20h 2fh指的是片內ram低128位元組的 20h儲...

51微控制器與430微控制器的區別,430微控制器與51微控制器有什麼區別

首先,89c 51 單片 1 51單片 bai機是8位單 片機,du430是16位微控制器zhi。2 51微控制器dao效能和功耗上都不如版430微控制器,430微控制器被認權 為是現在功耗最低的微控制器。3 51微控制器主要用在一些比較簡單的工業裝置控制上,430主要用在一些低功耗手持裝置上 4 ...