📄 send_ofs.lst
字号:
C51 COMPILER V7.06 SEND_OFS 11/20/2006 13:04:30 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE SEND_OFS
OBJECT MODULE PLACED IN send_ofs.OBJ
COMPILER INVOKED BY: E:\keil\C51\BIN\C51.EXE send_ofs.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include "ext_temp.h"
2 extern unsigned char toasc(unsigned char m);
3 extern SendDSP(void);
4 extern unsigned char *char_to_asc(unsigned char m,bit ch);
5 extern unsigned long mul_div(unsigned char a[16],unsigned long divisor);
6 extern WriteCont(unsigned char CMD,unsigned char addr,unsigned char DataArray[],unsigned char offset);
7 extern wdt(void);
8
9 extern send_ofs(void)
10 {
11 1 unsigned char num[16];//做除法用
12 1 long xdata temp;
13 1 unsigned char par,*b;
14 1 char i;
15 1
16 1 wdt();
17 1
18 1
19 1 // **********数据转换算法
20 1 temp =ay_par-az_par;
21 1 if (temp>=500000000)//大于500000000就为负值
22 1 {
23 2 temp=1000000000-temp;//得到负值的正数
24 2 c_flag=1;
25 2 }
26 1 else
27 1 c_flag=0;
28 1
29 1 /* temp -=500000000;
30 1 if (temp<0) //如果是负数,将转换成正数,再运算
31 1 {
32 1 c_flag=1;//负数
33 1 temp=temp^0xffffffff;
34 1 temp++; //取反加1
35 1 }
36 1 else
37 1 c_flag=0;//正数和0
38 1 /************对数组赋值,准备作除法运算
39 1 ***temp左移23位再除5^9
40 1 ***
41 1 ***************************************/
42 1 temp=temp<<3;//先左移3位,相当于*8
43 1 for(i=10;i>2;i=i-2)//左移20位
44 1 {
45 2 par=temp;
46 2 num[i]=par&0x0f;
47 2 num[i-1]=par>>4;
48 2 temp=temp>>8;
49 2 }
50 1 // a[1]=temp;a[0]=0;//
51 1 for(i=11;i<16;i++)
52 1 num[i]=0x00;
53 1 num[1]=0;num[0]=0;
54 1 num[2]=0;
55 1
C51 COMPILER V7.06 SEND_OFS 11/20/2006 13:04:30 PAGE 2
56 1 temp=mul_div(num,1953125);//除5^9
57 1
58 1 if (c_flag) //temp是负值,将得到的值取负号
59 1 {
60 2 temp=temp^0xffffffff;
61 2 temp=temp+1;//取反加1
62 2 }
63 1 //重组$BDOFS帧
64 1 rdata[0]='$';rdata[1]='B';
65 1 rdata[2]='D';rdata[3]='O';
66 1 rdata[4]='F';rdata[5]='S';
67 1 rdata[6]=',';
68 1
69 1 par =temp;
70 1 b=char_to_asc(par,1);
71 1 rdata[13]=*b++;
72 1 rdata[14]=*b;
73 1 par =temp>>8;
74 1 b=char_to_asc(par,1);
75 1 rdata[11]=*b++;
76 1 rdata[12]=*b;
77 1 par =temp>>16;
78 1 b=char_to_asc(par,1);
79 1 rdata[9]=*b++;
80 1 rdata[10]=*b;
81 1 par =temp>>24;
82 1 b=char_to_asc(par,1);
83 1 rdata[7]=*b++;
84 1 rdata[8]=*b;
85 1 rdata[15]=',';
86 1 for (i=0;i<4;i++)
87 1 pps_asc[i]=rdata[i+9];//提取PPS部分值
88 1
89 1 for (i=16;i<=23;i++)
90 1 rdata[i]=0x30;//0
91 1 rdata[24]=0x0d;
92 1 rdata[25]=0x0a;
93 1
94 1 /***************存取OFS帧*****************/
95 1 WriteCont(0x02,0x60,rdata,0);
96 1 WriteCont(0x02,0x70,rdata,16);
97 1 WriteCont(0x02,0x80,rdata,32);
98 1 /*******************************************/
99 1 temp = ay_par;
100 1 for(i=3;i>=0;i--)
101 1 {
102 2 num[i]=temp;
103 2 temp=temp>>8;
104 2 }
105 1 temp = az_par;
106 1 for(i=7;i>=4;i--)
107 1 {
108 2 num[i]=temp;
109 2 temp=temp>>8;
110 2 }
111 1 WriteCont(0x02,0xA0,num,0);
112 1
113 1 /*********************************/
114 1 RXLen =26;
115 1
116 1 //**发送经DSP
117 1 SendDSP();
C51 COMPILER V7.06 SEND_OFS 11/20/2006 13:04:30 PAGE 3
118 1
119 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 858 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- 4
PDATA SIZE = ---- ----
DATA SIZE = ---- 21
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -