📄 level2.lst
字号:
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccxcaaa.s page 1
1 .file "level2.c"
2 .arch atmega8
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
10 .stabs "E:\\PROJECT_GCC\\ISO14443-B_OK/",100,0,0,.Ltext0
11 .stabs "level2.c",100,0,0,.Ltext0
12 .text
13 .Ltext0:
14 .stabs "gcc2_compiled.",60,0,0,0
15 .stabs "int:t(0,1)=r(0,1);-32768;32767;",128,0,0,0
16 .stabs "char:t(0,2)=@s8;r(0,2);0;255;",128,0,0,0
17 .stabs "long int:t(0,3)=@s32;r(0,3);0020000000000;0017777777777;",128,0,0,0
18 .stabs "unsigned int:t(0,4)=r(0,4);0000000000000;0000000177777;",128,0,0,0
19 .stabs "long unsigned int:t(0,5)=@s32;r(0,5);0000000000000;0037777777777;",128,0,0,0
20 .stabs "long long int:t(0,6)=@s64;r(0,6);01000000000000000000000;0777777777777777777777;",128,0,0,
21 .stabs "long long unsigned int:t(0,7)=@s64;r(0,7);0000000000000;01777777777777777777777;",128,0,0,
22 .stabs "short int:t(0,8)=r(0,8);-32768;32767;",128,0,0,0
23 .stabs "short unsigned int:t(0,9)=r(0,9);0000000000000;0000000177777;",128,0,0,0
24 .stabs "signed char:t(0,10)=@s8;r(0,10);-128;127;",128,0,0,0
25 .stabs "unsigned char:t(0,11)=@s8;r(0,11);0;255;",128,0,0,0
26 .stabs "float:t(0,12)=r(0,1);4;0;",128,0,0,0
27 .stabs "double:t(0,13)=r(0,1);4;0;",128,0,0,0
28 .stabs "long double:t(0,14)=r(0,1);4;0;",128,0,0,0
29 .stabs "complex int:t(0,15)=s4real:(0,1),0,16;imag:(0,1),16,16;;",128,0,0,0
30 .stabs "complex float:t(0,16)=R3;8;0;",128,0,0,0
31 .stabs "complex double:t(0,17)=R3;8;0;",128,0,0,0
32 .stabs "complex long double:t(0,18)=R3;8;0;",128,0,0,0
33 .stabs "__builtin_va_list:t(0,19)=*(0,20)=(0,20)",128,0,0,0
34 .stabs "_Bool:t(0,21)=@s8;-16;",128,0,0,0
35 .stabs "level2.c",130,0,0,0
36 .stabs "C:/WinAVR/avr/include/avr/io.h",130,0,0,0
37 .stabs "C:/WinAVR/avr/include/avr/sfr_defs.h",130,0,0,0
38 .stabs "C:/WinAVR/avr/include/inttypes.h",130,0,0,0
39 .stabs "int8_t:t(4,1)=(0,10)",128,0,67,0
40 .stabs "uint8_t:t(4,2)=(0,11)",128,0,72,0
41 .stabs "int16_t:t(4,3)=(0,1)",128,0,90,0
42 .stabs "uint16_t:t(4,4)=(0,4)",128,0,95,0
43 .stabs "int32_t:t(4,5)=(0,3)",128,0,106,0
44 .stabs "uint32_t:t(4,6)=(0,5)",128,0,111,0
45 .stabs "int64_t:t(4,7)=(0,6)",128,0,124,0
46 .stabs "uint64_t:t(4,8)=(0,7)",128,0,129,0
47 .stabs "intptr_t:t(4,9)=(4,3)",128,0,141,0
48 .stabs "uintptr_t:t(4,10)=(4,4)",128,0,146,0
49 .stabn 162,0,0,0
50 .stabn 162,0,0,0
51 .stabs "C:/WinAVR/avr/include/avr/iom8.h",130,0,0,0
52 .stabn 162,0,0,0
53 .stabs "C:/WinAVR/avr/include/avr/portpins.h",130,0,0,0
54 .stabn 162,0,0,0
55 .stabn 162,0,0,0
56 .stabs "C:/WinAVR/avr/include/avr/interrupt.h",130,0,0,0
57 .stabn 162,0,0,0
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccxcaaa.s page 2
58 .stabs "C:/WinAVR/avr/include/avr/signal.h",130,0,0,0
59 .stabn 162,0,0,0
60 .stabs "level4.h",130,0,0,0
61 .stabn 162,0,0,0
62 .stabs "level3.h",130,0,0,0
63 .stabn 162,0,0,0
64 .stabs "level2.h",130,0,0,0
65 .stabn 162,0,0,0
66 .stabs "level1.h",130,0,0,0
67 .stabn 162,0,0,0
68 .stabs "__vector_8:F(0,20)",36,0,48,__vector_8
69 .global __vector_8
70 .type __vector_8, @function
71 __vector_8:
1:level2.c ****
2:level2.c **** #include <avr/io.h>
3:level2.c **** #include <inttypes.h>
4:level2.c **** #include <avr/interrupt.h>
5:level2.c **** #include <avr/signal.h>
6:level2.c **** #include "level4.h"
7:level2.c **** #include "level3.h"
8:level2.c **** #include "level2.h"
9:level2.c **** #include "level1.h"
10:level2.c ****
11:level2.c **** //--------------------------------------------------------------
12:level2.c **** //global variables
13:level2.c ****
14:level2.c **** uint8_t bufferClean; //flag for pre-cleaning
15:level2.c **** uint8_t * forward_ptr; //ptr for forward message preparation
16:level2.c **** uint8_t data_buffer[ CAPTURE_SIZE ]; //array of forwarded bits XOR clean response data
17:level2.c ****
18:level2.c **** //--------------------------------------------------------------
19:level2.c **** //local variables
20:level2.c ****
21:level2.c **** #define SPI_DELAY 5 //dummy cycles of WaitSPI
22:level2.c ****
23:level2.c **** uint8_t * fwd_write_ptr; //forwardlink bit pointer
24:level2.c ****
25:level2.c ****
26:level2.c **** //aliases
27:level2.c **** #define fwd_bit_sz captured_byte
28:level2.c **** #define fwd_byte_bit_cnt captured_valid
29:level2.c **** #define fwd_byte captured_bit_count
30:level2.c ****
31:level2.c **** //----------------------------------------------------------------
32:level2.c **** //Local functions
33:level2.c **** void ClearCaptureBuffers( void );
34:level2.c **** uint16_t CRC( uint8_t *data , uint8_t len );
35:level2.c **** uint8_t ExtractTypeBData( uint8_t size );
36:level2.c **** uint8_t Prepare_Data( uint8_t data , uint8_t msg_size );
37:level2.c **** uint8_t Prepare_EOF( uint8_t msg_size );
38:level2.c **** uint8_t Prepare_SOF( void );
39:level2.c **** void SendForward( uint8_t fwd_bit_count );
40:level2.c **** void ShiftFwdData( uint8_t data , uint8_t cnt );
41:level2.c **** void WaitSPI( void );
42:level2.c **** void WriteSPI( uint16_t low , uint16_t hi );
43:level2.c ****
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccxcaaa.s page 3
44:level2.c **** // ==================================================================
45:level2.c **** // Forward link interrupt routine (implements a final state machine)
46:level2.c ****
47:level2.c **** SIGNAL ( SIG_OVERFLOW1 )
48:level2.c **** {
72 .stabn 68,0,48,.LM1-__vector_8
73 .LM1:
74 /* prologue: frame size=0 */
75 0000 1F92 push __zero_reg__
76 0002 0F92 push __tmp_reg__
77 0004 0FB6 in __tmp_reg__,__SREG__
78 0006 0F92 push __tmp_reg__
79 0008 1124 clr __zero_reg__
80 000a 8F93 push r24
81 000c 9F93 push r25
82 000e EF93 push r30
83 0010 FF93 push r31
84 /* prologue end (size=9) */
49:level2.c **** if ( fwd_bit_sz-- == 0 )
85 .stabn 68,0,49,.LM2-__vector_8
86 .LM2:
87 0012 6A94 dec r6
88 0014 8FEF ldi r24,lo8(-1)
89 0016 6816 cp r6,r24
90 0018 F1F0 breq .L7
50:level2.c **** { //prepare next bit modulation
51:level2.c **** TCCR1B = 0; //no clock T1
52:level2.c **** cbi( TIMSK , TOIE1 ); //stop
53:level2.c **** cbi( TIFR , TOV1 ); //clear pending int
54:level2.c **** return;
55:level2.c **** }
56:level2.c **** if ( forward_link_type == 0x01 ) //type B forwardlink (PCD -> PICC),
91 .stabn 68,0,56,.LM3-__vector_8
92 .LM3:
93 001a 8091 0000 lds r24,forward_link_type
94 001e 8130 cpi r24,lo8(1)
95 0020 09F5 brne .L1
57:level2.c **** {
58:level2.c **** TCNT1 = fwd_B_timing;
96 .stabn 68,0,58,.LM4-__vector_8
97 .LM4:
98 0022 8091 0000 lds r24,fwd_B_timing
99 0026 9091 0000 lds r25,(fwd_B_timing)+1
100 002a 9DBD out (76)+1-0x20,r25
101 002c 8CBD out 76-0x20,r24
59:level2.c ****
60:level2.c **** if ( fwd_byte & 1 )
102 .stabn 68,0,60,.LM5-__vector_8
103 .LM5:
104 002e 90FE sbrs r9,0
105 0030 10C0 rjmp .L4
61:level2.c **** cbi( PORTC , MOD_PIN );
106 .stabn 68,0,61,.LM6-__vector_8
107 .LM6:
108 0032 A998 cbi 53-0x20,1
109 .L5:
62:level2.c **** else
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccxcaaa.s page 4
63:level2.c **** sbi( PORTC , MOD_PIN );
64:level2.c ****
65:level2.c **** fwd_byte >>= 1;
110 .stabn 68,0,65,.LM7-__vector_8
111 .LM7:
112 0034 9694 lsr r9
66:level2.c ****
67:level2.c **** if ( --fwd_byte_bit_cnt == 0 )
113 .stabn 68,0,67,.LM8-__vector_8
114 .LM8:
115 0036 7A94 dec r7
116 0038 A9F4 brne .L1
68:level2.c **** {
69:level2.c **** fwd_byte_bit_cnt = 8;
117 .stabn 68,0,69,.LM9-__vector_8
118 .LM9:
119 003a 88E0 ldi r24,lo8(8)
120 003c 782E mov r7,r24
70:level2.c **** fwd_byte = *fwd_write_ptr++;
121 .stabn 68,0,70,.LM10-__vector_8
122 .LM10:
123 003e E091 0000 lds r30,fwd_write_ptr
124 0042 F091 0000 lds r31,(fwd_write_ptr)+1
125 0046 9190 ld r9,Z+
126 0048 F093 0000 sts (fwd_write_ptr)+1,r31
127 004c E093 0000 sts fwd_write_ptr,r30
128 0050 09C0 rjmp .L1
129 .L4:
130 .stabn 68,0,63,.LM11-__vector_8
131 .LM11:
132 0052 A99A sbi 53-0x20,1
133 0054 EFCF rjmp .L5
134 .stabn 68,0,51,.LM12-__vector_8
135 .LM12:
136 .L7:
137 0056 1EBC out 78-0x20,__zero_reg__
138 .stabn 68,0,52,.LM13-__vector_8
139 .LM13:
140 0058 89B7 in r24,89-0x20
141 005a 8B7F andi r24,lo8(-5)
142 005c 89BF out 89-0x20,r24
143 .stabn 68,0,53,.LM14-__vector_8
144 .LM14:
145 005e 88B7 in r24,88-0x20
146 0060 8B7F andi r24,lo8(-5)
147 0062 88BF out 88-0x20,r24
148 .stabn 68,0,54,.LM15-__vector_8
149 .LM15:
71:level2.c **** }
72:level2.c **** }
73:level2.c **** }
150 .stabn 68,0,73,.LM16-__vector_8
151 .LM16:
152 .L1:
153 /* epilogue: frame size=0 */
154 0064 FF91 pop r31
155 0066 EF91 pop r30
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccxcaaa.s page 5
156 0068 9F91 pop r25
157 006a 8F91 pop r24
158 006c 0F90 pop __tmp_reg__
159 006e 0FBE out __SREG__,__tmp_reg__
160 0070 0F90 pop __tmp_reg__
161 0072 1F90 pop __zero_reg__
162 0074 1895 reti
163 /* epilogue end (size=9) */
164 /* function __vector_8 size 60 (42) */
165 .size __vector_8, .-__vector_8
166 .Lscope0:
167 .stabs "",36,0,0,.Lscope0-__vector_8
168 .stabs "SendForward:F(0,20)",36,0,82,SendForward
169 .stabs "fwd_bit_count:P(4,2)",64,0,81,18
170 .global SendForward
171 .type SendForward, @function
172 SendForward:
74:level2.c ****
75:level2.c ****
76:level2.c **** // ==================================================================
77:level2.c **** // Forward Link setup function
78:level2.c **** // Requires: forwarLink_data filled with valid bits (1 bit per byte)
79:level2.c **** // fwd_bit_count set with number of bits to be sent
80:level2.c ****
81:level2.c **** void SendForward( uint8_t fwd_bit_count )
82:level2.c **** {
173 .stabn 68,0,82,.LM17-SendForward
174 .LM17:
175 /* prologue: frame size=0 */
176 /* prologue end (size=0) */
177 0076 282F mov r18,r24
83:level2.c **** fwd_write_ptr = data_buffer;
84:level2.c **** fwd_byte = *fwd_write_ptr++;
178 .stabn 68,0,84,.LM18-SendForward
179 .LM18:
180 .LBB2:
181 0078 9090 0000 lds r9,data_buffer
182 007c 80E0 ldi r24,lo8(data_buffer+1)
183 007e 90E0 ldi r25,hi8(data_buffer+1)
184 0080 9093 0000 sts (fwd_write_ptr)+1,r25
185 0084 8093 0000 sts fwd_write_ptr,r24
85:level2.c **** fwd_byte_bit_cnt = 8;
186 .stabn 68,0,85,.LM19-SendForward
187 .LM19:
188 0088 98E0 ldi r25,lo8(8)
189 008a 792E mov r7,r25
86:level2.c **** fwd_bit_sz = fwd_bit_count;
190 .stabn 68,0,86,.LM20-SendForward
191 .LM20:
192 008c 622E mov r6,r18
87:level2.c **** uint16_t i;
88:level2.c **** //type B
89:level2.c ****
90:level2.c **** for ( i = 0 ; i < 200 ; i++ )
193 .stabn 68,0,90,.LM21-SendForward
194 .LM21:
195 008e 80E0 ldi r24,lo8(0)
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccxcaaa.s page 6
196 0090 90E0 ldi r25,hi8(0)
197 .L13:
91:level2.c **** {
92:level2.c **** sbi( PORTC , MOD_PIN ); //mod pulse
198 .stabn 68,0,92,.LM22-SendForward
199 .LM22:
200 0092 A99A sbi 53-0x20,1
201 .stabn 68,0,90,.LM23-SendForward
202 .LM23:
203 0094 0196 adiw r24,1
204 0096 883C cpi r24,200
205 0098 9105 cpc r25,__zero_reg__
206 009a D8F3 brlo .L13
93:level2.c **** }
94:level2.c **** TCNT1 = -316; //minimum startup pulse length
207 .stabn 68,0,94,.LM24-SendForward
208 .LM24:
209 009c 84EC ldi r24,lo8(-316)
210 009e 9EEF ldi r25,hi8(-316)
211 00a0 9DBD out (76)+1-0x20,r25
212 00a2 8CBD out 76-0x20,r24
95:level2.c **** cbi( PORTC , MOD_PIN ); //notmod pulse
213 .stabn 68,0,95,.LM25-SendForward
214 .LM25:
215 00a4 A998 cbi 53-0x20,1
96:level2.c ****
97:level2.c **** sbi( TIMSK , TOIE1 );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -