📄 isr.c
字号:
/*************************************************************/
//中断服务程序模块
//1.CAN中断服务程序;
//2.ADC中断服务程序;
/*************************************************************/
#include "common.h"
extern struct Acquired getdata;
extern struct Flag fla;
extern struct Data dat;
unsigned int buffer1;
unsigned int buffer2;
unsigned int buffer3;
unsigned int buffer4;
/*************************************************************/
//CAN中断服务程序
void __attribute__((interrupt,no_auto_psv)) _C1Interrupt(void)
{
IFS1bits.C1IF = 0; //清零CAN中断
if (C1INTFbits.TX2IF)
{
C1INTFbits.TX2IF = 0;
}
else if (C1INTFbits.TX1IF)
{
C1INTFbits.TX1IF = 0;
}
else if (C1INTFbits.TX0IF)
{
C1INTFbits.TX0IF = 0;
}
if(C1INTFbits.RX0IF)
{
C1INTFbits.RX0IF = 0;
buffer1 = C1RX0B1;
buffer2 = C1RX0B2;
buffer3 = C1RX0B3;
buffer4 = C1RX0B4;
C1RX0CONbits.RXFUL = 0;
if ((buffer1==0x0000) && (buffer2==0x1111) && (buffer3==0x2222) && (buffer4==0x3333))
{
LATDbits.LATD9 = 1;
int j;
for(j = 0; j < 10000; j++){}
LATDbits.LATD9 = 0;
}
}
else if(C1INTFbits.RX1IF)
{
C1INTFbits.RX1IF = 0;
buffer1 = C1RX1B1;
buffer2 = C1RX1B2;
buffer3 = C1RX1B3;
buffer4 = C1RX1B4;
C1RX1CONbits.RXFUL = 0;
if ((buffer1==0x0000) && (buffer2==0x1111) && (buffer3==0x2222) && (buffer4==0x3333))
{
LATDbits.LATD3 = 1;
int j;
for(j = 0; j < 10000; j++){}
LATDbits.LATD3 = 0;
}
}
}
/*************************************************************/
//ADC中断服务程序
void __attribute__((__interrupt__,auto_psv)) _ADCInterrupt(void)
{
IFS0bits.ADIF=0; //清零ADC中断
if(getdata.Read_ADCtimes < 4) //转换四次后读数
{
Read_ADC(getdata.Read_ADCtimes);
getdata.Read_ADCtimes++;
if(getdata.Read_ADCtimes == 4)
{
getdata.Read_ADCtimes = 0;
Get_Data();
}
}
}
/**********************************************************************/
void __attribute__((__interrupt__, auto_psv)) _T1Interrupt(void)
{
TMR1 = 0;
IFS0bits.T1IF = 0;
if(fla.Time_Flag < 15) //转换15次后读数
{
fla.Time_Flag++;
if(fla.Time_Flag == 15)
{
fla.Time_Flag = 0;
dat.possession = (unsigned int)(0.32*dat.posstime); //0.32=0.2*12*4/30000
int i = 1;
for( i = 1; i <= dat.flow; i++ )
{
C1TX0B1 = dat.flow;
C1TX0B2 = dat.possession;
C1TX0B3 = dat.speed[i];
C1TX0B4 = dat.shape[i];
C1TX0CONbits.TXREQ = 1;
dat.flow = 0;
dat.possession = 0;
dat.speed[i] = 0;
dat.shape[i] = 0;
dat.posstime = 0;
}
}
}
}
/*************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -