📄 can.c
字号:
#include "pic18.h"
char CAN_Adress_H,CAN_Adress_L;
char CAN_Adress_EH,CAN_Adress_EL;
int CAN_FLAG;
unsigned int CAN_Delay_count=0;
void initial()
{
INTCON=0X00;
ADCON1=0X07;
PIE1=0;
PIE2=0;
PIE3=0;
}
void initcan()
{
TRISB=(TRISB|0X08)&0XFB;
CANCON=0x80;
while((CANSTAT&0X80)==0)
{;
}
BRGCON1=0X01;
BRGCON2=0X90;
BRGCON3=0X42;
TXB0CON=0x03;
TXB0SIDL=CAN_Adress_L&0xE0;
TXB0SIDH=CAN_Adress_H;
TXB0DLC=0X08;
TXB0D0=0X00;
TXB0D1=0X01;
TXB0D2=0X02;
TXB0D3=0X03;
TXB0D4=0X04;
TXB0D5=0X05;
TXB0D6=0X06;
TXB0D7=0X07;
RXB0SIDL=CAN_Adress_L&0xE0;
RXB0CON=0X20;
RXB0DLC=0X08;
RXB0D0=0X00;
RXB0D1=0X00;
RXB0D2=0X00;
RXB0D3=0X00;
RXB0D4=0X00;
RXB0D5=0X00;
RXB0D6=0X00;
RXB0D7=0X00;
RXF0SIDH=CAN_Adress_h;
RXF0SIDL=CAN_Adress_L;
RXM0SIDH=0XFF;
RXM0SIDL=0XE0;
CANCON=0X40;
while((CANSTAT&0X40)!=0)
{;}
PIR3=0X00;
PIE3=PIE3|0X01;
IRP3=IPR3|0X01;
}
void CAN_deal()
{
CAN_FLAG=0;
TXB0CON=TXB0CON&0ZF7;
TXB0D0=RXB0D0+1;
TXB0D1=RXB0D1+1;
TXB0D2=RXB0D2+1;
TXB0D3=RXB0D3+1;
TXB0D4=RXB0D4+1;
TXB0D5=RXB0D5+1;
TXB0D6=RXB0D6+1;
TXB0D7=RXB0D7+1;
}
void interrupt HI_ISR()
{
if(RXB0IF==1)
{
CAN_FLAG=1;
BXB0IF=0;
BXB0FUL=0;
}
main()
{
initial();
CAN_Adress_H=0x33;
CAN_Adress_L=0xE0;
initcan();
IPEN=1;
INTCON=INTCON|0XC0;
while(1){
if(CAN_FLAG==1)CAN_deal();
else if(CAN_Delay_count>0x2FE)
{
TXB0CON=TXB0CON|0X08;
CAN_Delay_count=0;
}
else CAN_Delay_count++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -