/****************************************
以下程序測試外部中斷, 主程序循環控制LED
快速閃爍,外部中斷使LED慢閃三次。
但是每次觸發外部中斷,LED不是慢閃三次,
而是慢閃六次! 不知為什么?請指教,謝謝!
****************************************/
#include "STC12C5Ax.h"
sbit WBZD = P3^2; //將外中斷定義為P3.2引腳
sbit LEDF = P1^3; //控制LED發光二極管
//// 全局變量定義
unsigned int TimeJG; //間隔 控制閃爍頻率
void delay(unsigned int n) //延時 n 毫秒
{
unsigned int x,y;
for(x=n;x>0;x--)
for(y=110;y>0;y--);
}
void Int0(void) interrupt 0 //外中斷處理
{
EX0 = 0; //關閉外中斷0,不再接收二次中斷
//慢閃三次
LEDF = 0;
delay(2000); //延時 n 毫秒
LEDF = 1;
delay(2000); //延時 n 毫秒
LEDF = 0;
delay(2000); //延時 n 毫秒
LEDF = 1;
delay(2000); //延時 n 毫秒
LEDF = 0;
delay(2000); //延時 n 毫秒
LEDF = 1;
delay(6000); //延時 n 毫秒
EX0=1 ; //開外中斷0
}
void main() //主函數
{
EA=1; //開啟總中斷
EX0=1; //開外中斷0
IT0=1; //外中斷下降沿觸發
while(1)
{
if(TimeJG++ == 0 ) //
{
TimeJG = 30000; //間隔 控制閃爍頻率
LEDF = ~LEDF; //翻轉 發光二極管閃爍
}
}
}
|