📄 can._c
字号:
//////////////////////////////////////////////////////////
//单向查询
//说明:
// 本程序是结点2,只负责发送
//////////////////////////////////////////////////////////
#define _CAN_H
#include "AT90CAN128.H"
uint8 send_Buf[8] = {0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38};
void CAN_ClrMailBox(void)
{
uint8 mob_channel;
uint8 mob_data;
for (mob_channel = 0 ; mob_channel < 15 ; mob_channel++)
{
CANPAGE = (mob_channel << 4);
CANIDT4 = 0;
CANIDT3 = 0;
CANIDT2 = 0;
CANIDT1 = 0;
CANIDM4 = 0;
CANIDM3 = 0;
CANIDM2 = 0;
CANIDM1 = 0;
CANSTMOB = 0;
CANCDMOB = 0;
for (mob_data = 0; mob_data < 8; mob_data++)
CANMSG = 0;
}
}
void CAN_Init(void)
{
CAN_SOFT_RESET();
while (CANGSTA & (1 << ENFG));
CAN_ClrMailBox();
CANBT1 = 0x02;
CANBT2 = 0x04;
CANBT3 = 0x13;
CANTCON = 0xFF;
CANPAGE = 0x00;
CANSTMOB = 0x00;
CANIDT4 = 0x00;
CANIDT3 = 0x00;
CANIDT2 = 0x40;
CANIDT1 = 0x02;
CAN_START();
while (!(CANGSTA & (1 << ENFG)));
}
/*
#pragma interrupt_handler AT90CAN128_ISR:iv_CANIT
void AT90CAN128_ISR(void)
{
uint8 i;
uint8 save_canpage;
save_canpage = CANPAGE;
// echo receive data on channel 0 reception
CANPAGE = (0 << 4); // CHNB=0x00; select channel 0
if (CANSTMOB & (1 << RXOK))
{
CHA_Init();
USART1_send_buffer[0] = CANIDT1;
USART1_send_buffer[1] = CANIDT2;
for (i = 0 ; i < 8 ; i++)
USART1_send_buffer[2+i] = CANMSG; // save receive data
USART1_Begin_Send();
CANPAGE = (1 << 4); // CHNB=0x00; select channel 1
// Channel 1 configuration
CANCDMOB = 0x00; // reset channel 1 configuration
for (i = 0 ; i < 8 ; i++)
CANMSG = i; // load saved data
CANCDMOB |= 0x08; // DLC_MAX; /* transmit 8 bytes
CANCDMOB |= 0x40; // CH_TxENA; /* emission enabled
CANEN2 |= (1 << 1); // channel 1 enable
CANSTMOB=0x00; // reset channel 1 status
}
CANPAGE = (0 << 4); // CHNB=0x00; select channel 0
CANCDMOB = 0x00; // CH_DISABLE; reset channel 0 configuration
CANCDMOB |= 0x08; // DLC_MAX; receive 8 bytes
CANCDMOB |= 0x80; //CH_RxENA; reception enable
CANEN2 |= (1 << 0); // channel 0 enable
CANSTMOB=0x00; // reset channel 0 status
CANPAGE= save_canpage; // restore saved context
CANGIT = 0x00; // reset all flags
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -