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

📄 level4.lst

📁 此程序为利用mage8 AVR 和EM4094实现读取ISO15693类型卡的C程序、读卡稳定、这个项目我们做了好久、非常不错的程序、很适合做这方面产品的朋友们参考
💻 LST
📖 第 1 页 / 共 5 页
字号:
 560               		.size	Send_Weigan26, .-Send_Weigan26
 561               		.stabs	"i:r(4,2)",64,0,248,28
 562               		.stabs	"weigan26_even_data:r(4,2)",64,0,248,14
 563               		.stabs	"parity_bit:r(4,2)",64,0,248,15
 564               		.stabs	"bit_cnt:r(4,2)",64,0,248,20
 565               		.stabn	192,0,0,.LBB3-Send_Weigan26
 566               		.stabn	224,0,0,.LBE3-Send_Weigan26
 567               	.Lscope4:
 568               		.stabs	"",36,0,0,.Lscope4-Send_Weigan26
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyKbaaa.s 			page 16


 569               		.stabs	"Send_Weigan34:F(0,20)",36,0,296,Send_Weigan34
 570               		.stabs	"data:P(1,1)",64,0,295,16
 571               	.global	Send_Weigan34
 572               		.type	Send_Weigan34, @function
 573               	Send_Weigan34:
 288:level4.c      **** 
 289:level4.c      **** // ********************************************************************************************
 290:level4.c      **** // Description : Send weigan34 model and encode according to weigan34 protocol.
 291:level4.c      **** // Return value: None.   
 292:level4.c      **** // parameter   : * data -- the point of the data to be encoded.
 293:level4.c      **** // ********************************************************************************************
 294:level4.c      **** 
 295:level4.c      **** void Send_Weigan34( uint8_t * data )
 296:level4.c      **** {
 574               		.stabn 68,0,296,.LM77-Send_Weigan34
 575               	.LM77:
 576               	/* prologue: frame size=0 */
 577 01f2 EF92      		push r14
 578 01f4 FF92      		push r15
 579 01f6 0F93      		push r16
 580 01f8 1F93      		push r17
 581 01fa CF93      		push r28
 582               	/* prologue end (size=5) */
 583 01fc 8C01      		movw r16,r24
 297:level4.c      ****     uint8_t i , weigan34_even_data , weigan34_odd_data , parity_bit , bit_cnt;
 298:level4.c      **** 	  parity_bit = 0;               //If use even parity check , this bit must be 0;
 584               		.stabn 68,0,298,.LM78-Send_Weigan34
 585               	.LM78:
 586               	.LBB4:
 587 01fe FF24      		clr r15
 299:level4.c      **** 	  for ( i = 0 ; i < 16 ; i++ )
 588               		.stabn 68,0,299,.LM79-Send_Weigan34
 589               	.LM79:
 590 0200 CF2D      		mov r28,r15
 591               	.L74:
 300:level4.c      **** 	  {
 301:level4.c      **** 	  	  bit_cnt = i % 8 ;
 592               		.stabn 68,0,301,.LM80-Send_Weigan34
 593               	.LM80:
 594 0202 4C2F      		mov r20,r28
 595 0204 4770      		andi r20,lo8(7)
 302:level4.c      **** 	  	  parity_bit ^= ( data[ i / 8 ] >> ( 7 - bit_cnt ) ) & 0x01; 
 596               		.stabn 68,0,302,.LM81-Send_Weigan34
 597               	.LM81:
 598 0206 8C2F      		mov r24,r28
 599 0208 8695      		lsr r24
 600 020a 8695      		lsr r24
 601 020c 8695      		lsr r24
 602 020e F801      		movw r30,r16
 603 0210 E80F      		add r30,r24
 604 0212 F11D      		adc r31,__zero_reg__
 605 0214 8081      		ld r24,Z
 606 0216 282F      		mov r18,r24
 607 0218 3327      		clr r19
 608 021a 87E0      		ldi r24,lo8(7)
 609 021c 90E0      		ldi r25,hi8(7)
 610 021e 841B      		sub r24,r20
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyKbaaa.s 			page 17


 611 0220 9109      		sbc r25,__zero_reg__
 612 0222 02C0      		rjmp 2f
 613 0224 3595      	1:	asr r19
 614 0226 2795      		ror r18
 615 0228 8A95      	2:	dec r24
 616 022a E2F7      		brpl 1b
 617 022c 822F      		mov r24,r18
 618 022e 8170      		andi r24,lo8(1)
 619 0230 F826      		eor r15,r24
 620               		.stabn 68,0,299,.LM82-Send_Weigan34
 621               	.LM82:
 622 0232 CF5F      		subi r28,lo8(-(1))
 623 0234 C031      		cpi r28,lo8(16)
 624 0236 28F3      		brlo .L74
 625 0238 C0E1      		ldi r28,lo8(16)
 303:level4.c      **** 	  }
 304:level4.c      **** 	  weigan34_even_data = parity_bit ;
 626               		.stabn 68,0,304,.LM83-Send_Weigan34
 627               	.LM83:
 628 023a EF2C      		mov r14,r15
 305:level4.c      **** 	  wdt_reset( );	 
 629               		.stabn 68,0,305,.LM84-Send_Weigan34
 630               	.LM84:
 631               	/* #APP */
 632 023c A895      		wdr
 306:level4.c      **** #ifdef WDT
 307:level4.c      ****         WatchDog_Feed( );
 633               		.stabn 68,0,307,.LM85-Send_Weigan34
 634               	.LM85:
 635               	/* #NOAPP */
 636 023e 00D0      		rcall WatchDog_Feed
 308:level4.c      **** #endif	   
 309:level4.c      **** 	  parity_bit = 1;               //If use odd parity check , this bit must be 1 ;
 637               		.stabn 68,0,309,.LM86-Send_Weigan34
 638               	.LM86:
 639 0240 91E0      		ldi r25,lo8(1)
 640 0242 F92E      		mov r15,r25
 641               	.L79:
 310:level4.c      **** 	  for ( i = 16 ; i < 32 ; i++ )
 311:level4.c      **** 	  {
 312:level4.c      **** 	      bit_cnt = i % 8;
 642               		.stabn 68,0,312,.LM87-Send_Weigan34
 643               	.LM87:
 644 0244 4C2F      		mov r20,r28
 645 0246 4770      		andi r20,lo8(7)
 313:level4.c      **** 	      parity_bit ^= ( data[ i / 8 ]	>> ( 7 - bit_cnt ) ) & 0x01;
 646               		.stabn 68,0,313,.LM88-Send_Weigan34
 647               	.LM88:
 648 0248 8C2F      		mov r24,r28
 649 024a 8695      		lsr r24
 650 024c 8695      		lsr r24
 651 024e 8695      		lsr r24
 652 0250 F801      		movw r30,r16
 653 0252 E80F      		add r30,r24
 654 0254 F11D      		adc r31,__zero_reg__
 655 0256 8081      		ld r24,Z
 656 0258 282F      		mov r18,r24
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyKbaaa.s 			page 18


 657 025a 3327      		clr r19
 658 025c 87E0      		ldi r24,lo8(7)
 659 025e 90E0      		ldi r25,hi8(7)
 660 0260 841B      		sub r24,r20
 661 0262 9109      		sbc r25,__zero_reg__
 662 0264 02C0      		rjmp 2f
 663 0266 3595      	1:	asr r19
 664 0268 2795      		ror r18
 665 026a 8A95      	2:	dec r24
 666 026c E2F7      		brpl 1b
 667 026e 822F      		mov r24,r18
 668 0270 8170      		andi r24,lo8(1)
 669 0272 F826      		eor r15,r24
 670               		.stabn 68,0,310,.LM89-Send_Weigan34
 671               	.LM89:
 672 0274 CF5F      		subi r28,lo8(-(1))
 673 0276 C032      		cpi r28,lo8(32)
 674 0278 28F3      		brlo .L79
 314:level4.c      **** 	  }
 315:level4.c      **** 	  weigan34_odd_data = parity_bit;   
 316:level4.c      **** 	  wdt_reset( );	 
 675               		.stabn 68,0,316,.LM90-Send_Weigan34
 676               	.LM90:
 677               	/* #APP */
 678 027a A895      		wdr
 317:level4.c      **** #ifdef WDT
 318:level4.c      ****         WatchDog_Feed( );
 679               		.stabn 68,0,318,.LM91-Send_Weigan34
 680               	.LM91:
 681               	/* #NOAPP */
 682 027c 00D0      		rcall WatchDog_Feed
 319:level4.c      **** #endif	     
 320:level4.c      **** 	  if ( weigan34_even_data )                   //Send E bit;
 683               		.stabn 68,0,320,.LM92-Send_Weigan34
 684               	.LM92:
 685 027e EE20      		tst r14
 686 0280 11F0      		breq .L80
 321:level4.c      **** 	  	  Send_Weigan1();
 687               		.stabn 68,0,321,.LM93-Send_Weigan34
 688               	.LM93:
 689 0282 EDD0      		rcall Send_Weigan1
 690 0284 01C0      		rjmp .L81
 691               	.L80:
 322:level4.c      **** 	  else
 323:level4.c      **** 	  	  Send_Weigan0();
 692               		.stabn 68,0,323,.LM94-Send_Weigan34
 693               	.LM94:
 694 0286 F6D0      		rcall Send_Weigan0
 695               	.L81:
 324:level4.c      **** 	  for ( i = 0 ; i < 32 ; i++ )                //Send CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC;
 696               		.stabn 68,0,324,.LM95-Send_Weigan34
 697               	.LM95:
 698 0288 C0E0      		ldi r28,lo8(0)
 699               	.L88:
 325:level4.c      **** 	  {
 326:level4.c      **** 	      bit_cnt = i % 8 ;
 700               		.stabn 68,0,326,.LM96-Send_Weigan34
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyKbaaa.s 			page 19


 701               	.LM96:
 702 028a 4C2F      		mov r20,r28
 703 028c 4770      		andi r20,lo8(7)
 327:level4.c      **** 	      if ( ( data[ i / 8 ] >> ( 7 - bit_cnt ) ) & 0x01 )    //MSBit is send first;
 704               		.stabn 68,0,327,.LM97-Send_Weigan34
 705               	.LM97:
 706 028e 8C2F      		mov r24,r28
 707 0290 8695      		lsr r24
 708 0292 8695      		lsr r24
 709 0294 8695      		lsr r24
 710 0296 F801      		movw r30,r16
 711 0298 E80F      		add r30,r24
 712 029a F11D      		adc r31,__zero_reg__
 713 029c 8081      		ld r24,Z
 714 029e 282F      		mov r18,r24
 715 02a0 3327      		clr r19
 716 02a2 87E0      		ldi r24,lo8(7)
 717 02a4 90E0      		ldi r25,hi8(7)
 718 02a6 841B      		sub r24,r20
 719 02a8 9109      		sbc r25,__zero_reg__
 720 02aa 02C0      		rjmp 2f
 721 02ac 3595      	1:	asr r19
 722 02ae 2795      		ror r18
 723 02b0 8A95      	2:	dec r24
 724 02b2 E2F7      		brpl 1b
 725 02b4 20FF      		sbrs r18,0
 726 02b6 02C0      		rjmp .L86
 328:level4.c      **** 	      	  Send_Weigan1();
 727               		.stabn 68,0,328,.LM98-Send_Weigan34
 728               	.LM98:
 729 02b8 D2D0      		rcall Send_Weigan1
 730 02ba 01C0      		rjmp .L84
 731               	.L86:
 329:level4.c      **** 	      else
 330:level4.c      **** 	      	  Send_Weigan0();	
 732               		.stabn 68,0,330,.LM99-Send_Weigan34
 733               	.LM99:
 734 02bc DBD0      		rcall Send_Weigan0
 735               		.stabn 68,0,324,.LM100-Send_Weigan34
 736               	.LM100:
 737               	.L84:
 738 02be CF5F      		subi r28,lo8(-(1))
 739 02c0 C032      		cpi r28,lo8(32)
 740 02c2 18F3      		brlo .L88
 331:level4.c      **** 	  }
 332:level4.c      **** 	  if ( weigan34_odd_data )                    //Send O bit;
 741               		.stabn 68,0,332,.LM101-Send_Weigan34
 742               	.LM101:
 743 02c4 FF20      		tst r15
 744 02c6 11F0      		breq .L89
 333:level4.c      **** 	  	  Send_Weigan1();
 745               		.stabn 68,0,333,.LM102-Send_Weigan34
 746               	.LM102:
 747 02c8 CAD0      		rcall Send_Weigan1
 748 02ca 01C0      		rjmp .L69
 749               	.L89:
 334:level4.c      **** 	  else
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyKbaaa.s 			page 20


 335:level4.c      **** 	  	  Send_Weigan0();	  
 750               		.stabn 68,0,335,.LM103-Send_Weigan34
 751               	.LM103:
 752 02cc D3D0      		rcall Send_Weigan0
 336:level4.c      **** }
 753               		.stabn 68,0,336,.LM104-Send_Weigan34
 754               	.LM104:
 755               	.L69:
 756               	.LBE4:
 757               	/* epilogue: frame size=0 */
 758 02ce CF91      		pop r28
 759 02d0 1F91      		pop r17
 760 02d2 0F91      		pop r16
 761 02d4 FF90      		pop r15
 762 02d6 EF90      		pop r14
 763 02d8 0895      		ret
 764               	/* epilogue end (size=6) */
 765               	/* function Send_Weigan34 size 121 (110) */
 766               		.size	Send_Weigan34, .-Send_Weigan34
 767               		.stabs	"i:r(4,2)",64,0,297,28
 768               		.stabs	"weigan34_even_data:r(4,2)",64,0,297,14
 769               		.stabs	"parity_bit:r(4,2)",64,0,297,15
 770               		.stabs	"bit_cnt:r(4,2)",64,0,297,20
 771               		.stabn	192,0,0,.LBB4-Send_Weigan34
 772               		.stabn	224,0,0,.LBE4-Send_Weigan34
 773               	.Lscope5:
 774               		.stabs	"",36,0,0,.Lscope5-Send_Weigan34
 775               		.stabs	"Send_Weigan36:F(0,20)",36,0,345,Send_Weigan36
 776               		.stabs	"data:P(1,1)",64,0,344,16
 777               	.global	Send_Weigan36
 778               		.type	Send_Weigan36, @function
 779               	Send_Weigan36:
 337:level4.c      **** 
 338:level4.c      **** // ********************************************************************************************
 339:level4.c      **** // Description : Send weigan36 model and encode according to weigan36 protocol.
 340:level4.c      **** // Return value: None.   
 341:level4.c      **** // parameter   : * data -- the point of the data to be encoded.
 342:level4.c      **** // ********************************************************************************************
 343:level4.c      **** 
 344:level4.c      **** void Send_Weigan36( uint8_t * data )
 345:level4.c      **** {
 780               		.stabn 68,0,345,.LM105-Send_Weigan36
 781               	.LM105:
 782               	/* prologue: frame size=0 */
 783 02da EF92      		push r14

⌨️ 快捷键说明

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