?? mds-100-77e58.c
字號:
/***********************摩托車電子樁考車載傳感器程序****************************/
/***文件名稱:MDC-100-77E58 ****/
/***摘 要:采集場地違規信息和摩托車上的信息,然后通過數傳臺傳輸給FC機 ****/
/***當前版本:Ver1.0版 ****/
/***作 者:Hunter ****/
/***完成日期:2006年03月 ****/
/***版權所有:南京多倫科技有限公司 ****/
/*******************************************************************************/
/***場地傳感器控制程序,采集考試過程中的路線信號和碰樁信號 ***/
/***定義車載單元為主機地址為11H,PC機的地址為12H ***/
/***定義場地7個傳感器的地址:01H,02H,03H,04H,05H為五個警示柱地址***/
/***定義左右邊線的傳感器地址為06H,07H ***/
/************************發送數據數組定義 **************************/
/*** Sent_data[0]數據起始位FFH ***/
/*** Sent_data[1]目的地址 ***/
/*** Sent_data[2]原地址 ***/
/*** Sent_data[3]數據位碰撞與出邊線編碼 ***/
/*** Sent_data[4]數據位出發路線編碼信息 ***/
/*** Sent_data[5]數據位回程路線編碼信息 ***/
/*** Sent_data[6]數據位車載信息編碼 ***/
/*** Sent_data[7]空閑位00H ***/
/*** Sent_data[8]空閑位00H ***/
/*** Sent_data[9]校驗和 ***/
/*******************************************************************/
/************************應答數組的格式定義*************************/
/*** Sent_Answ[0]應答起始位FFH ***/
/*** Sent_Answ[1]目的地址 ***/
/*** Sent_Answ[2]原地址 ***/
/*** Sent_Answ[3]空閑位0 ***/
/*** Sent_Answ[4]空閑位0 ***/
/*** Sent_Answ[5]空閑位0 ***/
/*** Sent_Answ[6]空閑位0 ***/
/*** Sent_Answ[7]空閑位0 ***/
/*** Sent_Answ[8]空閑位0 ***/
/*** Sent_Answ[9]校驗和 ***/
/*******************************************************************/
#include" W77E58.h"
unsigned char data Sent_Data_BT[10];/**定義發送數據存儲數組 **/
unsigned char data Sent_Data_FC[10];/**定義發送數據存儲數組 **/
unsigned char data Sent_Answ_FC[10];/**定義發送數據存儲數組 **/
unsigned char data Rece_Data_BT[10];/**定義接收數據存儲數組 **/
unsigned char data Rece_Data_FC[10];/**定義接收數據存儲數組 **/
void Send_UART0(unsigned char data *Sent_Buf); /**車載發送數據給藍牙子程序**/
void Send_UART1(unsigned char data *Sent_Buf); /**車載發送數據給PC子程序**/
void Main_Init(); /**初始化子程序 **/
void WDT_Init(); /**看門狗初始化子程序**/
void WDT_Clr(); /**喂狗子程序**/
void SP0_ISR();/**串口0中斷服務子程序**/
void SP1_ISR();/**串口1中斷子服務程序**/
void TR0_ISR(); /**定時器0中斷服務子程序**/
unsigned char RBT_Flag;
unsigned char RFC_Flag;
unsigned char N;
unsigned char RG_Flag,LF_Flag,SH_Flag; /**端口狀態變化寄存器**/
unsigned char R_State,L_State,S_State; /**端口狀態寄存器**/
/**定義場地傳感器信號輸入口**/
sbit Left_Sig=P0^1; /**定義左腳踏地標志位**/
sbit Right_Sig=P0^2; /**定義右腳踏地標志位**/
sbit Shart_Sig=P0^0; /**定義熄火標志位**/
/**定義數據接收發送指示燈**/
sbit FC_Rece=P2^0;
sbit FC_Tran=P2^1;
sbit BT_Rece=P2^2;
sbit BT_Tran=P2^3;
/**************************************************************************/
/** 函數名稱: main() **/
/** 功能描述: 車載控制單元主程序,實現摩托車信號的采集和場地信號的接收; **/
/** 同時將信號傳輸給PC機。 **/
/** 輸 入: 無 **/
/** 輸 出: 無 **/
/** 作 者: Hunter **/
/** 日 期: 2006年03月 **/
/**************************************************************************/
/** 修 改 人: **/
/** 日 期: **/
/**************************************************************************/
main()
{
/**串口數據接收發送指示燈初始化**/
FC_Rece=1;
FC_Tran=1;
BT_Rece=1;
BT_Tran=1;
N=1;
/**端口狀態寄存器**/
R_State=Right_Sig;
L_State=Left_Sig;
S_State=Shart_Sig;
/**端口狀態變化寄存器初始化**/
RG_Flag=0;
LF_Flag=0;
SH_Flag=0;
RBT_Flag=0;
Sent_Data_FC[0] = 0xFF;
Sent_Data_FC[1] = 0x12;
Sent_Data_FC[2] = 0x11;
Sent_Data_FC[3] = 0x00;
Sent_Data_FC[4] = 0x00;
Sent_Data_FC[5] = 0x00;
Sent_Data_FC[6] = 0x00;
Sent_Data_FC[7] = 0x00;
Sent_Data_FC[8] = 0x00;
Main_Init(); /**串口初始化**/
WDT_Init();/**看門狗初始化,啟動看門狗**/
while(1)
{
WDT_Clr();
/**解析來自到場地的藍牙信息,并作相應的處理**/
if(RBT_Flag == 0xFA)
{
RBT_Flag = 0x00;
Sent_Data_FC[0]=0xFF;
Sent_Data_FC[1]=0x12;
Sent_Data_FC[2]=0x11;
Sent_Data_FC[3]=Rece_Data_BT[3];
Sent_Data_FC[4]=Rece_Data_BT[4];
Sent_Data_FC[5]=Rece_Data_BT[5];
Sent_Data_FC[6]=0x00;
Sent_Data_FC[7]=0x00;
Sent_Data_FC[8]=0x00;
Send_UART1(Sent_Data_FC); /**接收場地信息正確,發送給樁考檢測儀**/
Sent_Data_BT[0]=0xFF;
Sent_Data_BT[1]=Rece_Data_BT[2];
Sent_Data_BT[2]=0x11;
Sent_Data_BT[3]=0xFA;
Sent_Data_BT[4]=0x00;
Sent_Data_BT[5]=0x00;
Sent_Data_BT[6]=0x00;
Sent_Data_BT[7]=0x00;
Sent_Data_BT[8]=0x00;
Send_UART0(Sent_Data_BT);/**發送接收信號正確應答信息**/
}
else if(RBT_Flag == 0xFB)
{
RBT_Flag = 0x00;
Sent_Data_BT[0]=0xFF;
Sent_Data_BT[1]=Rece_Data_BT[2];
Sent_Data_BT[2]=0x11;
Sent_Data_BT[3]=0xFB;
Sent_Data_BT[4]=0x00;
Sent_Data_BT[5]=0x00;
Sent_Data_BT[6]=0x00;
Sent_Data_BT[7]=0x00;
Sent_Data_BT[8]=0x00;
Send_UART0(Sent_Data_BT); /**接收場地錯誤,請求重發**/
}
else
{
Sent_Data_FC[0] = Sent_Data_FC[0];
Sent_Data_FC[1] = Sent_Data_FC[1];
Sent_Data_FC[2] = Sent_Data_FC[2];
Sent_Data_FC[3] = Sent_Data_FC[3];
Sent_Data_FC[4] = Sent_Data_FC[4];
Sent_Data_FC[5] = Sent_Data_FC[5];
Sent_Data_FC[6] = Sent_Data_FC[6];
Sent_Data_FC[7] = Sent_Data_FC[7];
Sent_Data_FC[8] = Sent_Data_FC[8]; }
/**解析來自樁考監測儀的信息,并進行處理**/
if(RFC_Flag==0xFA)
{
RFC_Flag=0x00;
Sent_Data_FC[0] = 0xFF;
Sent_Data_FC[1] = 0x12;
Sent_Data_FC[2] = 0x11;
Sent_Data_FC[3] = 0x00;
Sent_Data_FC[4] = 0x00;
Sent_Data_FC[5] = 0x00;
Sent_Data_FC[6] = 0x00;
Sent_Data_FC[7] = 0x00;
Sent_Data_FC[8] = 0x00;
}
else if(RFC_Flag==0xFB)
{
RFC_Flag=0x00;
Send_UART1(Sent_Data_FC);
}
else
{
Sent_Data_FC[0] = Sent_Data_FC[0];
Sent_Data_FC[1] = Sent_Data_FC[1];
Sent_Data_FC[2] = Sent_Data_FC[2];
Sent_Data_FC[3] = Sent_Data_FC[3];
Sent_Data_FC[4] = Sent_Data_FC[4];
Sent_Data_FC[5] = Sent_Data_FC[5];
Sent_Data_FC[6] = Sent_Data_FC[6];
Sent_Data_FC[7] = Sent_Data_FC[7];
Sent_Data_FC[8] = Sent_Data_FC[8]; }
/******************判斷車載的違規信息******************/
/**判斷是否左腳踏地**/
if (LF_Flag==1)
{
LF_Flag=0;
Sent_Data_FC[0] = 0xFF;
Sent_Data_FC[1] = 0x12;
Sent_Data_FC[2] = 0x11;
Sent_Data_FC[3] = 0x00;
Sent_Data_FC[4] = 0x00;
Sent_Data_FC[5] = 0x00;
Sent_Data_FC[6] = 0x02;
Sent_Data_FC[7] = 0x00;
Sent_Data_FC[8] = 0x00;
Send_UART1(Sent_Data_FC);
}
/**判斷是否右腳踏地**/
else if (RG_Flag==1)
{
RG_Flag=0;
Sent_Data_FC[0] = 0xFF;
Sent_Data_FC[1] = 0x12;
Sent_Data_FC[2] = 0x11;
Sent_Data_FC[3] = 0x00;
Sent_Data_FC[4] = 0x00;
Sent_Data_FC[5] = 0x00;
Sent_Data_FC[6] = 0x01;
Sent_Data_FC[7] = 0x00;
Sent_Data_FC[8] = 0x00;
Send_UART1(Sent_Data_FC);
}
/**判斷熄火信號**/
else if (SH_Flag==1)
{
SH_Flag=0;
Sent_Data_FC[0] = 0xFF;
Sent_Data_FC[1] = 0x12;
Sent_Data_FC[2] = 0x11;
Sent_Data_FC[3] = 0x00;
Sent_Data_FC[4] = 0x00;
Sent_Data_FC[5] = 0x00;
Sent_Data_FC[6] = 0x08;
Sent_Data_FC[7] = 0x00;
Sent_Data_FC[8] = 0x00;
Send_UART1(Sent_Data_FC);
}
/**如果沒有車載信號則不做任何動作**/
else
{
Sent_Data_FC[0] = Sent_Data_FC[0];
Sent_Data_FC[1] = Sent_Data_FC[1];
Sent_Data_FC[2] = Sent_Data_FC[2];
Sent_Data_FC[3] = Sent_Data_FC[3];
Sent_Data_FC[4] = Sent_Data_FC[4];
Sent_Data_FC[5] = Sent_Data_FC[5];
Sent_Data_FC[6] = Sent_Data_FC[6];
Sent_Data_FC[7] = Sent_Data_FC[7];
Sent_Data_FC[8] = Sent_Data_FC[8]; }
}
}
/**************************************************************************/
/** 函數名稱: Main_Init() **/
/** 功能描述: 系統初始化子程序,定時器0,定時方式,工作方式1。 **/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -