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

📄 ring.lst

📁 pdh控制程序
💻 LST
字号:
C51 COMPILER V7.20   RING                                                                  02/20/2006 10:13:55 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE RING
OBJECT MODULE PLACED IN .\output\ring.obj
COMPILER INVOKED BY: D:\keil c51 v7.09\C51\BIN\C51.EXE ring.c BROWSE DEBUG OBJECTEXTEND PRINT(.\list\ring.lst) OBJECT(.\
                    -output\ring.obj)

line level    source

   1          #ifndef _RING_C_
   2          #define _RING_C_
   3          
   4          #include "api.h"
   5          
   6          BYTE is_key_press()
   7          {
   8   1      #if _LCD_MENU_
   9   1              if( get_menu_key_voice_status() )
  10   1                      return VALID;
  11   1      #endif
  12   1              return INVALID;
  13   1      }
  14          
  15          BYTE is_ow_call()
  16          {
  17   1              BYTE hook_status;
  18   1              SYSTEM_DEVICE_STATUS *psdev = &gsystemStauts;
  19   1              static BYTE xdata preview_remote_hook = 0;
  20   1              BYTE remote_hook;
  21   1      
  22   1              hook_status = ReadChip( LOCAL_HOOKSTATUS_ADDR );
  23   1      
  24   1              if( hook_status&BIT1 )
  25   1                      psdev->local.alarm_hook &= HOOK_ON;
  26   1      
  27   1              if( (!(hook_status&BIT1)) && ( (psdev->remote.alarm_hook&0x0f) != PHONE_TALK) )
  28   1              {
  29   2                      psdev->local.alarm_hook &= HOOK_ON;
  30   2                      psdev->local.alarm_hook |= HOOK_OFF;
  31   2                      return INVALID;
  32   2              }
  33   1      
  34   1              if( ((psdev->remote.alarm_hook&0x0f) == (HOOK_ON&0x0f))
  35   1                      && ((psdev->local.alarm_hook&0x0f) == (HOOK_ON&0x0f)) )
  36   1                      preview_remote_hook = (HOOK_ON&0x0f);
  37   1      
  38   1              if( hook_status&BIT1 )
  39   1              {
  40   2                      remote_hook = (psdev->remote.alarm_hook&0x0f);
  41   2                      if( remote_hook == HOOK_OFF  )
  42   2                      {
  43   3                              if( (preview_remote_hook&0x0f) == (HOOK_ON&0x0f) )
  44   3                                      return VALID;
  45   3                      }
  46   2              }
  47   1              if( ((psdev->remote.alarm_hook&0x0f) == PHONE_TALK)
  48   1                      ||((psdev->remote.alarm_hook&0x0f) == HOOK_OFF)
  49   1                      && ((preview_remote_hook&0x0f) == (HOOK_ON&0x0f)) )
  50   1              {
  51   2                      preview_remote_hook = HOOK_OFF;
  52   2                      return INVALID;
  53   2              }
  54   1      
C51 COMPILER V7.20   RING                                                                  02/20/2006 10:13:55 PAGE 2   

  55   1              return INVALID;
  56   1      }
  57          
  58          BYTE get_mute_status()
  59          {
  60   1              BYTE mute;
  61   1      
  62   1              mute = ReadChip( LOCAL_HOOKSTATUS_ADDR );
  63   1      
  64   1              if( mute&BIT0 )
  65   1                      return INVALID;
  66   1              else
  67   1                      return VALID;
  68   1      }
  69          
  70          
  71          BYTE is_alarm( SYSTEM_DEVICE_STATUS *psdev )
  72          {
  73   1              if( (get_local_alarm_status( psdev ) != ALARM )
  74   1              || (get_remote_alarm_status( psdev ) != ALARM ) )
  75   1                      return VALID;
  76   1      
  77   1              return INVALID;
  78   1      }
  79          
  80          BYTE is_local_loop( SYSTEM_DEVICE_STATUS *psdev )
  81          {
  82   1              if( light_e1_loop( psdev->remote.e1_status ) != INVALID )
  83   1                      return VALID;
  84   1      
  85   1              return INVALID;
  86   1      }
  87          
  88          BYTE is_remote_loop( SYSTEM_DEVICE_STATUS *psdev )
  89          {
  90   1              if( light_e1_loop( psdev->local.e1_status ) != INVALID )
  91   1                      return VALID;
  92   1      
  93   1              return INVALID;
  94   1      }
  95          
  96          BYTE get_remote_ow_status( SYSTEM_DEVICE_STATUS *psdev )
  97          {
  98   1              return (psdev->remote.alarm_hook&0x0f);
  99   1      }
 100          
 101          void ring_control( BYTE ring_status , SYSTEM_DEVICE_STATUS *psdev )
 102          {
 103   1              BYTE ring_chip = RING_NORMAL;
 104   1      
 105   1              switch( ring_status )
 106   1              {
 107   2              case KEY_VOICE:
 108   2                      ring_chip &= ~BIT6;
 109   2                      break;
 110   2      
 111   2              case CALL_VOICE:
 112   2                      ring_chip &= ~BIT4;
 113   2                      break;
 114   2      
 115   2              case ALARM_VOICE:
 116   2                      ring_chip &= ~BIT2;
C51 COMPILER V7.20   RING                                                                  02/20/2006 10:13:55 PAGE 3   

 117   2                      break;
 118   2      
 119   2              case LOCAL_LOOP_VOICE:
 120   2                      ring_chip &= ~BIT3;
 121   2                      break;
 122   2      
 123   2              case REMOTE_LOOP_VOICE:
 124   2                      ring_chip &= ~BIT5;
 125   2                      break;
 126   2      
 127   2              default:
 128   2                      break;
 129   2              }
 130   1      
 131   1              if( get_remote_ow_status( psdev ) == HOOK_OFF )
 132   1                      ring_chip &= ~BIT1;
 133   1      
 134   1              if( get_remote_ow_status( psdev ) == PHONE_TALK )
 135   1                      ring_chip &= ~BIT0;
 136   1      
 137   1              WriteChip( REMOTE_HOOK_ADDR, ring_chip );
 138   1      }
 139          
 140          void ring_process( SYSTEM_DEVICE_STATUS *psdev )
 141          {
 142   1              BYTE ring_status;
 143   1      
 144   1              /*LCD按键是否按下*/
 145   1              if( is_key_press() == VALID )
 146   1                      ring_status = KEY_VOICE;
 147   1      
 148   1              /*公务是否有电话*/
 149   1              else if( is_ow_call() == VALID )
 150   1                      ring_status = CALL_VOICE;
 151   1      
 152   1              /*检验静音状态*/
 153   1              else if( get_mute_status() == INVALID )
 154   1                      ring_status = SILENCE;
 155   1      
 156   1              /*检查是否有告警*/
 157   1              else if( is_alarm( psdev ) == VALID )
 158   1                      ring_status = ALARM_VOICE;
 159   1      
 160   1              /*检查是否有本端环回*/
 161   1              else if( is_local_loop( psdev ) == VALID )
 162   1                      ring_status = LOCAL_LOOP_VOICE;
 163   1      
 164   1              /*检查是否有远端环回*/
 165   1              else if( is_remote_loop( psdev ) == VALID )
 166   1                      ring_status = REMOTE_LOOP_VOICE;
 167   1      
 168   1              ring_control( ring_status, psdev );
 169   1      }
 170          
 171          void task_ring_process( void )
 172          {
 173   1              SYSTEM_DEVICE_STATUS *psdev = &gsystemStauts;
 174   1      
 175   1              ring_process( psdev );
 176   1      }
 177          
 178          #endif
C51 COMPILER V7.20   RING                                                                  02/20/2006 10:13:55 PAGE 4   



MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    465    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =      1    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      13
   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 + -