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