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

📄 main_debug_sja1000.c

📁 测试CAN接口(sja1000) ,每接收到一帧数据,就 原样 回发 一帧!!!! (拨码开关全 拨到 ON ,上位机 发送帧 ID为 0)
💻 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 + -