📄 level2.lst
字号:
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccSOaaaa.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-A_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/ccSOaaaa.s page 2
58 .stabs "C:/WinAVR/avr/include/avr/signal.h",130,0,0,0
59 .stabn 162,0,0,0
60 .stabs "C:/WinAVR/avr/include/avr/wdt.h",130,0,0,0
61 .stabn 162,0,0,0
62 .stabs "level4.h",130,0,0,0
63 .stabn 162,0,0,0
64 .stabs "level3.h",130,0,0,0
65 .stabn 162,0,0,0
66 .stabs "level2.h",130,0,0,0
67 .stabs "TDECODE:T(12,1)=s256capture_data:(12,2)=ar(12,3)=r(12,3);0000000000000;0000000177777;;0;12
68 .stabs "TDECODE:t(12,4)=(12,1)",128,0,69,0
69 .stabs "TCAPTURE:T(12,5)=s576decoded_data:(12,1),0,2048;raw_data:(12,6)=ar(12,3);0;319;(4,2),2048,
70 .stabs "TCAPTURE:t(12,7)=(12,5)",128,0,74,0
71 .stabn 162,0,0,0
72 .stabs "level1.h",130,0,0,0
73 .stabn 162,0,0,0
74 .global fwd_A_timing
75 .data
76 .type fwd_A_timing, @object
77 .size fwd_A_timing, 8
78 fwd_A_timing:
79 0000 E2FF .word -30
80 0002 94FF .word -108
81 0004 49FF .word -183
82 0006 FFFE .word -257
83 .text
84 .stabs "__vector_8:F(0,20)",36,0,53,__vector_8
85 .global __vector_8
86 .type __vector_8, @function
87 __vector_8:
1:level2.c ****
2:level2.c ****
3:level2.c **** #include <avr/io.h>
4:level2.c **** #include <inttypes.h>
5:level2.c **** #include <avr/interrupt.h>
6:level2.c **** #include <avr/signal.h>
7:level2.c **** #include <avr/wdt.h>
8:level2.c **** #include "level4.h"
9:level2.c **** #include "level3.h"
10:level2.c **** #include "level2.h"
11:level2.c **** #include "level1.h"
12:level2.c ****
13:level2.c **** //--------------------------------------------------------------
14:level2.c **** //global variables
15:level2.c ****
16:level2.c **** uint8_t bufferClean; //flag for pre-cleaning
17:level2.c **** struct TCAPTURE capture;
18:level2.c **** uint8_t * forward_ptr; //ptr for forward message preparation
19:level2.c **** uint8_t data_buffer[ CAPTURE_SIZE ]; //array of forwarded bits XOR clean response data
20:level2.c **** uint16_t fwd_A_timing[ 4 ] = { -30 , -108 , -183 , -257 }; //forward link pulse
21:level2.c **** #define SPI_DELAY 5 //dummy cycles of WaitSPI
22:level2.c **** uint8_t * fwd_write_ptr; //forwardlink bit pointer
23:level2.c **** uint16_t fwd_current_timing; //next field change in RF clocks
24:level2.c **** uint8_t fwd_this_bit; //this bit
25:level2.c ****
26:level2.c **** //aliases
27:level2.c **** #define fwd_bit_sz captured_byte
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccSOaaaa.s page 3
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 declaration
33:level2.c **** void ClearCaptureBuffers( void );
34:level2.c **** uint8_t ExtractTypeAData( uint8_t size );
35:level2.c **** uint16_t ISOCRCA( uint8_t *data , uint8_t len );
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 **** uint8_t SearchValidBit( uint8_t start , uint8_t end );
40:level2.c **** void SendForward( uint8_t fwd_bit_count );
41:level2.c **** void ShiftFwdData( uint8_t data , uint8_t cnt );
42:level2.c **** void WaitSPI( void );
43:level2.c **** void WriteSPI( uint16_t low , uint16_t hi );
44:level2.c ****
45:level2.c ****
46:level2.c **** // ********************************************************************************************
47:level2.c **** // Description : Send modified Milea code to EM4094 DIN routine .
48:level2.c **** // Return value: None
49:level2.c **** // parameter :
50:level2.c **** // ********************************************************************************************
51:level2.c ****
52:level2.c **** SIGNAL ( SIG_OVERFLOW1 )
53:level2.c **** {
88 .stabn 68,0,53,.LM1-__vector_8
89 .LM1:
90 /* prologue: frame size=0 */
91 0000 1F92 push __zero_reg__
92 0002 0F92 push __tmp_reg__
93 0004 0FB6 in __tmp_reg__,__SREG__
94 0006 0F92 push __tmp_reg__
95 0008 1124 clr __zero_reg__
96 000a 8F93 push r24
97 000c 9F93 push r25
98 000e EF93 push r30
99 0010 FF93 push r31
100 /* prologue end (size=9) */
54:level2.c **** if ( fwd_bit_sz-- == 0 ) //prepare next byte modulation
101 .stabn 68,0,54,.LM2-__vector_8
102 .LM2:
103 .LBB2:
104 0012 6A94 dec r6
105 0014 8FEF ldi r24,lo8(-1)
106 0016 6816 cp r6,r24
107 0018 09F4 brne .+2
108 001a 4BC0 rjmp .L22
55:level2.c **** {
56:level2.c **** TCCR1B = 0; //no clock T1
57:level2.c **** cbi( TIMSK , TOIE1 ); //stop
58:level2.c **** cbi( TIFR , TOV1 ); //clear pending int
59:level2.c **** return;
60:level2.c **** }
61:level2.c **** TCNT1 = fwd_current_timing;
109 .stabn 68,0,61,.LM3-__vector_8
110 .LM3:
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccSOaaaa.s page 4
111 001c 8091 0000 lds r24,fwd_current_timing
112 0020 9091 0000 lds r25,(fwd_current_timing)+1
113 0024 9DBD out (76)+1-0x20,r25
114 0026 8CBD out 76-0x20,r24
62:level2.c **** uint8_t k;
63:level2.c **** for ( k = 0 ; k < 6 ; k++ )
115 .stabn 68,0,63,.LM4-__vector_8
116 .LM4:
117 0028 E0E0 ldi r30,lo8(0)
118 .L7:
64:level2.c **** {
65:level2.c **** sbi( PORTC , MOD_PIN ); //mod pulse
119 .stabn 68,0,65,.LM5-__vector_8
120 .LM5:
121 002a A99A sbi 53-0x20,1
122 .stabn 68,0,63,.LM6-__vector_8
123 .LM6:
124 002c EF5F subi r30,lo8(-(1))
125 002e E630 cpi r30,lo8(6)
126 0030 E0F3 brlo .L7
66:level2.c **** }
67:level2.c **** cbi( PORTC , MOD_PIN );
127 .stabn 68,0,67,.LM7-__vector_8
128 .LM7:
129 0032 A998 cbi 53-0x20,1
68:level2.c **** //////////////////////////////prepare the next period timing
69:level2.c **** if ( fwd_this_bit == 0 )
130 .stabn 68,0,69,.LM8-__vector_8
131 .LM8:
132 0034 8091 0000 lds r24,fwd_this_bit
133 0038 8823 tst r24
134 003a 19F5 brne .L8
70:level2.c **** {
71:level2.c **** if ( fwd_byte & 1 )
135 .stabn 68,0,71,.LM9-__vector_8
136 .LM9:
137 003c 90FC sbrc r9,0
138 003e 1FC0 rjmp .L16
72:level2.c **** {
73:level2.c **** k = 2; //between (not the last)zero and 1
74:level2.c **** }
75:level2.c **** else
76:level2.c **** {
77:level2.c **** k = 1; //between (not the first) two zeros
78:level2.c **** }
79:level2.c ****
80:level2.c **** }
81:level2.c **** else
82:level2.c **** {
83:level2.c **** if ( fwd_byte & 1 )
84:level2.c **** {
85:level2.c **** k = 1; //between two ones
139 .stabn 68,0,85,.LM10-__vector_8
140 .LM10:
141 .L21:
142 0040 E1E0 ldi r30,lo8(1)
143 .L11:
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccSOaaaa.s page 5
86:level2.c **** }
87:level2.c **** else
88:level2.c **** {
89:level2.c **** fwd_byte >>= 1; //the first zero is skipped
90:level2.c **** if ( --fwd_byte_bit_cnt == 0 )
91:level2.c **** {
92:level2.c **** fwd_byte_bit_cnt = 8;
93:level2.c **** fwd_byte = *fwd_write_ptr++;
94:level2.c **** }
95:level2.c ****
96:level2.c **** if ( fwd_bit_sz-- == 0 )
97:level2.c **** {
98:level2.c **** TCCR1B = 0; //no clock T1
99:level2.c **** cbi( TIMSK , TOIE1 ); //stop
100:level2.c **** cbi( TIFR , TOV1 ); //clear pending int
101:level2.c **** return;
102:level2.c **** }
103:level2.c **** if ( fwd_byte & 1 )
104:level2.c **** {
105:level2.c **** k = 3; //between the one and the one with zero in between
106:level2.c **** }
107:level2.c **** else
108:level2.c **** {
109:level2.c **** k = 2; //between the one and the second zero
110:level2.c **** }
111:level2.c **** }
112:level2.c **** }
113:level2.c **** fwd_current_timing = fwd_A_timing[ k ];
144 .stabn 68,0,113,.LM11-__vector_8
145 .LM11:
146 0042 FF27 clr r31
147 0044 EE0F add r30,r30
148 0046 FF1F adc r31,r31
149 0048 E050 subi r30,lo8(-(fwd_A_timing))
150 004a F040 sbci r31,hi8(-(fwd_A_timing))
151 004c 8081 ld r24,Z
152 004e 9181 ldd r25,Z+1
153 0050 9093 0000 sts (fwd_current_timing)+1,r25
154 0054 8093 0000 sts fwd_current_timing,r24
114:level2.c **** fwd_this_bit = fwd_byte & 1;
155 .stabn 68,0,114,.LM12-__vector_8
156 .LM12:
157 0058 892D mov r24,r9
158 005a 8170 andi r24,lo8(1)
159 005c 8093 0000 sts fwd_this_bit,r24
115:level2.c **** fwd_byte >>= 1; //the first zero is skipped
160 .stabn 68,0,115,.LM13-__vector_8
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -