📄 avrsms_tools.lst
字号:
##############################################################################
# #
# 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\A #
# VRSMS_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\L #
# ist\AVRSMS_tools.lst #
# Object file = C:\Documents and Settings\vemund\Desktop\AVRGSM\Debug\O #
# bj\AVRSMS_tools.r90 #
# #
# #
##############################################################################
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
\ In segment CODE, align 2, keep-with-next
25 int TOOLS_decodeCMTI( void )
\ TOOLS_decodeCMTI:
26 {
\ 00000000 ........ CALL ?PROLOGUE4_L09
27 unsigned char *temp;
28 int length, i;
29
30 length = 0;
31
32 length = COM_trim( );
\ 00000004 ........ CALL COM_trim
\ 00000008 01D8 MOVW R27:R26, R17:R16
33 temp = COM_gets( );
\ 0000000A ........ CALL COM_gets
34
35 for( i = 0; ( i < length ) && *temp++ != ','; i++);
\ 0000000E E080 LDI R24, 0
\ 00000010 E090 LDI R25, 0
\ 00000012 C001 RJMP ??TOOLS_decodeCMTI_0
\ ??TOOLS_decodeCMTI_1:
\ 00000014 9601 ADIW R25:R24, 1
\ ??TOOLS_decodeCMTI_0:
\ 00000016 178A CP R24, R26
\ 00000018 079B CPC R25, R27
\ 0000001A F43C BRGE ??TOOLS_decodeCMTI_2
\ 0000001C 01F8 MOVW R31:R30, R17:R16
\ 0000001E 018F MOVW R17:R16, R31:R30
\ 00000020 5F0F SUBI R16, 255
\ 00000022 4F1F SBCI R17, 255
\ 00000024 8120 LD R18, Z
\ 00000026 322C CPI R18, 44
\ 00000028 F7A9 BRNE ??TOOLS_decodeCMTI_1
36
37 //Error
38 if( i >= length )
\ ??TOOLS_decodeCMTI_2:
\ 0000002A 178A CP R24, R26
\ 0000002C 079B CPC R25, R27
\ 0000002E F01C BRLT ??TOOLS_decodeCMTI_3
39 {
40 return 0;
\ 00000030 E000 LDI R16, 0
\ 00000032 E010 LDI R17, 0
\ 00000034 C002 RJMP ??TOOLS_decodeCMTI_4
41 }
42
43 else
44 {
45 return ZIP_atoi( temp );
\ ??TOOLS_decodeCMTI_3:
\ 00000036 ........ CALL ZIP_atoi
\ ??TOOLS_decodeCMTI_4:
\ 0000003A E0E4 LDI R30, 4
\ 0000003C ........ JMP ?EPILOGUE_B4_L09
46 }
47 }
48
49
\ In segment CODE, align 2, keep-with-next
50 unsigned char* TOOLS__decodeCMGR( int index )
\ TOOLS__decodeCMGR:
51 {
\ 00000000 ........ CALL ?PROLOGUE6_L09
\ 00000004 REQUIRE ?Register_R4_is_cg_reg
\ 00000004 REQUIRE ?Register_R5_is_cg_reg
\ 00000004 9721 SBIW R29:R28, 1
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
\ 00000006 ........ CALL COM_trim
\ 0000000A 0128 MOVW R5:R4, R17:R16
57 in_handle = COM_gets( );
\ 0000000C ........ CALL COM_gets
\ 00000010 01D8 MOVW R27:R26, R17:R16
58
59 in_handle += 2; //Skip first \r\n
\ 00000012 9612 ADIW R27:R26, 2
60
61 for( i = 0; ( i < len ) && *in_handle++ != '\n'; i++);
\ 00000014 E080 LDI R24, 0
\ 00000016 E090 LDI R25, 0
\ 00000018 C001 RJMP ??TOOLS__decodeCMGR_0
\ ??TOOLS__decodeCMGR_1:
\ 0000001A 9601 ADIW R25:R24, 1
\ ??TOOLS__decodeCMGR_0:
\ 0000001C 1584 CP R24, R4
\ 0000001E 0595 CPC R25, R5
\ 00000020 F434 BRGE ??TOOLS__decodeCMGR_2
\ 00000022 01FD MOVW R31:R30, R27:R26
\ 00000024 01DF MOVW R27:R26, R31:R30
\ 00000026 9611 ADIW R27:R26, 1
\ 00000028 8100 LD R16, Z
\ 0000002A 300A CPI R16, 10
\ 0000002C F7B1 BRNE ??TOOLS__decodeCMGR_1
62
63 //Error
64 if( i >= len )
\ ??TOOLS__decodeCMGR_2:
\ 0000002E 1584 CP R24, R4
\ 00000030 0595 CPC R25, R5
\ 00000032 F01C BRLT ??TOOLS__decodeCMGR_3
65 {
66 return '\0';
\ 00000034 E000 LDI R16, 0
\ 00000036 E010 LDI R17, 0
\ 00000038 C037 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:
\ 0000003A 910C LD R16, X
\ 0000003C ........ CALL ZIP_htoi
\ 00000040 01C8 MOVW R25:R24, R17:R16
\ 00000042 9611 ADIW R27:R26, 1
\ 00000044 910C LD R16, X
\ 00000046 ........ CALL ZIP_htoi
\ 0000004A 0128 MOVW R5:R4, R17:R16
\ 0000004C 9611 ADIW R27:R26, 1
\ 0000004E 01AC MOVW R21:R20, R25:R24
\ 00000050 E100 LDI R16, 16
\ 00000052 E010 LDI R17, 0
\ 00000054 ........ CALL ?S_EC_MUL_L02
\ 00000058 01C8 MOVW R25:R24, R17:R16
\ 0000005A 0D84 ADD R24, R4
\ 0000005C 1D95 ADC R25, R5
73
74 in_handle += 2*field_length + 2; //Skip Service center nmbr
\ 0000005E 0F88 LSL R24
\ 00000060 1F99 ROL R25
\ 00000062 0FA8 ADD R26, R24
\ 00000064 1FB9 ADC R27, R25
\ 00000066 9612 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
\ 00000068 910C LD R16, X
\ 0000006A ........ CALL ZIP_htoi
\ 0000006E 01C8 MOVW R25:R24, R17:R16
\ 00000070 9611 ADIW R27:R26, 1
\ 00000072 910C LD R16, X
\ 00000074 ........ CALL ZIP_htoi
\ 00000078 0128 MOVW R5:R4, R17:R16
\ 0000007A 9611 ADIW R27:R26, 1
\ 0000007C 01AC MOVW R21:R20, R25:R24
\ 0000007E E100 LDI R16, 16
\ 00000080 E010 LDI R17, 0
\ 00000082 ........ CALL ?S_EC_MUL_L02
\ 00000086 01C8 MOVW R25:R24, R17:R16
\ 00000088 0D84 ADD R24, R4
\ 0000008A 1D95 ADC R25, R5
78
79 if( field_length%2 ) field_length++; //Check for trailing F
\ 0000008C 018C MOVW R17:R16, R25:R24
\ 0000008E E042 LDI R20, 2
\ 00000090 E050 LDI R21, 0
\ 00000092 ........ CALL ?SS_DIVMOD_L02
\ 00000096 2B45 OR R20, R21
\ 00000098 F009 BREQ ??TOOLS__decodeCMGR_5
\ 0000009A 9601 ADIW R25:R24, 1
80
81 in_handle += 2 + field_length; //Skip fields in header
\ ??TOOLS__decodeCMGR_5:
\ 0000009C 0FA8 ADD R26, R24
\ 0000009E 1FB9 ADC R27, R25
\ 000000A0 9612 ADIW R27:R26, 2
82
83 in_handle += 14 + 4; //Skip more fields...TP-PID, TP-DCS and TP-SCTS
\ 000000A2 9652 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 );
\ 000000A4 9612 ADIW R27:R26, 2
\ 000000A6 018D MOVW R17:R16, R27:R26
\ ??TOOLS__decodeCMGR_4:
\ 000000A8 9621 ADIW R29:R28, 1
\ 000000AA E0E6 LDI R30, 6
\ 000000AC ........ JMP ?EPILOGUE_B6_L09
90 }
91 }
Maximum stack usage in bytes:
Function CSTACK RSTACK
-------- ------ ------
TOOLS__decodeCMGR 7 4
-> COM_trim 7 2
-> COM_gets 7 2
-> ZIP_htoi 7 2
-> ZIP_htoi 7 2
-> ZIP_htoi 7 2
-> ZIP_htoi 7 2
TOOLS_decodeCMTI 4 2
-> COM_trim 4 2
-> COM_gets 4 2
-> ZIP_atoi 4 2
Segment part sizes:
Function/Label Bytes
-------------- -----
TOOLS_decodeCMTI 64
TOOLS__decodeCMGR 176
240 bytes in segment CODE
240 bytes of CODE memory
Errors: none
Warnings: 3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -