📄 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 + -