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

📄 mds-100-77e58.c

📁 W77E58串口实例
💻 C
📖 第 1 页 / 共 2 页
字号:

/***********************摩托车电子桩考车载传感器程序****************************/

/***文件名称: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 + -