![]() |
發布時間: 2019-12-6 12:23
正文摘要:AN1分別接外部中斷4管腳(P3.0)和地,AN2分別接P3.1和地之間。上面的測試程序是按下AN1或者AN2,LED都會亮,實際上只有按下AN2燈會亮,按下AN1燈不亮,也就是沒有進入中斷。其他的外部中斷也試了,也是沒有進入中斷 ... |
你測試中斷,就要一個空的while(1); 在那里候著,啥事都讓中斷干,才行。你while里,只要an2沒有按下,就關燈,循環還那么快,中斷了都不知道。 |
問題解決了:其實并不是沒有進入中斷,只是因為速度太快了,LED測試時肉眼看不出來,實際已經進入中斷了的。8F系列速度確實比15W系列的快了,導致在15W系列上可以用的程序到8F系列卻用不了, 通過增加延時時間,或者在中斷服務程序里加個跳轉函數處理即可解決。 謝謝@pcbboy 的指點 ![]() |
pcbboy 發表于 2019-12-6 13:25 好的,我改一下看看 |
你那個中斷里面不處理自然看不到反應了。比如LED取反啥的也好啊。 STC自己的范例為你參考: #include "reg51.h" #include "intrins.h" sbit P10 = P1^0; sbit P11 = P1^1; void INT1_Isr() interrupt 2 { if (INT1) //判斷上升沿和下降沿 { P10 = !P10; //測試端口 } else { P11 = !P11; //測試端口 } } void main() { IT1 = 0; //使能INT1上升沿和下降沿中斷 EX1 = 1; //使能INT1中斷 EA = 1; while (1); } |