📄 send_ofs.c
字号:
#include "ext_temp.h"
extern unsigned char toasc(unsigned char m);
extern SendDSP(void);
extern unsigned char *char_to_asc(unsigned char m,bit ch);
extern unsigned long mul_div(unsigned char a[16],unsigned long divisor);
extern WriteCont(unsigned char CMD,unsigned char addr,unsigned char DataArray[],unsigned char offset);
extern wdt(void);
extern send_ofs(void)
{
unsigned char num[16];//做除法用
long xdata temp;
unsigned char par,*b;
char i;
wdt();
// **********数据转换算法
temp =ay_par-az_par;
if (temp>=500000000)//大于500000000就为负值
{
temp=1000000000-temp;//得到负值的正数
c_flag=1;
}
else
c_flag=0;
/* temp -=500000000;
if (temp<0) //如果是负数,将转换成正数,再运算
{
c_flag=1;//负数
temp=temp^0xffffffff;
temp++; //取反加1
}
else
c_flag=0;//正数和0
/************对数组赋值,准备作除法运算
***temp左移23位再除5^9
***
***************************************/
temp=temp<<3;//先左移3位,相当于*8
for(i=10;i>2;i=i-2)//左移20位
{
par=temp;
num[i]=par&0x0f;
num[i-1]=par>>4;
temp=temp>>8;
}
// a[1]=temp;a[0]=0;//
for(i=11;i<16;i++)
num[i]=0x00;
num[1]=0;num[0]=0;
num[2]=0;
temp=mul_div(num,1953125);//除5^9
if (c_flag) //temp是负值,将得到的值取负号
{
temp=temp^0xffffffff;
temp=temp+1;//取反加1
}
//重组$BDOFS帧
rdata[0]='$';rdata[1]='B';
rdata[2]='D';rdata[3]='O';
rdata[4]='F';rdata[5]='S';
rdata[6]=',';
par =temp;
b=char_to_asc(par,1);
rdata[13]=*b++;
rdata[14]=*b;
par =temp>>8;
b=char_to_asc(par,1);
rdata[11]=*b++;
rdata[12]=*b;
par =temp>>16;
b=char_to_asc(par,1);
rdata[9]=*b++;
rdata[10]=*b;
par =temp>>24;
b=char_to_asc(par,1);
rdata[7]=*b++;
rdata[8]=*b;
rdata[15]=',';
for (i=0;i<4;i++)
pps_asc[i]=rdata[i+9];//提取PPS部分值
for (i=16;i<=23;i++)
rdata[i]=0x30;//0
rdata[24]=0x0d;
rdata[25]=0x0a;
/***************存取OFS帧*****************/
WriteCont(0x02,0x60,rdata,0);
WriteCont(0x02,0x70,rdata,16);
WriteCont(0x02,0x80,rdata,32);
/*******************************************/
temp = ay_par;
for(i=3;i>=0;i--)
{
num[i]=temp;
temp=temp>>8;
}
temp = az_par;
for(i=7;i>=4;i--)
{
num[i]=temp;
temp=temp>>8;
}
WriteCont(0x02,0xA0,num,0);
/*********************************/
RXLen =26;
//**发送经DSP
SendDSP();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -