?? vectors08.c
字號:
/*-----------------------------------------------------*
*文件名:vectors08.c *
*功 能:用于定義中斷矢量表 *
*-----------------------------------------------------*/
//[頭文件]
#include "Includes.h"
/*中斷接受處理函數------------------------------------*/
#pragma interrupt_handler isrRe
void isrRe(void)
{
INT8U i,j,no;
asm("SEI"); //禁止所有中斷
//1:接收數據
for(i=0;i<15;i++)
{ReBuf[i]=SCIRe1(&j);
if(j == 1) goto isrRe_Exit;}
//2:解包接收到的數據
no=DePackReBuf(ReBuf);
if(no==0) ReSendFlag=1; //時間接收成功
isrRe_Exit:
asm("CLI"); //開放總中斷
}
/*鍵盤中斷處理函數------------------------------------*/
#pragma interrupt_handler isrKBI
void isrKBI(void)
{
INT8U i,key1,key2,key_num=0;
asm("SEI"); //關總中斷
//開關量輸入------------------------
INTKBSCR|= (1<<IntBit); //屏蔽鍵盤中斷(IMASKK=1)
KeyInput_Judge(&key1);
KeyInput_Init(); //重新初始化鍵盤
INTKBSCR&= ~(1<<IntBit); //打開鍵盤中斷(IMASKK=0)
//---------------------------------------
for(i=0;i<5;i++)
{
KeyInput_Judge(&key2);
if((key1==key2))
key_num++;
}
if(key_num>=2)
KB_DefValue=key1;
else
KB_DefValue=key2;
asm("CLI"); //開總中斷
}
/*定時器Timer1中斷處理函數------------------------------------*
*功能:每1S中采集一次AD值,進行一次DA轉換
*-------------------------------------------------------------*/
#pragma interrupt_handler isrTIMER1
void isrTIMER1(void)
{
INT8U no;
asm("SEI"); //關總中斷
//1:采集2片2542-22路的AD值
ADC22P(ADValue);
//2:DA轉換
DAC(DAvalue);
//------------------------------
no++;
if(no==30)
{
TimeFlag|=0x01; //30s標志TimeFlag.0
no=0;
}
//------------------------------
//清除定時器溢出標志位
T1SC&=~(1<<TOFBit);
asm("CLI"); //開總中斷
}
//未定義的中斷處理函數,本函數不能刪除
#pragma interrupt_handler isrDummy
void isrDummy(void)
{
}
//中斷矢量表,需定義中斷函數,可修改下表中的相應項目
//(interrupt service routine,isr 中斷處理程序)
#pragma abs_address:0xffdc //中斷向量表起始地址
void (* const _vectab[])(void) = {
isrDummy, //時基中斷
isrDummy, //AD轉換中斷
isrKBI, //鍵盤中斷
isrDummy, //SCI TC/TE
isrRe, //SCI RF/IDLE
isrDummy, //SCI PE/FE/NF/OR
isrDummy, //SPI TE
isrDummy, //SPI MOD/OVR/RF
isrDummy, //TIM2溢出中斷
isrDummy, //TIM2通道1
isrDummy, //TIM2通道0
isrTIMER1, //TIM1溢出中斷
isrDummy, //TIM1通道1
isrDummy, //TIM1通道0
isrDummy, //CGM
isrDummy, //IRQ
isrDummy //SWI
//RESET也是中斷,定義在 crt08.o中
};
#pragma end_abs_address
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -