⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 level2.lst

📁 此程序为利用mage8 AVR 和EM4094实现读取TYPE A类型卡的C程序、读卡稳定、这个项目我们做了好久、非常不错的程序、很适合做这方面产品的朋友们参考
💻 LST
📖 第 1 页 / 共 5 页
字号:
 161               	.LM13:
 162 0060 9694      		lsr r9
 116:level2.c      ****     if ( --fwd_byte_bit_cnt == 0 ) 
 163               		.stabn 68,0,116,.LM14-__vector_8
 164               	.LM14:
 165 0062 7A94      		dec r7
 166 0064 69F5      		brne .L1
 117:level2.c      ****     {
 118:level2.c      ****         fwd_byte_bit_cnt = 8;
 167               		.stabn 68,0,118,.LM15-__vector_8
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccSOaaaa.s 			page 6


 168               	.LM15:
 169 0066 88E0      		ldi r24,lo8(8)
 170 0068 782E      		mov r7,r24
 119:level2.c      ****         fwd_byte = *fwd_write_ptr++;
 171               		.stabn 68,0,119,.LM16-__vector_8
 172               	.LM16:
 173 006a E091 0000 		lds r30,fwd_write_ptr
 174 006e F091 0000 		lds r31,(fwd_write_ptr)+1
 175 0072 9190      		ld r9,Z+
 176 0074 F093 0000 		sts (fwd_write_ptr)+1,r31
 177 0078 E093 0000 		sts fwd_write_ptr,r30
 178 007c 21C0      		rjmp .L1
 179               	.L16:
 180               		.stabn 68,0,109,.LM17-__vector_8
 181               	.LM17:
 182 007e E2E0      		ldi r30,lo8(2)
 183 0080 E0CF      		rjmp .L11
 184               	.L8:
 185               		.stabn 68,0,83,.LM18-__vector_8
 186               	.LM18:
 187 0082 90FC      		sbrc r9,0
 188 0084 DDCF      		rjmp .L21
 189               		.stabn 68,0,89,.LM19-__vector_8
 190               	.LM19:
 191 0086 9694      		lsr r9
 192               		.stabn 68,0,90,.LM20-__vector_8
 193               	.LM20:
 194 0088 7A94      		dec r7
 195 008a 59F4      		brne .L14
 196               		.stabn 68,0,92,.LM21-__vector_8
 197               	.LM21:
 198 008c 98E0      		ldi r25,lo8(8)
 199 008e 792E      		mov r7,r25
 200               		.stabn 68,0,93,.LM22-__vector_8
 201               	.LM22:
 202 0090 E091 0000 		lds r30,fwd_write_ptr
 203 0094 F091 0000 		lds r31,(fwd_write_ptr)+1
 204 0098 9190      		ld r9,Z+
 205 009a F093 0000 		sts (fwd_write_ptr)+1,r31
 206 009e E093 0000 		sts fwd_write_ptr,r30
 207               	.L14:
 208               		.stabn 68,0,96,.LM23-__vector_8
 209               	.LM23:
 210 00a2 6A94      		dec r6
 211 00a4 8FEF      		ldi r24,lo8(-1)
 212 00a6 6816      		cp r6,r24
 213 00a8 21F0      		breq .L22
 214               		.stabn 68,0,103,.LM24-__vector_8
 215               	.LM24:
 216 00aa 90FE      		sbrs r9,0
 217 00ac E8CF      		rjmp .L16
 218               		.stabn 68,0,105,.LM25-__vector_8
 219               	.LM25:
 220 00ae E3E0      		ldi r30,lo8(3)
 221 00b0 C8CF      		rjmp .L11
 222               		.stabn 68,0,98,.LM26-__vector_8
 223               	.LM26:
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccSOaaaa.s 			page 7


 224               	.L22:
 225 00b2 1EBC      		out 78-0x20,__zero_reg__
 226               		.stabn 68,0,99,.LM27-__vector_8
 227               	.LM27:
 228 00b4 89B7      		in r24,89-0x20
 229 00b6 8B7F      		andi r24,lo8(-5)
 230 00b8 89BF      		out 89-0x20,r24
 231               		.stabn 68,0,100,.LM28-__vector_8
 232               	.LM28:
 233 00ba 88B7      		in r24,88-0x20
 234 00bc 8B7F      		andi r24,lo8(-5)
 235 00be 88BF      		out 88-0x20,r24
 236               		.stabn 68,0,101,.LM29-__vector_8
 237               	.LM29:
 120:level2.c      ****     }
 121:level2.c      **** }
 238               		.stabn 68,0,121,.LM30-__vector_8
 239               	.LM30:
 240               	.L1:
 241               	.LBE2:
 242               	/* epilogue: frame size=0 */
 243 00c0 FF91      		pop r31
 244 00c2 EF91      		pop r30
 245 00c4 9F91      		pop r25
 246 00c6 8F91      		pop r24
 247 00c8 0F90      		pop __tmp_reg__
 248 00ca 0FBE      		out __SREG__,__tmp_reg__
 249 00cc 0F90      		pop __tmp_reg__
 250 00ce 1F90      		pop __zero_reg__
 251 00d0 1895      		reti
 252               	/* epilogue end (size=9) */
 253               	/* function __vector_8 size 107 (89) */
 254               		.size	__vector_8, .-__vector_8
 255               		.stabs	"k:r(4,2)",64,0,62,30
 256               		.stabn	192,0,0,.LBB2-__vector_8
 257               		.stabn	224,0,0,.LBE2-__vector_8
 258               	.Lscope0:
 259               		.stabs	"",36,0,0,.Lscope0-__vector_8
 260               		.stabs	"SendForward:F(0,20)",36,0,130,SendForward
 261               		.stabs	"fwd_bit_count:P(4,2)",64,0,129,18
 262               	.global	SendForward
 263               		.type	SendForward, @function
 264               	SendForward:
 122:level2.c      **** 
 123:level2.c      **** // ********************************************************************************************
 124:level2.c      **** // Description : Start to send modified Milla code to EM4094 DIN.
 125:level2.c      **** // Return value: None.   
 126:level2.c      **** // parameter   : fwd_bit_count -- the number of the bit to be sent.
 127:level2.c      **** // ********************************************************************************************
 128:level2.c      **** 
 129:level2.c      **** void SendForward( uint8_t fwd_bit_count ) 
 130:level2.c      **** {
 265               		.stabn 68,0,130,.LM31-SendForward
 266               	.LM31:
 267               	/* prologue: frame size=0 */
 268               	/* prologue end (size=0) */
 269 00d2 282F      		mov r18,r24
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccSOaaaa.s 			page 8


 131:level2.c      ****     fwd_write_ptr = data_buffer;
 132:level2.c      ****     fwd_byte = *fwd_write_ptr++;
 270               		.stabn 68,0,132,.LM32-SendForward
 271               	.LM32:
 272 00d4 9090 0000 		lds r9,data_buffer
 273 00d8 80E0      		ldi r24,lo8(data_buffer+1)
 274 00da 90E0      		ldi r25,hi8(data_buffer+1)
 275 00dc 9093 0000 		sts (fwd_write_ptr)+1,r25
 276 00e0 8093 0000 		sts fwd_write_ptr,r24
 133:level2.c      ****     fwd_byte_bit_cnt = 8;
 277               		.stabn 68,0,133,.LM33-SendForward
 278               	.LM33:
 279 00e4 38E0      		ldi r19,lo8(8)
 280 00e6 732E      		mov r7,r19
 134:level2.c      ****     fwd_bit_sz = fwd_bit_count;
 281               		.stabn 68,0,134,.LM34-SendForward
 282               	.LM34:
 283 00e8 622E      		mov r6,r18
 135:level2.c      ****     fwd_bit_sz++;                                 //add 1 bit for EOF
 284               		.stabn 68,0,135,.LM35-SendForward
 285               	.LM35:
 286 00ea 6394      		inc r6
 136:level2.c      ****     if ( fwd_bit_count > 8 ) 
 287               		.stabn 68,0,136,.LM36-SendForward
 288               	.LM36:
 289 00ec 7216      		cp r7,r18
 290 00ee 08F4      		brsh .L24
 137:level2.c      ****     {
 138:level2.c      ****       fwd_bit_sz++;
 291               		.stabn 68,0,138,.LM37-SendForward
 292               	.LM37:
 293 00f0 6394      		inc r6
 294               	.L24:
 139:level2.c      ****     }
 140:level2.c      ****     fwd_this_bit = fwd_byte & 1;
 295               		.stabn 68,0,140,.LM38-SendForward
 296               	.LM38:
 297 00f2 892D      		mov r24,r9
 298 00f4 8170      		andi r24,lo8(1)
 299 00f6 8093 0000 		sts fwd_this_bit,r24
 141:level2.c      ****     fwd_byte >>= 1;
 300               		.stabn 68,0,141,.LM39-SendForward
 301               	.LM39:
 302 00fa 9694      		lsr r9
 142:level2.c      ****     fwd_byte_bit_cnt--;
 303               		.stabn 68,0,142,.LM40-SendForward
 304               	.LM40:
 305 00fc 7A94      		dec r7
 143:level2.c      **** 
 144:level2.c      ****     if ( fwd_this_bit ) 
 306               		.stabn 68,0,144,.LM41-SendForward
 307               	.LM41:
 308 00fe 8823      		tst r24
 309 0100 B1F0      		breq .L25
 145:level2.c      ****         fwd_current_timing = fwd_A_timing[ 2 ];
 310               		.stabn 68,0,145,.LM42-SendForward
 311               	.LM42:
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccSOaaaa.s 			page 9


 312 0102 8091 0000 		lds r24,fwd_A_timing+4
 313 0106 9091 0000 		lds r25,(fwd_A_timing+4)+1
 314               	.L30:
 315 010a 9093 0000 		sts (fwd_current_timing)+1,r25
 316 010e 8093 0000 		sts fwd_current_timing,r24
 146:level2.c      ****     else
 147:level2.c      ****         fwd_current_timing = fwd_A_timing[ 1 ];
 148:level2.c      ****     TCNT1 = -316;                            //minimum startup pulse length
 317               		.stabn 68,0,148,.LM43-SendForward
 318               	.LM43:
 319 0112 84EC      		ldi r24,lo8(-316)
 320 0114 9EEF      		ldi r25,hi8(-316)
 321 0116 9DBD      		out (76)+1-0x20,r25
 322 0118 8CBD      		out 76-0x20,r24
 149:level2.c      ****     cbi( PORTC , MOD_PIN );                   //notmod pulse
 323               		.stabn 68,0,149,.LM44-SendForward
 324               	.LM44:
 325 011a A998      		cbi 53-0x20,1
 150:level2.c      ****     sbi(TIMSK, TOIE1);
 326               		.stabn 68,0,150,.LM45-SendForward
 327               	.LM45:
 328 011c 89B7      		in r24,89-0x20
 329 011e 8460      		ori r24,lo8(4)
 330 0120 89BF      		out 89-0x20,r24
 151:level2.c      ****     TCCR1B = 1;                              //internal clock T1, RUN!
 331               		.stabn 68,0,151,.LM46-SendForward
 332               	.LM46:
 333 0122 81E0      		ldi r24,lo8(1)
 334 0124 8EBD      		out 78-0x20,r24
 152:level2.c      ****     // waiting for clearing TOIE1 => command sending
 153:level2.c      ****     while ( bit_is_set( TIMSK , TOIE1 ) != 0 )
 335               		.stabn 68,0,153,.LM47-SendForward
 336               	.LM47:
 337               	.L27:
 338 0126 09B6      		in __tmp_reg__,89-0x20
 339 0128 02FC      		sbrc __tmp_reg__,2
 340 012a FDCF      		rjmp .L27
 341 012c 05C0      		rjmp .L31
 342               	.L25:
 343               		.stabn 68,0,147,.LM48-SendForward
 344               	.LM48:
 345 012e 8091 0000 		lds r24,fwd_A_timing+2
 346 0132 9091 0000 		lds r25,(fwd_A_timing+2)+1
 347 0136 E9CF      		rjmp .L30
 154:level2.c      ****     {}
 155:level2.c      ****     cbi( PORTC , MOD_PIN );                   //notmod pulse
 348               		.stabn 68,0,155,.LM49-SendForward
 349               	.LM49:
 350               	.L31:
 351 0138 A998      		cbi 53-0x20,1
 156:level2.c      **** }
 352               		.stabn 68,0,156,.LM50-SendForward
 353               	.LM50:
 354               	/* epilogue: frame size=0 */
 355 013a 0895      		ret
 356               	/* epilogue end (size=1) */
 357               	/* function SendForward size 53 (52) */
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccSOaaaa.s 			page 10


 358               		.size	SendForward, .-SendForward
 359               	.Lscope1:
 360               		.stabs	"",36,0,0,.Lscope1-SendForward
 361               		.stabs	"ShiftFwdData:F(0,20)",36,0,166,ShiftFwdData
 362               		.stabs	"data:P(4,2)",64,0,165,19
 363               		.stabs	"cnt:P(4,2)",64,0,165,22
 364               	.global	ShiftFwdData
 365               		.type	ShiftFwdData, @function
 366               	ShiftFwdData:
 157:level2.c      **** 
 158:level2.c      **** // ********************************************************************************************
 159:level2.c      **** // Description : To realize the LSB to be sent first.
 160:level2.c      **** // Return value: 16 bit binary.   
 161:level2.c      **** // parameter   : data -- the btye to be sent;
 162:level2.c      **** //               cnt  -- the number of bit to be sent in data.
 163:level2.c      **** // ********************************************************************************************
 164:level2.c      **** 
 165:level2.c      **** void ShiftFwdData( uint8_t data , uint8_t cnt ) 
 166:level2.c      **** {
 367               		.stabn 68,0,166,.LM51-ShiftFwdData
 368               	.LM51:
 369               	/* prologue: frame size=0 */
 370               	/* prologue end (size=0) */
 371 013c 382F      		mov r19,r24
 167:level2.c      ****     uint8_t i;
 168:level2.c      **** 
 169:level2.c      ****     for ( i = 0 ; i < cnt ; i++ ) 
 372               		.stabn 68,0,169,.LM52-ShiftFwdData
 373               	.LM52:
 374               	.LBB3:
 375 013e 40E0      		ldi r20,lo8(0)
 376 0140 4617      		cp r20,r22
 377 0142 08F5      		brsh .L40
 378               	.L38:
 170:level2.c      ****     {
 171:level2.c      ****         fwd_byte |= ( data & 1 ) << fwd_byte_bit_cnt++;
 379               		.stabn 68,0,171,.LM53-ShiftFwdData

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -