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

📄 hal_adc.lst

📁 cc2430应用实例
💻 LST
📖 第 1 页 / 共 3 页
字号:
    212            adctemp |= channel | resbits | HAL_ADC_REF_VOLT;
    213          
    214            /* writing to this register starts the extra conversion */
    215            ADCCON3 = adctemp;
   \   00004F   EB           MOV     A,R3
   \   000050   49           ORL     A,R1
   \   000051   4480         ORL     A,#0x80
   \   000053   F5B6         MOV     0xb6,A
    216          
    217            /* Wait for the conversion to be done */
    218            while (!(ADCCON1 & HAL_ADC_EOC));
   \                     ??HalAdcRead_8:
   \   000055   E5B4         MOV     A,0xb4
   \   000057   A2E7         MOV     C,0xE0 /* A   */.7
   \   000059   50FA         JNC     ??HalAdcRead_8
    219          
    220            /* Disable channel after done conversion */
    221            ADCCFG &= ~adcChannel;
   \   00005B   EC           MOV     A,R4
   \   00005C   F4           CPL     A
   \   00005D   55F2         ANL     A,0xf2
   \   00005F   F5F2         MOV     0xf2,A
    222          
    223            /* Read the result */
    224            reading = (int16) (ADCL);
   \   000061   ABBA         MOV     R3,0xba
   \   000063   8B82         MOV     DPL,R3
   \   000065   A882         MOV     R0,DPL
    225            reading |= (int16) (ADCH << 8);
   \   000067   E5BB         MOV     A,0xbb
   \   000069   F9           MOV     R1,A
    226          
    227            /* Treat small negative as 0 */
    228            if (reading < 0)
   \   00006A   C3           CLR     C
   \   00006B   E8           MOV     A,R0
   \   00006C   9400         SUBB    A,#0x0
   \   00006E   E9           MOV     A,R1
   \   00006F   9400         SUBB    A,#0x0
   \   000071   A2D2         MOV     C,0xD0 /* PSW */.2
   \   000073   65D0         XRL     A,PSW
   \   000075   33           RLC     A
   \   000076   5004         JNC     ??HalAdcRead_9
    229              reading = 0;
   \   000078   7800         MOV     R0,#0x0
   \   00007A   7900         MOV     R1,#0x0
    230          
    231            switch (resolution)
   \                     ??HalAdcRead_9:
   \   00007C   EA           MOV     A,R2
   \   00007D   12....       LCALL   ?UC_SWITCH_DENSE
   \                     `?<Jumptable for HalAdcRead>_1`:
   \   000080   01           DB        1
   \   000081   02           DB        2
   \   000082   ....         DW        ??HalAdcRead_10
   \   000084   ....         DW        ??HalAdcRead_11
   \   000086   ....         DW        ??HalAdcRead_12
   \   000088   ....         DW        ??HalAdcRead_13
    232            {
    233              case HAL_ADC_RESOLUTION_8:
    234                reading >>= 8;
   \                     ??HalAdcRead_11:
   \   00008A   88..         MOV     ?V0 + 0,R0
   \   00008C   89..         MOV     ?V0 + 1,R1
   \   00008E   7408         MOV     A,#0x8
   \   000090   800E         SJMP    ??HalAdcRead_14
    235                break;
    236              case HAL_ADC_RESOLUTION_10:
    237                reading >>= 6;
   \                     ??HalAdcRead_12:
   \   000092   88..         MOV     ?V0 + 0,R0
   \   000094   89..         MOV     ?V0 + 1,R1
   \   000096   7406         MOV     A,#0x6
   \   000098   8006         SJMP    ??HalAdcRead_14
    238                break;
    239              case HAL_ADC_RESOLUTION_12:
    240                reading >>= 4;
   \                     ??HalAdcRead_13:
   \   00009A   88..         MOV     ?V0 + 0,R0
   \   00009C   89..         MOV     ?V0 + 1,R1
   \   00009E   7404         MOV     A,#0x4
   \                     ??HalAdcRead_14:
   \   0000A0   78..         MOV     R0,#?V0 + 0
   \   0000A2   12....       LCALL   ?SS_SHR
   \   0000A5   A8..         MOV     R0,?V0 + 0
   \   0000A7   A9..         MOV     R1,?V0 + 1
    241                break;
    242              case HAL_ADC_RESOLUTION_14:
    243              default:
    244              break;
    245            }
    246          #endif
    247          
    248            return ((uint16)reading);
   \                     ??HalAdcRead_10:
   \   0000A9   E8           MOV     A,R0
   \   0000AA   FA           MOV     R2,A
   \   0000AB   E9           MOV     A,R1
   \   0000AC   FB           MOV     R3,A
   \   0000AD   7401         MOV     A,#0x1
   \   0000AF   12....       LCALL   ?DEALLOC_XSTACK8
   \   0000B2   7F02         MOV     R7,#0x2
   \   0000B4   02....       LJMP    ?BANKED_LEAVE_XDATA
    249          }
    250          
    251          /**************************************************************************************************
    252           * @fn      HalAdcCheckVdd
    253           *
    254           * @brief   Check the Vdd and return TRUE if it greater than or equal the limit
    255           *
    256           * @param   limit - limit that needs to be checked with the Vdd
    257           *
    258           * @return  TRUE if Vdd >= limit, FALSE otherwise
    259           *
    260           **************************************************************************************************/

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    261          bool HalAdcCheckVdd (uint8 limit)
   \                     HalAdcCheckVdd:
    262          {
   \   000000   C082         PUSH    DPL
   \   000002   C083         PUSH    DPH
   \   000004                ; Saved register size: 2
   \   000004                ; Auto size: 0
    263            uint16 value;
    264          
    265            /* If rev C or earlier, dont check the voltage */
    266            if (CHVER < REV_D)
   \   000004   90DF60       MOV     DPTR,#-0x20a0
   \   000007   E0           MOVX    A,@DPTR
   \   000008   C3           CLR     C
   \   000009   9403         SUBB    A,#0x3
   \   00000B   5004         JNC     ??HalAdcCheckVdd_0
    267            {
    268              return TRUE;
   \                     ??HalAdcCheckVdd_1:
   \   00000D   7901         MOV     R1,#0x1
   \   00000F   802F         SJMP    ??HalAdcCheckVdd_2
    269            }
    270          
    271            /* Clear ADC interrupt flag */
    272            ADCIF = 0;
   \                     ??HalAdcCheckVdd_0:
   \   000011   C28D         CLR     0x88.5
    273          
    274            /* Setup the new value for conversion */
    275            ADCCON3 = (HAL_ADC_REF_125V | HAL_ADC_DEC_064 | HAL_ADC_CHN_VDD3);
   \   000013   75B60F       MOV     0xb6,#0xf
    276          
    277            /* Wait for the conversion to finish */
    278            while ( !ADCIF );
   \                     ??HalAdcCheckVdd_3:
   \   000016   A28D         MOV     C,0x88.5
   \   000018   50FC         JNC     ??HalAdcCheckVdd_3
    279          
    280            /* Get the result */
    281            value = ADCL;
   \   00001A   AABA         MOV     R2,0xba
    282            value |= ((uint16) ADCH) << 8;
   \   00001C   E5BB         MOV     A,0xbb
   \   00001E   FB           MOV     R3,A
    283          
    284            /* Check the limit and return */
    285            return ( value >= HalAdcVddLimit[limit] );
   \   00001F   E9           MOV     A,R1
   \   000020   C3           CLR     C
   \   000021   33           RLC     A
   \   000022   F8           MOV     R0,A
   \   000023   E4           CLR     A
   \   000024   33           RLC     A
   \   000025   F9           MOV     R1,A
   \   000026   E8           MOV     A,R0
   \   000027   24..         ADD     A,#(??HalAdcVddLimit & 0xff)
   \   000029   F582         MOV     DPL,A
   \   00002B   E9           MOV     A,R1
   \   00002C   34..         ADDC    A,#((??HalAdcVddLimit >> 8) & 0xff)
   \   00002E   F583         MOV     DPH,A
   \   000030   E4           CLR     A
   \   000031   93           MOVC    A,@A+DPTR
   \   000032   F8           MOV     R0,A
   \   000033   7401         MOV     A,#0x1
   \   000035   93           MOVC    A,@A+DPTR
   \   000036   F9           MOV     R1,A
   \   000037   C3           CLR     C
   \   000038   EA           MOV     A,R2
   \   000039   98           SUBB    A,R0
   \   00003A   EB           MOV     A,R3
   \   00003B   99           SUBB    A,R1
   \   00003C   50CF         JNC     ??HalAdcCheckVdd_1
   \   00003E   7900         MOV     R1,#0x0
   \                     ??HalAdcCheckVdd_2:
   \   000040   02....       LJMP    ?Subroutine0 & 0xFFFF
    286          }

   \                                 In segment SFR_AN, at 0x88
   \   union <unnamed> volatile __sfr _A_TCON
   \                     _A_TCON:
   \   000000                DS 1
    287          
    288          /**************************************************************************************************
    289          **************************************************************************************************/
    290          
    291          
    292          
    293          

   Maximum stack usage in bytes:

     Function       ISTACK PSTACK XSTACK
     --------       ------ ------ ------
     HalAdcCheckVdd     2      0      0
     HalAdcInit         3      0      1
     HalAdcRead         1      0     11


   Segment part sizes:

     Function/Label Bytes
     -------------- -----
     ADCCON1           1
     ADCCON2           1
     ADCCON3           1
     ADCL              1
     ADCH              1
     ADCCFG            1
     HalAdcVddLimit   18
     HalAdcInit       62
     ?Subroutine0      7
     HalAdcRead      183
     HalAdcCheckVdd   67
     _A_TCON           1

 
 319 bytes in segment BANKED_CODE
  18 bytes in segment CODE_C
   7 bytes in segment SFR_AN
 
 337 bytes of CODE memory
   0 bytes of DATA memory (+ 7 bytes shared)

Errors: none
Warnings: none

⌨️ 快捷键说明

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