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

📄 level2.lst

📁 此程序为利用mage8 AVR 和EM4094实现读取TYPE A类型卡的C程序、读卡稳定、这个项目我们做了好久、非常不错的程序、很适合做这方面产品的朋友们参考
💻 LST
📖 第 1 页 / 共 5 页
字号:
 243:level2.c      **** // parameter   : None.
 244:level2.c      **** // ********************************************************************************************
 245:level2.c      **** 
 246:level2.c      **** void ClearCaptureBuffers( void ) 
 247:level2.c      **** {
 584               		.stabn 68,0,247,.LM84-ClearCaptureBuffers
 585               	.LM84:
 586               	/* prologue: frame size=0 */
 587               	/* prologue end (size=0) */
 248:level2.c      ****     uint8_t i;
 249:level2.c      ****     for( i = 0 ; i < CAPTURE_SIZE ; i++ ) 
 588               		.stabn 68,0,249,.LM85-ClearCaptureBuffers
 589               	.LM85:
 590               	.LBB5:
 591 01f2 80E0      		ldi r24,lo8(0)
 592 01f4 9FEF      		ldi r25,lo8(-1)
 593               	.L60:
 250:level2.c      ****     {
 251:level2.c      ****         capture.decoded_data.capture_data[ i ]  = 0;
 594               		.stabn 68,0,251,.LM86-ClearCaptureBuffers
 595               	.LM86:
 596 01f6 E82F      		mov r30,r24
 597 01f8 FF27      		clr r31
 598 01fa E050      		subi r30,lo8(-(capture))
 599 01fc F040      		sbci r31,hi8(-(capture))
 600 01fe 1082      		st Z,__zero_reg__
 252:level2.c      ****         capture.decoded_data.capture_valid[ i ] = 0xFF;
 601               		.stabn 68,0,252,.LM87-ClearCaptureBuffers
 602               	.LM87:
 603 0200 E058      		subi r30,lo8(-(128))
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccSOaaaa.s 			page 16


 604 0202 FF4F      		sbci r31,hi8(-(128))
 605 0204 9083      		st Z,r25
 606               		.stabn 68,0,249,.LM88-ClearCaptureBuffers
 607               	.LM88:
 608 0206 8F5F      		subi r24,lo8(-(1))
 609 0208 87FF      		sbrs r24,7
 610 020a F5CF      		rjmp .L60
 253:level2.c      ****     }
 254:level2.c      ****     
 255:level2.c      ****     bufferClean = 1;
 611               		.stabn 68,0,255,.LM89-ClearCaptureBuffers
 612               	.LM89:
 613 020c 81E0      		ldi r24,lo8(1)
 614 020e 8093 0000 		sts bufferClean,r24
 256:level2.c      **** }
 615               		.stabn 68,0,256,.LM90-ClearCaptureBuffers
 616               	.LM90:
 617               	.LBE5:
 618               	/* epilogue: frame size=0 */
 619 0212 0895      		ret
 620               	/* epilogue end (size=1) */
 621               	/* function ClearCaptureBuffers size 17 (16) */
 622               		.size	ClearCaptureBuffers, .-ClearCaptureBuffers
 623               		.stabs	"i:r(4,2)",64,0,248,24
 624               		.stabn	192,0,0,.LBB5-ClearCaptureBuffers
 625               		.stabn	224,0,0,.LBE5-ClearCaptureBuffers
 626               	.Lscope6:
 627               		.stabs	"",36,0,0,.Lscope6-ClearCaptureBuffers
 628               		.stabs	"WaitSPI:F(0,20)",36,0,266,WaitSPI
 629               	.global	WaitSPI
 630               		.type	WaitSPI, @function
 631               	WaitSPI:
 257:level2.c      **** 
 258:level2.c      **** 
 259:level2.c      **** // ********************************************************************************************
 260:level2.c      **** // Description : Delay some time in configure EM4094 routine(WriteSPI()).
 261:level2.c      **** // Return value: None.   
 262:level2.c      **** // parameter   : None.
 263:level2.c      **** // ********************************************************************************************
 264:level2.c      **** 
 265:level2.c      **** void WaitSPI( void ) 
 266:level2.c      **** {
 632               		.stabn 68,0,266,.LM91-WaitSPI
 633               	.LM91:
 634               	/* prologue: frame size=0 */
 635               	/* prologue end (size=0) */
 267:level2.c      ****     int register x = SPI_DELAY;
 636               		.stabn 68,0,267,.LM92-WaitSPI
 637               	.LM92:
 638               	.LBB6:
 639 0214 25E0      		ldi r18,lo8(5)
 640 0216 30E0      		ldi r19,hi8(5)
 268:level2.c      ****     while( x-- > 0 )
 641               		.stabn 68,0,268,.LM93-WaitSPI
 642               	.LM93:
 643               	.L64:
 644 0218 C901      		movw r24,r18
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccSOaaaa.s 			page 17


 645 021a 2150      		subi r18,lo8(-(-1))
 646 021c 3040      		sbci r19,hi8(-(-1))
 647 021e 1816      		cp __zero_reg__,r24
 648 0220 1906      		cpc __zero_reg__,r25
 649 0222 D4F3      		brlt .L64
 269:level2.c      ****     {}
 270:level2.c      **** }
 650               		.stabn 68,0,270,.LM94-WaitSPI
 651               	.LM94:
 652               	.LBE6:
 653               	/* epilogue: frame size=0 */
 654 0224 0895      		ret
 655               	/* epilogue end (size=1) */
 656               	/* function WaitSPI size 9 (8) */
 657               		.size	WaitSPI, .-WaitSPI
 658               		.stabs	"x:r(0,1)",64,0,267,18
 659               		.stabn	192,0,0,.LBB6-WaitSPI
 660               		.stabn	224,0,0,.LBE6-WaitSPI
 661               	.Lscope7:
 662               		.stabs	"",36,0,0,.Lscope7-WaitSPI
 663               		.stabs	"WriteSPI:F(0,20)",36,0,280,WriteSPI
 664               		.stabs	"low:P(4,4)",64,0,279,24
 665               		.stabs	"hi:P(4,4)",64,0,279,14
 666               	.global	WriteSPI
 667               		.type	WriteSPI, @function
 668               	WriteSPI:
 271:level2.c      **** 
 272:level2.c      **** // ********************************************************************************************
 273:level2.c      **** // Description : Configure the EM4094 31 option bit.
 274:level2.c      **** // Return value: None.   
 275:level2.c      **** // parameter   : low -- the low 16 bit value of 32 bit option;
 276:level2.c      **** //               hi  -- the high 16 bit value of 32 bit option.
 277:level2.c      **** // ********************************************************************************************
 278:level2.c      **** 
 279:level2.c      **** void WriteSPI( uint16_t low , uint16_t hi ) 
 280:level2.c      **** {
 669               		.stabn 68,0,280,.LM95-WriteSPI
 670               	.LM95:
 671               	/* prologue: frame size=0 */
 672 0226 EF92      		push r14
 673 0228 FF92      		push r15
 674 022a 1F93      		push r17
 675 022c CF93      		push r28
 676 022e DF93      		push r29
 677               	/* prologue end (size=5) */
 678 0230 7B01      		movw r14,r22
 281:level2.c      ****     int16_t data   = low;  
 679               		.stabn 68,0,281,.LM96-WriteSPI
 680               	.LM96:
 681               	.LBB7:
 682 0232 EC01      		movw r28,r24
 282:level2.c      ****     uint8_t bitcnt = 32;  
 283:level2.c      **** 
 284:level2.c      ****     //SPI start event
 285:level2.c      ****     cbi( PORTC , MOD_PIN );
 683               		.stabn 68,0,285,.LM97-WriteSPI
 684               	.LM97:
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccSOaaaa.s 			page 18


 685 0234 A998      		cbi 53-0x20,1
 286:level2.c      ****     WaitSPI( );
 686               		.stabn 68,0,286,.LM98-WriteSPI
 687               	.LM98:
 688 0236 EEDF      		rcall WaitSPI
 287:level2.c      ****     sbi( PORTC , DCLK_PIN );
 689               		.stabn 68,0,287,.LM99-WriteSPI
 690               	.LM99:
 691 0238 A89A      		sbi 53-0x20,0
 288:level2.c      ****     WaitSPI( );
 692               		.stabn 68,0,288,.LM100-WriteSPI
 693               	.LM100:
 694 023a ECDF      		rcall WaitSPI
 289:level2.c      ****     sbi( PORTC , MOD_PIN );
 695               		.stabn 68,0,289,.LM101-WriteSPI
 696               	.LM101:
 697 023c A99A      		sbi 53-0x20,1
 290:level2.c      ****     WaitSPI( );
 698               		.stabn 68,0,290,.LM102-WriteSPI
 699               	.LM102:
 700 023e EADF      		rcall WaitSPI
 291:level2.c      **** 
 292:level2.c      ****     while ( bitcnt-- > 0 ) 
 701               		.stabn 68,0,292,.LM103-WriteSPI
 702               	.LM103:
 703 0240 1FE1      		ldi r17,lo8(31)
 704               	.L74:
 293:level2.c      ****     {
 294:level2.c      ****         cbi( PORTC , DCLK_PIN );
 705               		.stabn 68,0,294,.LM104-WriteSPI
 706               	.LM104:
 707 0242 A898      		cbi 53-0x20,0
 295:level2.c      ****         WaitSPI( );
 708               		.stabn 68,0,295,.LM105-WriteSPI
 709               	.LM105:
 710 0244 E7DF      		rcall WaitSPI
 296:level2.c      ****         if ( data & 1 ) 
 711               		.stabn 68,0,296,.LM106-WriteSPI
 712               	.LM106:
 713 0246 C0FF      		sbrs r28,0
 714 0248 0FC0      		rjmp .L71
 297:level2.c      ****         	  sbi( PORTC , MOD_PIN ); 
 715               		.stabn 68,0,297,.LM107-WriteSPI
 716               	.LM107:
 717 024a A99A      		sbi 53-0x20,1
 718               	.L72:
 298:level2.c      ****         else 
 299:level2.c      ****         	  cbi( PORTC , MOD_PIN );
 300:level2.c      ****         WaitSPI( );
 719               		.stabn 68,0,300,.LM108-WriteSPI
 720               	.LM108:
 721 024c E3DF      		rcall WaitSPI
 301:level2.c      ****         data >>= 1;
 722               		.stabn 68,0,301,.LM109-WriteSPI
 723               	.LM109:
 724 024e D595      		asr r29
 725 0250 C795      		ror r28
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccSOaaaa.s 			page 19


 302:level2.c      ****         if ( bitcnt == 16 )
 726               		.stabn 68,0,302,.LM110-WriteSPI
 727               	.LM110:
 728 0252 1031      		cpi r17,lo8(16)
 729 0254 39F0      		breq .L77
 730               	.L73:
 303:level2.c      ****             data = hi;
 304:level2.c      ****         sbi( PORTC , DCLK_PIN );
 731               		.stabn 68,0,304,.LM111-WriteSPI
 732               	.LM111:
 733 0256 A89A      		sbi 53-0x20,0
 305:level2.c      ****         WaitSPI( );
 734               		.stabn 68,0,305,.LM112-WriteSPI
 735               	.LM112:
 736 0258 DDDF      		rcall WaitSPI
 737 025a 812F      		mov r24,r17
 738 025c 1150      		subi r17,lo8(-(-1))
 739 025e 8823      		tst r24
 740 0260 81F7      		brne .L74
 741 0262 04C0      		rjmp .L78
 742               		.stabn 68,0,303,.LM113-WriteSPI
 743               	.LM113:
 744               	.L77:
 745 0264 E701      		movw r28,r14
 746 0266 F7CF      		rjmp .L73
 747               	.L71:
 748               		.stabn 68,0,299,.LM114-WriteSPI
 749               	.LM114:
 750 0268 A998      		cbi 53-0x20,1
 751 026a F0CF      		rjmp .L72
 752               	.L78:
 306:level2.c      ****     }
 307:level2.c      ****     cbi( PORTC , DCLK_PIN );              //for the first time, DCLK is '1', for the next, enable D
 753               		.stabn 68,0,307,.LM115-WriteSPI
 754               	.LM115:
 755 026c A898      		cbi 53-0x20,0
 308:level2.c      ****     WaitSPI( );
 756               		.stabn 68,0,308,.LM116-WriteSPI
 757               	.LM116:
 758 026e D2DF      		rcall WaitSPI
 309:level2.c      ****     cbi( PORTC , MOD_PIN );
 759               		.stabn 68,0,309,.LM117-WriteSPI
 760               	.LM117:
 761 0270 A998      		cbi 53-0x20,1
 310:level2.c      **** }
 762               		.stabn 68,0,310,.LM118-WriteSPI
 763               	.LM118:
 764               	.LBE7:
 765               	/* epilogue: frame size=0 */
 766 0272 DF91      		pop r29
 767 0274 CF91      		pop r28
 768 0276 1F91      		pop r17
 769 0278 FF90      		pop r15
 770 027a EF90      		pop r14
 771 027c 0895      		ret
 772               	/* epilogue end (size=6) */
 773               	/* function WriteSPI size 44 (33) */
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccSOaaaa.s 			page 20


 774               		.size	WriteSPI, .-WriteSPI
 775               		.stabs	"data:r(4,3)",64,0,281,28
 776               		.stabs	"bitcnt:r(4,2)",64,0,282,17
 777               		.stabn	192,0,0,.LBB7-WriteSPI
 778               		.stabn	224,0,0,.LBE7-WriteSPI
 779               	.Lscope8:
 780               		.stabs	"",36,0,0,.Lscope8-WriteSPI
 781               		.stabs	"ISOCRCA:F(4,4)",36,0,320,ISOCRCA
 782               		.stabs	"data:P(1,1)=*(4,2)",64,0,319,26
 783               		.stabs	"len:P(4,2)",64,0,319,22
 784               	.global	ISOCRCA
 785               		.type	ISOCRCA, @function
 786               	ISOCRCA:
 311:level2.c      **** 
 312:level2.c      **** // ********************************************************************************************
 313:level2.c      **** // Description : Extracts decoded data of type A from capture.decoded_data to data_buffer 
 314:level2.c      **** //               in bytes.

⌨️ 快捷键说明

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