熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2024-5-10 02:37
正文摘要:void init(){ IT0=1; EX0=1; EA=1; } 就是每中斷一次從數(shù)組abc中取一個(gè)值給t for ... |
xiaobendan001 發(fā)表于 2024-5-10 10:30 只要是中斷,都是不建議有延時(shí)的,反正linux內(nèi)核的中斷是這樣的思想 |
xjtong 發(fā)表于 2024-5-10 17:33 我用KEIL 4編譯你程序不過,修改下int0 通過,程序一切正常,沒有亂入問題 |
就是用單片機(jī)操作續(xù)電器,續(xù)電器控制風(fēng)扇。 有一個(gè)2。4G雷達(dá),有運(yùn)動(dòng)就開風(fēng)扇,開的時(shí)間用延時(shí)控制。 中斷的作用是改變延時(shí)的時(shí)候,從而改變風(fēng)扇運(yùn)行的時(shí)候。 #include <STC8G.h> 這樣基本就沒問題的。就是中斷重入的問題。開始LED閃爍明顯不對(duì),F(xiàn)在一切正常了。 |
xjtong 發(fā)表于 2024-5-10 14:28 再發(fā)生中斷會(huì)掛起pending,退出中斷處理程序后會(huì)再次進(jìn)入中斷處理程序。 |
不關(guān)是不是重復(fù)中斷,這樣延時(shí)的閃爍都應(yīng)該正常才對(duì)啊,先軟件模擬一下看看那些變量都是多少 |
npn 發(fā)表于 2024-5-10 15:39 恩,直接用杜邦線點(diǎn)GND,按鍵都省了。 |
tyrl800 發(fā)表于 2024-5-10 15:30 編譯一直沒問題,就是中斷是亂的。應(yīng)該是中斷重入的問題。 |
問題解決了。void int0() interrupt 0 這樣就好了。 |
外部中斷接的是什么? 如果是按鍵需要消抖處理。 |
都說了編譯通不過呀 |
xjtong 發(fā)表于 2024-5-10 14:28 "中斷里的程序還沒處理完又發(fā)生中斷" 單片機(jī)會(huì)繼續(xù)運(yùn)行中斷函數(shù) 直到運(yùn)行完畢跳出中斷函數(shù) 單片機(jī)會(huì)立刻再次運(yùn)行中斷函數(shù) |
Longan.Wang 發(fā)表于 2024-5-10 09:57 一次是10ms,20次是200ms |
lkc8210 發(fā)表于 2024-5-10 13:06 你說對(duì)了。 我覺得是抖動(dòng)的問題,所以在中斷是把EA關(guān)了呀。 在中斷里延時(shí)也是怕抖動(dòng)的問題。 重點(diǎn)是有一個(gè)邏輯我沒弄明白。比如中斷里的程序還沒處理為又發(fā)生中斷,這時(shí)單片機(jī)怎么處理,是直接無視,還是排對(duì)處理呀??? |
![]() |
沒電路圖盲猜按鍵接中斷 你沒加按鍵消抖,并在中斷里延時(shí)了 于是中斷在延時(shí)期間收到抖動(dòng)信號(hào),誤判了 反復(fù)進(jìn)入中斷 |
lightday 發(fā)表于 2024-5-10 09:35 樓主的中斷只是用來接收開關(guān)信號(hào)的,又不是定時(shí)器中斷,加點(diǎn)延時(shí)咋了? |
cy009 發(fā)表于 2024-5-10 09:28 有啥不科學(xué)的? |
編程技巧先不說,延時(shí)短了,眼睛根本看不到閃 |
編譯沒通過吧 |
中斷程序加延時(shí)是大忌,完全偏離中斷的意義。 可以在中斷里改變閃爍次數(shù)變量,然后在主程序里實(shí)現(xiàn)閃爍。 |
EA放在中斷函數(shù)里不科學(xué)吧! |
中斷觸發(fā)方式呢? |
Powered by 單片機(jī)教程網(wǎng)