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