📄 main.lst
字号:
##############################################################################
# #
# 24/Sep/2005 02:15:52 #
# 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\m #
# ain.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\ #
# main.c" #
# List file = C:\Documents and Settings\vemund\Desktop\AVRGSM\Debug\L #
# ist\main.lst #
# Object file = C:\Documents and Settings\vemund\Desktop\AVRGSM\Debug\O #
# bj\main.r90 #
# #
# #
##############################################################################
C:\Documents and Settings\vemund\Desktop\AVRGSM\Files\main.c
1 #ifdef S_SPLINT_S
2 #include"splint.h"
3 #endif
4
5
6 #include<iom128.h>
7 #include<inavr.h>
8 #include"AVRSMS_com.h"
9 #include"AVRSMS_api.h"
10 #include"AVRSMS_tools.h"
11
12 extern int rx_overflow, rx_ack;
\ In segment NEAR_Z, align 1, keep-with-next
\ 00000000 REQUIRE `?<Segment init: NEAR_Z>`
13 volatile int nParameters, i, read_index;
\ nParameters:
\ 00000000 DS 2
\ In segment NEAR_Z, align 1, keep-with-next
\ 00000000 REQUIRE `?<Segment init: NEAR_Z>`
\ i:
\ 00000000 DS 2
\ In segment NEAR_Z, align 1, keep-with-next
\ 00000000 REQUIRE `?<Segment init: NEAR_Z>`
\ read_index:
\ 00000000 DS 2
\ In segment NEAR_Z, align 1, keep-with-next
\ 00000000 REQUIRE `?<Segment init: NEAR_Z>`
14 unsigned char *ParamBuffer[ RX_N_OF_PARAMS ];
\ ParamBuffer:
\ 00000000 DS 16
15
\ In segment NEAR_I, align 1, keep-with-next
\ 00000000 REQUIRE `?<Segment init: NEAR_I>`
16 unsigned char *test = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; //Max allovable string is 80 chars
\ test:
\ 00000000 DS 2
\ 00000002 REQUIRE `?<Initializer for test>`
17
18
\ In segment CODE, align 2, keep-with-next
19 void systemInit( void )
\ systemInit:
20 {
21 COM_init( 12 ); //Running @ 1Mhz
\ 00000000 E00C LDI R16, 12
\ 00000002 E010 LDI R17, 0
\ 00000004 ........ CALL COM_init
22 __enable_interrupt();
\ 00000008 9478 SEI
23 API_phoneinit( );
\ 0000000A ........ CALL API_phoneinit
24 COM_rx_reset( );
\ 0000000E ........ CALL COM_rx_reset
25 COM_setSearchString( 1 ); //Wait for "+CMTI: ,Storage,index\r\n"
\ 00000012 E001 LDI R16, 1
\ 00000014 ........ CALL COM_setSearchString
26 COM_rx_on( ); //Ready to receive
\ 00000018 ........ CALL COM_rx_on
27 }
\ 0000001C 9508 RET
28
29
\ In segment CODE, align 2, keep-with-next
30 __C_task void main( void )
\ main:
31 {
32
33 systemInit(); //System init...Hardware and subsystems
\ 00000000 .... RCALL systemInit
34 nParameters = i = read_index = 0;
\ 00000002 E000 LDI R16, 0
\ 00000004 E010 LDI R17, 0
\ 00000006 .... LDI R30, LOW(read_index)
\ 00000008 .... LDI R31, (read_index) >> 8
\ 0000000A 8300 ST Z, R16
\ 0000000C 8311 STD Z+1, R17
\ 0000000E .... LDI R30, LOW(i)
\ 00000010 .... LDI R31, (i) >> 8
\ 00000012 8300 ST Z, R16
\ 00000014 8311 STD Z+1, R17
\ 00000016 .... LDI R30, LOW(nParameters)
\ 00000018 .... LDI R31, (nParameters) >> 8
\ 0000001A 8300 ST Z, R16
\ 0000001C 8311 STD Z+1, R17
35
36
37
38
39
40
41 //Main loop
42 for(;;)
43 {
44 /*
45 nParameters = API_phoneinit( );
46
47 if( nParameters <= 0 )
48 {
49 nParameters = 0; //error
50 }
51
52 else
53 {
54 nParameters = 0; //Success
55 }
56 */
57 //Test API_init
58 /*
59 if( nParameters == -2 )
60 {
61 i++; //Error indication
62 }
63
64 else if( nParameters == -1 )
65 {
66 i++; //Error storage
67 }
68
69 else if( nParameters == 0 )
70 {
71 i++; //Error Echo
72 }
73
74 else if( nParameters == 1 )
75 {
76 i++; //OK
77 }
78
79 API_deletemsg( i );
80 API_sendmsg( test );
81 API_readmsg( 123 );
82 */
83
84 if( rx_ack == 1 ) //New Message
\ ??main_0:
\ 0000001E .... LDI R30, LOW(rx_ack)
\ 00000020 .... LDI R31, (rx_ack) >> 8
\ 00000022 8100 LD R16, Z
\ 00000024 8111 LDD R17, Z+1
\ 00000026 3001 CPI R16, 1
\ 00000028 E020 LDI R18, 0
\ 0000002A 0712 CPC R17, R18
\ 0000002C F7C1 BRNE ??main_0
85 {
86 read_index = TOOLS_decodeCMTI( );
\ 0000002E ........ CALL TOOLS_decodeCMTI
\ 00000032 .... LDI R30, LOW(read_index)
\ 00000034 .... LDI R31, (read_index) >> 8
\ 00000036 8300 ST Z, R16
\ 00000038 8311 STD Z+1, R17
87 API_readmsg( read_index ); //Read new message
\ 0000003A .... LDI R30, LOW(read_index)
\ 0000003C .... LDI R31, (read_index) >> 8
\ 0000003E 8100 LD R16, Z
\ 00000040 8111 LDD R17, Z+1
\ 00000042 ........ CALL API_readmsg
88
89 COM_setSearchString( 1 ); //Wait for "+CMTI: ,Storage,index\r\n"
\ 00000046 E001 LDI R16, 1
\ 00000048 ........ CALL COM_setSearchString
90 COM_rx_reset( ); //Reset buffer and interrupt routine
\ 0000004C ........ CALL COM_rx_reset
91 COM_rx_on( ); //Ready to receive
\ 00000050 ........ CALL COM_rx_on
\ 00000054 CFE4 RJMP ??main_0
92 }
93
94 }
95 }
\ In segment NEAR_ID, align 1, keep-with-next
\ `?<Initializer for <Constant "aaaaaaaaaaaaaaaaa`:
\ 00000000 616161616161 DB 61H, 61H, 61H, 61H, 61H, 61H, 61H, 61H
\ 6161
\ 00000008 616161616161 DB 61H, 61H, 61H, 61H, 61H, 61H, 61H, 61H
\ 6161
\ 00000010 616161616161 DB 61H, 61H, 61H, 61H, 61H, 61H, 61H, 61H
\ 6161
\ 00000018 616161616161 DB 61H, 61H, 61H, 61H, 61H, 61H, 61H, 61H
\ 6161
\ 00000020 616161616161 DB 61H, 61H, 61H, 61H, 61H, 61H, 61H, 61H
\ 6161
\ 00000028 616161616161 DB 61H, 61H, 61H, 61H, 61H, 61H, 61H, 61H
\ 6161
\ 00000030 616161616161 DB 61H, 61H, 61H, 61H, 61H, 61H, 61H, 61H
\ 6161
\ 00000038 616161616161 DB 61H, 61H, 61H, 61H, 61H, 61H, 61H, 61H
\ 6161
\ 00000040 616161616161 DB 61H, 61H, 61H, 61H, 61H, 61H, 61H, 61H
\ 6161
\ 00000048 616161616161 DB 61H, 61H, 61H, 61H, 61H, 61H, 0
\ 00
\ In segment NEAR_ID, align 1, keep-with-next
\ `?<Initializer for test>`:
\ 00000000 .... DW `?<Constant "aaaaaaaaaaaaaaaaaaaaa...">`
\ In segment NEAR_I, align 1, keep-with-next
\ 00000000 REQUIRE `?<Segment init: NEAR_I>`
\ `?<Constant "aaaaaaaaaaaaaaaaaaaaa...">`:
\ 00000000 DS 79
\ 0000004F REQUIRE `?<Initializer for <Constant "aaaaaaaaaaaaaaaaa`
Maximum stack usage in bytes:
Function CSTACK RSTACK
-------- ------ ------
main 0 2
-> systemInit 0 2
-> TOOLS_decodeCMTI 0 2
-> API_readmsg 0 2
-> COM_setSearchString 0 2
-> COM_rx_reset 0 2
-> COM_rx_on 0 2
systemInit 0 2
-> COM_init 0 2
-> API_phoneinit 0 2
-> COM_rx_reset 0 2
-> COM_setSearchString 0 2
-> COM_rx_on 0 2
Segment part sizes:
Function/Label Bytes
-------------- -----
nParameters 2
i 2
read_index 2
ParamBuffer 16
test 2
systemInit 30
main 86
?<Initializer for <Constant "aaaaaaaaaaaaaaaaa
79
?<Initializer for test> 2
?<Constant "aaaaaaaaaaaaaaaaaaaaa...">
79
Others 14
116 bytes in segment CODE
14 bytes in segment INITTAB
81 bytes in segment NEAR_I
81 bytes in segment NEAR_ID
22 bytes in segment NEAR_Z
197 bytes of CODE memory (+ 14 bytes shared)
103 bytes of DATA memory
Errors: none
Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -