⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 can_main.c

📁 CAN总线源程序,欢迎大家共同学习
💻 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 + -