📄 main_debug_sja1000.c
字号:
//**************************************************************************************************
//描 述:主程序模块 *
//文 件 名:main.c *
//日 期:2007年5月28日 *
//**************************************************************************************************
/*
高8位地址总线使用P4口,低8位地址总线/数据总线使用P6口
测试 CAN ,每接收到一帧数据,就 原样 回发 一帧!!!!
(拨码开关全 拨到 ON ,上位机 发送帧 ID为 0)
修改历史记录列表:
<修改日期> <修改内容简述>
2007/07/18
*/
//**************************************************************************************************
#include "main.h"
//***************************************************************************************************
//********************************* 全局变量定义 ************************************************
//***************************************************************************************************
INT8U switch_state;
//***************************************************************************************************
//*********************************** 函数实现 **************************************************
//***************************************************************************************************
//***************************************************************************************************
//函数原型: void error(INT8U ErrorType) *
//参数说明: ErrorType : 错误类型号 *
//返 回 值: 无 *
//说 明: 系统错误处理 *
//***************************************************************************************************
void error(INT8U ErrorType)
{
switch(ErrorType)
{
case 1: //
//错误处理代码
break;
case 2: //
//错误处理代码
break;
default: //
;//其它错误
}
}
//***************************************************************************************************
//函数原型: void read_switch(void) *
//参数说明: 无 *
//返 回 值: 无 *
//说 明: 读拨码开关,设置本机地址 *
//***************************************************************************************************
void read_switch(void) //读拨码开关,设置本机地址
{
P1OUT &= ~BIT3; //74HC245 OE=0
// P6DIR = 0; //P6口设置为 输入状态
switch_state = P6IN; //读入 拨码开关 状态
P1OUT |= BIT3; //恢复74HC245 OE=1
// P6DIR = 0xff; //P6口恢复为 输出状态
}
//***************************************************************************************************
//函数原型: INT8U get_SwitchState(void) *
//参数说明: 无 *
//返 回 值: 无 *
//说 明: 获得本机地址值 *
//***************************************************************************************************
INT8U get_SwitchState(void)
{
return switch_state; //获得本机地址值
}
//***************************************************************************************************
// *
//##################################################################################################*
//##################################### 主程序 ###################################################*
//##################################################################################################*
// *
//***************************************************************************************************
void main(void)
{
INT8U temp_CAN = 0;
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
_DINT(); //关闭中断
init_system(); //系统初始化
uart1_printf_ch("\n\r\n\r !!!!Init OK!!!!\n\r\n\r");
// _EINT(); //打开中断
//****主处理循环************************************************************************************
while(1)
{
if(P1OUT & BIT0) P1OUT &= ~BIT0; //如果P1.0=1,清除P1.0
else P1OUT |= BIT0; // 否则置1
temp_CAN ++;
//接收
if(can_data_receive() == 1) //接收 到有效数据
{
CAN_SendBuffer.FrameType_append = CAN_ReceiveBuffer.FrameType_append; //帧类型附加
CAN_SendBuffer.FrameType = CAN_ReceiveBuffer.FrameType; //帧类型
CAN_SendBuffer.FrameSignal1 = CAN_ReceiveBuffer.FrameSignal1; //帧信号1
CAN_SendBuffer.FrameSignal2 = CAN_ReceiveBuffer.FrameSignal2; //帧信号2
CAN_SendBuffer.FrameSignal3 = CAN_ReceiveBuffer.FrameSignal3; //帧信号3
CAN_SendBuffer.FrameSignal4 = CAN_ReceiveBuffer.FrameSignal4; //帧信号4
CAN_SendBuffer.FrameSignal5 = CAN_ReceiveBuffer.FrameSignal5; //帧信号5
CAN_SendBuffer.FrameSignal6 = CAN_ReceiveBuffer.FrameSignal6; //帧信号6
CAN_SendBuffer.FrameSignal7 = CAN_ReceiveBuffer.FrameSignal7; //帧信号7
CAN_SendBuffer.FrameSignal8 = CAN_ReceiveBuffer.FrameSignal8; //帧信号8
#ifdef DEBUG //调试用
uart1_printf_ch("###################### CAN receive data OK ########################\n\r");
#endif
can_data_send(); //CAN发送
}
else
{
//发送
CAN_SendBuffer.FrameType_append = 0; //帧类型附加
CAN_SendBuffer.FrameType = 0; //帧类型
CAN_SendBuffer.FrameSignal1 = temp_CAN; //帧信号1
CAN_SendBuffer.FrameSignal2 = temp_CAN; //帧信号2
CAN_SendBuffer.FrameSignal3 = temp_CAN; //帧信号3
CAN_SendBuffer.FrameSignal4 = temp_CAN; //帧信号4
CAN_SendBuffer.FrameSignal5 = temp_CAN; //帧信号5
CAN_SendBuffer.FrameSignal6 = temp_CAN; //帧信号6
CAN_SendBuffer.FrameSignal7 = temp_CAN; //帧信号7
CAN_SendBuffer.FrameSignal8 = temp_CAN; //帧信号8
can_data_send(); //CAN发送
}
delay_ms(100);
}//end while(1)
}//end main()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -