📄 tinter.c
字号:
//
// File name =Tinter.C
// 设计 何风涛
#include "class.h"
#include "classext.h"
const unsigned char DisOperAera0[16]=
{
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
#pragma locate(DisOperAera0=0xFF13E0)
#pragma interruptpage(0xFF0000)
#pragma interrupt(EPAx_isr = 0)
#pragma interrupt(EPA0_SoftTimer=4)
#pragma interrupt(EPA2_SoftTimer=2)
#pragma interrupt(EPA3_SoftTimer=1)
#pragma interrupt(Com232_Rx=0xFF2038)
#pragma interrupt(Com232_Tx=0xFF2036)
#pragma interrupt(Exint_isr=0xFF203C)
void EPAx_isr( void )
{
register int int_no;
register unsigned int time_value;
register unsigned long portid;
register unsigned char value;
wsr=0;
int_mask=int_mask | EPA0_INT_BIT;
int_no = epaipv; /* An interrupt EPAx has occured. */
time_value=epa3_time;
while(int_no!=0)
{
switch ( int_no )
{
case 0x01: /* T2 溢出 */
break;
case 0x02: /* T1 溢出 */
break;
case 0x03: /* 捕获 通道 1 */
break;
case 0x04: /* 捕获 通道 0 */
break;
case 0x05: /* 捕获 溢出 9 */
break;
case 0x06: /* 捕获 溢出 8 */
break;
case 0x07: /* 捕获 溢出 7 */
break;
case 0x08: /* 捕获 溢出 6 */
break;
case 0x09: /* 捕获 溢出 5 */
break;
case 0x0A: /* 捕获 溢出 4 */
break;
case 0x0B: /* 捕获 溢出 3 */
break;
case 0x0C: /* 捕获 溢出 2 */
break;
case 0x0D: /* 捕获 溢出 1 */
break;
case 0x0E: /* 捕获 溢出 0 */
break;
case 0x0F: /* EPA9 中断 */
break;
case 0x10: /* EPA8 中断 */
break;
case 0x11: /* EPA7 中断 */
break;
case 0x12: /* EPA6 CAN1 中断 */
time_value=epa6_time;
value=CAN1_INT;
if((value & 0x04)!=0)
{//出错中断
pVar->Can_Error[1]++;
CAN1_CMD=RCAN_RELEASE;
}
if((value & 0x01)!=0)
{//接收中断
value=RCAN1_ID;
if(value==comset[1].node)
{//报文--------------------------------
switch(RCAN1_LEN)
{
case 0x08:time_value=RCAN1_INDX-4;
if(time_value>245) time_value=245;
ComHandle[1]->CanRxdBuf[time_value+0]=RCAN1_BYT0;
ComHandle[1]->CanRxdBuf[time_value+1]=RCAN1_BYT1;
ComHandle[1]->CanRxdBuf[time_value+2]=RCAN1_BYT2;
ComHandle[1]->CanRxdBuf[time_value+3]=RCAN1_BYT3;
ComHandle[1]->CanRxdBuf[time_value+4]=RCAN1_BYT4;
ComHandle[1]->CanRxdBuf[time_value+5]=RCAN1_BYT5;
ComHandle[1]->CanRxdBuf[time_value+6]=RCAN1_BYT6;
break;
case 0x20:time_value=RCAN1_INDX-4;
if(time_value>245) time_value=245;
Task[1].WaitStatus =Task[1].WaitStatus | 0x02;
time_value=0;
break;
case 0x21:time_value=RCAN1_INDX-4;
if(time_value>245) time_value=245;
Task[1].WaitStatus =Task[1].WaitStatus | 0x02;
time_value=0;
break;
case 0x22:time_value=RCAN1_INDX-4;
if(time_value>245) time_value=245;
ComHandle[1]->CanRxdBuf[time_value+0]=RCAN1_BYT0;
Task[1].WaitStatus =Task[1].WaitStatus | 0x02;
time_value=0;
break;
case 0x23:time_value=RCAN1_INDX-4;
if(time_value>245) time_value=245;
ComHandle[1]->CanRxdBuf[time_value+0]=RCAN1_BYT0;
ComHandle[1]->CanRxdBuf[time_value+1]=RCAN1_BYT1;
Task[1].WaitStatus =Task[1].WaitStatus | 0x02;
time_value=0;
break;
case 0x24:time_value=RCAN1_INDX-4;
if(time_value>245) time_value=245;
ComHandle[1]->CanRxdBuf[time_value+0]=RCAN1_BYT0;
ComHandle[1]->CanRxdBuf[time_value+1]=RCAN1_BYT1;
ComHandle[1]->CanRxdBuf[time_value+2]=RCAN1_BYT2;
Task[1].WaitStatus =Task[1].WaitStatus | 0x02;
time_value=0;
break;
case 0x25:time_value=RCAN1_INDX-4;
if(time_value>245) time_value=245;
ComHandle[1]->CanRxdBuf[time_value+0]=RCAN1_BYT0;
ComHandle[1]->CanRxdBuf[time_value+1]=RCAN1_BYT1;
ComHandle[1]->CanRxdBuf[time_value+2]=RCAN1_BYT2;
ComHandle[1]->CanRxdBuf[time_value+3]=RCAN1_BYT3;
Task[1].WaitStatus =Task[1].WaitStatus | 0x02;
time_value=0;
break;
case 0x26:time_value=RCAN1_INDX-4;
if(time_value>245) time_value=245;
ComHandle[1]->CanRxdBuf[time_value+0]=RCAN1_BYT0;
ComHandle[1]->CanRxdBuf[time_value+1]=RCAN1_BYT1;
ComHandle[1]->CanRxdBuf[time_value+2]=RCAN1_BYT2;
ComHandle[1]->CanRxdBuf[time_value+3]=RCAN1_BYT3;
ComHandle[1]->CanRxdBuf[time_value+4]=RCAN1_BYT4;
Task[1].WaitStatus =Task[1].WaitStatus | 0x02;
time_value=0;
break;
case 0x27:time_value=RCAN1_INDX-4;
if(time_value>245) time_value=245;
ComHandle[1]->CanRxdBuf[time_value+0]=RCAN1_BYT0;
ComHandle[1]->CanRxdBuf[time_value+1]=RCAN1_BYT1;
ComHandle[1]->CanRxdBuf[time_value+2]=RCAN1_BYT2;
ComHandle[1]->CanRxdBuf[time_value+3]=RCAN1_BYT3;
ComHandle[1]->CanRxdBuf[time_value+4]=RCAN1_BYT4;
ComHandle[1]->CanRxdBuf[time_value+5]=RCAN1_BYT5;
Task[1].WaitStatus =Task[1].WaitStatus | 0x02;
time_value=0;
break;
case 0x28:// RecFrame();
time_value=RCAN1_INDX-4;
if(time_value>245) time_value=245;
ComHandle[1]->CanRxdBuf[time_value+0]=RCAN1_BYT0;
ComHandle[1]->CanRxdBuf[time_value+1]=RCAN1_BYT1;
ComHandle[1]->CanRxdBuf[time_value+2]=RCAN1_BYT2;
ComHandle[1]->CanRxdBuf[time_value+3]=RCAN1_BYT3;
ComHandle[1]->CanRxdBuf[time_value+4]=RCAN1_BYT4;
ComHandle[1]->CanRxdBuf[time_value+5]=RCAN1_BYT5;
ComHandle[1]->CanRxdBuf[time_value+6]=RCAN1_BYT6;
Task[1].WaitStatus =Task[1].WaitStatus | 0x02;
time_value=0;
break;
default: break;
}
}else
{//----------------------------
if(value==0x7f)
{//对时
switch(RCAN1_LEN)
{
case 0x08:ClockBuf[0]=RCAN1_BYT0;
ClockBuf[1]=RCAN1_BYT1;
ClockBuf[2]=RCAN1_BYT2;
ClockBuf[3]=RCAN1_BYT3;
ClockBuf[4]=RCAN1_BYT4;
ClockBuf[5]=RCAN1_BYT5;
ClockBuf[6]=RCAN1_BYT6;
break;
case 0x28:ClockBuf[7] =RCAN1_BYT0;
ClockBuf[8] =RCAN1_BYT1;
ClockBuf[9] =RCAN1_BYT2;
ClockBuf[10]=RCAN1_BYT3;
ClockBuf[11]=RCAN1_BYT4;
ClockBuf[12]=RCAN1_BYT5;
ClockBuf[13]=RCAN1_BYT6;
value=ClockBuf[6];
value=value+ClockBuf[7];
value=value+ClockBuf[8];
value=value+ClockBuf[9];
value=value+ClockBuf[10];
value=value+ClockBuf[11];
value=value+ClockBuf[12];
if(value==ClockBuf[13])
{
portid=DS_REGA;
value=0x26;
asm estb value, [portid];
portid=DS_REGB;
value=0x8E;
asm estb value, [portid];
portid=DS_SECOND;
value=ClockBuf[12];
time_value=(value/16)*10;
value=value & 0x0f;
value=value+time_value;
asm estb value, [portid];
portid=DS_MINUTE;
value=ClockBuf[11];
time_value=(value/16)*10;
value=value & 0x0f;
value=value+time_value;
asm estb value, [portid];
portid=DS_HOUR;
value=ClockBuf[10];
time_value=(value/16)*10;
value=value & 0x0f;
value=value+time_value;
asm estb value, [portid];
portid=DS_DATE;
value=ClockBuf[9];
time_value=(value/16)*10;
value=value & 0x0f;
value=value+time_value;
asm estb value, [portid];
portid=DS_MONTH;
value=ClockBuf[8];
time_value=(value/16)*10;
value=value & 0x0f;
value=value+time_value;
asm estb value, [portid];
portid=DS_YEAR;
value=ClockBuf[7];
time_value=(value/16)*10;
value=value & 0x0f;
value=value+time_value;
asm estb value, [portid];
portid=DS_CENTURY;
value=20;
asm estb value, [portid];
portid=DS_REGB;
value=0x1E;
asm estb value, [portid];
portid=DS_REGC;
asm eldb value, [portid];
portid=DS_REGD;
asm eldb value, [portid];
}
break;
}//switch
}//对时
}//--------------------------------
CAN1_CMD=RCAN_RELEASE;
}//接收中断
value=CAN1_STS;
if((value & 0x40)!=0)
{//错误处理
pVar->Can_Error[1]++;
CAN1_CMD=RCAN_RELEASE;
}
if((value & 0x04)!=0)
{//发送中断
if(ComHandle[1]->TransCanMail!=NULL)
{
TCAN1_ID =(ComHandle[1]->TransCanMail)->Data[0];
TCAN1_LEN =(ComHandle[1]->TransCanMail)->Data[1];
TCAN1_INDX =(ComHandle[1]->TransCanMail)->Data[2];
TCAN1_BYT0 =(ComHandle[1]->TransCanMail)->Data[3];
TCAN1_BYT1 =(ComHandle[1]->TransCanMail)->Data[4];
TCAN1_BYT2 =(ComHandle[1]->TransCanMail)->Data[5];
TCAN1_BYT3 =(ComHandle[1]->TransCanMail)->Data[6];
TCAN1_BYT4 =(ComHandle[1]->TransCanMail)->Data[7];
TCAN1_BYT5 =(ComHandle[1]->TransCanMail)->Data[8];
TCAN1_BYT6 =(ComHandle[1]->TransCanMail)->Data[9];
ComHandle[1]->TransCanMail=(ComHandle[1]->TransCanMail)->Link;
CAN1_CMD=TCAN_REQUEST;
if(ComHandle[1]->TransCanMail==NULL)
{
CAN1_CTL=CAN_CTRL_RIE;
CAN1_CMD=RCAN_RELEASE;
ComHandle[1]->Status=2; //wait;
//屏蔽发送中断 等待接收
}else CAN1_CTL=CAN_CTRL_TIE;
}else CAN1_CTL=CAN_CTRL_RIE;
Task[1].WaitStatus |=1;
}
break;
case 0x13: /* EPA5 CAN0 中断 */
time_value=epa5_time;
value=CAN0_INT;
if((value & 0x04)!=0)
{//出错中断
pVar->Can_Error[0]++;
CAN0_CMD=RCAN_RELEASE;
}
if((value & 0x01)!=0)
{//接收中断
value=RCAN0_ID;
if(value==comset[0].node)
{//报文--------------------------------
switch(RCAN0_LEN)
{
case 0x08:time_value=RCAN0_INDX-4;
if(time_value>245) time_value=245;
ComHandle[0]->CanRxdBuf[time_value+0]=RCAN0_BYT0;
ComHandle[0]->CanRxdBuf[time_value+1]=RCAN0_BYT1;
ComHandle[0]->CanRxdBuf[time_value+2]=RCAN0_BYT2;
ComHandle[0]->CanRxdBuf[time_value+3]=RCAN0_BYT3;
ComHandle[0]->CanRxdBuf[time_value+4]=RCAN0_BYT4;
ComHandle[0]->CanRxdBuf[time_value+5]=RCAN0_BYT5;
ComHandle[0]->CanRxdBuf[time_value+6]=RCAN0_BYT6;
break;
case 0x20:time_value=RCAN0_INDX-4;
if(time_value>245) time_value=245;
Task[0].WaitStatus =Task[0].WaitStatus | 0x02;
time_value=0;
break;
case 0x21:time_value=RCAN0_INDX-4;
if(time_value>245) time_value=245;
Task[0].WaitStatus =Task[0].WaitStatus | 0x02;
Task[0].WaitStatus =Task[0].WaitStatus | 0x02;
time_value=0;
break;
case 0x22:time_value=RCAN0_INDX-4;
if(time_value>245) time_value=245;
Task[0].WaitStatus =Task[0].WaitStatus | 0x02;
ComHandle[0]->CanRxdBuf[time_value+0]=RCAN0_BYT0;
Task[0].WaitStatus =Task[0].WaitStatus | 0x02;
time_value=0;
break;
case 0x23:time_value=RCAN0_INDX-4;
if(time_value>245) time_value=245;
Task[0].WaitStatus =Task[0].WaitStatus | 0x02;
ComHandle[0]->CanRxdBuf[time_value+0]=RCAN0_BYT0;
ComHandle[0]->CanRxdBuf[time_value+1]=RCAN0_BYT1;
Task[0].WaitStatus =Task[0].WaitStatus | 0x02;
time_value=0;
break;
case 0x24:time_value=RCAN0_INDX-4;
if(time_value>245) time_value=245;
Task[0].WaitStatus =Task[0].WaitStatus | 0x02;
ComHandle[0]->CanRxdBuf[time_value+0]=RCAN0_BYT0;
ComHandle[0]->CanRxdBuf[time_value+1]=RCAN0_BYT1;
ComHandle[0]->CanRxdBuf[time_value+2]=RCAN0_BYT2;
Task[0].WaitStatus =Task[0].WaitStatus | 0x02;
time_value=0;
break;
case 0x25:time_value=RCAN0_INDX-4;
if(time_value>245) time_value=245;
Task[0].WaitStatus =Task[0].WaitStatus | 0x02;
ComHandle[0]->CanRxdBuf[time_value+0]=RCAN0_BYT0;
ComHandle[0]->CanRxdBuf[time_value+1]=RCAN0_BYT1;
ComHandle[0]->CanRxdBuf[time_value+2]=RCAN0_BYT2;
ComHandle[0]->CanRxdBuf[time_value+3]=RCAN0_BYT3;
Task[0].WaitStatus =Task[0].WaitStatus | 0x02;
time_value=0;
break;
case 0x26:time_value=RCAN0_INDX-4;
if(time_value>245) time_value=245;
Task[0].WaitStatus =Task[0].WaitStatus | 0x02;
ComHandle[0]->CanRxdBuf[time_value+0]=RCAN0_BYT0;
ComHandle[0]->CanRxdBuf[time_value+1]=RCAN0_BYT1;
ComHandle[0]->CanRxdBuf[time_value+2]=RCAN0_BYT2;
ComHandle[0]->CanRxdBuf[time_value+3]=RCAN0_BYT3;
ComHandle[0]->CanRxdBuf[time_value+4]=RCAN0_BYT4;
Task[0].WaitStatus =Task[0].WaitStatus | 0x02;
time_value=0;
break;
case 0x27:time_value=RCAN0_INDX-4;
if(time_value>245) time_value=245;
Task[0].WaitStatus =Task[0].WaitStatus | 0x02;
ComHandle[0]->CanRxdBuf[time_value+0]=RCAN0_BYT0;
ComHandle[0]->CanRxdBuf[time_value+1]=RCAN0_BYT1;
ComHandle[0]->CanRxdBuf[time_value+2]=RCAN0_BYT2;
ComHandle[0]->CanRxdBuf[time_value+3]=RCAN0_BYT3;
ComHandle[0]->CanRxdBuf[time_value+4]=RCAN0_BYT4;
ComHandle[0]->CanRxdBuf[time_value+5]=RCAN0_BYT5;
Task[0].WaitStatus =Task[0].WaitStatus | 0x02;
time_value=0;
break;
case 0x28:// RecFrame();
time_value=RCAN0_INDX-4;
if(time_value>245) time_value=245;
ComHandle[0]->CanRxdBuf[time_value+0]=RCAN0_BYT0;
ComHandle[0]->CanRxdBuf[time_value+1]=RCAN0_BYT1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -