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

📄 kbd_task.lst

📁 基于AT89C51SND1的MP3的程序设计(包括播放mp3和录音功能)
💻 LST
📖 第 1 页 / 共 2 页
字号:
 184   2          if (gl_key == KEY_FUNC)
 185   2          {
 186   3            gl_key_press = TRUE;
 187   3            if (playing) gl_key = KEY_PAUSE;
 188   3            else         gl_key = KEY_REC;
 189   3            SHUT_MIC = playing;
 190   3          }
 191   2          else if (gl_key == KEY_VALID)
 192   2          {
 193   3            if (pause || playing)
 194   3            {
 195   4              gl_key_press = TRUE;
 196   4              gl_key = KEY_STOP;
 197   4            }
 198   3            else recording=FALSE;
 199   3          }
 200   2        }
 201   1        else if (playing)
 202   1        {
 203   2          bargraph=FALSE;
 204   2          if      (gl_key == KEY_FUNC)
 205   2          {
 206   3            gl_key_press = TRUE;
 207   3            if ((func_state == 2) && (ref_state == REF_STATE_VOICE)) gl_key = KEY_STOP;
 208   3            else gl_key = KEY_PAUSE;
 209   3          }
 210   2          else if (gl_key == KEY_VALID)
 211   2          {
 212   3            if (ref_state == REF_STATE_VOICE)
 213   3            {
 214   4              if (func_state == 1) { func_state=2;  }
 215   4              else                 { func_state=1;  }
 216   4            }
 217   3            else
 218   3            {
 219   4              if (func_state)
 220   4              {
 221   5                gl_key_press = TRUE;
 222   5                gl_key = KEY_SOUND;
 223   5              }
 224   4              if (func_state>=5) func_state = 0;
 225   4              func_state++;
 226   4            }
 227   3          }
 228   2        }
 229   1        else
 230   1        {
 231   2          if      (gl_key == KEY_FUNC)
 232   2          {
 233   3            func_state=0;
 234   3            if (ref_state == REF_STATE_SONG)
 235   3            {
 236   4              gl_key_press = TRUE;
 237   4              gl_key = KEY_PLAY;
 238   4              mode_state = MODE_SONG;
 239   4            }
 240   3            else if (ref_state == REF_STATE_VOICE)
C51 COMPILER V7.06   KBD_TASK                                                              05/05/2005 12:12:04 PAGE 5   

 241   3            {
 242   4              gl_key_press = TRUE;
 243   4              if (func_state == 2) gl_key = KEY_REC;
 244   4              else               gl_key = KEY_PLAY;
 245   4              mode_state = MODE_VOICE;
 246   4            }
 247   3            else if (ref_state == REF_STATE_USB)    // && !connected
 248   3            {
 249   4              usb_task_init ();
 250   4              connected = TRUE;
 251   4              mode_state = MODE_DOWNLOAD;
 252   4              ENA_USB = !connected;
 253   4            }
 254   3          }
 255   2          else if (gl_key == KEY_VALID)
 256   2          {
 257   3            if (pause)
 258   3            {
 259   4              pause = FALSE;
 260   4              gl_key_press = TRUE;
 261   4              gl_key = KEY_STOP;
 262   4            }
 263   3            if (((ref_state >= 1)&(independence))|(ref_state >= 2))
 264   3            {
 265   4              Label_init_ihm:
 266   4              ref_state = 0;
 267   4              mode_task_init();
 268   4            }
 269   3            else ref_state++;
 270   3          }
 271   2        }
 272   1      }
 273          
 274          
 275          /*F**************************************************************************
 276          * NAME: kbd_task
 277          *----------------------------------------------------------------------------
 278          * PARAMS:
 279          *
 280          * return:
 281          *----------------------------------------------------------------------------
 282          * PURPOSE: 
 283          *   Keyboard task
 284          *----------------------------------------------------------------------------
 285          * EXAMPLE:
 286          *----------------------------------------------------------------------------
 287          * NOTE:
 288          *----------------------------------------------------------------------------
 289          * REQUIREMENTS:
 290          *****************************************************************************/
 291          void kbd_task (void)
 292          {
 293   1        switch (kbd_state)
 294   1        {
 295   2          case KBD_IDLE:
 296   2                if (P_KBD==0xf7) power_tick++;
 297   2            if (Kbd_key_pressed())
 298   2            {
 299   3              gl_kbd_tick = KBD_DEBOUNCE_INIT;  /* init debounce timer */
 300   3              kbd_state = KBD_DEBOUNCE;
 301   3            }
 302   2                if (power_tick > 200) SHUT_PWR=0;
C51 COMPILER V7.06   KBD_TASK                                                              05/05/2005 12:12:04 PAGE 6   

 303   2                else power_tick=0;
 304   2            break;
 305   2      
 306   2          case KBD_DEBOUNCE:
 307   2            if (gl_kbd_tick > KBD_DEBOUNCE_TEMPO)
 308   2            {
 309   3              kbd_state = KBD_DECODE;
 310   3            }
 311   2            break;
 312   2      
 313   2          case KBD_DECODE:
 314   2                if (MIUP==0) P_KBD=0xBF;      
 315   2            gl_key = kbd_decode();              /* read key pressed */
 316   2            if (gl_key != NO_KEY)               /* if real key pressed */
 317   2            gl_key_press = TRUE;              /* signal to other tasks */
 318   2            kbd_state = KBD_IDLE;
 319   2            break;
 320   2      
 321   2          default:
 322   2            break;
 323   2        }
 324   1      
 325   1        // Add driver keyboard for Reference Design:
 326   1        // Re-map physical keys over logical demoboard keys
 327   1        if (gl_key_press == TRUE && gl_key < NO_KEY) ref_mode_task();
 328   1        if (connected && (mode_state == MODE_SONG))
 329   1        { /* download exit */
 330   2          gl_key_press = TRUE;
 331   2          gl_key = KEY_FUNC;
 332   2        }
 333   1      }
 334          
 335          
 336          /*F**************************************************************************
 337          * NAME: kbd_set_stop
 338          *----------------------------------------------------------------------------
 339          * PARAMS:
 340          *
 341          * return:
 342          *----------------------------------------------------------------------------
 343          * PURPOSE: 
 344          *   Simulate STOP key press
 345          *----------------------------------------------------------------------------
 346          * EXAMPLE:
 347          *----------------------------------------------------------------------------
 348          * NOTE:
 349          *   Called from mode task before switching to download state
 350          *----------------------------------------------------------------------------
 351          * REQUIREMENTS:
 352          *****************************************************************************/
 353          void kbd_set_stop (void)
 354          {
 355   1        gl_key = KEY_STOP;
 356   1        gl_key_press = TRUE;
 357   1        kbd_state = KBD_IDLE;
 358   1      }
 359          
 360          
 361          


MODULE INFORMATION:   STATIC OVERLAYABLE
C51 COMPILER V7.06   KBD_TASK                                                              05/05/2005 12:12:04 PAGE 7   

   CODE SIZE        =    572    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =      3    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      6    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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