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

📄 avrsms_api.lst

📁 SMS傳送Sourcode,compiler with C,AT command
💻 LST
📖 第 1 页 / 共 3 页
字号:
   \   00000026   ........           CALL    COM_rx_on
    102          
    103            if( API_check_acknowledge() > 0 )   //Delete = OK
   \   0000002A   ....               RCALL   API_check_acknowledge
   \   0000002C   3001               CPI     R16, 1
   \   0000002E   4010               SBCI    R17, 0
   \   00000030   F01C               BRLT    ??API_deletemsg_0
    104            {
    105              return 1;
   \   00000032   E001               LDI     R16, 1
   \   00000034   E010               LDI     R17, 0
   \   00000036   C002               RJMP    ??API_deletemsg_1
    106            }
    107          
    108            else
    109            {
    110              return 0;                         //Not successful delete
   \                     ??API_deletemsg_0:
   \   00000038   E000               LDI     R16, 0
   \   0000003A   E010               LDI     R17, 0
   \                     ??API_deletemsg_1:
   \   0000003C   9189               LD      R24, Y+
   \   0000003E   9199               LD      R25, Y+
   \   00000040   9508               RET
    111            }
    112          }
    113          
    114          

   \                                 In segment CODE, align 2, keep-with-next
    115          int API_sendmsg( unsigned char *msg )
   \                     API_sendmsg:
    116          {
   \   00000000   ........           CALL    ?PROLOGUE4_L09
   \   00000004   9724               SBIW    R29:R28, 4
    117            //Local variables
    118            int payload_len, len;                                      //<! Total length of message, and length of user text
    119            unsigned char payload_len_c[3], jump;
    120          
    121            //Init
    122            payload_len = len = 0;
    123            payload_len_c[0] = jump = '\0';
   \   00000006   E020               LDI     R18, 0
   \   00000008   8328               ST      Y, R18
   \   0000000A   8329               STD     Y+1, R18
    124          
    125            //If necessary turn interrupts off
    126            if( ( payload_len = ZIP_compress( msg, &jump, msgbuff) ) == 0 )        //<! Convert user text to pdu format
   \   0000000C   ....               LDI     R20, LOW(msgbuff)
   \   0000000E   ....               LDI     R21, (msgbuff) >> 8
   \   00000010   019E               MOVW    R19:R18, R29:R28
   \   00000012   ........           CALL    ZIP_compress
   \   00000016   01C8               MOVW    R25:R24, R17:R16
   \   00000018   2B01               OR      R16, R17
   \   0000001A   F419               BRNE    ??API_sendmsg_0
    127            {
    128              return 0;                                                  //Something wrong happend during compression
   \   0000001C   E000               LDI     R16, 0
   \   0000001E   E010               LDI     R17, 0
   \   00000020   C045               RJMP    ??API_sendmsg_1
    129            }
    130          
    131            //Compression ok
    132            else
    133            {
    134              ZIP_itoh(payload_len, &payload_len_c[0]);                          //Convert Integer payload to hex in string format
   \                     ??API_sendmsg_0:
   \   00000022   019E               MOVW    R19:R18, R29:R28
   \   00000024   5F2F               SUBI    R18, 255
   \   00000026   4F3F               SBCI    R19, 255
   \   00000028   018C               MOVW    R17:R16, R25:R24
   \   0000002A   ........           CALL    ZIP_itoh
    135              len = HEADER_LEN + payload_len - jump;                             //Calculate overall length
   \   0000002E   960C               ADIW    R25:R24, 12
   \   00000030   8108               LD      R16, Y
   \   00000032   E010               LDI     R17, 0
   \   00000034   1B80               SUB     R24, R16
   \   00000036   0B91               SBC     R25, R17
   \   00000038   01DC               MOVW    R27:R26, R25:R24
    136          
    137              COM_rx_reset( );                    //Reset system
   \   0000003A   ........           CALL    COM_rx_reset
    138              COM_setSearchString( 2 );               //Set "> " to be search string
   \   0000003E   E002               LDI     R16, 2
   \   00000040   ........           CALL    COM_setSearchString
    139              COM_putsf( AT_CMGS );               //Send message
   \   00000044   ....               LDI     R16, LOW(AT_CMGS)
   \   00000046   ....               LDI     R17, (AT_CMGS) >> 8
   \   00000048   ........           CALL    COM_putsf
    140              COM_put_integer( len );             //with length
   \   0000004C   018D               MOVW    R17:R16, R27:R26
   \   0000004E   ........           CALL    COM_put_integer
    141              COM_putsf( CRLF );                  //CR+LF
   \   00000052   ....               LDI     R16, LOW(CRLF)
   \   00000054   ....               LDI     R17, (CRLF) >> 8
   \   00000056   ........           CALL    COM_putsf
    142              COM_rx_on( );                       //Receiver on
   \   0000005A   ........           CALL    COM_rx_on
    143          
    144              //Append payload
    145              if( API_check_acknowledge() > 0 )   //Acknowledge = "> "
   \   0000005E   ....               RCALL   API_check_acknowledge
   \   00000060   3001               CPI     R16, 1
   \   00000062   4010               SBCI    R17, 0
   \   00000064   F10C               BRLT    ??API_sendmsg_2
    146              {
    147                COM_rx_reset( );                    //Reset system
   \   00000066   ........           CALL    COM_rx_reset
    148                COM_setSearchString( 0 );               //Set "OK" to be search string
   \   0000006A   E000               LDI     R16, 0
   \   0000006C   ........           CALL    COM_setSearchString
    149                COM_putsf( PDU_HEADER );
   \   00000070   ....               LDI     R16, LOW(PDU_HEADER)
   \   00000072   ....               LDI     R17, (PDU_HEADER) >> 8
   \   00000074   ........           CALL    COM_putsf
    150                COM_puts( payload_len_c );
   \   00000078   018E               MOVW    R17:R16, R29:R28
   \   0000007A   5F0F               SUBI    R16, 255
   \   0000007C   4F1F               SBCI    R17, 255
   \   0000007E   ........           CALL    COM_puts
    151                COM_puts( msgbuff );
   \   00000082   ....               LDI     R16, LOW(msgbuff)
   \   00000084   ....               LDI     R17, (msgbuff) >> 8
   \   00000086   ........           CALL    COM_puts
    152                COM_putchar( 26 );
   \   0000008A   E10A               LDI     R16, 26
   \   0000008C   ........           CALL    COM_putchar
    153                COM_rx_on( );                       //Receiver on
   \   00000090   ........           CALL    COM_rx_on
    154          
    155                if( API_check_acknowledge() > 0 )   //Acknowledge = OK
   \   00000094   ....               RCALL   API_check_acknowledge
   \   00000096   3001               CPI     R16, 1
   \   00000098   4010               SBCI    R17, 0
   \   0000009A   F01C               BRLT    ??API_sendmsg_3
    156                {
    157                  return 1;
   \   0000009C   E001               LDI     R16, 1
   \   0000009E   E010               LDI     R17, 0
   \   000000A0   C005               RJMP    ??API_sendmsg_1
    158                }
    159          
    160                else
    161                {
    162                  return -2;                        //Acknowledge != OK
   \                     ??API_sendmsg_3:
   \   000000A2   EF0E               LDI     R16, 254
   \   000000A4   EF1F               LDI     R17, 255
   \   000000A6   C002               RJMP    ??API_sendmsg_1
    163                }
    164          
    165              }
    166          
    167              //Abort
    168              else
    169              {
    170                  return -1;                         //Acknowledge != "> "
   \                     ??API_sendmsg_2:
   \   000000A8   EF0F               LDI     R16, 255
   \   000000AA   EF1F               LDI     R17, 255
   \                     ??API_sendmsg_1:
   \   000000AC   9624               ADIW    R29:R28, 4
   \   000000AE   E0E4               LDI     R30, 4
   \   000000B0   ........           JMP     ?EPILOGUE_B4_L09
    171              }
    172            }
    173          }
    174          
    175          

   \                                 In segment CODE, align 2, keep-with-next
    176          int API_readmsg( int ind )
   \                     API_readmsg:
    177          {
   \   00000000   ........           CALL    ?PROLOGUE4_L09
   \   00000004   01D8               MOVW    R27:R26, R17:R16
    178            //Local variables
    179            unsigned char *encodedmsg;
    180            int i;
    181          
    182            //Init
    183            //encodedmsg = '\0';
    184            i = 0;
    185          
    186            COM_rx_reset( );                    //Reset system
   \   00000006   ........           CALL    COM_rx_reset
    187            COM_setSearchString( 0 );               //Set OK to be search string
   \   0000000A   E000               LDI     R16, 0
   \   0000000C   ........           CALL    COM_setSearchString
    188            COM_putsf( AT_CMGR );               //Delete message
   \   00000010   ....               LDI     R16, LOW(AT_CMGR)
   \   00000012   ....               LDI     R17, (AT_CMGR) >> 8
   \   00000014   ........           CALL    COM_putsf
    189            COM_put_integer( ind );           //@index
   \   00000018   018D               MOVW    R17:R16, R27:R26
   \   0000001A   ........           CALL    COM_put_integer
    190            COM_putsf( CRLF );                  //CR+LF
   \   0000001E   ....               LDI     R16, LOW(CRLF)
   \   00000020   ....               LDI     R17, (CRLF) >> 8
   \   00000022   ........           CALL    COM_putsf
    191            COM_rx_on( );                       //Receiver on
   \   00000026   ........           CALL    COM_rx_on
    192          
    193            if( API_check_acknowledge() > 0 )   //Delete = OK
   \   0000002A   ....               RCALL   API_check_acknowledge
   \   0000002C   3001               CPI     R16, 1
   \   0000002E   4010               SBCI    R17, 0
   \   00000030   F054               BRLT    ??API_readmsg_0
    194            {
    195              encodedmsg = TOOLS__decodeCMGR( ind );
   \   00000032   018D               MOVW    R17:R16, R27:R26
   \   00000034   ........           CALL    TOOLS__decodeCMGR
    196              i = ZIP_decompress( encodedmsg, msgbuff );
   \   00000038   ....               LDI     R18, LOW(msgbuff)
   \   0000003A   ....               LDI     R19, (msgbuff) >> 8
   \   0000003C   ........           CALL    ZIP_decompress
    197          
    198              //COM_puts( msgbuff );
    199          
    200              return 1;
   \   00000040   E001               LDI     R16, 1
   \   00000042   E010               LDI     R17, 0
   \   00000044   C002               RJMP    ??API_readmsg_1
    201            }
    202          
    203            else
    204            {
    205              return 0;                         //Not successful delete
   \                     ??API_readmsg_0:
   \   00000046   E000               LDI     R16, 0
   \   00000048   E010               LDI     R17, 0
   \                     ??API_readmsg_1:
   \   0000004A   E0E4               LDI     R30, 4
   \   0000004C   ........           JMP     ?EPILOGUE_B4_L09
    206            }
    207          }
    208          
    209          
    210          //Will check response from phone...if\r\nOK\r\n is received...everything is fine...else an error har occured

   \                                 In segment CODE, align 2, keep-with-next
    211          int API_check_acknowledge( void )
   \                     API_check_acknowledge:
    212          {
   \   00000000   93BA               ST      -Y, R27
   \   00000002   93AA               ST      -Y, R26
    213            static unsigned int i, ii;                         //Loal variables
    214          
    215            for( i = 0; ( rx_ack == 0 ) && ( i < 65535 ); i++ ) //Wait loop
   \   00000004   E000               LDI     R16, 0

⌨️ 快捷键说明

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