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

📄 avrsms_api.s90

📁 SMS傳送Sourcode,compiler with C,AT command
💻 S90
📖 第 1 页 / 共 3 页
字号:
//   65     if( API_check_acknowledge() > 0 )   //Preferred storage = OK
        RCALL	API_check_acknowledge
        CPI	R16, 1
        SBCI	R17, 0
        BRLT	??API_phoneinit_1
//   66     {
//   67       COM_putsf(AT_CNMI);              //Send preferred indication of new messages
        LDI	R16, LOW(AT_CNMI)
        LDI	R17, (AT_CNMI) >> 8
        CALL	COM_putsf
//   68       COM_rx_on( );                     //Receiver on
        CALL	COM_rx_on
//   69 
//   70       if( API_check_acknowledge() > 0 )  //Preferred indication = OK
        RCALL	API_check_acknowledge
        CPI	R16, 1
        SBCI	R17, 0
        BRLT	??API_phoneinit_2
//   71       {
//   72         return 1;
        LDI	R16, 1
        LDI	R17, 0
        RET
//   73       }
//   74 
//   75       else                              //Preferred indication != OK
//   76       {
//   77         return -2;
??API_phoneinit_2:
        LDI	R16, 254
        LDI	R17, 255
        RET
//   78       }
//   79     }
//   80 
//   81     else                                //Preferred storage != OK
//   82     {
//   83       return -1;
??API_phoneinit_1:
        LDI	R16, 255
        LDI	R17, 255
        RET
//   84     }
//   85   }
//   86 
//   87   else                                  //Echo off != OK
//   88   {
//   89     return 0;
??API_phoneinit_0:
        LDI	R16, 0
        LDI	R17, 0
        RET
        CFI EndBlock cfiBlock0
//   90   }
//   91 }
//   92 
//   93 

        RSEG CODE:CODE:NOROOT(1)
//   94 int API_deletemsg( int index )        //Delete message from index
API_deletemsg:
        CFI Block cfiBlock1 Using cfiCommon0
        CFI Function API_deletemsg
//   95 {
        FUNCALL API_deletemsg, COM_rx_reset
        LOCFRAME CSTACK, 2, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL API_deletemsg, COM_setSearchString
        LOCFRAME CSTACK, 2, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL API_deletemsg, COM_putsf
        LOCFRAME CSTACK, 2, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL API_deletemsg, COM_put_integer
        LOCFRAME CSTACK, 2, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL API_deletemsg, COM_putsf
        LOCFRAME CSTACK, 2, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL API_deletemsg, COM_rx_on
        LOCFRAME CSTACK, 2, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL API_deletemsg, API_check_acknowledge
        LOCFRAME CSTACK, 2, STACK
        LOCFRAME RSTACK, 2, STACK
        ST	-Y, R25
        CFI R25 Frame(CFA_Y, -1)
        CFI CFA_Y Y+1
        ST	-Y, R24
        CFI R24 Frame(CFA_Y, -2)
        CFI CFA_Y Y+2
        MOVW	R25:R24, R17:R16
//   96   COM_rx_reset( );                    //Reset system
        CALL	COM_rx_reset
//   97   COM_setSearchString( 0 );               //Set OK to be search string
        LDI	R16, 0
        CALL	COM_setSearchString
//   98   COM_putsf( AT_CMGD );               //Delete message
        LDI	R16, LOW(AT_CMGD)
        LDI	R17, (AT_CMGD) >> 8
        CALL	COM_putsf
//   99   COM_put_integer( index );           //@index
        MOVW	R17:R16, R25:R24
        CALL	COM_put_integer
//  100   COM_putsf( CRLF );                  //CR+LF
        LDI	R16, LOW(CRLF)
        LDI	R17, (CRLF) >> 8
        CALL	COM_putsf
//  101   COM_rx_on( );                       //Receiver on
        CALL	COM_rx_on
//  102 
//  103   if( API_check_acknowledge() > 0 )   //Delete = OK
        RCALL	API_check_acknowledge
        CPI	R16, 1
        SBCI	R17, 0
        BRLT	??API_deletemsg_0
//  104   {
//  105     return 1;
        LDI	R16, 1
        LDI	R17, 0
        RJMP	??API_deletemsg_1
//  106   }
//  107 
//  108   else
//  109   {
//  110     return 0;                         //Not successful delete
??API_deletemsg_0:
        LDI	R16, 0
        LDI	R17, 0
??API_deletemsg_1:
        LD	R24, Y+
        CFI R24 SameValue
        CFI CFA_Y Y+1
        LD	R25, Y+
        CFI R25 SameValue
        CFI CFA_Y Y+0
        RET
        CFI EndBlock cfiBlock1
//  111   }
//  112 }
//  113 
//  114 

        RSEG CODE:CODE:NOROOT(1)
//  115 int API_sendmsg( unsigned char *msg )
API_sendmsg:
        CFI Block cfiBlock2 Using cfiCommon0
        CFI Function API_sendmsg
//  116 {
        FUNCALL API_sendmsg, ZIP_compress
        LOCFRAME CSTACK, 8, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL API_sendmsg, ZIP_itoh
        LOCFRAME CSTACK, 8, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL API_sendmsg, COM_rx_reset
        LOCFRAME CSTACK, 8, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL API_sendmsg, COM_setSearchString
        LOCFRAME CSTACK, 8, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL API_sendmsg, COM_putsf
        LOCFRAME CSTACK, 8, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL API_sendmsg, COM_put_integer
        LOCFRAME CSTACK, 8, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL API_sendmsg, COM_putsf
        LOCFRAME CSTACK, 8, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL API_sendmsg, COM_rx_on
        LOCFRAME CSTACK, 8, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL API_sendmsg, API_check_acknowledge
        LOCFRAME CSTACK, 8, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL API_sendmsg, COM_rx_reset
        LOCFRAME CSTACK, 8, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL API_sendmsg, COM_setSearchString
        LOCFRAME CSTACK, 8, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL API_sendmsg, COM_putsf
        LOCFRAME CSTACK, 8, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL API_sendmsg, COM_puts
        LOCFRAME CSTACK, 8, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL API_sendmsg, COM_puts
        LOCFRAME CSTACK, 8, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL API_sendmsg, COM_putchar
        LOCFRAME CSTACK, 8, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL API_sendmsg, COM_rx_on
        LOCFRAME CSTACK, 8, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL API_sendmsg, API_check_acknowledge
        LOCFRAME CSTACK, 8, STACK
        LOCFRAME RSTACK, 2, STACK
        CALL	?PROLOGUE4_L09
        CFI R27 Frame(CFA_Y, -1)
        CFI R26 Frame(CFA_Y, -2)
        CFI R25 Frame(CFA_Y, -3)
        CFI R24 Frame(CFA_Y, -4)
        CFI CFA_Y Y+4
        SBIW	R29:R28, 4
        CFI CFA_Y Y+8
//  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';
        LDI	R18, 0
        ST	Y, R18
        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
        LDI	R20, LOW(msgbuff)
        LDI	R21, (msgbuff) >> 8
        MOVW	R19:R18, R29:R28
        CALL	ZIP_compress
        MOVW	R25:R24, R17:R16
        OR	R16, R17
        BRNE	??API_sendmsg_0
//  127   {
//  128     return 0;                                                  //Something wrong happend during compression
        LDI	R16, 0
        LDI	R17, 0
        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:
        MOVW	R19:R18, R29:R28
        SUBI	R18, 255
        SBCI	R19, 255
        MOVW	R17:R16, R25:R24
        CALL	ZIP_itoh
//  135     len = HEADER_LEN + payload_len - jump;                             //Calculate overall length
        ADIW	R25:R24, 12
        LD	R16, Y
        LDI	R17, 0
        SUB	R24, R16
        SBC	R25, R17
        MOVW	R27:R26, R25:R24
//  136 
//  137     COM_rx_reset( );                    //Reset system
        CALL	COM_rx_reset
//  138     COM_setSearchString( 2 );               //Set "> " to be search string
        LDI	R16, 2
        CALL	COM_setSearchString
//  139     COM_putsf( AT_CMGS );               //Send message
        LDI	R16, LOW(AT_CMGS)
        LDI	R17, (AT_CMGS) >> 8
        CALL	COM_putsf
//  140     COM_put_integer( len );             //with length
        MOVW	R17:R16, R27:R26
        CALL	COM_put_integer
//  141     COM_putsf( CRLF );                  //CR+LF
        LDI	R16, LOW(CRLF)
        LDI	R17, (CRLF) >> 8
        CALL	COM_putsf
//  142     COM_rx_on( );                       //Receiver on
        CALL	COM_rx_on
//  143 
//  144     //Append payload
//  145     if( API_check_acknowledge() > 0 )   //Acknowledge = "> "
        RCALL	API_check_acknowledge
        CPI	R16, 1
        SBCI	R17, 0
        BRLT	??API_sendmsg_2
//  146     {
//  147       COM_rx_reset( );                    //Reset system
        CALL	COM_rx_reset
//  148       COM_setSearchString( 0 );               //Set "OK" to be search string
        LDI	R16, 0
        CALL	COM_setSearchString
//  149       COM_putsf( PDU_HEADER );
        LDI	R16, LOW(PDU_HEADER)
        LDI	R17, (PDU_HEADER) >> 8
        CALL	COM_putsf
//  150       COM_puts( payload_len_c );
        MOVW	R17:R16, R29:R28
        SUBI	R16, 255
        SBCI	R17, 255
        CALL	COM_puts
//  151       COM_puts( msgbuff );
        LDI	R16, LOW(msgbuff)
        LDI	R17, (msgbuff) >> 8
        CALL	COM_puts
//  152       COM_putchar( 26 );
        LDI	R16, 26
        CALL	COM_putchar
//  153       COM_rx_on( );                       //Receiver on
        CALL	COM_rx_on
//  154 
//  155       if( API_check_acknowledge() > 0 )   //Acknowledge = OK
        RCALL	API_check_acknowledge
        CPI	R16, 1
        SBCI	R17, 0
        BRLT	??API_sendmsg_3
//  156       {
//  157         return 1;
        LDI	R16, 1
        LDI	R17, 0
        RJMP	??API_sendmsg_1
//  158       }
//  159 
//  160       else
//  161       {
//  162         return -2;                        //Acknowledge != OK
??API_sendmsg_3:
        LDI	R16, 254
        LDI	R17, 255
        RJMP	??API_sendmsg_1
//  163       }
//  164 
//  165     }

⌨️ 快捷键说明

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