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

📄 avrsms_zip.s90

📁 SMS傳送Sourcode,compiler with C,AT command
💻 S90
📖 第 1 页 / 共 2 页
字号:
//////////////////////////////////////////////////////////////////////////////
//                                                                           /
//                                                     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_zip.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_zip.c"                                         /
//    List file    =  C:\Documents and Settings\vemund\Desktop\AVRGSM\Debug\ /
//                    List\AVRSMS_zip.s90                                    /
//                                                                           /
//                                                                           /
//////////////////////////////////////////////////////////////////////////////

        NAME AVRSMS_zip

        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 ?C_SHL_L01
        EXTERN ?EPILOGUE_B13_L09
        EXTERN ?EPILOGUE_B4_L09
        EXTERN ?EPILOGUE_B6_L09
        EXTERN ?PROLOGUE13_L09
        EXTERN ?PROLOGUE4_L09
        EXTERN ?PROLOGUE6_L09
        EXTERN ?Register_R10_is_cg_reg
        EXTERN ?Register_R11_is_cg_reg
        EXTERN ?Register_R12_is_cg_reg
        EXTERN ?Register_R4_is_cg_reg
        EXTERN ?Register_R5_is_cg_reg
        EXTERN ?Register_R6_is_cg_reg
        EXTERN ?Register_R7_is_cg_reg
        EXTERN ?Register_R8_is_cg_reg
        EXTERN ?Register_R9_is_cg_reg
        EXTERN ?SS_SHR_L02
        EXTERN ?S_EC_MUL_L02

        PUBLIC ZIP_atoi
        FUNCTION ZIP_atoi,0203H
        LOCFRAME CSTACK, 4, STACK
        LOCFRAME RSTACK, 4, STACK
        PUBLIC ZIP_compress
        FUNCTION ZIP_compress,0203H
        LOCFRAME CSTACK, 6, STACK
        LOCFRAME RSTACK, 4, STACK
        PUBLIC ZIP_decompress
        FUNCTION ZIP_decompress,021203H
        LOCFRAME CSTACK, 13, STACK
        LOCFRAME RSTACK, 4, STACK
        PUBLIC ZIP_htoi
        FUNCTION ZIP_htoi,0203H
        LOCFRAME RSTACK, 2, STACK
        PUBLIC ZIP_isNmbr
        FUNCTION ZIP_isNmbr,0203H
        LOCFRAME RSTACK, 2, STACK
        PUBLIC ZIP_itoh
        FUNCTION ZIP_itoh,0203H
        LOCFRAME RSTACK, 2, STACK
        PUBWEAK __?EEARH
        PUBWEAK __?EEARL
        PUBWEAK __?EECR
        PUBWEAK __?EEDR
        PUBLIC hex_lookup
        PUBLIC mask
        PUBLIC power
        
        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
        
// C:\Documents and Settings\vemund\Desktop\AVRGSM\Files\AVRSMS_zip.c
//    1 /*! \file ********************************************************************
//    2 *
//    3 * Atmel Corporation
//    4 *
//    5 * - File              : AVRSMS_zip.c
//    6 * - Compiler          : IAR EWAAVR 4.10A
//    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:20 UTC $
//   19 *****************************************************************************/
//   20 #include"AVRSMS_zip.h"
//   21 
//   22 
//   23 //Flash constant

        RSEG NEAR_F:CODE:NOROOT(0)
//   24 const unsigned char   __flash hex_lookup[]         = hex_nmbr;             //!< Lookup table -> int 2 hex
hex_lookup:
        DB "0123456789ABCDEF"

        RSEG NEAR_F:CODE:NOROOT(0)
//   25 const unsigned char   __flash mask[7]       = {1,3,7,15,31,63,127}; //!< Lookup table -> mask
mask:
        DB 1, 3, 7, 15, 31, 63, 127

        RSEG NEAR_F:CODE:NOROOT(0)
//   26 const unsigned char  __flash power[7]       = {128,64,32,16,8,4,2}; //!< Lookup table -> 2^( 7 - i )
power:
        DB 128, 64, 32, 16, 8, 4, 2
//   27 
//   28 

        RSEG CODE:CODE:NOROOT(1)
//   29 int ZIP_compress( unsigned char *in, unsigned char *discarded, unsigned char ret[] )
ZIP_compress:
        CFI Block cfiBlock0 Using cfiCommon0
        CFI Function ZIP_compress
//   30 {
        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
        MOVW	R23:R22, R17:R16
        MOVW	R5:R4, R19:R18
        MOVW	R27:R26, R21:R20
//   31   //Local variables
//   32   int i,ii,iii;
//   33   unsigned char encode_c, now_c, next_c;
//   34 
//   35   //Initialization
//   36   *discarded = 0;
        LDI	R16, 0
        MOVW	R31:R30, R5:R4
        ST	Z, R16
//   37 
//   38   for( i = ii = iii = 0; in[i] != '\0' && ( i < MESSAGE_LENGTH ); ) //Run through whole string
        LDI	R16, 0
        LDI	R17, 0
        MOVW	R3:R2, R17:R16
        MOVW	R25:R24, R17:R16
        MOVW	R19:R18, R17:R16
        RJMP	??ZIP_compress_0
//   39   {
//   40     now_c = in[i++];                                                //This char
//   41     next_c = in[i];                                                 //Next potentially '\0'
//   42 
//   43     //Last char?
//   44     if( next_c == '\0' )
//   45     {
//   46       next_c = 0;
//   47     }
//   48 
//   49 
//   50     encode_c = (now_c >> ii)+ (mask[ii] & next_c)*power[ii];
//   51     ret[iii++] = hex_lookup[(encode_c>>4)&0x0F];                         //Insert first hex part
//   52     ret[iii++] = hex_lookup[(encode_c&0x0F)];                            //Insert last hex part
//   53 
//   54     if( ii == 6 )                                                 //We have read a chunk of 7 chars, the next one will be discarded
//   55     {
//   56       ii=0;
??ZIP_compress_1:
        LDI	R24, 0
        LDI	R25, 0
//   57       i++;
        SUBI	R18, 255
        SBCI	R19, 255
//   58       (*discarded)++;
        MOVW	R31:R30, R5:R4
        LD	R16, Z
        INC	R16
        ST	Z, R16
//   59     }
??ZIP_compress_0:
        MOVW	R31:R30, R23:R22
        ADD	R30, R18
        ADC	R31, R19
        LD	R16, Z
        TST	R16
        BRNE	$+2+2
        RJMP	??ZIP_compress_2
        CPI	R18, 80
        LDI	R16, 0
        CPC	R19, R16
        BRLT	$+2+2
        RJMP	??ZIP_compress_2
        MOVW	R31:R30, R23:R22
        ADD	R30, R18
        ADC	R31, R19
        LD	R16, Z
        SUBI	R18, 255
        SBCI	R19, 255
        MOVW	R31:R30, R23:R22
        ADD	R30, R18
        ADC	R31, R19
        LD	R21, Z
        TST	R21
        BRNE	??ZIP_compress_3
        LDI	R21, 0
??ZIP_compress_3:
        LDI	R17, 0
        MOV	R20, R24
        CALL	?SS_SHR_L02
        LDI	R30, LOW(mask)
        LDI	R31, (mask) >> 8
        ADD	R30, R24
        ADC	R31, R25
        LPM	R20, Z
        AND	R20, R21
        LDI	R30, LOW(power)
        LDI	R31, (power) >> 8
        ADD	R30, R24
        ADC	R31, R25
        LPM	R17, Z
        MUL	R20, R17
        ADD	R0, R16
        LDI	R30, LOW(hex_lookup)
        LDI	R31, (hex_lookup) >> 8
        MOV	R16, R0
        SWAP	R16
        ANDI	R16, 0x0F
        LDI	R17, 0
        ADD	R30, R16
        ADC	R31, R17
        LPM	R16, Z
        MOVW	R31:R30, R27:R26
        ADD	R30, R2
        ADC	R31, R3
        ST	Z, R16
        LDI	R16, 1
        ADD	R2, R16
        LDI	R16, 0
        ADC	R3, R16
        LDI	R30, LOW(hex_lookup)
        LDI	R31, (hex_lookup) >> 8
        MOV	R16, R0
        LDI	R17, 0
        ANDI	R16, 0x0F
        ANDI	R17, 0x00
        ADD	R30, R16
        ADC	R31, R17
        LPM	R16, Z
        MOVW	R31:R30, R27:R26
        ADD	R30, R2
        ADC	R31, R3
        ST	Z, R16
        LDI	R16, 1
        ADD	R2, R16
        LDI	R16, 0
        ADC	R3, R16
        CPI	R24, 6
        LDI	R16, 0
        CPC	R25, R16
        BRNE	$+2+2
        RJMP	??ZIP_compress_1
//   60 
//   61     else
//   62     {
//   63          ii++;
        ADIW	R25:R24, 1
        RJMP	??ZIP_compress_0
//   64     }
//   65   }
//   66 
//   67   ret[iii] = '\0';
??ZIP_compress_2:
        LDI	R16, 0
        ADD	R26, R2
        ADC	R27, R3
        ST	X, R16
//   68 
//   69   return i;
        MOVW	R17:R16, R19:R18
        LDI	R30, 6
        JMP	?EPILOGUE_B6_L09
        CFI EndBlock cfiBlock0
//   70 }//end ZIP_compress
//   71 
//   72 

        RSEG CODE:CODE:NOROOT(1)
//   73 int ZIP_decompress( unsigned char *compressed, unsigned char *decompressed )
ZIP_decompress:
        CFI Block cfiBlock1 Using cfiCommon0
        CFI Function ZIP_decompress
//   74 {
        FUNCALL ZIP_decompress, ZIP_htoi
        LOCFRAME CSTACK, 13, STACK
        LOCFRAME RSTACK, 2, STACK
        FUNCALL ZIP_decompress, ZIP_htoi
        LOCFRAME CSTACK, 13, STACK
        LOCFRAME RSTACK, 2, STACK
        CALL	?PROLOGUE13_L09
        CFI R12 Frame(CFA_Y, -1)
        CFI R11 Frame(CFA_Y, -2)
        CFI R10 Frame(CFA_Y, -3)
        CFI R9 Frame(CFA_Y, -4)
        CFI R8 Frame(CFA_Y, -5)
        CFI R7 Frame(CFA_Y, -6)
        CFI R6 Frame(CFA_Y, -7)
        CFI R5 Frame(CFA_Y, -8)
        CFI R4 Frame(CFA_Y, -9)
        CFI R27 Frame(CFA_Y, -10)
        CFI R26 Frame(CFA_Y, -11)

⌨️ 快捷键说明

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