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

📄 send_ofs.lst

📁 单片机C源程序souce
💻 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 + -