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

📄 avrsms_tools.lst

📁 SMS傳送Sourcode,compiler with C,AT command
💻 LST
字号:
##############################################################################
#                                                                            #
#                                                      24/Sep/2005  02:15:51 #
# IAR Atmel AVR C/C++ Compiler V4.10A/W32, Evaluation Version                #
# Copyright 1996-2005 IAR Systems. All rights reserved.                      #
#                                                                            #
#    Source file  =  C:\Documents and Settings\vemund\Desktop\AVRGSM\Files\A #
#                    VRSMS_tools.c                                           #
#    Command line =  --cpu=m128 -ms -o "C:\Documents and                     #
#                    Settings\vemund\Desktop\AVRGSM\Debug\Obj\" -lCN         #
#                    "C:\Documents and Settings\vemund\Desktop\AVRGSM\Debug\ #
#                    List\" -lA "C:\Documents and                            #
#                    Settings\vemund\Desktop\AVRGSM\Debug\List\" -y          #
#                    --initializers_in_flash -z3 --no_cse --no_inline        #
#                    --no_code_motion --no_cross_call --no_clustering        #
#                    --no_tbaa --debug -DENABLE_BIT_DEFINITIONS -e -I        #
#                    D:\Programs\iar\avr\INC\ -I                             #
#                    D:\Programs\iar\avr\INC\CLIB\ --eeprom_size 4096        #
#                    "C:\Documents and Settings\vemund\Desktop\AVRGSM\Files\ #
#                    AVRSMS_tools.c"                                         #
#    List file    =  C:\Documents and Settings\vemund\Desktop\AVRGSM\Debug\L #
#                    ist\AVRSMS_tools.lst                                    #
#    Object file  =  C:\Documents and Settings\vemund\Desktop\AVRGSM\Debug\O #
#                    bj\AVRSMS_tools.r90                                     #
#                                                                            #
#                                                                            #
##############################################################################

C:\Documents and Settings\vemund\Desktop\AVRGSM\Files\AVRSMS_tools.c
      1          /*! \file ********************************************************************
      2          *
      3          * Atmel Corporation
      4          *
      5          * - File              : AVRSMS_tools.c
      6          * - Compiler          : IAR EWAAVR 3.20C
      7          *
      8          * - Support mail      : avr@atmel.com
      9          *
     10          * - Supported devices : The example is written for ATmega169
     11          *
     12          *
     13          * - AppNote           : AVR323 - Interfacing Cellphones
     14          *
     15          * - Description       : Example of how to use AVR Butterfly as Mobilephone controller
     16          *
     17          * $Revision: 1.1 $
     18          * $Date: Tuesday, November 08, 2005 12:26:18 UTC $
     19          *****************************************************************************/
     20          
     21          #include"AVRSMS_com.h"
     22          #include"AVRSMS_zip.h"
     23          
     24          

   \                                 In segment CODE, align 2, keep-with-next
     25          int TOOLS_decodeCMTI( void )
   \                     TOOLS_decodeCMTI:
     26          {
   \   00000000   ........           CALL    ?PROLOGUE4_L09
     27            unsigned char *temp;
     28            int length, i;
     29          
     30            length = 0;
     31          
     32            length = COM_trim( );
   \   00000004   ........           CALL    COM_trim
   \   00000008   01D8               MOVW    R27:R26, R17:R16
     33            temp   = COM_gets( );
   \   0000000A   ........           CALL    COM_gets
     34          
     35            for( i = 0; ( i < length ) && *temp++ != ','; i++);
   \   0000000E   E080               LDI     R24, 0
   \   00000010   E090               LDI     R25, 0
   \   00000012   C001               RJMP    ??TOOLS_decodeCMTI_0
   \                     ??TOOLS_decodeCMTI_1:
   \   00000014   9601               ADIW    R25:R24, 1
   \                     ??TOOLS_decodeCMTI_0:
   \   00000016   178A               CP      R24, R26
   \   00000018   079B               CPC     R25, R27
   \   0000001A   F43C               BRGE    ??TOOLS_decodeCMTI_2
   \   0000001C   01F8               MOVW    R31:R30, R17:R16
   \   0000001E   018F               MOVW    R17:R16, R31:R30
   \   00000020   5F0F               SUBI    R16, 255
   \   00000022   4F1F               SBCI    R17, 255
   \   00000024   8120               LD      R18, Z
   \   00000026   322C               CPI     R18, 44
   \   00000028   F7A9               BRNE    ??TOOLS_decodeCMTI_1
     36          
     37            //Error
     38            if( i >= length )
   \                     ??TOOLS_decodeCMTI_2:
   \   0000002A   178A               CP      R24, R26
   \   0000002C   079B               CPC     R25, R27
   \   0000002E   F01C               BRLT    ??TOOLS_decodeCMTI_3
     39            {
     40              return 0;
   \   00000030   E000               LDI     R16, 0
   \   00000032   E010               LDI     R17, 0
   \   00000034   C002               RJMP    ??TOOLS_decodeCMTI_4
     41            }
     42          
     43            else
     44            {
     45              return ZIP_atoi( temp );
   \                     ??TOOLS_decodeCMTI_3:
   \   00000036   ........           CALL    ZIP_atoi
   \                     ??TOOLS_decodeCMTI_4:
   \   0000003A   E0E4               LDI     R30, 4
   \   0000003C   ........           JMP     ?EPILOGUE_B4_L09
     46            }
     47          }
     48          
     49          

   \                                 In segment CODE, align 2, keep-with-next
     50          unsigned char* TOOLS__decodeCMGR( int index )
   \                     TOOLS__decodeCMGR:
     51          {
   \   00000000   ........           CALL    ?PROLOGUE6_L09
   \   00000004                      REQUIRE ?Register_R4_is_cg_reg
   \   00000004                      REQUIRE ?Register_R5_is_cg_reg
   \   00000004   9721               SBIW    R29:R28, 1
     52            //Local variables
     53            unsigned char read_c, *in_handle;
     54            int i, len, field_length;
     55          
     56            len         = COM_trim();                                                //Trim off OK\r\n
   \   00000006   ........           CALL    COM_trim
   \   0000000A   0128               MOVW    R5:R4, R17:R16
     57            in_handle   = COM_gets( );
   \   0000000C   ........           CALL    COM_gets
   \   00000010   01D8               MOVW    R27:R26, R17:R16
     58          
     59            in_handle += 2; //Skip first \r\n
   \   00000012   9612               ADIW    R27:R26, 2
     60          
     61            for( i = 0; ( i < len ) && *in_handle++ != '\n'; i++);
   \   00000014   E080               LDI     R24, 0
   \   00000016   E090               LDI     R25, 0
   \   00000018   C001               RJMP    ??TOOLS__decodeCMGR_0
   \                     ??TOOLS__decodeCMGR_1:
   \   0000001A   9601               ADIW    R25:R24, 1
   \                     ??TOOLS__decodeCMGR_0:
   \   0000001C   1584               CP      R24, R4
   \   0000001E   0595               CPC     R25, R5
   \   00000020   F434               BRGE    ??TOOLS__decodeCMGR_2
   \   00000022   01FD               MOVW    R31:R30, R27:R26
   \   00000024   01DF               MOVW    R27:R26, R31:R30
   \   00000026   9611               ADIW    R27:R26, 1
   \   00000028   8100               LD      R16, Z
   \   0000002A   300A               CPI     R16, 10
   \   0000002C   F7B1               BRNE    ??TOOLS__decodeCMGR_1
     62          
     63            //Error
     64            if( i >= len )
   \                     ??TOOLS__decodeCMGR_2:
   \   0000002E   1584               CP      R24, R4
   \   00000030   0595               CPC     R25, R5
   \   00000032   F01C               BRLT    ??TOOLS__decodeCMGR_3
     65            {
     66              return '\0';
   \   00000034   E000               LDI     R16, 0
   \   00000036   E010               LDI     R17, 0
   \   00000038   C037               RJMP    ??TOOLS__decodeCMGR_4
     67            }
     68          
     69            else
     70            {
     71          
     72              field_length = 16 * ZIP_htoi( *in_handle++ ) + ZIP_htoi( *in_handle++ );    //Decimal value of the two chars
   \                     ??TOOLS__decodeCMGR_3:
   \   0000003A   910C               LD      R16, X
   \   0000003C   ........           CALL    ZIP_htoi
   \   00000040   01C8               MOVW    R25:R24, R17:R16
   \   00000042   9611               ADIW    R27:R26, 1
   \   00000044   910C               LD      R16, X
   \   00000046   ........           CALL    ZIP_htoi
   \   0000004A   0128               MOVW    R5:R4, R17:R16
   \   0000004C   9611               ADIW    R27:R26, 1
   \   0000004E   01AC               MOVW    R21:R20, R25:R24
   \   00000050   E100               LDI     R16, 16
   \   00000052   E010               LDI     R17, 0
   \   00000054   ........           CALL    ?S_EC_MUL_L02
   \   00000058   01C8               MOVW    R25:R24, R17:R16
   \   0000005A   0D84               ADD     R24, R4
   \   0000005C   1D95               ADC     R25, R5
     73          
     74              in_handle += 2*field_length + 2;                                    //Skip Service center nmbr
   \   0000005E   0F88               LSL     R24
   \   00000060   1F99               ROL     R25
   \   00000062   0FA8               ADD     R26, R24
   \   00000064   1FB9               ADC     R27, R25
   \   00000066   9612               ADIW    R27:R26, 2
     75          
     76              //Find length of sender address
     77              field_length = 16 * ZIP_htoi( *in_handle++ ) + ZIP_htoi( *in_handle++ );    //Decimal value of the two chars
   \   00000068   910C               LD      R16, X
   \   0000006A   ........           CALL    ZIP_htoi
   \   0000006E   01C8               MOVW    R25:R24, R17:R16
   \   00000070   9611               ADIW    R27:R26, 1
   \   00000072   910C               LD      R16, X
   \   00000074   ........           CALL    ZIP_htoi
   \   00000078   0128               MOVW    R5:R4, R17:R16
   \   0000007A   9611               ADIW    R27:R26, 1
   \   0000007C   01AC               MOVW    R21:R20, R25:R24
   \   0000007E   E100               LDI     R16, 16
   \   00000080   E010               LDI     R17, 0
   \   00000082   ........           CALL    ?S_EC_MUL_L02
   \   00000086   01C8               MOVW    R25:R24, R17:R16
   \   00000088   0D84               ADD     R24, R4
   \   0000008A   1D95               ADC     R25, R5
     78          
     79              if( field_length%2 ) field_length++;                                //Check for trailing F
   \   0000008C   018C               MOVW    R17:R16, R25:R24
   \   0000008E   E042               LDI     R20, 2
   \   00000090   E050               LDI     R21, 0
   \   00000092   ........           CALL    ?SS_DIVMOD_L02
   \   00000096   2B45               OR      R20, R21
   \   00000098   F009               BREQ    ??TOOLS__decodeCMGR_5
   \   0000009A   9601               ADIW    R25:R24, 1
     80          
     81              in_handle += 2 + field_length;                                      //Skip fields in header
   \                     ??TOOLS__decodeCMGR_5:
   \   0000009C   0FA8               ADD     R26, R24
   \   0000009E   1FB9               ADC     R27, R25
   \   000000A0   9612               ADIW    R27:R26, 2
     82          
     83              in_handle += 14 + 4;                                                //Skip more fields...TP-PID, TP-DCS and TP-SCTS
   \   000000A2   9652               ADIW    R27:R26, 18
     84          
     85              //User field length
     86              //field_length = 16 * COM_htoi( *in_handle++ ) + COM_htoi( *in_handle++ );   //Decimal value of the two chars
     87          
     88          
     89              return ( in_handle + 2 );
   \   000000A4   9612               ADIW    R27:R26, 2
   \   000000A6   018D               MOVW    R17:R16, R27:R26
   \                     ??TOOLS__decodeCMGR_4:
   \   000000A8   9621               ADIW    R29:R28, 1
   \   000000AA   E0E6               LDI     R30, 6
   \   000000AC   ........           JMP     ?EPILOGUE_B6_L09
     90            }
     91          }

   Maximum stack usage in bytes:

     Function          CSTACK RSTACK
     --------          ------ ------
     TOOLS__decodeCMGR     7      4
       -> COM_trim         7      2
       -> COM_gets         7      2
       -> ZIP_htoi         7      2
       -> ZIP_htoi         7      2
       -> ZIP_htoi         7      2
       -> ZIP_htoi         7      2
     TOOLS_decodeCMTI      4      2
       -> COM_trim         4      2
       -> COM_gets         4      2
       -> ZIP_atoi         4      2


   Segment part sizes:

     Function/Label    Bytes
     --------------    -----
     TOOLS_decodeCMTI    64
     TOOLS__decodeCMGR  176

 
 240 bytes in segment CODE
 
 240 bytes of CODE memory

Errors: none
Warnings: 3

⌨️ 快捷键说明

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