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

📄 diag.lst

📁 ADI公司的关于光通讯模块的监控程序,在KEIL FOR ARM 的编译环境编译.程序大小约12K,芯片是ADu7020.
💻 LST
📖 第 1 页 / 共 5 页
字号:
ARM COMPILER V2.32a,  diag                                                                 08/08/05  09:50:22  PAGE 1   


ARM COMPILER V2.32a, COMPILATION OF MODULE diag
OBJECT MODULE PLACED IN diag.OBJ
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe diag.c THUMB OPTIMIZE(0,SPEED) BROWSE DEBUG TABS(4) 

stmt  level    source

    1          // diag.c
    2          
    3          /********************************************************************/
    4          /*                                                                  */
    5          /*      Diagnostic routines                                         */
    6          /*                                                                  */
    7          /********************************************************************/
    8          #include <ADuC7020.h>
    9          #include "common.h"
   10          
   11          void diag(void){
   12   1          temp_diag(A2h[96], A2h[97], 0);
   13   1          voltage_diag(A2h[98], A2h[99], 8);
   14   1          tx_bias_diag(A2h[100], A2h[101], 16);
   15   1          tx_power_diag(A2h[102], A2h[103], 24);
   16   1          rx_power_diag(A2h[104], A2h[105], 32);
   17   1          check_los_ratesel();
   18   1      }
   19          
   20          /********************************************************************/
   21          /*                                                                  */
   22          /*      Temperature Diagnostic routine                              */
   23          /*                                                                  */
   24          /********************************************************************/
   25          void temp_diag(BYTE msb, BYTE lsb, BYTE addr){
   26   1      
   27   1          // Temperature diag. parameters located from address 0
   28   1          BYTE result;
   29   1          HALFWORD monitor = (msb<<8) + lsb;
   30   1          HALFWORD high_alarm =   (A2h[addr  ]<<8) + A2h[addr+1];
   31   1          HALFWORD low_alarm =    (A2h[addr+2]<<8) + A2h[addr+3];
   32   1          HALFWORD high_warning = (A2h[addr+4]<<8) + A2h[addr+5];
   33   1          HALFWORD low_warning =  (A2h[addr+6]<<8) + A2h[addr+7];
   34   1      
   35   1          if (monitor>high_alarm) result=5;
   36   1          else if (monitor>high_warning && monitor<=high_alarm) result=4;
   37   1          else if (monitor<=high_warning && monitor>=low_warning) result=3;
   38   1          else if (monitor<low_warning && monitor>= low_alarm) result=2;
   39   1          else result=1;
   40   1      
   41   1          switch (result)
   42   1          {
   43   2              case 5:
   44   2                  A2h[112] |= 0x80;       // set high alarm flag bit7
   45   2                  A2h[116] |= 0x80;       // set high warning flag bit7
   46   2                  A2h[116] &= 0xBF;       // clear low warning flag bit6
   47   2                  A2h[112] &= 0xBF;       // clear low alarm flag bit6
   48   2                  break;
   49   2              case 4:
   50   2                  A2h[112] &= 0x7F;       // clear high alarm flag bit7
   51   2                  A2h[116] |= 0x80;       // set high warning flag bit7
   52   2                  A2h[116] &= 0xBF;       // clear low warning flag bit6
   53   2                  A2h[112] &= 0xBF;       // clear low alarm flag bit6
   54   2                  break;
   55   2              case 3:
   56   2                  A2h[112] &= 0x7F;       // clear high alarm flag bit7
   57   2                  A2h[116] &= 0x7F;       // clear high warning flag bit7
   58   2                  A2h[116] &= 0xBF;       // clear low warning flag bit6
   59   2                  A2h[112] &= 0xBF;       // clear low alarm flag bit6
ARM COMPILER V2.32a,  diag                                                                 08/08/05  09:50:22  PAGE 2   

   60   2                  break;
   61   2              case 2:
   62   2                  A2h[112] &= 0x7F;       // clear high alarm flag bit7
   63   2                  A2h[116] &= 0x7F;       // clear high warning flag bit7
   64   2                  A2h[116] |= 0x40;       // set low warning flag bit6
   65   2                  A2h[112] &= 0xBF;       // clear low alarm flag bit6
   66   2                  break;
   67   2              case 1:
   68   2                  A2h[112] &= 0x7F;       // clear high alarm flag bit7
   69   2                  A2h[116] &= 0x7F;       // clear high warning flag bit7
   70   2                  A2h[116] |= 0x40;       // set low warning flag bit6
   71   2                  A2h[112] |= 0x40;       // set low alarm flag bit6
   72   2                  break;
   73   2          }
   74   1      }
   75          
   76          /********************************************************************/
   77          /*                                                                  */
   78          /*      Voltage Diagnostic routine                                  */
   79          /*                                                                  */
   80          /********************************************************************/
   81          void voltage_diag(BYTE msb, BYTE lsb, BYTE addr){
   82   1      
   83   1          BYTE result;
   84   1          HALFWORD monitor = (msb<<8) + lsb;
   85   1          HALFWORD high_alarm =   (A2h[addr  ]<<8) + A2h[addr+1];
   86   1          HALFWORD low_alarm =    (A2h[addr+2]<<8) + A2h[addr+3];
   87   1          HALFWORD high_warning = (A2h[addr+4]<<8) + A2h[addr+5];
   88   1          HALFWORD low_warning =  (A2h[addr+6]<<8) + A2h[addr+7];
   89   1      
   90   1          if (monitor>high_alarm) result=5;
   91   1          else if (monitor>high_warning && monitor<=high_alarm) result=4;
   92   1          else if (monitor<=high_warning && monitor>=low_warning) result=3;
   93   1          else if (monitor<low_warning && monitor>= low_alarm) result=2;
   94   1          else result=1;
   95   1      
   96   1          switch (result)
   97   1          {
   98   2              case 5:
   99   2                  A2h[112] |= 0x20;       // set high alarm flag bit5
  100   2                  A2h[116] |= 0x20;       // set high warning flag bit5
  101   2                  A2h[116] &= 0xEF;       // clear low warning flag bit4
  102   2                  A2h[112] &= 0xEF;       // clear low alarm flag bit4
  103   2                  break;
  104   2              case 4:
  105   2                  A2h[112] &= 0xDF;       // clear high alarm flag bit5
  106   2                  A2h[116] |= 0x20;       // set high warning flag bit5
  107   2                  A2h[116] &= 0xEF;       // clear low warning flag bit4
  108   2                  A2h[112] &= 0xEF;       // clear low alarm flag bit4
  109   2                  break;
  110   2              case 3:
  111   2                  A2h[112] &= 0xDF;       // clear high alarm flag bit5
  112   2                  A2h[116] &= 0xDF;       // clear high warning flag bit5
  113   2                  A2h[116] &= 0xEF;       // clear low warning flag bit4
  114   2                  A2h[112] &= 0xEF;       // clear low alarm flag bit4
  115   2                  break;
  116   2              case 2:
  117   2                  A2h[112] &= 0xDF;       // clear high alarm flag bit5
  118   2                  A2h[116] &= 0xDF;       // clear high warning flag bit5
  119   2                  A2h[116] |= 0x10;       // set low warning flag bit4
  120   2                  A2h[112] &= 0xEF;       // clear low alarm flag bit4
  121   2                  break;
  122   2              case 1:
  123   2                  A2h[112] &= 0xDF;       // clear high alarm flag bit5
  124   2                  A2h[116] &= 0xDF;       // clear high warning flag bit5
  125   2                  A2h[116] |= 0x10;       // set low warning flag bit4
ARM COMPILER V2.32a,  diag                                                                 08/08/05  09:50:22  PAGE 3   

  126   2                  A2h[112] |= 0x10;       // set low alarm flag bit4
  127   2                  break;
  128   2          }
  129   1      }
  130          
  131          /********************************************************************/
  132          /*                                                                  */
  133          /*      TX Bias Diagnostic routine                                  */
  134          /*                                                                  */
  135          /********************************************************************/
  136          void tx_bias_diag(BYTE msb, BYTE lsb, BYTE addr){
  137   1      
  138   1          BYTE result;
  139   1          HALFWORD monitor = (msb<<8) + lsb;
  140   1          HALFWORD high_alarm =   (A2h[addr  ]<<8) + A2h[addr+1];
  141   1          HALFWORD low_alarm =    (A2h[addr+2]<<8) + A2h[addr+3];
  142   1          HALFWORD high_warning = (A2h[addr+4]<<8) + A2h[addr+5];
  143   1          HALFWORD low_warning =  (A2h[addr+6]<<8) + A2h[addr+7];
  144   1      
  145   1          if (monitor>high_alarm) result=5;
  146   1          else if (monitor>high_warning && monitor<=high_alarm) result=4;
  147   1          else if (monitor<=high_warning && monitor>=low_warning) result=3;
  148   1          else if (monitor<low_warning && monitor>= low_alarm) result=2;
  149   1          else result=1;
  150   1      
  151   1          switch (result)
  152   1          {
  153   2              case 5:
  154   2                  A2h[112] |= 0x08;       // set high alarm flag bit3
  155   2                  A2h[116] |= 0x08;       // set high warning flag bit3
  156   2                  A2h[116] &= 0xFB;       // clear low warning flag bit2
  157   2                  A2h[112] &= 0xFB;       // clear low alarm flag bit2
  158   2                  break;
  159   2              case 4:
  160   2                  A2h[112] &= 0xF7;       // clear high alarm flag bit3
  161   2                  A2h[116] |= 0x08;       // set high warning flag bit3
  162   2                  A2h[116] &= 0xFB;       // clear low warning flag bit2
  163   2                  A2h[112] &= 0xFB;       // clear low alarm flag bit2
  164   2                  break;
  165   2              case 3:
  166   2                  A2h[112] &= 0xF7;       // clear high alarm flag bit3
  167   2                  A2h[116] &= 0xF7;       // clear high warning flag bit3
  168   2                  A2h[116] &= 0xFB;       // clear low warning flag bit2
  169   2                  A2h[112] &= 0xFB;       // clear low alarm flag bit2
  170   2                  break;
  171   2              case 2:
  172   2                  A2h[112] &= 0xF7;       // clear high alarm flag bit3
  173   2                  A2h[116] &= 0xF7;       // clear high warning flag bit3
  174   2                  A2h[116] |= 0x04;       // set low warning flag bit2
  175   2                  A2h[112] &= 0xFB;       // clear low alarm flag bit2
  176   2                  break;
  177   2              case 1:
  178   2                  A2h[112] &= 0xF7;       // clear high alarm flag bit3
  179   2                  A2h[116] &= 0xF7;       // clear high warning flag bit3
  180   2                  A2h[116] |= 0x04;       // set low warning flag bit2
  181   2                  A2h[112] |= 0x04;       // set low alarm flag bit2
  182   2                  break;
  183   2          }
  184   1      }
  185          
  186          /********************************************************************/
  187          /*                                                                  */
  188          /*      TX Power Diagnostic routine                                 */
  189          /*                                                                  */
  190          /********************************************************************/
  191          void tx_power_diag(BYTE msb, BYTE lsb, BYTE addr){
ARM COMPILER V2.32a,  diag                                                                 08/08/05  09:50:22  PAGE 4   

  192   1      
  193   1          BYTE result;
  194   1          HALFWORD monitor = (msb<<8) + lsb;
  195   1          HALFWORD high_alarm =   (A2h[addr  ]<<8) + A2h[addr+1];
  196   1          HALFWORD low_alarm =    (A2h[addr+2]<<8) + A2h[addr+3];
  197   1          HALFWORD high_warning = (A2h[addr+4]<<8) + A2h[addr+5];
  198   1          HALFWORD low_warning =  (A2h[addr+6]<<8) + A2h[addr+7];
  199   1      
  200   1          if (monitor>high_alarm) result=5;
  201   1          else if (monitor>high_warning && monitor<=high_alarm) result=4;
  202   1          else if (monitor<=high_warning && monitor>=low_warning) result=3;
  203   1          else if (monitor<low_warning && monitor>= low_alarm) result=2;
  204   1          else result=1;
  205   1      
  206   1          switch (result)
  207   1          {
  208   2              case 5:
  209   2                  A2h[112] |= 0x02;       // set high alarm flag bit1
  210   2                  A2h[116] |= 0x02;       // set high warning flag bit1
  211   2                  A2h[116] &= 0xFE;       // clear low warning flag bit0
  212   2                  A2h[112] &= 0xFE;       // clear low alarm flag bit0
  213   2                  break;
  214   2              case 4:
  215   2                  A2h[112] &= 0xFD;       // clear high alarm flag bit1
  216   2                  A2h[116] |= 0x02;       // set high warning flag bit1
  217   2                  A2h[116] &= 0xFE;       // clear low warning flag bit0
  218   2                  A2h[112] &= 0xFE;       // clear low alarm flag bit0
  219   2                  break;
  220   2              case 3:
  221   2                  A2h[112] &= 0xFD;       // clear high alarm flag bit1
  222   2                  A2h[116] &= 0xFD;       // clear high warning flag bit1
  223   2                  A2h[116] &= 0xFE;       // clear low warning flag bit0
  224   2                  A2h[112] &= 0xFE;       // clear low alarm flag bit0
  225   2                  break;
  226   2              case 2:
  227   2                  A2h[112] &= 0xFD;       // clear high alarm flag bit1
  228   2                  A2h[116] &= 0xFD;       // clear high warning flag bit1
  229   2                  A2h[116] |= 0x01;       // set low warning flag bit0
  230   2                  A2h[112] &= 0xFE;       // clear low alarm flag bit0
  231   2                  break;
  232   2              case 1:
  233   2                  A2h[112] &= 0xFD;       // clear high alarm flag bit1
  234   2                  A2h[116] &= 0xFD;       // clear high warning flag bit1
  235   2                  A2h[116] |= 0x01;       // set low warning flag bit0
  236   2                  A2h[112] |= 0x01;       // set low alarm flag bit0
  237   2                  break;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -