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

📄 hal_key.lst

📁 用IAR开发的ZIGBEE网络路由例子
💻 LST
📖 第 1 页 / 共 4 页
字号:
    373                }
    374                else if ((adc >= 75) && (adc <= 85))
    375                {
    376                  ksave0 |= HAL_KEY_RIGHT;
    377                }
    378                else if ((adc >= 45) && (adc <= 55))
    379                {
    380                  ksave0 |= HAL_KEY_LEFT;
    381                }
    382                else if (adc <= 10)
    383                {
    384                  ksave0 |= HAL_KEY_DOWN;
    385                }
    386                else if ((adc >= 101) && (adc <= 115))
    387                {
    388                }
    389              }
    390              else
    391              {
    392                 /* Rev C */
    393                if ((adc >= 90)  && (adc <= 104))
    394                {
    395                   ksave0 |= HAL_KEY_UP;
    396                }
    397                else if ((adc >= 75)  && (adc <= 89))
    398                {
    399                  ksave0 |= HAL_KEY_RIGHT;
    400                }
    401                else if ((adc >= 45)  && (adc <= 56))
    402                {
    403                  ksave0 |= HAL_KEY_LEFT;
    404                }
    405                else if (adc <= 10)
    406                {
    407                  ksave0 |= HAL_KEY_DOWN;
    408                }
    409                else if ((adc >= 105) && (adc <= 121))
    410                {
    411                }
    412              }
    413          
    414            } while (ksave0 != ksave1);
    415          
    416            keys |= ksave0;
    417          
    418          #endif
    419          
    420          #endif /* HAL_KEY */
    421          
    422            return keys;
   \   000000                REQUIRE ?Subroutine0
   \   000000                ; // Fall through to label ?Subroutine0

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine0:
   \   000000   7900         MOV     R1,#0x0
   \   000002   02....       LJMP    ?BRET
    423          
    424          }
    425          
    426          
    427          /**************************************************************************************************
    428           * @fn      HalKeyPoll
    429           *
    430           * @brief   Called by hal_driver to poll the keys
    431           *
    432           * @param   None
    433           *
    434           * @return  None
    435           **************************************************************************************************/

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    436          void HalKeyPoll (void)
   \                     HalKeyPoll:
    437          {
   \   000000                ; Saved register size: 0
   \   000000                ; Auto size: 0
    438          #if (HAL_KEY == TRUE)
    439          
    440            uint8 keys = 0;
    441          
    442          #if defined (HAL_KEY_JOYSTICK_ENABLE)
    443            uint8 ksave0 = 0;
    444            uint8 ksave1;
    445            uint8 adc;
    446          #endif
    447          
    448            /*
    449            *  If interrupts are enabled, get the status of the interrupt-driven keys from 'halSaveIntKey'
    450            *  which is updated by the key ISR.  If Polling, read these keys directly.
    451            */
    452          #if defined (HAL_KEY_SW_6_ENABLE)
    453            if (!(HAL_KEY_SW_6_PORT & HAL_KEY_SW_6_BIT))    /* Key is active low */
    454            {
    455              keys |= HAL_KEY_SW_6;
    456            }
    457          #endif
    458          #if defined (HAL_KEY_SW_5_ENABLE)
    459            if (HAL_KEY_SW_5_PORT & HAL_KEY_SW_5_BIT)       /* Key is active high */
    460            {
    461              keys |= HAL_KEY_SW_5;
    462            }
    463          #endif
    464          
    465          #if defined (HAL_KEY_JOYSTICK_ENABLE)
    466          /*
    467          *  The joystick control is encoded as an analog voltage.  Keep on reading
    468          *  the ADC until two consecutive key decisions are the same.
    469          */
    470          
    471            do
    472            {
    473              ksave1 = ksave0;    /* save previouse key reading */
    474          
    475              adc = HalAdcRead (HAL_KEY_JOY_CHN, HAL_ADC_RESOLUTION_8);
    476          
    477              if  (CHVER == 0x01)
    478              {
    479                /* Rev B */
    480                if ((adc >= 90) && (adc <= 100))
    481                {
    482                   ksave0 |= HAL_KEY_UP;
    483                }
    484                else if ((adc >= 75) && (adc <= 85))
    485                {
    486                  ksave0 |= HAL_KEY_RIGHT;
    487                }
    488                else if ((adc >= 45) && (adc <= 55))
    489                {
    490                  ksave0 |= HAL_KEY_LEFT;
    491                }
    492                else if (adc <= 10)
    493                {
    494                  ksave0 |= HAL_KEY_DOWN;
    495                }
    496                else if ((adc >= 101) && (adc <= 115))
    497                {
    498                }
    499              }
    500              else
    501              {
    502                 /* Rev C */
    503                if ((adc >= 90)  && (adc <= 104))
    504                {
    505                   ksave0 |= HAL_KEY_UP;
    506                }
    507                else if ((adc >= 75)  && (adc <= 89))
    508                {
    509                  ksave0 |= HAL_KEY_RIGHT;
    510                }
    511                else if ((adc >= 45)  && (adc <= 56))
    512                {
    513                  ksave0 |= HAL_KEY_LEFT;
    514                }
    515                else if (adc <= 10)
    516                {
    517                  ksave0 |= HAL_KEY_DOWN;
    518                }
    519                else if ((adc >= 105) && (adc <= 121))
    520                {
    521                }
    522              }
    523          
    524          
    525            } while (ksave0 != ksave1);
    526          
    527            keys |= ksave0;
    528          
    529          #endif
    530          
    531            /* Exit if polling and no keys have changed */
    532            if (!Hal_KeyIntEnable)
    533            {
    534              if (keys == halKeySavedKeys)
    535              {
    536                return;
    537              }
    538              halKeySavedKeys = keys;     /* Store the current keys for comparation next time */
    539            }
    540          
    541            /* Invoke Callback if new keys were depressed */
    542            if (keys && (pHalKeyProcessFunction))
    543            {
    544              (pHalKeyProcessFunction) (keys, HAL_KEY_STATE_NORMAL);
    545            }
    546          
    547          #endif /* HAL_KEY */
    548          
    549          }
   \   000000   02....       LJMP    ?BRET
    550          
    551          
    552          /**************************************************************************************************
    553           * @fn      halProcessKeyInterrupt
    554           *
    555           * @brief   Checks to see if it's a valid key interrupt, saves interrupt driven key states for
    556           *          processing by HalKeyRead(), and debounces keys by scheduling HalKeyRead() 25ms later.
    557           *
    558           * @param
    559           *
    560           * @return
    561           **************************************************************************************************/

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    562          void halProcessKeyInterrupt (void)
   \                     halProcessKeyInterrupt:
    563          {
   \   000000                ; Saved register size: 0
   \   000000                ; Auto size: 0
    564          
    565          #if (HAL_KEY == TRUE)
    566          
    567            bool    valid=FALSE;
    568          
    569          #if defined (HAL_KEY_SW_6_ENABLE)
    570            if (HAL_KEY_SW_6_PXIFG & HAL_KEY_SW_6_BIT)      /* Interrupt Flag has been set */
    571            {
    572              HAL_KEY_SW_6_PXIFG = ~(HAL_KEY_SW_6_BIT);    /* Clear Interrupt Flag */
    573              valid = TRUE;
    574            }
    575          #endif
    576          
    577          #if defined (HAL_KEY_SW_5_ENABLE)
    578            if (HAL_KEY_SW_5_PXIFG & HAL_KEY_SW_5_BIT)      /* Interrupt Flag has been set */
    579            {
    580              HAL_KEY_SW_5_PXIFG = ~(HAL_KEY_SW_5_BIT);    /* Clear Interrupt Flag */
    581              valid = TRUE;
    582            }
    583          #endif
    584          
    585            if (valid)
    586            {
    587              osal_start_timerEx (Hal_TaskID, HAL_KEY_EVENT, HAL_KEY_DEBOUNCE_VALUE);
    588            }
    589          #endif /* HAL_KEY */
    590          }
   \   000000   02....       LJMP    ?BRET
    591          
    592          /**************************************************************************************************
    593           * @fn      HalKeyEnterSleep
    594           *
    595           * @brief  - Get called to enter sleep mode
    596           *
    597           * @param
    598           *
    599           * @return
    600           **************************************************************************************************/

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    601          void HalKeyEnterSleep ( void )
   \                     HalKeyEnterSleep:
    602          {
   \   000000                ; Saved register size: 0
   \   000000                ; Auto size: 0
    603            /* Sleep!!! */
    604          }
   \   000000   02....       LJMP    ?BRET
    605          
    606          /**************************************************************************************************
    607           * @fn      HalKeyExitSleep

⌨️ 快捷键说明

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