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