📄 avrsms_tools.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 + -