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

📄 level2.lst

📁 此程序为利用mage8 AVR 和EM4094实现读取TYPE B类型卡的C程序、读卡稳定、这个项目我们做了好久、非常不错的程序、很适合做这方面产品的朋友们参考
💻 LST
📖 第 1 页 / 共 4 页
字号:
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccxcaaa.s 			page 12


 178:level2.c      ****     raw_data[ i ] = 0 ;
 451               		.stabn 68,0,178,.LM59-ClearCaptureBuffers
 452               	.LM59:
 453 0164 1192      		st Z+,__zero_reg__
 454               		.stabn 68,0,177,.LM60-ClearCaptureBuffers
 455               	.LM60:
 456 0166 8F5F      		subi r24,lo8(-(1))
 457 0168 883C      		cpi r24,lo8(-56)
 458 016a E0F3      		brlo .L44
 179:level2.c      ****     bufferClean = 1;
 459               		.stabn 68,0,179,.LM61-ClearCaptureBuffers
 460               	.LM61:
 461 016c 81E0      		ldi r24,lo8(1)
 462 016e 8093 0000 		sts bufferClean,r24
 180:level2.c      **** }
 463               		.stabn 68,0,180,.LM62-ClearCaptureBuffers
 464               	.LM62:
 465               	.LBE4:
 466               	/* epilogue: frame size=0 */
 467 0172 0895      		ret
 468               	/* epilogue end (size=1) */
 469               	/* function ClearCaptureBuffers size 11 (10) */
 470               		.size	ClearCaptureBuffers, .-ClearCaptureBuffers
 471               		.stabs	"i:r(4,2)",64,0,176,24
 472               		.stabn	192,0,0,.LBB4-ClearCaptureBuffers
 473               		.stabn	224,0,0,.LBE4-ClearCaptureBuffers
 474               	.Lscope6:
 475               		.stabs	"",36,0,0,.Lscope6-ClearCaptureBuffers
 476               		.stabs	"WaitSPI:F(0,20)",36,0,186,WaitSPI
 477               	.global	WaitSPI
 478               		.type	WaitSPI, @function
 479               	WaitSPI:
 181:level2.c      **** 
 182:level2.c      **** 
 183:level2.c      **** // ==================================================================
 184:level2.c      **** 
 185:level2.c      **** void WaitSPI( void ) 
 186:level2.c      **** {
 480               		.stabn 68,0,186,.LM63-WaitSPI
 481               	.LM63:
 482               	/* prologue: frame size=0 */
 483               	/* prologue end (size=0) */
 187:level2.c      ****     int register x = SPI_DELAY;
 484               		.stabn 68,0,187,.LM64-WaitSPI
 485               	.LM64:
 486               	.LBB5:
 487 0174 25E0      		ldi r18,lo8(5)
 488 0176 30E0      		ldi r19,hi8(5)
 188:level2.c      ****     while( x-- > 0 )
 489               		.stabn 68,0,188,.LM65-WaitSPI
 490               	.LM65:
 491               	.L48:
 492 0178 C901      		movw r24,r18
 493 017a 2150      		subi r18,lo8(-(-1))
 494 017c 3040      		sbci r19,hi8(-(-1))
 495 017e 1816      		cp __zero_reg__,r24
 496 0180 1906      		cpc __zero_reg__,r25
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccxcaaa.s 			page 13


 497 0182 D4F3      		brlt .L48
 189:level2.c      ****     { }
 190:level2.c      **** }
 498               		.stabn 68,0,190,.LM66-WaitSPI
 499               	.LM66:
 500               	.LBE5:
 501               	/* epilogue: frame size=0 */
 502 0184 0895      		ret
 503               	/* epilogue end (size=1) */
 504               	/* function WaitSPI size 9 (8) */
 505               		.size	WaitSPI, .-WaitSPI
 506               		.stabs	"x:r(0,1)",64,0,187,18
 507               		.stabn	192,0,0,.LBB5-WaitSPI
 508               		.stabn	224,0,0,.LBE5-WaitSPI
 509               	.Lscope7:
 510               		.stabs	"",36,0,0,.Lscope7-WaitSPI
 511               		.stabs	"WriteSPI:F(0,20)",36,0,195,WriteSPI
 512               		.stabs	"low:P(4,4)",64,0,194,24
 513               		.stabs	"hi:P(4,4)",64,0,194,14
 514               	.global	WriteSPI
 515               		.type	WriteSPI, @function
 516               	WriteSPI:
 191:level2.c      **** 
 192:level2.c      **** // ==================================================================
 193:level2.c      **** 
 194:level2.c      **** void WriteSPI( uint16_t low , uint16_t hi ) 
 195:level2.c      **** {
 517               		.stabn 68,0,195,.LM67-WriteSPI
 518               	.LM67:
 519               	/* prologue: frame size=0 */
 520 0186 EF92      		push r14
 521 0188 FF92      		push r15
 522 018a 1F93      		push r17
 523 018c CF93      		push r28
 524 018e DF93      		push r29
 525               	/* prologue end (size=5) */
 526 0190 7B01      		movw r14,r22
 196:level2.c      ****     int16_t data   = low;  
 527               		.stabn 68,0,196,.LM68-WriteSPI
 528               	.LM68:
 529               	.LBB6:
 530 0192 EC01      		movw r28,r24
 197:level2.c      ****     uint8_t bitcnt = 32;  
 198:level2.c      **** 
 199:level2.c      ****     //SPI start event
 200:level2.c      ****     cbi( PORTC , MOD_PIN );
 531               		.stabn 68,0,200,.LM69-WriteSPI
 532               	.LM69:
 533 0194 A998      		cbi 53-0x20,1
 201:level2.c      ****     WaitSPI( );
 534               		.stabn 68,0,201,.LM70-WriteSPI
 535               	.LM70:
 536 0196 EEDF      		rcall WaitSPI
 202:level2.c      ****     sbi( PORTC , DCLK_PIN );
 537               		.stabn 68,0,202,.LM71-WriteSPI
 538               	.LM71:
 539 0198 A89A      		sbi 53-0x20,0
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccxcaaa.s 			page 14


 203:level2.c      ****     WaitSPI( );
 540               		.stabn 68,0,203,.LM72-WriteSPI
 541               	.LM72:
 542 019a ECDF      		rcall WaitSPI
 204:level2.c      ****     sbi( PORTC , MOD_PIN );
 543               		.stabn 68,0,204,.LM73-WriteSPI
 544               	.LM73:
 545 019c A99A      		sbi 53-0x20,1
 205:level2.c      ****     WaitSPI( );
 546               		.stabn 68,0,205,.LM74-WriteSPI
 547               	.LM74:
 548 019e EADF      		rcall WaitSPI
 206:level2.c      **** 
 207:level2.c      ****     while ( bitcnt-- > 0 ) 
 549               		.stabn 68,0,207,.LM75-WriteSPI
 550               	.LM75:
 551 01a0 1FE1      		ldi r17,lo8(31)
 552               	.L58:
 208:level2.c      ****     {
 209:level2.c      ****         cbi( PORTC , DCLK_PIN );
 553               		.stabn 68,0,209,.LM76-WriteSPI
 554               	.LM76:
 555 01a2 A898      		cbi 53-0x20,0
 210:level2.c      ****         WaitSPI( );
 556               		.stabn 68,0,210,.LM77-WriteSPI
 557               	.LM77:
 558 01a4 E7DF      		rcall WaitSPI
 211:level2.c      ****         if ( data & 1 ) 
 559               		.stabn 68,0,211,.LM78-WriteSPI
 560               	.LM78:
 561 01a6 C0FF      		sbrs r28,0
 562 01a8 0FC0      		rjmp .L55
 212:level2.c      ****         	  sbi( PORTC , MOD_PIN ); 
 563               		.stabn 68,0,212,.LM79-WriteSPI
 564               	.LM79:
 565 01aa A99A      		sbi 53-0x20,1
 566               	.L56:
 213:level2.c      ****         else 
 214:level2.c      ****         	  cbi( PORTC , MOD_PIN );
 215:level2.c      ****         WaitSPI( );
 567               		.stabn 68,0,215,.LM80-WriteSPI
 568               	.LM80:
 569 01ac E3DF      		rcall WaitSPI
 216:level2.c      ****         data >>= 1;
 570               		.stabn 68,0,216,.LM81-WriteSPI
 571               	.LM81:
 572 01ae D595      		asr r29
 573 01b0 C795      		ror r28
 217:level2.c      ****         if ( bitcnt == 16 )
 574               		.stabn 68,0,217,.LM82-WriteSPI
 575               	.LM82:
 576 01b2 1031      		cpi r17,lo8(16)
 577 01b4 39F0      		breq .L61
 578               	.L57:
 218:level2.c      ****             data = hi;
 219:level2.c      ****         sbi( PORTC , DCLK_PIN );
 579               		.stabn 68,0,219,.LM83-WriteSPI
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccxcaaa.s 			page 15


 580               	.LM83:
 581 01b6 A89A      		sbi 53-0x20,0
 220:level2.c      ****         WaitSPI( );
 582               		.stabn 68,0,220,.LM84-WriteSPI
 583               	.LM84:
 584 01b8 DDDF      		rcall WaitSPI
 585 01ba 812F      		mov r24,r17
 586 01bc 1150      		subi r17,lo8(-(-1))
 587 01be 8823      		tst r24
 588 01c0 81F7      		brne .L58
 589 01c2 04C0      		rjmp .L62
 590               		.stabn 68,0,218,.LM85-WriteSPI
 591               	.LM85:
 592               	.L61:
 593 01c4 E701      		movw r28,r14
 594 01c6 F7CF      		rjmp .L57
 595               	.L55:
 596               		.stabn 68,0,214,.LM86-WriteSPI
 597               	.LM86:
 598 01c8 A998      		cbi 53-0x20,1
 599 01ca F0CF      		rjmp .L56
 600               	.L62:
 221:level2.c      ****     }
 222:level2.c      ****     cbi( PORTC , DCLK_PIN );              //for the first time, DCLK is '1', for the next, enable D
 601               		.stabn 68,0,222,.LM87-WriteSPI
 602               	.LM87:
 603 01cc A898      		cbi 53-0x20,0
 223:level2.c      ****     WaitSPI( );
 604               		.stabn 68,0,223,.LM88-WriteSPI
 605               	.LM88:
 606 01ce D2DF      		rcall WaitSPI
 224:level2.c      ****     cbi( PORTC , MOD_PIN );
 607               		.stabn 68,0,224,.LM89-WriteSPI
 608               	.LM89:
 609 01d0 A998      		cbi 53-0x20,1
 225:level2.c      **** }
 610               		.stabn 68,0,225,.LM90-WriteSPI
 611               	.LM90:
 612               	.LBE6:
 613               	/* epilogue: frame size=0 */
 614 01d2 DF91      		pop r29
 615 01d4 CF91      		pop r28
 616 01d6 1F91      		pop r17
 617 01d8 FF90      		pop r15
 618 01da EF90      		pop r14
 619 01dc 0895      		ret
 620               	/* epilogue end (size=6) */
 621               	/* function WriteSPI size 44 (33) */
 622               		.size	WriteSPI, .-WriteSPI
 623               		.stabs	"data:r(4,3)",64,0,196,28
 624               		.stabs	"bitcnt:r(4,2)",64,0,197,17
 625               		.stabn	192,0,0,.LBB6-WriteSPI
 626               		.stabn	224,0,0,.LBE6-WriteSPI
 627               	.Lscope8:
 628               		.stabs	"",36,0,0,.Lscope8-WriteSPI
 629               		.stabs	"CRC:F(4,4)",36,0,230,CRC
 630               		.stabs	"data:P(1,1)=*(4,2)",64,0,229,28
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccxcaaa.s 			page 16


 631               		.stabs	"len:P(4,2)",64,0,229,24
 632               	.global	CRC
 633               		.type	CRC, @function
 634               	CRC:
 226:level2.c      **** 
 227:level2.c      **** // ==================================================================
 228:level2.c      **** 
 229:level2.c      **** uint16_t CRC( uint8_t * data , uint8_t len ) 
 230:level2.c      **** {
 635               		.stabn 68,0,230,.LM91-CRC
 636               	.LM91:
 637               	/* prologue: frame size=0 */
 638 01de CF93      		push r28
 639 01e0 DF93      		push r29
 640               	/* prologue end (size=2) */
 641 01e2 EC01      		movw r28,r24
 642 01e4 862F      		mov r24,r22
 231:level2.c      ****     uint16_t crc = 0xFFFF;        //CRC preset
 643               		.stabn 68,0,231,.LM92-CRC
 644               	.LM92:
 645               	.LBB7:
 646 01e6 2FEF      		ldi r18,lo8(-1)
 647 01e8 3FEF      		ldi r19,hi8(-1)
 232:level2.c      ****     int8_t i , j;
 233:level2.c      ****     const uint16_t poly = 0x8408; //CRC polynom
 234:level2.c      **** 
 235:level2.c      ****     for ( i = 0 ; i < len ; i++ ) 
 648               		.stabn 68,0,235,.LM93-CRC
 649               	.LM93:
 650 01ea 60E0      		ldi r22,lo8(0)
 651 01ec 40E0      		ldi r20,lo8(0)
 652 01ee 50E0      		ldi r21,hi8(0)
 653 01f0 A82F      		mov r26,r24
 654 01f2 BB27      		clr r27
 655 01f4 4A17      		cp r20,r26
 656 01f6 5B07      		cpc r21,r27
 657 01f8 04F5      		brge .L77
 658 01fa FA01      		movw r30,r20
 659 01fc 48E0      		ldi r20,lo8(-31736)
 660 01fe 54E8      		ldi r21,hi8(-31736)
 661               	.L75:
 236:level2.c      ****     {
 237:level2.c      ****         crc ^= data[ i ];
 662               		.stabn 68,0,237,.LM94-CRC
 663               	.LM94:
 664 0200 EC0F      		add r30,r28
 665 0202 FD1F      		adc r31,r29
 666 0204 8081      		ld r24,Z
 667 0206 9927      		clr r25
 668 0208 2827      		eor r18,r24
 669 020a 3927      		eor r19,r25
 238:level2.c      ****         for ( j = 0 ; j < 8 ; j++ )
 670               		.stabn 68,0,238,.LM95-CRC
 671               	.LM95:
 672 020c 87E0      		ldi r24,lo8(7)
 673               	.L74:
 239:level2.c      ****         {
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccxcaaa.s 			page 17


 240:level2.c      ****             if ( crc & 1 )
 674               		.stabn 68,0,240,.LM96-CRC
 675               	.LM96:
 676 020e 20FF      		sbrs r18,0
 677 0210 11C0      		rjmp .L72
 241:level2.c      ****                 crc = ( crc >> 1 ) ^ poly;
 678               		.stabn 68,0,241,.LM97-CRC
 679               	.LM97:
 680 0212 3695      		lsr r19
 681 0214 2795      		ror r18
 682 0216 2427      		eor r18,r20
 683 0218 3527      		eor r19,r21
 684               		.stabn 68,0,238,.LM98-CRC
 685               	.LM98:
 686               	.L70:
 687 021a 8150      		subi r24,lo8(-(-1))
 688 021c 87FF      		sbrs r24,7
 689 021e F7CF      		rjmp .L74
 690               		.stabn 68,0,235,.LM99-CRC
 691               	.LM99:
 692 0220 6F5F      		subi r22,lo8(-(1))
 693 0222 862F      		mov r24,r22
 694 0224 9927      		clr r25
 695 0226 87FD      		sbrc r24,7
 696 0228 9095      		com r25
 697 022a FC01      		movw r30,r24
 698 022c 8A17      		cp r24,r26

⌨️ 快捷键说明

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