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

📄 avrsms_tools.s90

📁 SMS傳送Sourcode,compiler with C,AT command
💻 S90
字号:
//////////////////////////////////////////////////////////////////////////////
//                                                                           /
//                                                     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\ /
//                    AVRSMS_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\ /
//                    List\AVRSMS_tools.s90                                  /
//                                                                           /
//                                                                           /
//////////////////////////////////////////////////////////////////////////////

        NAME AVRSMS_tools

        RTMODEL "__64bit_doubles", "disabled"
        RTMODEL "__cpu", "3"
        RTMODEL "__cpu_name", "ATmega128"
        RTMODEL "__enhanced_core", "enabled"
        RTMODEL "__has_elpm", "true"
        RTMODEL "__memory_model", "2"
        RTMODEL "__no_rampd", "enabled"
        RTMODEL "__rt_version", "3"

        RSEG CSTACK:DATA:NOROOT(0)
        RSEG RSTACK:DATA:NOROOT(0)

        EXTERN ?EPILOGUE_B4_L09
        EXTERN ?EPILOGUE_B6_L09
        EXTERN ?PROLOGUE4_L09
        EXTERN ?PROLOGUE6_L09
        EXTERN ?Register_R4_is_cg_reg
        EXTERN ?Register_R5_is_cg_reg
        EXTERN ?SS_DIVMOD_L02
        EXTERN ?S_EC_MUL_L02

        PUBLIC TOOLS__decodeCMGR
        FUNCTION TOOLS__decodeCMGR,021203H
        LOCFRAME CSTACK, 7, STACK
        LOCFRAME RSTACK, 4, STACK
        PUBLIC TOOLS_decodeCMTI
        FUNCTION TOOLS_decodeCMTI,021203H
        LOCFRAME CSTACK, 4, STACK
        LOCFRAME RSTACK, 2, STACK
        PUBWEAK __?EEARH
        PUBWEAK __?EEARL
        PUBWEAK __?EECR
        PUBWEAK __?EEDR
        
        CFI Names cfiNames0
        CFI StackFrame CFA_Y Y DATA
        CFI StackFrame CFA_SP SP DATA
        CFI VirtualResource ?RetPad:1, ?RetHigh:8, ?RetLow:8, ?Ret:17
        CFI Resource R0:8, R1:8, R2:8, R3:8, R4:8, R5:8, R6:8, R7:8, R8:8, R9:8
        CFI Resource R10:8, R11:8, R12:8, R13:8, R14:8, R15:8, R16:8, R17:8
        CFI Resource R18:8, R19:8, R20:8, R21:8, R22:8, R23:8, R24:8, R25:8
        CFI Resource R26:8, R27:8, R28:8, R29:8, R30:8, R31:8
        CFI Resource ?RetHighByteMask:8, SP:16, SPH:8, SPL:8, Y:16
        CFI ResourceParts ?Ret ?RetHigh, ?RetLow, ?RetPad
        CFI ResourceParts SP SPH, SPL
        CFI ResourceParts Y R29, R28
        CFI EndNames cfiNames0
        
        CFI Common cfiCommon0 Using cfiNames0
        CFI CodeAlign 1
        CFI DataAlign 1
        CFI ReturnAddress ?Ret CODE
        CFI CFA_Y Y+0
        CFI CFA_SP SP+2
        CFI ?RetPad 0
        CFI ?RetHigh and(load(1, DATA, sub(CFA_SP, 1)), ?RetHighByteMask)
        CFI ?RetLow Frame(CFA_SP, 0)
        CFI ?Ret Concat
        CFI R0 Undefined
        CFI R1 Undefined
        CFI R2 Undefined
        CFI R3 Undefined
        CFI R4 SameValue
        CFI R5 SameValue
        CFI R6 SameValue
        CFI R7 SameValue
        CFI R8 SameValue
        CFI R9 SameValue
        CFI R10 SameValue
        CFI R11 SameValue
        CFI R12 SameValue
        CFI R13 SameValue
        CFI R14 SameValue
        CFI R15 SameValue
        CFI R16 Undefined
        CFI R17 Undefined
        CFI R18 Undefined
        CFI R19 Undefined
        CFI R20 Undefined
        CFI R21 Undefined
        CFI R22 Undefined
        CFI R23 Undefined
        CFI R24 SameValue
        CFI R25 SameValue
        CFI R26 SameValue
        CFI R27 SameValue
        CFI R28 Undefined
        CFI R29 Undefined
        CFI R30 Undefined
        CFI R31 Undefined
        CFI ?RetHighByteMask SameValue
        CFI SPH Undefined
        CFI SPL Undefined
        CFI EndCommon cfiCommon0
        
        EXTERN COM_trim
        FUNCTION COM_trim,0202H
        EXTERN COM_gets
        FUNCTION COM_gets,0202H
        EXTERN ZIP_atoi
        FUNCTION ZIP_atoi,0202H
        EXTERN ZIP_htoi
        FUNCTION ZIP_htoi,0202H

