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

📄 avrsms_api.s90

📁 SMS傳送Sourcode,compiler with C,AT command
💻 S90
📖 第 1 页 / 共 3 页
字号:
//  166 
//  167     //Abort
//  168     else
//  169     {
//  170         return -1;                         //Acknowledge != "> "
??API_sendmsg_2:
        LDI	R16, 255
        LDI	R17, 255
??API_sendmsg_1:
        ADIW	R29:R28, 4
        CFI CFA_Y Y+4
        LDI	R30, 4
        JMP	?EPILOGUE_B4_L09
        CFI EndBlock cfiBlock2
//  171     }
//  172   }
//  173 }
//  174 
//  175 

        RSEG CODE:CODE:NOROOT(1)
//  176 int API_readmsg( int ind )
API_readmsg:
        CFI Block cfiBlock3 Using cfiCommon0
        CFI Function API_readmsg
//  177 {
        FUNCALL API_readmsg, COM_rx_reset
        LOCFRAME CSTACK, 4, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL API_readmsg, COM_setSearchString
        LOCFRAME CSTACK, 4, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL API_readmsg, COM_putsf
        LOCFRAME CSTACK, 4, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL API_readmsg, COM_put_integer
        LOCFRAME CSTACK, 4, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL API_readmsg, COM_putsf
        LOCFRAME CSTACK, 4, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL API_readmsg, COM_rx_on
        LOCFRAME CSTACK, 4, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL API_readmsg, API_check_acknowledge
        LOCFRAME CSTACK, 4, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL API_readmsg, TOOLS__decodeCMGR
        LOCFRAME CSTACK, 4, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL API_readmsg, ZIP_decompress
        LOCFRAME CSTACK, 4, 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
        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
        CALL	COM_rx_reset
//  187   COM_setSearchString( 0 );               //Set OK to be search string
        LDI	R16, 0
        CALL	COM_setSearchString
//  188   COM_putsf( AT_CMGR );               //Delete message
        LDI	R16, LOW(AT_CMGR)
        LDI	R17, (AT_CMGR) >> 8
        CALL	COM_putsf
//  189   COM_put_integer( ind );           //@index
        MOVW	R17:R16, R27:R26
        CALL	COM_put_integer
//  190   COM_putsf( CRLF );                  //CR+LF
        LDI	R16, LOW(CRLF)
        LDI	R17, (CRLF) >> 8
        CALL	COM_putsf
//  191   COM_rx_on( );                       //Receiver on
        CALL	COM_rx_on
//  192 
//  193   if( API_check_acknowledge() > 0 )   //Delete = OK
        RCALL	API_check_acknowledge
        CPI	R16, 1
        SBCI	R17, 0
        BRLT	??API_readmsg_0
//  194   {
//  195     encodedmsg = TOOLS__decodeCMGR( ind );
        MOVW	R17:R16, R27:R26
        CALL	TOOLS__decodeCMGR
//  196     i = ZIP_decompress( encodedmsg, msgbuff );
        LDI	R18, LOW(msgbuff)
        LDI	R19, (msgbuff) >> 8
        CALL	ZIP_decompress
//  197 
//  198     //COM_puts( msgbuff );
//  199 
//  200     return 1;
        LDI	R16, 1
        LDI	R17, 0
        RJMP	??API_readmsg_1
//  201   }
//  202 
//  203   else
//  204   {
//  205     return 0;                         //Not successful delete
??API_readmsg_0:
        LDI	R16, 0
        LDI	R17, 0
??API_readmsg_1:
        LDI	R30, 4
        JMP	?EPILOGUE_B4_L09
        CFI EndBlock cfiBlock3
//  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

        RSEG CODE:CODE:NOROOT(1)
//  211 int API_check_acknowledge( void )
API_check_acknowledge:
        CFI Block cfiBlock4 Using cfiCommon0
        CFI Function API_check_acknowledge
//  212 {
        FUNCALL API_check_acknowledge, COM_rx_off
        LOCFRAME CSTACK, 2, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL API_check_acknowledge, COM_rx_reset
        LOCFRAME CSTACK, 2, STACK
        LOCFRAME RSTACK, 2, STACK
        ST	-Y, R27
        CFI R27 Frame(CFA_Y, -1)
        CFI CFA_Y Y+1
        ST	-Y, R26
        CFI R26 Frame(CFA_Y, -2)
        CFI CFA_Y Y+2
//  213   static unsigned int i, ii;                         //Loal variables
//  214 
//  215   for( i = 0; ( rx_ack == 0 ) && ( i < 65535 ); i++ ) //Wait loop
        LDI	R16, 0
        LDI	R17, 0
        LDI	R30, LOW(??i)
        LDI	R31, (??i) >> 8
        ST	Z, R16
        STD	Z+1, R17
        RJMP	??API_check_acknowledge_0
//  216   {
//  217     for( ii = 0; ii < 10; ii++ )
??API_check_acknowledge_1:
        LDI	R30, LOW(??ii)
        LDI	R31, (??ii) >> 8
        LD	R16, Z
        LDD	R17, Z+1
        SUBI	R16, 255
        SBCI	R17, 255
        ST	Z, R16
        STD	Z+1, R17
??API_check_acknowledge_2:
        LDI	R26, LOW(??ii)
        LDI	R27, (??ii) >> 8
        LD	R30, X+
        LD	R31, X
        SBIW	R31:R30, 10
        BRCS	??API_check_acknowledge_1
        LDI	R30, LOW(??i)
        LDI	R31, (??i) >> 8
        LD	R16, Z
        LDD	R17, Z+1
        SUBI	R16, 255
        SBCI	R17, 255
        ST	Z, R16
        STD	Z+1, R17
??API_check_acknowledge_0:
        LDI	R30, LOW(rx_ack)
        LDI	R31, (rx_ack) >> 8
        LD	R16, Z
        LDD	R17, Z+1
        OR	R16, R17
        BRNE	??API_check_acknowledge_3
        LDI	R30, LOW(??i)
        LDI	R31, (??i) >> 8
        LD	R16, Z
        LDD	R17, Z+1
        CPI	R16, 255
        LDI	R18, 255
        CPC	R17, R18
        BRCC	??API_check_acknowledge_3
        LDI	R16, 0
        LDI	R17, 0
        LDI	R30, LOW(??ii)
        LDI	R31, (??ii) >> 8
        ST	Z, R16
        STD	Z+1, R17
        RJMP	??API_check_acknowledge_2
//  218     {
//  219         ;
//  220     }
//  221   }
//  222 
//  223   if( rx_ack > 0 )                                    //Everything worked out fine...rx turned off
??API_check_acknowledge_3:
        LDI	R26, LOW(rx_ack)
        LDI	R27, (rx_ack) >> 8
        LD	R30, X+
        LD	R31, X
        SBIW	R31:R30, 1
        BRLT	??API_check_acknowledge_4
//  224   {
//  225     rx_ack = 0;                                       //Reset flag
        LDI	R16, 0
        LDI	R17, 0
        LDI	R30, LOW(rx_ack)
        LDI	R31, (rx_ack) >> 8
        ST	Z, R16
        STD	Z+1, R17
//  226     return 1;
        LDI	R16, 1
        LDI	R17, 0
        RJMP	??API_check_acknowledge_5
//  227   }
//  228   else                                                //A timeout could result from no acknowledge, wrong acknowledge or buffer overrun
//  229   {
//  230     COM_rx_off( );                                    //Receiver off
??API_check_acknowledge_4:
        CALL	COM_rx_off
//  231     COM_rx_reset( );                                  //Reset buffer and interrupt routine
        CALL	COM_rx_reset
//  232     return 0;                                         //Timed out, or wrong acknowledge from phone
        LDI	R16, 0
        LDI	R17, 0
??API_check_acknowledge_5:
        LD	R26, Y+
        CFI R26 SameValue
        CFI CFA_Y Y+1
        LD	R27, Y+
        CFI R27 SameValue
        CFI CFA_Y Y+0
        RET
        CFI EndBlock cfiBlock4
//  233   }
//  234 
//  235 }

        RSEG NEAR_Z:DATA:NOROOT(0)
        REQUIRE `?<Segment init: NEAR_Z>`
??i:
        DS 2

        RSEG NEAR_Z:DATA:NOROOT(0)
        REQUIRE `?<Segment init: NEAR_Z>`
??ii:
        DS 2

        ASEGN ABSOLUTE:DATA:NOROOT,01cH
__?EECR:

        ASEGN ABSOLUTE:DATA:NOROOT,01dH
__?EEDR:

        ASEGN ABSOLUTE:DATA:NOROOT,01eH
__?EEARL:

        ASEGN ABSOLUTE:DATA:NOROOT,01fH
__?EEARH:

        RSEG NEAR_ID:CODE:NOROOT(0)
`?<Initializer for <Constant "E170381C0E87C3E17`:
        DB 45H, 31H, 37H, 30H, 33H, 38H, 31H, 43H
        DB 30H, 45H, 38H, 37H, 43H, 33H, 45H, 31H
        DB 37H, 30H, 33H, 38H, 31H, 43H, 30H, 45H
        DB 38H, 37H, 43H, 33H, 45H, 31H, 37H, 30H
        DB 33H, 38H, 31H, 43H, 30H, 45H, 38H, 37H
        DB 43H, 33H, 45H, 31H, 37H, 30H, 33H, 38H
        DB 31H, 43H, 30H, 45H, 38H, 37H, 43H, 33H
        DB 45H, 31H, 37H, 30H, 33H, 38H, 31H, 43H
        DB 30H, 45H, 38H, 37H, 43H, 33H, 45H, 31H
        DB 37H, 30H, 33H, 38H, 31H, 43H, 30H, 45H
        DB 38H, 37H, 43H, 33H, 45H, 31H, 37H, 30H
        DB 33H, 38H, 31H, 43H, 30H, 45H, 38H, 37H
        DB 43H, 33H, 45H, 31H, 37H, 30H, 33H, 38H
        DB 31H, 43H, 30H, 45H, 38H, 37H, 43H, 33H
        DB 45H, 31H, 37H, 30H, 31H, 38H, 0

        RSEG INITTAB:CODE:NOROOT(0)
`?<Segment init: NEAR_I>`:
        DW	SFE(NEAR_I) - SFB(NEAR_I)
        DW	SFB(NEAR_I)
        DP	SFB(NEAR_ID)
        REQUIRE ?need_segment_init

        RSEG INITTAB:CODE:NOROOT(0)
`?<Segment init: NEAR_Z>`:
        DW	SFE(NEAR_Z) - SFB(NEAR_Z)
        DW	SFB(NEAR_Z)
        DP	0
        REQUIRE ?need_segment_init

        RSEG NEAR_ID:CODE:NOROOT(0)
`?<Initializer for ziped>`:
        DW `?<Constant "E170381C0E87C3E170381...">`

        END
// 
// 572 bytes in segment CODE
//  14 bytes in segment INITTAB
// 105 bytes in segment NEAR_F
// 121 bytes in segment NEAR_I
// 121 bytes in segment NEAR_ID
// 165 bytes in segment NEAR_Z
// 
// 798 bytes of CODE memory (+ 14 bytes shared)
// 286 bytes of DATA memory
//
//Errors: none
//Warnings: 1

⌨️ 快捷键说明

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