| 是這樣子的,有這樣子一個開發(fā)需求,我實驗了不成功,求大神幫忙解決。。。 開發(fā)需求為:一開機就執(zhí)行中斷里面的函數(shù),動作先用電燈代替,執(zhí)行完中斷里面的函數(shù)之后,然后再返回main執(zhí)行剩下的動作,也用點亮LED控制。。 代碼如下: #include "reg51.h" typedef unsigned int u16; typedef unsigned char u8; u16 a; sbit k3=P3^2; //定義按鍵K3 sbit led=P3^6; //定義P36口是led sbit led1=P3^7; //定義P37口是led1 void delay(u16 i) { while(i--); } void Int0Init() { IT0=1;//跳變沿出發(fā)方式(下降沿) EX0=1;//打開INT0的中斷允許。 EA=1;//打開總中斷 } void main() { Int0Init(); // 設(shè)置外部中斷0 a=1; while(1) { led=0; } } void Int0() interrupt 0 //外部中斷0的中斷函數(shù) { u16 i; if(a==1) { a=0; for(i=0;i<2;i++) { led=0; delay(10); led=1; delay(10); } } } 現(xiàn)在的問題是沒有中斷服務(wù)函數(shù)沒有檢測的a==1,只執(zhí)行了主函數(shù)while(1) 里面的 led=0; |

41.66 KB, 下載次數(shù): 6
程序和仿真
wulin 發(fā)表于 2019-5-2 19:43
樓主試試這樣:
wulin 發(fā)表于 2019-5-3 18:03
由于你的延時函數(shù)的時間是106us,中斷響應閃兩下肉眼根本觀察不出來。延時時間改長一點,并且用led1來驗 ...
18312284784 發(fā)表于 2019-5-3 17:57
#include "reg51.h"
#define uchar unsigned char
barret.zhang 發(fā)表于 2019-5-4 14:26
還是不行,根本就沒執(zhí)行中斷里面的程序
視頻.zip
(1.69 MB, 下載次數(shù): 6)
wulin 發(fā)表于 2019-5-4 17:14
不可能還是不行,這里有仿真視頻為證。可能你要檢查硬件是否正確。
barret.zhang 發(fā)表于 2019-5-5 10:58
好的,謝謝。已經(jīng)找到原因了...
| 歡迎光臨 (http://m.raoushi.com/bbs/) | Powered by Discuz! X3.1 |