?? timer0中斷.c
字號:
/**************************************************************
實驗名稱:定時器0中斷實驗
實驗目的:熟悉定時器0的使用
實驗準備:帶中斷的程序應該運行在FLASH模式下
實驗日期:2008,3,30
作者: 劉啟明
***************************************************************/
#include <iolpc2132.h>
#include <inarm.h>
#define BEEP 1 << 7 // P0.7控制蜂鳴器,低電平蜂鳴
#define Fpclk 12000000
/*****************************************************************
** 函數名稱 :IRQ_Timer0()
** 函數功能 :定時器0中斷服務程序,取反LED控制口。蜂鳴或閃爍
** 入口參數 :無
** 出口參數 :無
*****************************************************************/
#pragma vector=0x18
__irq __arm void IRQ_Timer0 (void)
{
T0IR_bit.MR0INT = 1; /* 清除中斷標志 */
if (IO0PIN_bit.P0_7==1)IO0CLR = BEEP;
else IO0SET = BEEP; /* BEEP取反LED */
VICVectAddr = 0x00; /* 通知VIC中斷處理結束 */
}
/*****************************************************************
** 函數名稱 :main()
** 函數功能 :使用定時器實現1秒鐘定時,控制LED閃爍。中斷方式。
** 調試說明 :需要將跳線0。7連接LED。
*****************************************************************/
void main (void)
{
PINSEL0 = 0x00000000; /* 設置管腳連接GPIO */
IO0DIR = BEEP; /* 設置BEEP控制口輸出 */
IO0SET = BEEP;
//T0IR_bit.MR0INT = 1;
/* 定時器0初始化 */
T0TC = 0; /* 定時器設置為0 */
T0PR = 0; /* 時鐘不分頻 */
T0MCR_bit.MR0RES = 1; /* 設置T0MR0匹配后復位T0TC,并產生中斷標志 */
T0MCR_bit.MR0INT = 1;
T0MR0 = Fpclk/2; /* 0.5秒鐘定時 */
T0TCR_bit.CE = 1; /* 啟動定時器 */
/* 設置定時器0中斷IRQ */
__disable_interrupt(); // 關中斷
VICIntSelect = 0x00; /* 所有中斷通道設置為IRQ中斷 */
VICVectCntl0_bit.NUMBER = 0x04; /* 設置定時器0中斷通道分配最高優先級 */
VICVectCntl0_bit.ENABLED = 1;
VICVectAddr0 = (unsigned int)IRQ_Timer0; /* 設置中斷服務程序地址 */
VICIntEnable_bit.INT4 = 1; /* 使能定時器0中斷 */
__enable_interrupt();
while (1);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -