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

📄 level2.lst

📁 此程序为利用mage8 AVR 和EM4094实现读取TYPE A类型卡的C程序、读卡稳定、这个项目我们做了好久、非常不错的程序、很适合做这方面产品的朋友们参考
💻 LST
📖 第 1 页 / 共 5 页
字号:
 380               	.LM53:
 381 0144 832F      		mov r24,r19
 382 0146 9927      		clr r25
 383 0148 8170      		andi r24,lo8(1)
 384 014a 9070      		andi r25,hi8(1)
 385 014c 072C      		mov r0,r7
 386 014e 02C0      		rjmp 2f
 387 0150 880F      	1:	lsl r24
 388 0152 991F      		rol r25
 389 0154 0A94      	2:	dec r0
 390 0156 E2F7      		brpl 1b
 391 0158 8929      		or r24,r9
 392 015a 982E      		mov r9,r24
 393 015c 7394      		inc r7
 172:level2.c      ****         data >>= 1;
 394               		.stabn 68,0,172,.LM54-ShiftFwdData
 395               	.LM54:
 396 015e 3695      		lsr r19
 173:level2.c      ****         if ( fwd_byte_bit_cnt == 8 ) 
 397               		.stabn 68,0,173,.LM55-ShiftFwdData
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccSOaaaa.s 			page 11


 398               	.LM55:
 399 0160 98E0      		ldi r25,lo8(8)
 400 0162 7916      		cp r7,r25
 401 0164 21F0      		breq .L41
 402               		.stabn 68,0,169,.LM56-ShiftFwdData
 403               	.LM56:
 404               	.L35:
 405 0166 4F5F      		subi r20,lo8(-(1))
 406 0168 4617      		cp r20,r22
 407 016a 60F3      		brlo .L38
 408 016c 0CC0      		rjmp .L40
 174:level2.c      ****         {
 175:level2.c      ****             *forward_ptr++ = fwd_byte;
 409               		.stabn 68,0,175,.LM57-ShiftFwdData
 410               	.LM57:
 411               	.L41:
 412 016e E091 0000 		lds r30,forward_ptr
 413 0172 F091 0000 		lds r31,(forward_ptr)+1
 414 0176 8193      		st Z+,r24
 415 0178 F093 0000 		sts (forward_ptr)+1,r31
 416 017c E093 0000 		sts forward_ptr,r30
 176:level2.c      ****             fwd_byte_bit_cnt = 0;
 417               		.stabn 68,0,176,.LM58-ShiftFwdData
 418               	.LM58:
 419 0180 7724      		clr r7
 177:level2.c      ****             fwd_byte = 0;
 420               		.stabn 68,0,177,.LM59-ShiftFwdData
 421               	.LM59:
 422 0182 972C      		mov r9,r7
 423 0184 F0CF      		rjmp .L35
 424               	.L40:
 178:level2.c      ****         }
 179:level2.c      ****     }
 180:level2.c      ****     *forward_ptr = fwd_byte;             //store in all cases
 425               		.stabn 68,0,180,.LM60-ShiftFwdData
 426               	.LM60:
 427 0186 E091 0000 		lds r30,forward_ptr
 428 018a F091 0000 		lds r31,(forward_ptr)+1
 429 018e 9082      		st Z,r9
 181:level2.c      **** }
 430               		.stabn 68,0,181,.LM61-ShiftFwdData
 431               	.LM61:
 432               	.LBE3:
 433               	/* epilogue: frame size=0 */
 434 0190 0895      		ret
 435               	/* epilogue end (size=1) */
 436               	/* function ShiftFwdData size 43 (42) */
 437               		.size	ShiftFwdData, .-ShiftFwdData
 438               		.stabs	"i:r(4,2)",64,0,167,20
 439               		.stabn	192,0,0,.LBB3-ShiftFwdData
 440               		.stabn	224,0,0,.LBE3-ShiftFwdData
 441               	.Lscope2:
 442               		.stabs	"",36,0,0,.Lscope2-ShiftFwdData
 443               		.stabs	"Prepare_SOF:F(4,2)",36,0,191,Prepare_SOF
 444               	.global	Prepare_SOF
 445               		.type	Prepare_SOF, @function
 446               	Prepare_SOF:
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccSOaaaa.s 			page 12


 182:level2.c      **** 
 183:level2.c      **** 
 184:level2.c      **** // ********************************************************************************************
 185:level2.c      **** // Description : Prepare SOF of the Type A data before a frame.
 186:level2.c      **** // Return value:    
 187:level2.c      **** // parameter   : 
 188:level2.c      **** // ********************************************************************************************
 189:level2.c      **** 
 190:level2.c      **** uint8_t Prepare_SOF( void ) 
 191:level2.c      **** {
 447               		.stabn 68,0,191,.LM62-Prepare_SOF
 448               	.LM62:
 449               	/* prologue: frame size=0 */
 450               	/* prologue end (size=0) */
 192:level2.c      ****     forward_ptr = data_buffer;
 451               		.stabn 68,0,192,.LM63-Prepare_SOF
 452               	.LM63:
 453 0192 80E0      		ldi r24,lo8(data_buffer)
 454 0194 90E0      		ldi r25,hi8(data_buffer)
 455 0196 9093 0000 		sts (forward_ptr)+1,r25
 456 019a 8093 0000 		sts forward_ptr,r24
 193:level2.c      ****     fwd_byte = 0;
 457               		.stabn 68,0,193,.LM64-Prepare_SOF
 458               	.LM64:
 459 019e 9924      		clr r9
 194:level2.c      ****     fwd_byte_bit_cnt = 0;
 460               		.stabn 68,0,194,.LM65-Prepare_SOF
 461               	.LM65:
 462 01a0 792C      		mov r7,r9
 195:level2.c      ****     return 0;                               //return number of emited bits
 196:level2.c      **** }
 463               		.stabn 68,0,196,.LM66-Prepare_SOF
 464               	.LM66:
 465 01a2 80E0      		ldi r24,lo8(0)
 466 01a4 90E0      		ldi r25,hi8(0)
 467               	/* epilogue: frame size=0 */
 468 01a6 0895      		ret
 469               	/* epilogue end (size=1) */
 470               	/* function Prepare_SOF size 11 (10) */
 471               		.size	Prepare_SOF, .-Prepare_SOF
 472               	.Lscope3:
 473               		.stabs	"",36,0,0,.Lscope3-Prepare_SOF
 474               		.stabs	"Prepare_Data:F(4,2)",36,0,205,Prepare_Data
 475               		.stabs	"data:P(4,2)",64,0,204,28
 476               		.stabs	"msg_size:P(4,2)",64,0,204,17
 477               	.global	Prepare_Data
 478               		.type	Prepare_Data, @function
 479               	Prepare_Data:
 197:level2.c      **** 
 198:level2.c      **** // ********************************************************************************************
 199:level2.c      **** // Description : Prepare the data bit to be send to EM4094 DIN.
 200:level2.c      **** // Return value:    
 201:level2.c      **** // parameter   : 
 202:level2.c      **** // ********************************************************************************************
 203:level2.c      **** 
 204:level2.c      **** uint8_t Prepare_Data( uint8_t data , uint8_t msg_size )  //Type A
 205:level2.c      **** {
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccSOaaaa.s 			page 13


 480               		.stabn 68,0,205,.LM67-Prepare_Data
 481               	.LM67:
 482               	/* prologue: frame size=0 */
 483 01a8 0F93      		push r16
 484 01aa 1F93      		push r17
 485 01ac CF93      		push r28
 486               	/* prologue end (size=3) */
 487 01ae C82F      		mov r28,r24
 488 01b0 162F      		mov r17,r22
 206:level2.c      ****     uint8_t i , j = 8;
 489               		.stabn 68,0,206,.LM68-Prepare_Data
 490               	.LM68:
 491               	.LBB4:
 492 01b2 08E0      		ldi r16,lo8(8)
 207:level2.c      ****     
 208:level2.c      ****     ShiftFwdData( data , j );
 493               		.stabn 68,0,208,.LM69-Prepare_Data
 494               	.LM69:
 495 01b4 602F      		mov r22,r16
 496 01b6 C2DF      		rcall ShiftFwdData
 209:level2.c      ****     
 210:level2.c      ****     if ( msg_size > 1 ) 
 497               		.stabn 68,0,210,.LM70-Prepare_Data
 498               	.LM70:
 499 01b8 1230      		cpi r17,lo8(2)
 500 01ba 40F0      		brlo .L44
 211:level2.c      ****     {
 212:level2.c      ****         i = 1;
 501               		.stabn 68,0,212,.LM71-Prepare_Data
 502               	.LM71:
 503 01bc 81E0      		ldi r24,lo8(1)
 504               	.L49:
 213:level2.c      ****         for ( ; j > 0 ; j-- ) 
 214:level2.c      ****         {
 215:level2.c      ****             i ^= data;
 505               		.stabn 68,0,215,.LM72-Prepare_Data
 506               	.LM72:
 507 01be 8C27      		eor r24,r28
 216:level2.c      ****             data >>= 1;
 508               		.stabn 68,0,216,.LM73-Prepare_Data
 509               	.LM73:
 510 01c0 C695      		lsr r28
 511               		.stabn 68,0,213,.LM74-Prepare_Data
 512               	.LM74:
 513 01c2 0150      		subi r16,lo8(-(-1))
 514 01c4 E1F7      		brne .L49
 217:level2.c      ****         }
 218:level2.c      ****         ShiftFwdData( i , 1 );
 515               		.stabn 68,0,218,.LM75-Prepare_Data
 516               	.LM75:
 517 01c6 61E0      		ldi r22,lo8(1)
 518 01c8 B9DF      		rcall ShiftFwdData
 219:level2.c      ****         j = 9;
 519               		.stabn 68,0,219,.LM76-Prepare_Data
 520               	.LM76:
 521 01ca 09E0      		ldi r16,lo8(9)
 522               	.L44:
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccSOaaaa.s 			page 14


 220:level2.c      ****     }
 221:level2.c      ****     return j;
 523               		.stabn 68,0,221,.LM77-Prepare_Data
 524               	.LM77:
 525 01cc 802F      		mov r24,r16
 526 01ce 9927      		clr r25
 222:level2.c      **** }
 527               		.stabn 68,0,222,.LM78-Prepare_Data
 528               	.LM78:
 529               	.LBE4:
 530               	/* epilogue: frame size=0 */
 531 01d0 CF91      		pop r28
 532 01d2 1F91      		pop r17
 533 01d4 0F91      		pop r16
 534 01d6 0895      		ret
 535               	/* epilogue end (size=4) */
 536               	/* function Prepare_Data size 25 (18) */
 537               		.size	Prepare_Data, .-Prepare_Data
 538               		.stabs	"i:r(4,2)",64,0,206,24
 539               		.stabs	"j:r(4,2)",64,0,206,16
 540               		.stabn	192,0,0,.LBB4-Prepare_Data
 541               		.stabn	224,0,0,.LBE4-Prepare_Data
 542               	.Lscope4:
 543               		.stabs	"",36,0,0,.Lscope4-Prepare_Data
 544               		.stabs	"Prepare_EOF:F(4,2)",36,0,231,Prepare_EOF
 545               		.stabs	"msg_size:P(4,2)",64,0,230,25
 546               	.global	Prepare_EOF
 547               		.type	Prepare_EOF, @function
 548               	Prepare_EOF:
 223:level2.c      **** 
 224:level2.c      **** // ********************************************************************************************
 225:level2.c      **** // Description : Prepare EOF of type A .
 226:level2.c      **** // Return value:   
 227:level2.c      **** // parameter   : 
 228:level2.c      **** // ********************************************************************************************
 229:level2.c      **** 
 230:level2.c      **** uint8_t Prepare_EOF( uint8_t msg_size ) 
 231:level2.c      **** {
 549               		.stabn 68,0,231,.LM79-Prepare_EOF
 550               	.LM79:
 551               	/* prologue: frame size=0 */
 552               	/* prologue end (size=0) */
 553 01d8 982F      		mov r25,r24
 232:level2.c      ****     if ( forward_link_type == 0x02 ) 
 554               		.stabn 68,0,232,.LM80-Prepare_EOF
 555               	.LM80:
 556 01da 8091 0000 		lds r24,forward_link_type
 557 01de 8230      		cpi r24,lo8(2)
 558 01e0 29F4      		brne .L53
 233:level2.c      ****     {
 234:level2.c      ****         if ( msg_size > 1 )
 559               		.stabn 68,0,234,.LM81-Prepare_EOF
 560               	.LM81:
 561 01e2 9230      		cpi r25,lo8(2)
 562 01e4 18F0      		brlo .L53
 235:level2.c      ****         ShiftFwdData( 0 , 1 );      
 563               		.stabn 68,0,235,.LM82-Prepare_EOF
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccSOaaaa.s 			page 15


 564               	.LM82:
 565 01e6 61E0      		ldi r22,lo8(1)
 566 01e8 80E0      		ldi r24,lo8(0)
 567 01ea A8DF      		rcall ShiftFwdData
 568               	.L53:
 236:level2.c      ****     }
 237:level2.c      ****     return 0;
 238:level2.c      **** }
 569               		.stabn 68,0,238,.LM83-Prepare_EOF
 570               	.LM83:
 571 01ec 80E0      		ldi r24,lo8(0)
 572 01ee 90E0      		ldi r25,hi8(0)
 573               	/* epilogue: frame size=0 */
 574 01f0 0895      		ret
 575               	/* epilogue end (size=1) */
 576               	/* function Prepare_EOF size 13 (12) */
 577               		.size	Prepare_EOF, .-Prepare_EOF
 578               	.Lscope5:
 579               		.stabs	"",36,0,0,.Lscope5-Prepare_EOF
 580               		.stabs	"ClearCaptureBuffers:F(0,20)",36,0,247,ClearCaptureBuffers
 581               	.global	ClearCaptureBuffers
 582               		.type	ClearCaptureBuffers, @function
 583               	ClearCaptureBuffers:
 239:level2.c      **** 
 240:level2.c      **** // ********************************************************************************************
 241:level2.c      **** // Description : Clear all data in capture.decoded_data structure.
 242:level2.c      **** // Return value: None.   

⌨️ 快捷键说明

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