// 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 

        RSEG CODE:CODE:NOROOT(1)
//   25 int TOOLS_decodeCMTI( void )
TOOLS_decodeCMTI:
        CFI Block cfiBlock0 Using cfiCommon0
        CFI Function TOOLS_decodeCMTI
//   26 {
        FUNCALL TOOLS_decodeCMTI, COM_trim
        LOCFRAME CSTACK, 4, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL TOOLS_decodeCMTI, COM_gets
        LOCFRAME CSTACK, 4, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL TOOLS_decodeCMTI, ZIP_atoi
        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
//   27   unsigned char *temp;
//   28   int length, i;
//   29 
//   30   length = 0;
//   31 
//   32   length = COM_trim( );
        CALL	COM_trim
        MOVW	R27:R26, R17:R16
//   33   temp   = COM_gets( );
        CALL	COM_gets
//   34 
//   35   for( i = 0; ( i < length ) && *temp++ != ','; i++);
        LDI	R24, 0
        LDI	R25, 0
        RJMP	??TOOLS_decodeCMTI_0
??TOOLS_decodeCMTI_1:
        ADIW	R25:R24, 1
??TOOLS_decodeCMTI_0:
        CP	R24, R26
        CPC	R25, R27
        BRGE	??TOOLS_decodeCMTI_2
        MOVW	R31:R30, R17:R16
        MOVW	R17:R16, R31:R30
        SUBI	R16, 255
        SBCI	R17, 255
        LD	R18, Z
        CPI	R18, 44
        BRNE	??TOOLS_decodeCMTI_1
//   36 
//   37   //Error
//   38   if( i >= length )
??TOOLS_decodeCMTI_2:
        CP	R24, R26
        CPC	R25, R27
        BRLT	??TOOLS_decodeCMTI_3
//   39   {
//   40     return 0;
        LDI	R16, 0
        LDI	R17, 0
        RJMP	??TOOLS_decodeCMTI_4
//   41   }
//   42 
//   43   else
//   44   {
//   45     return ZIP_atoi( temp );
??TOOLS_decodeCMTI_3:
        CALL	ZIP_atoi
??TOOLS_decodeCMTI_4:
        LDI	R30, 4
        JMP	?EPILOGUE_B4_L09
        CFI EndBlock cfiBlock0
//   46   }
//   47 }
//   48 
//   49 

        RSEG CODE:CODE:NOROOT(1)
//   50 unsigned char* TOOLS__decodeCMGR( int index )
TOOLS__decodeCMGR:
        CFI Block cfiBlock1 Using cfiCommon0
        CFI Function TOOLS__decodeCMGR
//   51 {
        FUNCALL TOOLS__decodeCMGR, COM_trim
        LOCFRAME CSTACK, 7, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL TOOLS__decodeCMGR, COM_gets
        LOCFRAME CSTACK, 7, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL TOOLS__decodeCMGR, ZIP_htoi
        LOCFRAME CSTACK, 7, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL TOOLS__decodeCMGR, ZIP_htoi
        LOCFRAME CSTACK, 7, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL TOOLS__decodeCMGR, ZIP_htoi
        LOCFRAME CSTACK, 7, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL TOOLS__decodeCMGR, ZIP_htoi
        LOCFRAME CSTACK, 7, STACK
        LOCFRAME RSTACK, 2, STACK
        CALL	?PROLOGUE6_L09
        CFI R5 Frame(CFA_Y, -1)
        CFI R4 Frame(CFA_Y, -2)
        CFI R27 Frame(CFA_Y, -3)
        CFI R26 Frame(CFA_Y, -4)
        CFI R25 Frame(CFA_Y, -5)
        CFI R24 Frame(CFA_Y, -6)
        CFI CFA_Y Y+6
        REQUIRE	?Register_R4_is_cg_reg
        REQUIRE	?Register_R5_is_cg_reg
        SBIW	R29:R28, 1
        CFI CFA_Y Y+7
//   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
        CALL	COM_trim
        MOVW	R5:R4, R17:R16
//   57   in_handle   = COM_gets( );
        CALL	COM_gets
        MOVW	R27:R26, R17:R16
//   58 
//   59   in_handle += 2; //Skip first \r\n
        ADIW	R27:R26, 2
//   60 
//   61   for( i = 0; ( i < len ) && *in_handle++ != '\n'; i++);
        LDI	R24, 0
        LDI	R25, 0
        RJMP	??TOOLS__decodeCMGR_0
??TOOLS__decodeCMGR_1:
        ADIW	R25:R24, 1
??TOOLS__decodeCMGR_0:
        CP	R24, R4
        CPC	R25, R5
        BRGE	??TOOLS__decodeCMGR_2
        MOVW	R31:R30, R27:R26
        MOVW	R27:R26, R31:R30
        ADIW	R27:R26, 1
        LD	R16, Z
        CPI	R16, 10
        BRNE	??TOOLS__decodeCMGR_1
//   62 
//   63   //Error
//   64   if( i >= len )
??TOOLS__decodeCMGR_2:
        CP	R24, R4
        CPC	R25, R5
        BRLT	??TOOLS__decodeCMGR_3
//   65   {
//   66     return '\0';
        LDI	R16, 0
        LDI	R17, 0
        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:
        LD	R16, X
        CALL	ZIP_htoi
        MOVW	R25:R24, R17:R16
        ADIW	R27:R26, 1
        LD	R16, X
        CALL	ZIP_htoi
        MOVW	R5:R4, R17:R16
        ADIW	R27:R26, 1
        MOVW	R21:R20, R25:R24
        LDI	R16, 16
        LDI	R17, 0
        CALL	?S_EC_MUL_L02
        MOVW	R25:R24, R17:R16
        ADD	R24, R4
        ADC	R25, R5
//   73 
//   74     in_handle += 2*field_length + 2;                                    //Skip Service center nmbr
        LSL	R24
        ROL	R25
        ADD	R26, R24
        ADC	R27, R25
        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
        LD	R16, X
        CALL	ZIP_htoi
        MOVW	R25:R24, R17:R16
        ADIW	R27:R26, 1
        LD	R16, X
        CALL	ZIP_htoi
        MOVW	R5:R4, R17:R16
        ADIW	R27:R26, 1
        MOVW	R21:R20, R25:R24
        LDI	R16, 16
        LDI	R17, 0
        CALL	?S_EC_MUL_L02
        MOVW	R25:R24, R17:R16
        ADD	R24, R4
        ADC	R25, R5
//   78 
//   79     if( field_length%2 ) field_length++;                                //Check for trailing F
        MOVW	R17:R16, R25:R24
        LDI	R20, 2
        LDI	R21, 0
        CALL	?SS_DIVMOD_L02
        OR	R20, R21
        BREQ	??TOOLS__decodeCMGR_5
        ADIW	R25:R24, 1
//   80 
//   81     in_handle += 2 + field_length;                                      //Skip fields in header
??TOOLS__decodeCMGR_5:
        ADD	R26, R24
        ADC	R27, R25
        ADIW	R27:R26, 2
//   82 
//   83     in_handle += 14 + 4;                                                //Skip more fields...TP-PID, TP-DCS and TP-SCTS
        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 );
        ADIW	R27:R26, 2
        MOVW	R17:R16, R27:R26
??TOOLS__decodeCMGR_4:
        ADIW	R29:R28, 1
        CFI CFA_Y Y+6
        LDI	R30, 6
        JMP	?EPILOGUE_B6_L09
        CFI EndBlock cfiBlock1
//   90   }
//   91 }

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

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

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

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

        END
// 
// 240 bytes in segment CODE
// 
// 240 bytes of CODE memory
//
//Errors: none
//Warnings: 3

⌨️ 快捷键说明

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