?? main_debug_sja1000.c
字號(hào):
//**************************************************************************************************
//描 述:主程序模塊 *
//文 件 名:main.c *
//日 期:2007年5月28日 *
//**************************************************************************************************
/*
高8位地址總線使用P4口,低8位地址總線/數(shù)據(jù)總線使用P6口
測(cè)試 CAN ,每接收到一幀數(shù)據(jù),就 原樣 回發(fā) 一幀!!!!
(撥碼開(kāi)關(guān)全 撥到 ON ,上位機(jī) 發(fā)送幀 ID為 0)
修改歷史記錄列表:
<修改日期> <修改內(nèi)容簡(jiǎn)述>
2007/07/18
*/
//**************************************************************************************************
#include "main.h"
//***************************************************************************************************
//********************************* 全局變量定義 ************************************************
//***************************************************************************************************
INT8U switch_state;
//***************************************************************************************************
//*********************************** 函數(shù)實(shí)現(xiàn) **************************************************
//***************************************************************************************************
//***************************************************************************************************
//函數(shù)原型: void error(INT8U ErrorType) *
//參數(shù)說(shuō)明: ErrorType : 錯(cuò)誤類(lèi)型號(hào) *
//返 回 值: 無(wú) *
//說(shuō) 明: 系統(tǒng)錯(cuò)誤處理 *
//***************************************************************************************************
void error(INT8U ErrorType)
{
switch(ErrorType)
{
case 1: //
//錯(cuò)誤處理代碼
break;
case 2: //
//錯(cuò)誤處理代碼
break;
default: //
;//其它錯(cuò)誤
}
}
//***************************************************************************************************
//函數(shù)原型: void read_switch(void) *
//參數(shù)說(shuō)明: 無(wú) *
//返 回 值: 無(wú) *
//說(shuō) 明: 讀撥碼開(kāi)關(guān),設(shè)置本機(jī)地址 *
//***************************************************************************************************
void read_switch(void) //讀撥碼開(kāi)關(guān),設(shè)置本機(jī)地址
{
P1OUT &= ~BIT3; //74HC245 OE=0
// P6DIR = 0; //P6口設(shè)置為 輸入狀態(tài)
switch_state = P6IN; //讀入 撥碼開(kāi)關(guān) 狀態(tài)
P1OUT |= BIT3; //恢復(fù)74HC245 OE=1
// P6DIR = 0xff; //P6口恢復(fù)為 輸出狀態(tài)
}
//***************************************************************************************************
//函數(shù)原型: INT8U get_SwitchState(void) *
//參數(shù)說(shuō)明: 無(wú) *
//返 回 值: 無(wú) *
//說(shuō) 明: 獲得本機(jī)地址值 *
//***************************************************************************************************
INT8U get_SwitchState(void)
{
return switch_state; //獲得本機(jī)地址值
}
//***************************************************************************************************
// *
//##################################################################################################*
//##################################### 主程序 ###################################################*
//##################################################################################################*
// *
//***************************************************************************************************
void main(void)
{
INT8U temp_CAN = 0;
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
_DINT(); //關(guān)閉中斷
init_system(); //系統(tǒng)初始化
uart1_printf_ch("\n\r\n\r !!!!Init OK!!!!\n\r\n\r");
// _EINT(); //打開(kāi)中斷
//****主處理循環(huán)************************************************************************************
while(1)
{
if(P1OUT & BIT0) P1OUT &= ~BIT0; //如果P1.0=1,清除P1.0
else P1OUT |= BIT0; // 否則置1
temp_CAN ++;
//接收
if(can_data_receive() == 1) //接收 到有效數(shù)據(jù)
{
CAN_SendBuffer.FrameType_append = CAN_ReceiveBuffer.FrameType_append; //幀類(lèi)型附加
CAN_SendBuffer.FrameType = CAN_ReceiveBuffer.FrameType; //幀類(lèi)型
CAN_SendBuffer.FrameSignal1 = CAN_ReceiveBuffer.FrameSignal1; //幀信號(hào)1
CAN_SendBuffer.FrameSignal2 = CAN_ReceiveBuffer.FrameSignal2; //幀信號(hào)2
CAN_SendBuffer.FrameSignal3 = CAN_ReceiveBuffer.FrameSignal3; //幀信號(hào)3
CAN_SendBuffer.FrameSignal4 = CAN_ReceiveBuffer.FrameSignal4; //幀信號(hào)4
CAN_SendBuffer.FrameSignal5 = CAN_ReceiveBuffer.FrameSignal5; //幀信號(hào)5
CAN_SendBuffer.FrameSignal6 = CAN_ReceiveBuffer.FrameSignal6; //幀信號(hào)6
CAN_SendBuffer.FrameSignal7 = CAN_ReceiveBuffer.FrameSignal7; //幀信號(hào)7
CAN_SendBuffer.FrameSignal8 = CAN_ReceiveBuffer.FrameSignal8; //幀信號(hào)8
#ifdef DEBUG //調(diào)試用
uart1_printf_ch("###################### CAN receive data OK ########################\n\r");
#endif
can_data_send(); //CAN發(fā)送
}
else
{
//發(fā)送
CAN_SendBuffer.FrameType_append = 0; //幀類(lèi)型附加
CAN_SendBuffer.FrameType = 0; //幀類(lèi)型
CAN_SendBuffer.FrameSignal1 = temp_CAN; //幀信號(hào)1
CAN_SendBuffer.FrameSignal2 = temp_CAN; //幀信號(hào)2
CAN_SendBuffer.FrameSignal3 = temp_CAN; //幀信號(hào)3
CAN_SendBuffer.FrameSignal4 = temp_CAN; //幀信號(hào)4
CAN_SendBuffer.FrameSignal5 = temp_CAN; //幀信號(hào)5
CAN_SendBuffer.FrameSignal6 = temp_CAN; //幀信號(hào)6
CAN_SendBuffer.FrameSignal7 = temp_CAN; //幀信號(hào)7
CAN_SendBuffer.FrameSignal8 = temp_CAN; //幀信號(hào)8
can_data_send(); //CAN發(fā)送
}
delay_ms(100);
}//end while(1)
}//end main()
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -