📄 can_main.c
字号:
#include <reg51.h>
#include <head.h>
#include <out.h>
my_flag1 my_flag;
unsigned char buf[13];
unsigned char a;
unsigned char tuf[13];
CAN_INI();
delay(unsigned char a);
main()
{unsigned char i;
for (i=0;i<13;i++)
{buf[i]=0x0;
tuf[i]=0x0;}
delay(0x02);
SP=0x60;
P3_1=0;
my_flag.value=0x0000;
out(LED,0x20);
CAN_INI();
PX0=1;
EX0=1;
EA=1;
while(1)
{if (my_flag.flags.REC_REMOTE_FRAME)
{
my_flag.flags.REC_REMOTE_FRAME=0;
REC_REMOTE();
}
if(my_flag.flags.REC_DATA_FRAME)
{my_flag.flags.REC_DATA_FRAME=0;
REC_DATA();
}
if(my_flag.flags.ERR_FLAG)
{
my_flag.flags.ERR_FLAG=0;
ERR();
}
if(my_flag.flags.BERR_FLAG)
{my_flag.flags.BERR_FLAG=0;
BERR();
}
if(tuf[5]!=readdata())
{tuf[5]=readdata();
tuf[0]=0x01;
tuf[1]=0x00;
tuf[2]=0x02;
TDATA();
out(LED,tuf[5]);
}
//out(LED,in(SR));
}
}
CAN_INI()
{test();
while (in(BTR0)^0x00)
{out(BTR0,0x00);
out(LED,0x80);}
while (in(BTR1)^0x36)
{out(BTR1,0x36);
out(LED,0x90);}
while (in(CDR)^0xC7)
{out(CDR,0xC7);
out(LED,0x50);}
while (in(OCR)^0xAA)
{out(OCR,0xAA);
out(LED,0x01);}
out(RBSA,0x0);
out(TXERR,0x0);
out(RXERR,0x0);
out(ECC,0x0);
out(EWLR,0x60);
out(MODE,(in(MODE)&0xF1));
out(ACR0,0x02);
out(ACR1,0xFF);
out(ACR2,0x00);
out(ACR3,0x00);
out(LED,0x70);
out(AMR0,0xFF);
out(AMR1,0xFF);
out(AMR2,0x01);
out(AMR3,0xFF);
while (in(MODE)&0x01)
{out(MODE,(in(MODE)&0xFE));
out(LED,0x55);
}
out(IER,0x85);
}
SEARCH() interrupt 0
{
#pragma asm
CLR EA;
PUSH DPH;
PUSH DPL;
PUSH PSW;
PUSH ACC;
#pragma endasm
a=in(IR);
if(a&0x01)
{RCVDATA();
while(in(SR)&0x01)
RCVDATA();
}
else if (a&0x02)
my_flag.flags.ERR_FLAG=1;
else
my_flag.flags.BERR_FLAG=1;
#pragma asm
POP ACC;
POP PSW;
POP DPL;
POP DPH;
SETB EA;
#pragma endasm
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -