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

📄 level3.lst

📁 此程序为利用mage8 AVR 和EM4094实现读取TYPE A类型卡的C程序、读卡稳定、这个项目我们做了好久、非常不错的程序、很适合做这方面产品的朋友们参考
💻 LST
📖 第 1 页 / 共 5 页
字号:
 583               		.stabn 68,0,230,.LM85-TypeA_GetUID
 584               	.LM85:
 585 0220 8091 0000 		lds r24,expectedResponseLen
 586 0224 9817      		cp r25,r24
 587 0226 21F6      		brne .L34
 588               		.stabn 68,0,232,.LM86-TypeA_GetUID
 589               	.LM86:
 590 0228 90E0      		ldi r25,lo8(0)
 591 022a 20E0      		ldi r18,lo8(cmd_message+2)
 592 022c 30E0      		ldi r19,hi8(cmd_message+2)
 593 022e DE01      		movw r26,r28
 594 0230 1396      		adiw r26,3
 595 0232 40E0      		ldi r20,lo8(data_buffer)
 596 0234 50E0      		ldi r21,hi8(data_buffer)
 597               	.L39:
 598               		.stabn 68,0,234,.LM87-TypeA_GetUID
 599               	.LM87:
 600 0236 FA01      		movw r30,r20
 601 0238 8191      		ld r24,Z+
 602 023a AF01      		movw r20,r30
 603 023c 8D93      		st X+,r24
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmgaaaa.s 			page 16


 604               		.stabn 68,0,238,.LM88-TypeA_GetUID
 605               	.LM88:
 606 023e F901      		movw r30,r18
 607 0240 8193      		st Z+,r24
 608 0242 9F01      		movw r18,r30
 609               		.stabn 68,0,232,.LM89-TypeA_GetUID
 610               	.LM89:
 611 0244 9F5F      		subi r25,lo8(-(1))
 612 0246 9530      		cpi r25,lo8(5)
 613 0248 B0F3      		brlo .L39
 614               		.stabn 68,0,240,.LM90-TypeA_GetUID
 615               	.LM90:
 616 024a 8091 0000 		lds r24,data_buffer+3
 617 024e 8093 0000 		sts weigan_data,r24
 618               		.stabn 68,0,241,.LM91-TypeA_GetUID
 619               	.LM91:
 620 0252 8091 0000 		lds r24,data_buffer+2
 621 0256 8093 0000 		sts weigan_data+1,r24
 622               		.stabn 68,0,242,.LM92-TypeA_GetUID
 623               	.LM92:
 624 025a 8091 0000 		lds r24,data_buffer+1
 625 025e 8093 0000 		sts weigan_data+2,r24
 626               		.stabn 68,0,243,.LM93-TypeA_GetUID
 627               	.LM93:
 628 0262 8091 0000 		lds r24,data_buffer
 629 0266 8093 0000 		sts weigan_data+3,r24
 630               		.stabn 68,0,244,.LM94-TypeA_GetUID
 631               	.LM94:
 632 026a 8091 0000 		lds r24,data_buffer+4
 633 026e 8093 0000 		sts weigan_data+4,r24
 634               		.stabn 68,0,245,.LM95-TypeA_GetUID
 635               	.LM95:
 636 0272 85E5      		ldi r24,lo8(85)
 637 0274 8093 0000 		sts em4094_data_valid,r24
 638               		.stabn 68,0,248,.LM96-TypeA_GetUID
 639               	.LM96:
 253:level3.c      **** //            SendByte( 0xD0 + cascade );
 254:level3.c      ****             return;
 255:level3.c      ****         }
 256:level3.c      ****         
 257:level3.c      ****         expectedResponseLen = 0x18;
 258:level3.c      ****         cmd_message[ 0 ]    = cascade * 2 + 0x93;
 259:level3.c      ****         cmd_message[ 1 ]    = 0x70;              //SELECT (NVB = 0x70)
 260:level3.c      **** 
 261:level3.c      ****         uint16_t crc = ISOCRCA( cmd_message , 7 );
 262:level3.c      ****         cmd_message[ 7 ] = crc & 0xFF;
 263:level3.c      ****         cmd_message[ 8 ] = crc >> 8;
 264:level3.c      ****         
 265:level3.c      ****         Send( 9 , 30 );  
 266:level3.c      **** 
 267:level3.c      ****         Capture( );
 268:level3.c      ****        
 269:level3.c      ****         clean_data_cnt = ExtractTypeAData( 248 );
 270:level3.c      **** 
 271:level3.c      ****         if ( clean_data_cnt == expectedResponseLen ) 
 272:level3.c      ****         {
 273:level3.c      ****             crc = ISOCRCA( data_buffer , 1 );
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmgaaaa.s 			page 17


 274:level3.c      ****             if ( ( data_buffer[ 1 ] == ( crc & 0xFF ) ) && ( data_buffer[ 2 ] == ( crc >> 8 ) ) ) 
 275:level3.c      ****             {
 276:level3.c      ****                 i = ta_uid.sak[ cascade ] = data_buffer[ 0 ];
 277:level3.c      **** //                em4094_data_valid = 0x55 ;
 278:level3.c      ****             } 
 279:level3.c      ****             else 
 280:level3.c      ****             {
 281:level3.c      ****                 em4094_data_valid = 0x00 ;
 282:level3.c      **** //                SendByte( 0xE0 + cascade );
 283:level3.c      ****                 return;
 284:level3.c      ****             }
 285:level3.c      ****         } 
 286:level3.c      ****         else 
 287:level3.c      ****         {
 288:level3.c      ****             em4094_data_valid = 0x00 ;
 289:level3.c      ****             return;
 290:level3.c      ****         }
 291:level3.c      ****         wdt_reset( );
 292:level3.c      **** #ifdef WDT
 293:level3.c      ****         WatchDog_Feed( );
 294:level3.c      **** #endif
 295:level3.c      ****         i = i & 0x04;
 296:level3.c      ****         cascade++;
 297:level3.c      ****     }
 298:level3.c      **** 
 299:level3.c      ****   //return result (AppSw has to check the sak bytes!)
 300:level3.c      ****   //FormatResponse_Data( uart_command, 0, sizeof(ta_uid), (uint8_t*)&ta_uid );
 301:level3.c      **** }
 640               		.stabn 68,0,301,.LM97-TypeA_GetUID
 641               	.LM97:
 642               	.L26:
 643               	.LBE7:
 644               	.LBE5:
 645               	/* epilogue: frame size=20 */
 646 0278 6496      		adiw r28,20
 647 027a 0FB6      		in __tmp_reg__,__SREG__
 648 027c F894      		cli
 649 027e DEBF      		out __SP_H__,r29
 650 0280 0FBE      		out __SREG__,__tmp_reg__
 651 0282 CDBF      		out __SP_L__,r28
 652 0284 DF91      		pop r29
 653 0286 CF91      		pop r28
 654 0288 0895      		ret
 655               	/* epilogue end (size=9) */
 656               	/* function TypeA_GetUID size 148 (129) */
 657               		.size	TypeA_GetUID, .-TypeA_GetUID
 658               		.stabs	"i:r(4,2)",64,0,170,25
 659               		.stabs	"j:r(4,2)",64,0,170,20
 660               		.stabs	"ta_uid:(1,1)",128,0,171,1
 661               		.stabn	192,0,0,.LBB5-TypeA_GetUID
 662               		.stabn	224,0,0,.LBE5-TypeA_GetUID
 663               	.Lscope4:
 664               		.stabs	"",36,0,0,.Lscope4-TypeA_GetUID
 665               		.stabs	"ScaleOnce:F(4,4)",36,0,308,ScaleOnce
 666               		.stabs	"period:P(4,4)",64,0,307,24
 667               	.global	ScaleOnce
 668               		.type	ScaleOnce, @function
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmgaaaa.s 			page 18


 669               	ScaleOnce:
 302:level3.c      **** 
 303:level3.c      **** // ==================================================================
 304:level3.c      **** // Scale Once - minimum scale is RF/32
 305:level3.c      **** // fixed parameters - maxCaptureTimeScale
 306:level3.c      **** 
 307:level3.c      **** uint16_t ScaleOnce( uint16_t period ) 
 308:level3.c      **** {
 670               		.stabn 68,0,308,.LM98-ScaleOnce
 671               	.LM98:
 672               	/* prologue: frame size=0 */
 673               	/* prologue end (size=0) */
 309:level3.c      ****     if ( period > 255 ) 
 674               		.stabn 68,0,309,.LM99-ScaleOnce
 675               	.LM99:
 676 028a 8F3F      		cpi r24,255
 677 028c 9105      		cpc r25,__zero_reg__
 678 028e 79F0      		breq .L51
 679 0290 70F0      		brlo .L51
 310:level3.c      ****     {
 311:level3.c      ****         period /= 2;
 680               		.stabn 68,0,311,.LM100-ScaleOnce
 681               	.LM100:
 682 0292 9695      		lsr r25
 683 0294 8795      		ror r24
 312:level3.c      ****         if ( maxCaptureTimeScale <= 5 ) 
 684               		.stabn 68,0,312,.LM101-ScaleOnce
 685               	.LM101:
 686 0296 2091 0000 		lds r18,maxCaptureTimeScale
 687 029a 2630      		cpi r18,lo8(6)
 688 029c 58F0      		brlo .L57
 313:level3.c      ****         {
 314:level3.c      ****             maxCaptureTimeScale++;
 689               		.stabn 68,0,314,.LM102-ScaleOnce
 690               	.LM102:
 315:level3.c      ****         } 
 316:level3.c      ****         else if ( maxCaptureTimeScale == 6 ) 
 691               		.stabn 68,0,316,.LM103-ScaleOnce
 692               	.LM103:
 693 029e 2630      		cpi r18,lo8(6)
 694 02a0 39F0      		breq .L58
 317:level3.c      ****         {
 318:level3.c      ****             period /= 2;
 319:level3.c      ****             maxCaptureTimeScale++;
 320:level3.c      ****         } 
 321:level3.c      ****         else if ( period > 255 ) 
 695               		.stabn 68,0,321,.LM104-ScaleOnce
 696               	.LM104:
 697 02a2 8F3F      		cpi r24,255
 698 02a4 9105      		cpc r25,__zero_reg__
 699 02a6 19F0      		breq .L51
 700 02a8 10F0      		brlo .L51
 322:level3.c      ****         {
 323:level3.c      ****             period = 255;
 701               		.stabn 68,0,323,.LM105-ScaleOnce
 702               	.LM105:
 703 02aa 8FEF      		ldi r24,lo8(255)
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmgaaaa.s 			page 19


 704 02ac 90E0      		ldi r25,hi8(255)
 705               	.L51:
 324:level3.c      ****         }
 325:level3.c      ****     }
 326:level3.c      ****     return period;
 327:level3.c      **** }
 706               		.stabn 68,0,327,.LM106-ScaleOnce
 707               	.LM106:
 708 02ae 0895      		ret
 709               		.stabn 68,0,318,.LM107-ScaleOnce
 710               	.LM107:
 711               	.L58:
 712 02b0 9695      		lsr r25
 713 02b2 8795      		ror r24
 714               	.L57:
 715               		.stabn 68,0,319,.LM108-ScaleOnce
 716               	.LM108:
 717 02b4 2F5F      		subi r18,lo8(-(1))
 718 02b6 2093 0000 		sts maxCaptureTimeScale,r18
 719               		.stabn 68,0,327,.LM109-ScaleOnce
 720               	.LM109:
 721 02ba 0895      		ret
 722               	/* epilogue: frame size=0 */
 723 02bc 0895      		ret
 724               	/* epilogue end (size=1) */
 725               	/* function ScaleOnce size 26 (25) */
 726               		.size	ScaleOnce, .-ScaleOnce
 727               	.Lscope5:
 728               		.stabs	"",36,0,0,.Lscope5-ScaleOnce
 729               		.stabs	"ScaleTime:F(4,2)",36,0,333,ScaleTime
 730               		.stabs	"period:P(4,4)",64,0,332,18
 731               	.global	ScaleTime
 732               		.type	ScaleTime, @function
 733               	ScaleTime:
 328:level3.c      **** 
 329:level3.c      **** 
 330:level3.c      **** // ==================================================================
 331:level3.c      **** 
 332:level3.c      **** uint8_t ScaleTime( uint16_t period ) 
 333:level3.c      **** {
 734               		.stabn 68,0,333,.LM110-ScaleTime
 735               	.LM110:
 736               	/* prologue: frame size=0 */
 737 02be CF93      		push r28
 738               	/* prologue end (size=1) */
 739 02c0 9C01      		movw r18,r24
 334:level3.c      ****     uint8_t i;
 335:level3.c      ****     maxCaptureTimeScale = 3;
 740               		.stabn 68,0,335,.LM111-ScaleTime
 741               	.LM111:
 742               	.LBB8:
 743 02c2 83E0      		ldi r24,lo8(3)
 744 02c4 8093 0000 		sts maxCaptureTimeScale,r24
 336:level3.c      ****     
 337:level3.c      ****     for( i = 0 ; i < 4 ; i++ ) 
 745               		.stabn 68,0,337,.LM112-ScaleTime
 746               	.LM112:
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmgaaaa.s 			page 20


 747 02c8 C0E0      		ldi r28,lo8(0)
 748               	.L64:
 338:level3.c      ****     {
 339:level3.c      ****         period = ScaleOnce( period );
 749               		.stabn 68,0,339,.LM113-ScaleTime
 750               	.LM113:
 751 02ca C901      		movw r24,r18
 752 02cc DEDF      		rcall ScaleOnce
 753 02ce 9C01      		movw r18,r24
 754               		.stabn 68,0,337,.LM114-ScaleTime
 755               	.LM114:
 756 02d0 CF5F      		subi r28,lo8(-(1))
 757 02d2 C430      		cpi r28,lo8(4)
 758 02d4 D0F3      		brlo .L64
 340:level3.c      ****     }
 341:level3.c      ****     return period;
 759               		.stabn 68,0,341,.LM115-ScaleTime
 760               	.LM115:
 761 02d6 9927      		clr r25
 342:level3.c      **** }
 762               		.stabn 68,0,342,.LM116-ScaleTime
 763               	.LM116:
 764               	.LBE8:
 765               	/* epilogue: frame size=0 */
 766 02d8 CF91      		pop r28
 767 02da 0895      		ret
 768               	/* epilogue end (size=2) */
 769               	/* function ScaleTime size 15 (12) */
 770               		.size	ScaleTime, .-ScaleTime

⌨️ 快捷键说明

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