1 #include <iocc2540.h> 2 3 typedef unsigned char uchar; 4 typedef unsigned int uint; 5 6 uint flag = 0; //用於定時器計數 7 8 #define LED1 P1_0 9 #define LED2 P1_1 10 #define LED3 P1_2 11 #define LED4 P1_3 12 13 void led_init(void) 14 { 15 P1DIR |= 0X0F; //I/O方向設置,P1.0定義爲輸出 16 P1SEL &= ~0X0F; //做爲普通的io口 17 LED1 = 0; 18 LED2 = 0; 19 LED3 = 0; 20 LED4 = 0; 21 } 22 23 24 /****************************** 25 *name: T3_Init 26 *function: 定時器初始化,系統不配置工做時鐘默認是2分頻,即16MHZ 27 *******************************/ 28 void T3_Init(void) 29 { 30 T3IE = 1; //T3中斷使能 31 T3CCTL0 = 0XCA; //捕捉上邊緣 32 T3CTL |= 0xF8; //128分頻 33 //T1STAT = 0x21; //選擇0通道 34 EA = 1; 35 } 36 37 //定時器T3中斷處理函數 38 #pragma vector = T3_VECTOR 39 __interrupt void T3_ISR(void) 40 { 41 IRCON = 0X00; //清中斷標誌 42 flag++; 43 if(flag>230) //計數值爲245,230次中斷後LED燈取反,閃爍一輪爲1秒延時 44 { 45 flag = 0; //clr count 46 LED2 = ~LED2; //中斷執行的任務 47 48 } 49 } 50 51 void main(void) 52 { 53 //initialize hardware 54 led_init(); 55 T3_Init(); 56 57 //uchar count = 0; 58 while(1) 59 { 60 /*if(IRCON>0) 61 { 62 //進入中斷 63 IRCON = 0; //進入中斷,首先關閉中斷 64 if (count++ >=2) 65 { 66 count = 0; //count清除 67 LED1 = ~LED1; 68 } 69 }*/ 70 } 71 72 }