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

📄 cz_ha.c

📁 单片机C源程序souce
💻 C
字号:
/**************************************
File          :  CZ_HA.C
Project       :  BDTRV20_MCU_V07
Description   :  重组@@ha帧
Created       :  2006.11.7
Last updata   :  
Author        :  Sunzehui   sunzehui@zzvcom.com
Compile Tool  :  Keil uVision2
Target Device :  SST89V564RD
Circuit Board :  BD7700
************************************
Modification History
************************************
 Version      : v2.0
 Date         : MM/DD/YYYY
 Modifier     :
 Description  :

 **********************************
 -- Copyright (c)
*************************************/

#include "ext_temp.h"

extern wdt(void);
extern cz_ha(void)
	{
	long xdata p;
	unsigned char i,temp;

    wdt();

	RXLen =0;
	sdata[0]='@';sdata[1]='@';
	sdata[2]='H';sdata[3]='a';
	sdata[4]=month;
	sdata[5]=day;
	sdata[6]=year>>8;
	sdata[7]=year;
	sdata[8]=hour;
	sdata[9]=min;
	sdata[10]=sec;
	sdata[11]=0x00;
	sdata[12]=0x00;
	sdata[13]=0x00;
	sdata[14]=0x00;
	/*****滤波器使用*****/
	for (i=15;i<=26;i++)
	   {
		if(i>=15&&i<=18) //纬度
		  p=lat_par; 
		else if(i>=19&&i<=22)//经度
		  p=long_par;
		else if(i>=23&&i<=26)//高度
		  p=high_par;
		sdata[i+3]=p;
		p=p>>8;
		sdata[i+2]=p;
		p=p>>8;
		sdata[i+1]=p;
		p=p>>8;
		sdata[i]=p;
		i=i+3;
	   }
/*	p=lat_par;
	sdata[18]=p;
	p=p>>8;
	sdata[17]=p;
	p=p>>8;
	sdata[16]=p;
	p=p>>8;
	sdata[15]=p;
	/*****经度*********/
/*	p=long_par;
	sdata[22]=p;
	p=p>>8;
	sdata[21]=p;
	p=p>>8;
	sdata[20]=p;
	p=p>>8;
	sdata[19]=p;
	/*****高度*********/
/*	p=high_par;
	sdata[26]=p;
	p=p>>8;
	sdata[25]=p;
	p=p>>8;
	sdata[24]=p;
	p=p>>8;
	sdata[23]=p;
	/*****************/
	//RXLen=27;
	/*******mmmm****/
	for(i=27;i<=54;i++)
	   {
	   sdata[i]=0x00;
	   }
	/*****n 可见卫星数*/
/*	if (channel_pps_en==0x00)
	    {sdata[55]=0x00;  
	    /**t 跟踪卫星数***/
/*	    sdata[56]=0x00;}
	else if (channel_pps_en==0x01||channel_pps_en==0x02)
	    {sdata[55]=0x01;  
	    /**t 跟踪卫星数***/
/*	    sdata[56]=0x01;}
	else if (channel_pps_en==0x03)
	    {sdata[55]=0x02;  
	    /**t 跟踪卫星数***/
/*	    sdata[56]=0x02;}	*/
     //n可见卫星数
	 sdata[55]=0x02; //可见卫星数一直为2
/*	 if ((channel_sta_1&0x40==0)&&(channel_sta_1&0x40==0))
	     sdata[56]=0x00;
	 else if((channel_sta_1&0x40==0x40)&&(channel_sta_1&0x40==0))
	     sdata[56]=0x01;
	 else if((channel_sta_1&0x40==0)&&(channel_sta_1&0x40==0x40))
	     sdata[56]=0x01;
	 else if((channel_sta_1&0x40==0x40)&&(channel_sta_1&0x40==0x40))
	     sdata[56]=0x02;*/
     //跟踪卫星数
    if ((channel_beam_1==0||channel_beam_1==1)&&(channel_beam_2==0||channel_beam_2==1))
	      sdata[56]=0x01;
	 else if((channel_beam_1==0||channel_beam_1==1)&&(channel_beam_2==2||channel_beam_2==3))
	      sdata[56]=0x02;
	 else if((channel_beam_1==2||channel_beam_1==3)&&(channel_beam_2==0||channel_beam_2==1))
	      sdata[56]=0x02;
	 else if((channel_beam_1==2||channel_beam_1==3)&&(channel_beam_2==2||channel_beam_2==3))
	      sdata[56]=0x01;

	//通道1
	/**i 卫星编号***/
	if (channel_beam_1==0||channel_beam_1==1)
	   sdata[57]=0x01; //1号卫星
    else if(channel_beam_1==2||channel_beam_1==3) 
       sdata[57]=0x02;//2号卫星
    else
       sdata[57]=0x00;

	/**m 通道跟踪模式
	 0 码搜索
	 1 码捕获
	 3 捕获指示
	 4 位同步检测
	 5 电文同步检测
	 6 卫星时间有效  */
	if (channel_sta_1&0x48==0x08)
       sdata[58]=0x10; //捕获指示
	else if (channel_sta_1&0x40==0x40)
	   sdata[58]=0x08;//位同步检测

	/**s 功率**********/
	sdata[59]=channel_power_1>>4; //取高2个字符

	/**** i **********/
	sdata[60]=0x00;
	/*** dd 通道状态标志*********/
	sdata[61]=0x00; 
	sdata[62]=0x00;

	//通道2
	/**i 卫星编号***/
	if (channel_beam_2==0||channel_beam_2==1)
	   sdata[63]=0x01; //1号卫星
    else if(channel_beam_2==2||channel_beam_2==3) 
       sdata[63]=0x02;//2号卫星
	else
	   sdata[63]=0x00;

	/**m 通道跟踪模式
	 0 码搜索
	 1 码捕获
	 3 捕获指示
	 4 位同步检测
	 5 电文同步检测
	 6 卫星时间有效  */
	if (channel_sta_2&0x48==0x08)
       sdata[64]=0x10; //捕获指示
	else if (channel_sta_2&0x40==0x40)
	   sdata[64]=0x08;//位同步检测

	/**s 功率**********/
	sdata[65]=channel_power_2>>4; //取高2个字符

	/**** i **********/
	sdata[66]=0x00;
	/*** dd 通道状态标志*********/
	sdata[67]=0x00; 
	sdata[68]=0x00;

	/** imsidd 重复10次	*/
	for (i=69;i<=128;i++)
		{
		sdata[i]=0x00;
		}
/*	sdata[RXLen++]=0x00; //i
	sdata[RXLen++]=0x00; //m
	sdata[RXLen++]=0x00; //s
	sdata[RXLen++]=0x00; //i
	sdata[RXLen++]=0x00; //d
	sdata[RXLen++]=0x00; //d

	/********* 3 ********/
/*	sdata[RXLen++]=0x00; //i
	sdata[RXLen++]=0x00; //m
	sdata[RXLen++]=0x00; //s
	sdata[RXLen++]=0x00; //i
	sdata[RXLen++]=0x00; //d
	sdata[RXLen++]=0x00; //d

	/********* 4 ********/
/*	sdata[RXLen++]=0x00; //i
	sdata[RXLen++]=0x00; //m
	sdata[RXLen++]=0x00; //s
	sdata[RXLen++]=0x00; //i
	sdata[RXLen++]=0x00; //d
	sdata[RXLen++]=0x00; //d

	/********* 5 ********/
/*	sdata[RXLen++]=0x00; //i
	sdata[RXLen++]=0x00; //m
	sdata[RXLen++]=0x00; //s
	sdata[RXLen++]=0x00; //i
	sdata[RXLen++]=0x00; //d
	sdata[RXLen++]=0x00; //d

	/********* 6 ********/
/*	sdata[RXLen++]=0x00; //i
	sdata[RXLen++]=0x00; //m
	sdata[RXLen++]=0x00; //s
	sdata[RXLen++]=0x00; //i
	sdata[RXLen++]=0x00; //d
	sdata[RXLen++]=0x00; //d

	/********* 7 ********/
/*	sdata[RXLen++]=0x00; //i
	sdata[RXLen++]=0x00; //m
	sdata[RXLen++]=0x00; //s
	sdata[RXLen++]=0x00; //i
	sdata[RXLen++]=0x00; //d
	sdata[RXLen++]=0x00; //d

	/********* 8 ********/
/*	sdata[RXLen++]=0x00; //i
	sdata[RXLen++]=0x00; //m
	sdata[RXLen++]=0x00; //s
	sdata[RXLen++]=0x00; //i
	sdata[RXLen++]=0x00; //d
	sdata[RXLen++]=0x00; //d

	/********* 9 ********/
/*	sdata[RXLen++]=0x00; //i
	sdata[RXLen++]=0x00; //m
	sdata[RXLen++]=0x00; //s
	sdata[RXLen++]=0x00; //i
	sdata[RXLen++]=0x00; //d
	sdata[RXLen++]=0x00; //d

	/********* 10 ********/
/*	sdata[RXLen++]=0x00; //i
	sdata[RXLen++]=0x00; //m
	sdata[RXLen++]=0x00; //s
	sdata[RXLen++]=0x00; //i
	sdata[RXLen++]=0x00; //d
	sdata[RXLen++]=0x00; //d

	/********* 11 ********/
/*	sdata[RXLen++]=0x00; //i
	sdata[RXLen++]=0x00; //m
	sdata[RXLen++]=0x00; //s
	sdata[RXLen++]=0x00; //i
	sdata[RXLen++]=0x00; //d
	sdata[RXLen++]=0x00; //d

	/********* 12 ********/
/*	sdata[RXLen++]=0x00; //i
	sdata[RXLen++]=0x00; //m
	sdata[RXLen++]=0x00; //s
	sdata[RXLen++]=0x00; //i
	sdata[RXLen++]=0x00; //d
	sdata[RXLen++]=0x00; //d

	/********* ss *******/
	if (channel_pps_en==0x00)
		{sdata[129]=0x60;// 0x60 搜索卫星
		sdata[130]=0x87; //可视卫星数不够
		}
	else
	    {sdata[129]=0x80;//0x80 位置模式 
	    sdata[130]=0x8f;
		}
	/**** rrccooooTT ****/
	for (i=131;i<=140;i++)
		{
		sdata[i]=0x00;
		}
/*	sdata[RXLen++]=0x00;
	sdata[RXLen++]=0x00;//rr

	sdata[RXLen++]=0x00;
	sdata[RXLen++]=0x00;//cc

	sdata[RXLen++]=0x00;
	sdata[RXLen++]=0x00;
	sdata[RXLen++]=0x00;
	sdata[RXLen++]=0x00;//oooo

	sdata[RXLen++]=0x00;
	sdata[RXLen++]=0x00;//TT

	/**** UTC u********/
	if (GPS_mode_fg==1)
	   sdata[141]=0x4d;//UTC模式关,GPS模式
	else if(UTC_mode_fg==1)
	   sdata[141]=0xcd; //UTC模式开启、UTC参数有效

	/******s ***********/
	sdata[142]=gmts;
	sdata[143]=gmth;
	sdata[144]=gmtm; //待定

	/*******vvvvvv (ID) ***/
	for (i=145;i<=150;i++)
		sdata[i] =ID[i-145];
/*	sdata[145]='B';
	sdata[146]='D';
	sdata[147]='7';
	sdata[148]='7';
	sdata[149]='0';
	sdata[150]='0';*/

	/******* C***********/
	//校验和
	temp =0;
	for (i=2;i<151;i++)
		temp =temp^sdata[i];
	sdata[151]=temp;

	sdata[152]=0x0d;
	sdata[153]=0x0a;

	RXLen =154;
  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -