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

📄 key_prc.lst

📁 楼宇对讲系统里用的文字信息接收。用可视对讲话机的TFT屏可看到从管理中心发过来的广播信息和本户的特发信息
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V7.06   KEY_PRC                                                               06/10/2005 13:26:28 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE KEY_PRC
OBJECT MODULE PLACED IN Key_prc.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Key_prc.c BROWSE DEBUG OBJECTEXTEND CODE SYMBOLS

stmt level    source

   1          
   2          /***********************************************************/
   3          /*                                                                                     */
   4          /*                CPU:AT89c55   20MHZ                      */
   5          /*                Copyright  2004.09  Comelit              */
   6          /*                Author:LV_XIAO_LU                        */
   7          /*                                                         */
   8          /***********************************************************/
   9          /*                Version  1.0                             */
  10          /***********************************************************/
  11          /*      LEFT KEY LOCATE P1.7,RIGHT KEY LOCATE P1.6         */
  12          /*    FUNCTION :                                           */
  13          /*              LEFT KEY :MOVE sign of menu                */
  14          /*              RIGHT KEY:   design                        */  
  15          /***********************************************************/        
  16              
  17          #include <reg52.h>
  18          #include "string.h"
  19          #include "typedef.h"
  20          #include "define.h"
  21          #include "variable.h"
  22          #include "function.h"
  23          
  24          
  25          sbit DIVA_STATUS_PORT = P3^2;
  26          sbit MES_SW = P1^7;
  27          sbit CALL_SW = P1^6 ;
  28          sbit DISP_CTR_PORT = P3^5;
  29          
  30          void Key_dummy(void);
  31          void Key_left(void);
  32          void Key_right(void);
  33          void Prev_page_affirm(unsigned char mes_num);
  34          void Key_hd(void);
  35          void Key_scan(void);
  36          bit  Key_judge(void);
  37          void Con_key(void);
  38          void Key_prc( void );
  39          unsigned char  Judge_mes_num(void);
  40          unsigned char  R_judge_mes_num(void);
  41          void In_third_menu(void);
  42          void Return_second_menu(unsigned char mes_num);
  43          void Get_mes_content(unsigned char scr_disp_num,unsigned char select);
  44          void Del_mes_prc(void);
  45          void Get_num_code(unsigned char num);
  46          void Get_list_str(unsigned char num);
  47          
  48          /***********************************************************/
  49          /***********************************************************/
  50          code unsigned int num_to_code[]=
  51           {
  52                  0xa3b0,0xa3b1,0xa3b2,0xa3b3,0xa3b4,
  53                          0xa3b5,0xa3b6,0xa3b7,0xa3b8,0xa3b9
  54           };
  55          /***********************************************************/
C51 COMPILER V7.06   KEY_PRC                                                               06/10/2005 13:26:28 PAGE 2   

  56          /***********************************************************/
  57          void (*const code key_tbl[])(void)= 
  58          {
  59                  Key_dummy,
  60                  Key_left,
  61                  Key_right
  62          };
  63          
  64          /***********************************************************/
  65          /***********************************************************/ 
  66          void Key_dummy(void)
  67          {
  68   1         return;
  69   1      }
  70          
  71          
  72          
  73          /***********************************************************/
  74          /***********************************************************/
  75          void Key_hd(void)
  76          {
  77   1              Key_scan();
  78   1              if(key_tmr != 0)
  79   1              key_tmr--;
  80   1              else 
  81   1              {
  82   2              key_tmr = KEY_TM;
  83   2                      if(Key_judge() == KEYOK)
  84   2                      Con_key();
  85   2              }
  86   1       return;
  87   1       }
  88          
  89          /***********************************************************/
  90          /***********************************************************/
  91          void Key_scan(void)
  92           
  93          {
  94   1              unsigned char i;
  95   1              P3 = P3|0x18;         //p3.3=p3.4=1
  96   1      //      P3=P3|0x0c;           //test
  97   1              key_data[0]=(~P3)&0x18;    // get P3.3,P3.4
  98   1      //      key_data[0]=(~P3)&0x0c;  //test
  99   1              for(i=2;i>0;i--)
 100   1              {
 101   2              key_data[i]= key_data[i-1];
 102   2          }
 103   1       
 104   1      return;    
 105   1      
 106   1      }
 107           
 108          
 109          
 110          /***********************************************************/
 111          /***********************************************************/
 112          bit  Key_judge(void)
 113          {
 114   1       if((key_data[0] == key_data[1])&&(key_data[1] == key_data[2]))
 115   1                 
 116   1           return(1);
 117   1       else 
C51 COMPILER V7.06   KEY_PRC                                                               06/10/2005 13:26:28 PAGE 3   

 118   1           return(0);
 119   1      
 120   1      }
 121          
 122          
 123          
 124          /***********************************************************/
 125          /*P3^4: 左键   P3^3:右键                                   */
 126          /***********************************************************/
 127          void Con_key(void)
 128          {
 129   1        switch(key_data[1])
 130   1        {
 131   2      
 132   2              case 0x10:
 133   2      //   case 0x04:        //test
 134   2               keyvld = LEFTKEY;
 135   2                       break;
 136   2              case 0x08:
 137   2               keyvld = RIGHTKEY;
 138   2                   break;
 139   2              default :
 140   2                   keyvld = NOKEY;
 141   2                       break;
 142   2         }
 143   1         if(keyvld == NOKEY)
 144   1            {
 145   2                   keyvld_old = keyvld ;
 146   2                       key_flag_F = 0;
 147   2                       
 148   2                 }
 149   1      
 150   1         else if(keyvld != keyvld_old)
 151   1              {      
 152   2                  
 153   2                      keyvld_old = keyvld;
 154   2                      key_flag_F = 1;
 155   2                       
 156   2                  }
 157   1                  
 158   1            return;
 159   1        }
 160          
 161          
 162            
 163          /***********************************************************/
 164          /***********************************************************/
 165          void Key_prc( void )
 166          {    
 167   1          if((write_F == 1)||(call_disp_F == 1))                //正在写FLASH时,禁止操作
 168   1              { 
 169   2                 if(key_flag_F == 1)
 170   2                    key_flag_F = 0;
 171   2                 return;
 172   2              }
 173   1              else
 174   1              {    
 175   2                  if(key_flag_F == 1)
 176   2                  {
 177   3                      key_flag_F = 0;
 178   3                              exit_time = TM30S ;
 179   3                      key_tbl[keyvld]();
C51 COMPILER V7.06   KEY_PRC                                                               06/10/2005 13:26:28 PAGE 4   

 180   3                              disp_change_F = 1 ;
 181   3                      }
 182   2      //              else
 183   2      //              {        
 184   2      //                      disp_change_F = 0;       
 185   2      //              }
 186   2                      if((exit_time != 0)&&(call_disp_F == 0))
 187   2                      exit_time--;
 188   2                      else if((disp_mode != DUMMY_DISP)&&(exit_time == 0))              // 关机
 189   2                      {
 190   3                      disp_mode = DUMMY_DISP;
 191   3                      }
 192   2                      return;
 193   2               }
 194   1      }
 195          
 196          /***********************************************************/
 197          /*     左键为信息选择                                      */
 198          /***********************************************************/
 199          
 200          void Key_left(void)
 201          {
 202   1         switch(disp_mode)
 203   1         {
 204   2           case DUMMY_DISP :     //如果原显示模式是待机
 205   2      //          if(call_disp_F == 0)
 206   2      //            {
 207   2                           disp_mode = FIRST_MENU_DISP ;
 208   2                   select_position = MES_READ_POSITION ;
 209   2                               CALL_SW = SW_ON;
 210   2                               sw_delay = TM60MS;        //这是为了等待继电器动作完成
 211   2                           read_mes_F = 1;
 212   2      //                }
 213   2                        break;  
 214   2           case FIRST_MENU_DISP:
 215   2         
 216   2                select_position++;             //指向下一功能
 217   2                if(select_position > CLOSE_POSITION )
 218   2                   select_position = MES_READ_POSITION ;  //循环
 219   2                        break;
 220   2      
 221   2           case SECOND_MENU_DISP:
 222   2      
 223   2                select_position++;              
 224   2                        if(scr_mes_num == 5)
 225   2                        {
 226   3                           if(list_num > 5 )

⌨️ 快捷键说明

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