📄 can.i
字号:
#line 1 "D:\liliang\can-232\CAN-232\can.c"
#line 9 "D:\liliang\can-232\CAN-232\can.c"
#line 1 "D:\liliang\can-232\CAN-232/can.h"
#line 9 "D:\liliang\can-232\CAN-232/can.h"
struct BIT_FILED
{
unsigned mess_wait : 1;
unsigned i_over : 1;
unsigned v_over : 1;
unsigned ad_mux : 1;
unsigned s_100ms : 1;
unsigned s_200ms : 1;
unsigned s_300ms : 1;
unsigned s_400ms : 1;
}flag={0,0,0,0,0,0,0,0};
#line 63 "D:\liliang\can-232\CAN-232/can.h"
#line 126 "D:\liliang\can-232\CAN-232/can.h"
void sja_port_init(void);
void sja_write_data(unsigned char addr,unsigned char data);
unsigned char sja_read_data(unsigned char addr);
void sja_init(void);
void sja_tx_service(void);
void sja_tx(unsigned char *TransmitMessage);
void CanTransmit(void);
void sja_rx_service(void);
void play_buffer(unsigned char *ptr);
#line 10 "D:\liliang\can-232\CAN-232\can.c"
#line 1 "D:\liliang\can-232\CAN-232/delay.h"
#line 10 "D:\liliang\can-232\CAN-232/delay.h"
void shortdelay(unsigned char tt);
void delay_us(void);
void delay_nus(unsigned int n);
void delay_ms(void);
void delay_nms(unsigned int n);
#line 11 "D:\liliang\can-232\CAN-232\can.c"
#line 17 "D:\liliang\can-232\CAN-232\can.c"
unsigned char TransmitMessage[13];
unsigned char RxBuffer[13];
#line 29 "D:\liliang\can-232\CAN-232\can.c"
void sja_port_init(void)
{
PORTC=0x00;
DDRC=0xff;
PORTD=0b11000000;
DDRD =0b11111000;
DDRA |=(1<< PA5)|(1<< PA6)|(1<< PA4)|(1<< PA7);
PORTA|=(1<<PA5);
PORTA|=(1<<PA6);
PORTA&=~(1<<PA4);
PORTA|=(1<<PA7);
}
#line 49 "D:\liliang\can-232\CAN-232\can.c"
void sja_write_data(unsigned char addr,unsigned char data)
{
PORTA|=(1<<PA6);
DDRC=0xFF;
PORTC=addr;
PORTA|=(1<<PA4);
NOP();
PORTA&=~(1<<PA4);
NOP();
PORTC=data;
PORTA&=~(1<<PA7);
PORTA&=~(1<<PA5);
NOP();
PORTA|=(1<<PA5);
NOP();
PORTA|=(1<<PA7);
}
#line 75 "D:\liliang\can-232\CAN-232\can.c"
unsigned char sja_read_data(unsigned char addr)
{
unsigned char data;
PORTA|=(1<<PA5);
DDRC=0xFF;
PORTA&=~(1<<PA4);
PORTC=addr;
PORTA|=(1<<PA4);
NOP();
PORTA&=~(1<<PA4);
NOP();
PORTC=0xFF;
DDRC=0x00;
PORTA&=~(1<<PA7);
PORTA&=~(1<<PA6);
NOP();
PORTA|=(1<<PA6);
NOP();
data=PINC;
PORTA|=(1<<PA7);
return data;
}
#line 105 "D:\liliang\can-232\CAN-232\can.c"
void sja_init(void)
{
unsigned char temp;
unsigned int k ;
CLI();
sja_write_data(0x00,0x09);
sja_read_data(0x03);
while(!( sja_read_data(0x00)&0x01))
{
sja_write_data(0x00,0x09);
}
delay_nus(5);
sja_write_data(0x1F,0x88);
delay_nus(5);
sja_write_data(0x06,0x01);
sja_write_data(0x07,0x1c);
sja_write_data(0x08,0x1A);
sja_write_data(0x0E,0x00);
sja_write_data(0x0F,0x00);
sja_write_data(0x0C,0x00);
sja_write_data(0x1E,0x00);
sja_write_data(0x10,0x00);
sja_write_data(0x11,0x00);
sja_write_data(0x12,0x00);
sja_write_data(0x13,0x00);
sja_write_data(0x14,0xFF);
sja_write_data(0x15,0xFF);
sja_write_data(0x16,0xFF);
sja_write_data(0x17,0xFF);
sja_write_data(0x04,0x81);
sja_write_data(0x01,0x08);
delay_nus(10);
sja_write_data(0x01,0x04);
do
{
sja_write_data(0x00,0x08);
}
while((sja_read_data(0x00)&0x01));
SEI();
}
#line 165 "D:\liliang\can-232\CAN-232\can.c"
void sja_tx_service(void)
{
unsigned char Length;
unsigned char FF,i;
if(flag.mess_wait==TRUE)
{
PORTD&=~(1<<PD7);
flag.mess_wait=FALSE;
FF=TransmitMessage[0]&0x80;
Length=TransmitMessage[0]&0x0f;
if(Length=0x08)
{
Length = 0x80;
}
sja_write_data(0x10,TransmitMessage[0]);
sja_write_data(0x11,TransmitMessage[1]);
sja_write_data(0x12,TransmitMessage[2]);
if(FF)
{
sja_write_data(0x13,TransmitMessage[3]);
sja_write_data(0x14,TransmitMessage[4]);
}
for (i=0;i<Length;i++)
{
if(FF)
sja_write_data(0x15 +i,TransmitMessage[5+i]);
else
sja_write_data(0x15 +i,TransmitMessage[3+i]);
}
PORTD|=(1<<PD7);
sja_write_data(0x01,0x01);
}
}
#line 208 "D:\liliang\can-232\CAN-232\can.c"
void sja_tx(unsigned char *TransmitMessage)
{
unsigned char Length;
unsigned char FF,i,state;
unsigned char sreg;
sreg=SREG;
CLI();
state=sja_read_data(0x02);
while(state&(1<<4));
if(state&(1<<2))
{
PORTD&=~(1<<PD7);
FF=TransmitMessage[0]&0x80;
Length=TransmitMessage[0]&0x0f;
if(Length>8)
{
Length = 8;
}
sja_write_data(0x10,TransmitMessage[0]);
sja_write_data(0x11,TransmitMessage[1]);
sja_write_data(0x12,TransmitMessage[2]);
if(FF)
{
sja_write_data(0x13,TransmitMessage[3]);
sja_write_data(0x14,TransmitMessage[4]);
}
for (i=0;i<Length;i++)
{
if(FF)
sja_write_data(21+i,TransmitMessage[5+i]);
else
sja_write_data(19+i,TransmitMessage[3+i]);
}
sja_write_data(0x01,0x01);
PORTD|=(1<<PD7);
}
else
{
flag.mess_wait=TRUE;
}
SREG=sreg;
SEI();
}
#line 275 "D:\liliang\can-232\CAN-232\can.c"
void sja_rx_service(void)
{
unsigned char number,i,ptr;
ptr= 0x10;
if((sja_read_data(0x10)&0x40)==0x40)
{
sja_write_data(0x01,0x04);
}
else
{
number=(sja_read_data(0x10)&0x0f);
if (number>0x08)
number=0x08;
if ((sja_read_data(0x10))&0x80)
{
number=number+5;
}
else
{
number=number+3;
}
for(i=0;i<number;i++)
{
RxBuffer[i]=sja_read_data(0x10 +i);
ptr++;
}
sja_write_data(0x01,0x04);
}
}
#line 310 "D:\liliang\can-232\CAN-232\can.c"
void Search(void)
{
unsigned char SearchStatus;
SearchStatus=sja_read_data(0x02);
if(SearchStatus&(1<<7))
{
sja_read_data(0x03);
sja_write_data(0x00,0x08);
}
if(SearchStatus&0x02)
{
sja_write_data(0x01,0x0c);
}
if(sja_read_data(0x03) & 0x01)
{
PORTD&=~(1<<PD7);
}
}
void play_buffer(unsigned char *ptr)
{
unsigned char i;
for (i=0;i<13;i++)
{
rprintfu08(*ptr);
ptr++;
}
rprintfCRLF();
}
void buffer_init(void)
{
TransmitMessage[0]=0x88;
TransmitMessage[1]=192;
TransmitMessage[2]=168;
TransmitMessage[3]=0x00;
TransmitMessage[4]=0x08;
TransmitMessage[5]=0xCC;
TransmitMessage[6]=0x00;
TransmitMessage[7]=0x01;
TransmitMessage[8]=0xa1;
TransmitMessage[9]=0xa2;
TransmitMessage[10]=0xa3;
TransmitMessage[11]=0xa4;
TransmitMessage[12]=0xff;
}
void test_can(void)
{
rprintfCRLF();
rprintfStr("***CAN BUS DEBUG:***");
rprintfCRLF();
rprintfStr("content of transmit buffer ");
rprintfCRLF();
play_buffer(TransmitMessage);
CLI();
sja_tx(TransmitMessage);
SEI();
rprintfCRLF();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -