是這樣子的,有這樣子一個(gè)開發(fā)需求,我實(shí)驗(yàn)了不成功,求大神幫忙解決。。。 開發(fā)需求為:一開機(jī)就執(zhí)行中斷里面的函數(shù),動(dòng)作先用電燈代替,執(zhí)行完中斷里面的函數(shù)之后,然后再返回main執(zhí)行剩下的動(dòng)作,也用點(diǎn)亮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ù)沒有檢測(cè)的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í)函數(shù)的時(shí)間是106us,中斷響應(yīng)閃兩下肉眼根本觀察不出來。延時(shí)時(shí)間改長(zhǎng)一點(diǎn),并且用led1來驗(yàn) ...
18312284784 發(fā)表于 2019-5-3 17:57
#include "reg51.h"
#define uchar unsigned char
barret.zhang 發(fā)表于 2019-5-4 14:26
還是不行,根本就沒執(zhí)行中斷里面的程序
wulin 發(fā)表于 2019-5-4 17:14
不可能還是不行,這里有仿真視頻為證?赡苣阋獧z查硬件是否正確。
barret.zhang 發(fā)表于 2019-5-5 10:58
好的,謝謝。已經(jīng)找到原因了...
歡迎光臨 (http://www.torrancerestoration.com/bbs/) | Powered by Discuz! X3.1 |