📄 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 + -