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

📄 avrsms_com.lst

📁 SMS傳送Sourcode,compiler with C,AT command
💻 LST
📖 第 1 页 / 共 3 页
字号:
   \   00000066   2399               TST     R25
   \   00000068   F7C2               BRPL    ??COM_put_integer_4
    222          
    223          }
   \   0000006A   9625               ADIW    R29:R28, 5
   \   0000006C   E0E4               LDI     R30, 4
   \   0000006E   ........           JMP     ?EPILOGUE_B4_L09
    224          
    225          

   \                                 In segment CODE, align 2, keep-with-next
    226          void COM_puts(unsigned char *str)
   \                     COM_puts:
    227          {
   \   00000000   93BA               ST      -Y, R27
   \   00000002   93AA               ST      -Y, R26
   \   00000004   01D8               MOVW    R27:R26, R17:R16
   \   00000006   C003               RJMP    ??COM_puts_0
    228            for( ;*str != '\0'; )
    229            {
    230              COM_putchar( *str++ );
   \                     ??COM_puts_1:
   \   00000008   910C               LD      R16, X
   \   0000000A   ....               RCALL   COM_putchar
   \   0000000C   9611               ADIW    R27:R26, 1
    231            }
   \                     ??COM_puts_0:
   \   0000000E   910C               LD      R16, X
   \   00000010   2300               TST     R16
   \   00000012   F7D1               BRNE    ??COM_puts_1
    232          }
   \   00000014   91A9               LD      R26, Y+
   \   00000016   91B9               LD      R27, Y+
   \   00000018   9508               RET
    233          
    234          

   \                                 In segment CODE, align 2, keep-with-next
    235          void COM_putsf( const unsigned char __flash *fstr )
   \                     COM_putsf:
    236          {
   \   00000000   939A               ST      -Y, R25
   \   00000002   938A               ST      -Y, R24
   \   00000004   01C8               MOVW    R25:R24, R17:R16
   \   00000006   C004               RJMP    ??COM_putsf_0
    237            for( ;*fstr != '\0'; )
    238            {
    239              COM_putchar( *fstr++ );
   \                     ??COM_putsf_1:
   \   00000008   01FC               MOVW    R31:R30, R25:R24
   \   0000000A   9104               LPM     R16, Z
   \   0000000C   ....               RCALL   COM_putchar
   \   0000000E   9601               ADIW    R25:R24, 1
    240            }
   \                     ??COM_putsf_0:
   \   00000010   01FC               MOVW    R31:R30, R25:R24
   \   00000012   9104               LPM     R16, Z
   \   00000014   2300               TST     R16
   \   00000016   F7C1               BRNE    ??COM_putsf_1
    241          }
   \   00000018   9189               LD      R24, Y+
   \   0000001A   9199               LD      R25, Y+
   \   0000001C   9508               RET
    242          
    243          
    244          /*! \brief Remove trailing O, K, \r and \n
    245           *
    246           *  Trim
    247           *
    248           *  \param    input     void
    249           *
    250           *  \retval             void
    251           *
    252           */

   \                                 In segment CODE, align 2, keep-with-next
    253          int COM_trim( void )
   \                     COM_trim:
    254          {
   \   00000000   019C               MOVW    R19:R18, R25:R24
    255            int i;                                                                    //Help variables
    256            unsigned char temp;                                                       //Help variables
    257          
    258            for( i = rx_wr_i - 1; i >= 0; i--)                                    //Run through COM_in[] backwards
   \   00000002   ....               LDI     R30, LOW(??rx_wr_i)
   \   00000004   ....               LDI     R31, (??rx_wr_i) >> 8
   \   00000006   8180               LD      R24, Z
   \   00000008   8191               LDD     R25, Z+1
   \   0000000A   9701               SBIW    R25:R24, 1
   \   0000000C   C001               RJMP    ??COM_trim_0
   \                     ??COM_trim_1:
   \   0000000E   9701               SBIW    R25:R24, 1
   \                     ??COM_trim_0:
   \   00000010   2399               TST     R25
   \   00000012   F062               BRMI    ??COM_trim_2
    259            {
    260              temp = rx_buffer[i];    //*s into temp
   \   00000014   01FC               MOVW    R31:R30, R25:R24
   \   00000016   ....               SUBI    R30, LOW((-(??rx_buffer) & 0xFFFF))
   \   00000018   ....               SBCI    R31, (-(??rx_buffer) & 0xFFFF) >> 8
   \   0000001A   8100               LD      R16, Z
    261              if( temp != '\r' && temp != '\n' && temp != 'O' && temp != 'K' )
   \   0000001C   300D               CPI     R16, 13
   \   0000001E   F3B9               BREQ    ??COM_trim_1
   \   00000020   300A               CPI     R16, 10
   \   00000022   F3A9               BREQ    ??COM_trim_1
   \   00000024   340F               CPI     R16, 79
   \   00000026   F399               BREQ    ??COM_trim_1
   \   00000028   340B               CPI     R16, 75
   \   0000002A   F389               BREQ    ??COM_trim_1
    262              {
    263                break;  //Check
    264              }
    265            }
    266          
    267            rx_buffer[i+1] = '\0';                                                       //Terminate trimmed string
   \                     ??COM_trim_2:
   \   0000002C   E000               LDI     R16, 0
   \   0000002E   01FC               MOVW    R31:R30, R25:R24
   \   00000030   ....               SUBI    R30, LOW((-(??rx_buffer) & 0xFFFF))
   \   00000032   ....               SBCI    R31, (-(??rx_buffer) & 0xFFFF) >> 8
   \   00000034   8301               STD     Z+1, R16
    268          
    269            return i;                                                                 //Return new length
   \   00000036   018C               MOVW    R17:R16, R25:R24
   \   00000038   01C9               MOVW    R25:R24, R19:R18
   \   0000003A   9508               RET
    270          }//end trim
    271          
    272          

   \                                 In segment CODE, align 2, keep-with-next
    273          unsigned char* COM_gets( void )
   \                     COM_gets:
    274          {
    275            return rx_buffer;
   \   00000000   ....               LDI     R16, LOW(??rx_buffer)
   \   00000002   ....               LDI     R17, (??rx_buffer) >> 8
   \   00000004   9508               RET
    276          }

   \                                 In segment INTVEC, offset 0x48, root
   \                     `??INTVEC 72`:
   \   00000048   ........           JMP     USART0_RX_interrupt

   \                                 In segment NEAR_ID, align 1, keep-with-next
   \                     `?<Initializer for searchStrings>`:
   \   00000000   ............       DW OK, CMTI, READY, CR_LF
   \              ....        

   \                                 In segment ABSOLUTE, at 0x29
   \   union <unnamed> volatile __io _A_UBRR0L
   \                     _A_UBRR0L:
   \   00000000                      DS 1

   \                                 In segment ABSOLUTE, at 0x2a
   \   union <unnamed> volatile __io _A_UCSR0B
   \                     _A_UCSR0B:
   \   00000000                      DS 1

   \                                 In segment ABSOLUTE, at 0x2b
   \   union <unnamed> volatile __io _A_UCSR0A
   \                     _A_UCSR0A:
   \   00000000                      DS 1

   \                                 In segment ABSOLUTE, at 0x2c
   \   union <unnamed> volatile __io _A_UDR0
   \                     _A_UDR0:
   \   00000000                      DS 1

   \                                 In segment ABSOLUTE, at 0x90
   \   union <unnamed> volatile __io _A_UBRR0H
   \                     _A_UBRR0H:
   \   00000000                      DS 1

   \                                 In segment ABSOLUTE, at 0x95
   \   union <unnamed> volatile __io _A_UCSR0C
   \                     _A_UCSR0C:
   \   00000000                      DS 1
    277          
    278          /*
    279          void COM_getParams( unsigned char **pParams )
    280          {
    281              unsigned char c, nState, i, p;
    282          
    283              // nState values:
    284              //0 - Looking for start of param
    285              //1 - Looking for end of param
    286              //2 - Complete
    287              //
    288          
    289              // Init param vector
    290              for (i=0; i<8; i++)
    291                  pParams[i] = 0;
    292          
    293          
    294              nState = 0; // Looking for first terminator
    295              p = 0;
    296              for (i=0; nState != 2; i++)
    297              {
    298                  c = *( rx_buffer + i );
    299          
    300                  switch (nState)
    301                  {
    302                  case 0:
    303                      // Looking for start of param
    304                      if ( ( c >= 33 ) && ( c <= 126 ) )
    305                      {
    306                          pParams[p++] = rx_buffer + i;
    307                          nState = 1;
    308                      }
    309                      else if (c == '\0')
    310                      {
    311                          nState = 2;
    312                      }
    313          
    314                      break;
    315          
    316                  case 1:
    317                      // Looking for terminator
    318                      if ( c == '\0' || c == ' ' || c == ',' || c == '\r' || c == '\n'  || c == '\n' )
    319                      {
    320                          *( rx_buffer + i ) = '\0';
    321                          if (c == '\0')
    322                              nState = 2;
    323                          else
    324                              nState = 0;
    325                      }
    326                      break;
    327                  }
    328              }
    329          }
    330          */

   Maximum stack usage in bytes:

     Function            CSTACK RSTACK
     --------            ------ ------
     COM_gets                0      2
     COM_init                0      2
       -> COM_rx_reset       0      2
     COM_put_integer         9      4
       -> COM_putchar        9      2
       -> COM_putchar        9      2
     COM_putchar             0      2
     COM_puts                2      2
       -> COM_putchar        2      2
     COM_putsf               2      2
       -> COM_putchar        2      2
     COM_rx_off              0      2
     COM_rx_on               0      2
     COM_rx_reset            0      2
     COM_setSearchString     0      2
     COM_trim                0      2
     USART0_RX_interrupt    10      2


   Segment part sizes:

     Function/Label                 Bytes
     --------------                 -----
     rx_overflow                       2
     rx_ack                            2
     searchStr                         1
     rx_buffer                       256
     rx_i                              2
     rx_wr_i                           2
     OK                                5
     CMTI                              8
     READY                             3
     CR_LF                             3
     searchFor                         2
     searchStrings                     8
     COM_init                         24
     COM_rx_reset                     62
     COM_rx_on                         4
     COM_rx_off                        4
     COM_setSearchString              46
     USART0_RX_interrupt             266
     COM_putchar                      62
     i                                 2
     COM_put_integer                 114
     COM_puts                         26
     COM_putsf                        30
     COM_trim                         60
     COM_gets                          6
     ??INTVEC 72                       4
     ?<Initializer for searchStrings>
                                       8
     _A_UBRR0L                         1
     _A_UCSR0B                         1
     _A_UCSR0A                         1
     _A_UDR0                           1
     _A_UBRR0H                         1
     _A_UCSR0C                         1
      Others                          14

 
   6 bytes in segment ABSOLUTE
 704 bytes in segment CODE
  14 bytes in segment INITTAB
   4 bytes in segment INTVEC
  19 bytes in segment NEAR_F
   8 bytes in segment NEAR_I
   8 bytes in segment NEAR_ID
 269 bytes in segment NEAR_Z
 
 731 bytes of CODE memory (+ 18 bytes shared)
 277 bytes of DATA memory (+  6 bytes shared)

Errors: none
Warnings: none

⌨️ 快捷键说明

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