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

📄 level4.lst

📁 此程序为利用mage8 AVR 和EM4094实现读取TYPE A类型卡的C程序、读卡稳定、这个项目我们做了好久、非常不错的程序、很适合做这方面产品的朋友们参考
💻 LST
📖 第 1 页 / 共 5 页
字号:
 644 026c 02C0      		rjmp 2f
 645 026e 9595      	1:	asr r25
 646 0270 8795      		ror r24
 647 0272 4A95      	2:	dec r20
 648 0274 E2F7      		brpl 1b
 649 0276 80FF      		sbrs r24,0
 650 0278 0AC0      		rjmp .L80
 231:level4.c      **** 	      	  Send_Weigan1();
 651               		.stabn 68,0,231,.LM84-Send_Weigan34
 652               	.LM84:
 653 027a F1D0      		rcall Send_Weigan1
 654               		.stabn 68,0,227,.LM85-Send_Weigan34
 655               	.LM85:
 656               	.L78:
 657 027c CF5F      		subi r28,lo8(-(1))
 658 027e C032      		cpi r28,lo8(32)
 659 0280 38F3      		brlo .L82
 232:level4.c      **** 	      else
 233:level4.c      **** 	      	  Send_Weigan0();	
 234:level4.c      **** 	  }
 235:level4.c      **** 	  if ( weigan34_odd_data )                    //Send O bit;
 660               		.stabn 68,0,235,.LM86-Send_Weigan34
 661               	.LM86:
 662 0282 DD20      		tst r13
 663 0284 11F0      		breq .L83
 236:level4.c      **** 	  	  Send_Weigan1();
 664               		.stabn 68,0,236,.LM87-Send_Weigan34
 665               	.LM87:
 666 0286 EBD0      		rcall Send_Weigan1
 667 0288 06C0      		rjmp .L63
 668               	.L83:
 237:level4.c      **** 	  else
 238:level4.c      **** 	  	  Send_Weigan0();	  	   
 669               		.stabn 68,0,238,.LM88-Send_Weigan34
 670               	.LM88:
 671 028a F4D0      		rcall Send_Weigan0
 672 028c 04C0      		rjmp .L63
 673               	.L80:
 674               		.stabn 68,0,233,.LM89-Send_Weigan34
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccVbaaa.s 			page 17


 675               	.LM89:
 676 028e F2D0      		rcall Send_Weigan0
 677 0290 F5CF      		rjmp .L78
 678               	.L74:
 679               		.stabn 68,0,226,.LM90-Send_Weigan34
 680               	.LM90:
 681 0292 F0D0      		rcall Send_Weigan0
 682 0294 D9CF      		rjmp .L75
 239:level4.c      **** }
 683               		.stabn 68,0,239,.LM91-Send_Weigan34
 684               	.LM91:
 685               	.L63:
 686               	.LBE4:
 687               	/* epilogue: frame size=0 */
 688 0296 CF91      		pop r28
 689 0298 1F91      		pop r17
 690 029a 0F91      		pop r16
 691 029c FF90      		pop r15
 692 029e EF90      		pop r14
 693 02a0 DF90      		pop r13
 694 02a2 0895      		ret
 695               	/* epilogue end (size=7) */
 696               	/* function Send_Weigan34 size 123 (110) */
 697               		.size	Send_Weigan34, .-Send_Weigan34
 698               		.stabs	"i:r(4,2)",64,0,200,28
 699               		.stabs	"weigan34_even_data:r(4,2)",64,0,200,15
 700               		.stabs	"parity_bit:r(4,2)",64,0,200,13
 701               		.stabs	"bit_cnt:r(4,2)",64,0,200,18
 702               		.stabn	192,0,0,.LBB4-Send_Weigan34
 703               		.stabn	224,0,0,.LBE4-Send_Weigan34
 704               	.Lscope3:
 705               		.stabs	"",36,0,0,.Lscope3-Send_Weigan34
 706               		.stabs	"Send_Weigan36:F(0,20)",36,0,248,Send_Weigan36
 707               		.stabs	"data:P(1,1)",64,0,247,16
 708               	.global	Send_Weigan36
 709               		.type	Send_Weigan36, @function
 710               	Send_Weigan36:
 240:level4.c      **** 
 241:level4.c      **** // ********************************************************************************************
 242:level4.c      **** // Description : Send weigan36 model and encode according to weigan36 protocol.
 243:level4.c      **** // Return value: None.   
 244:level4.c      **** // parameter   : * data -- the point of the data to be encoded.
 245:level4.c      **** // ********************************************************************************************
 246:level4.c      **** 
 247:level4.c      **** void Send_Weigan36( uint8_t * data )
 248:level4.c      **** {
 711               		.stabn 68,0,248,.LM92-Send_Weigan36
 712               	.LM92:
 713               	/* prologue: frame size=0 */
 714 02a4 DF92      		push r13
 715 02a6 EF92      		push r14
 716 02a8 FF92      		push r15
 717 02aa 0F93      		push r16
 718 02ac 1F93      		push r17
 719 02ae CF93      		push r28
 720               	/* prologue end (size=6) */
 721 02b0 8C01      		movw r16,r24
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccVbaaa.s 			page 18


 249:level4.c      **** 	  uint8_t i , weigan36_even_data , weigan36_odd_data , parity_bit , bit_cnt;
 250:level4.c      **** 	  parity_bit = 1;               //If use odd parity check , this bit must be 1 ;
 722               		.stabn 68,0,250,.LM93-Send_Weigan36
 723               	.LM93:
 724               	.LBB5:
 725 02b2 51E0      		ldi r21,lo8(1)
 726 02b4 D52E      		mov r13,r21
 251:level4.c      **** 	  for ( i = 0 ; i < 17 ; i++ )
 727               		.stabn 68,0,251,.LM94-Send_Weigan36
 728               	.LM94:
 729 02b6 C0E0      		ldi r28,lo8(0)
 730 02b8 47E0      		ldi r20,lo8(7)
 731 02ba 50E0      		ldi r21,hi8(7)
 732               	.L96:
 252:level4.c      **** 	  {
 253:level4.c      **** 	  	  bit_cnt = i % 8 ;
 733               		.stabn 68,0,253,.LM95-Send_Weigan36
 734               	.LM95:
 735 02bc 2C2F      		mov r18,r28
 736 02be 2770      		andi r18,lo8(7)
 254:level4.c      **** 	  	  parity_bit ^= ( data[ i / 8 ] >> ( 7 - bit_cnt ) ) & 0x01; 
 737               		.stabn 68,0,254,.LM96-Send_Weigan36
 738               	.LM96:
 739 02c0 8C2F      		mov r24,r28
 740 02c2 8695      		lsr r24
 741 02c4 8695      		lsr r24
 742 02c6 8695      		lsr r24
 743 02c8 F801      		movw r30,r16
 744 02ca E80F      		add r30,r24
 745 02cc F11D      		adc r31,__zero_reg__
 746 02ce 8081      		ld r24,Z
 747 02d0 9927      		clr r25
 748 02d2 BA01      		movw r22,r20
 749 02d4 621B      		sub r22,r18
 750 02d6 7109      		sbc r23,__zero_reg__
 751 02d8 02C0      		rjmp 2f
 752 02da 9595      	1:	asr r25
 753 02dc 8795      		ror r24
 754 02de 6A95      	2:	dec r22
 755 02e0 E2F7      		brpl 1b
 756 02e2 8170      		andi r24,lo8(1)
 757 02e4 D826      		eor r13,r24
 758               		.stabn 68,0,251,.LM97-Send_Weigan36
 759               	.LM97:
 760 02e6 CF5F      		subi r28,lo8(-(1))
 761 02e8 C131      		cpi r28,lo8(17)
 762 02ea 40F3      		brlo .L96
 763 02ec C1E1      		ldi r28,lo8(17)
 255:level4.c      **** 	  }	  
 256:level4.c      **** 	  weigan36_odd_data = parity_bit ;
 764               		.stabn 68,0,256,.LM98-Send_Weigan36
 765               	.LM98:
 766 02ee FD2C      		mov r15,r13
 257:level4.c      **** 	  wdt_reset( );
 767               		.stabn 68,0,257,.LM99-Send_Weigan36
 768               	.LM99:
 769               	/* #APP */
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccVbaaa.s 			page 19


 770 02f0 A895      		wdr
 258:level4.c      **** #ifdef WDT
 259:level4.c      ****     WatchDog_Feed( );
 771               		.stabn 68,0,259,.LM100-Send_Weigan36
 772               	.LM100:
 773               	/* #NOAPP */
 774 02f2 00D0      		rcall WatchDog_Feed
 260:level4.c      **** #endif  
 261:level4.c      **** 	  parity_bit = 0;               //If use even parity check , this bit must be 0;
 775               		.stabn 68,0,261,.LM101-Send_Weigan36
 776               	.LM101:
 777 02f4 DD24      		clr r13
 262:level4.c      **** 	  for ( i = 17 ; i < 32 ; i++ )
 778               		.stabn 68,0,262,.LM102-Send_Weigan36
 779               	.LM102:
 780 02f6 47E0      		ldi r20,lo8(7)
 781 02f8 50E0      		ldi r21,hi8(7)
 782               	.L101:
 263:level4.c      **** 	  {
 264:level4.c      **** 	      bit_cnt = i % 8;
 783               		.stabn 68,0,264,.LM103-Send_Weigan36
 784               	.LM103:
 785 02fa 2C2F      		mov r18,r28
 786 02fc 2770      		andi r18,lo8(7)
 265:level4.c      **** 	      parity_bit ^= ( data[ i / 8 ]	>> ( 7 - bit_cnt ) ) & 0x01;
 787               		.stabn 68,0,265,.LM104-Send_Weigan36
 788               	.LM104:
 789 02fe 8C2F      		mov r24,r28
 790 0300 8695      		lsr r24
 791 0302 8695      		lsr r24
 792 0304 8695      		lsr r24
 793 0306 F801      		movw r30,r16
 794 0308 E80F      		add r30,r24
 795 030a F11D      		adc r31,__zero_reg__
 796 030c 8081      		ld r24,Z
 797 030e 9927      		clr r25
 798 0310 BA01      		movw r22,r20
 799 0312 621B      		sub r22,r18
 800 0314 7109      		sbc r23,__zero_reg__
 801 0316 02C0      		rjmp 2f
 802 0318 9595      	1:	asr r25
 803 031a 8795      		ror r24
 804 031c 6A95      	2:	dec r22
 805 031e E2F7      		brpl 1b
 806 0320 8170      		andi r24,lo8(1)
 807 0322 D826      		eor r13,r24
 808               		.stabn 68,0,262,.LM105-Send_Weigan36
 809               	.LM105:
 810 0324 CF5F      		subi r28,lo8(-(1))
 811 0326 C032      		cpi r28,lo8(32)
 812 0328 40F3      		brlo .L101
 266:level4.c      **** 	  }
 267:level4.c      **** 	  weigan36_even_data = parity_bit;
 268:level4.c      **** 	  wdt_reset( );
 813               		.stabn 68,0,268,.LM106-Send_Weigan36
 814               	.LM106:
 815               	/* #APP */
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccVbaaa.s 			page 20


 816 032a A895      		wdr
 269:level4.c      **** #ifdef WDT
 270:level4.c      ****     WatchDog_Feed( );
 817               		.stabn 68,0,270,.LM107-Send_Weigan36
 818               	.LM107:
 819               	/* #NOAPP */
 820 032c 00D0      		rcall WatchDog_Feed
 271:level4.c      **** #endif	  
 272:level4.c      **** 	  if ( weigan36_odd_data )                    //Send O bit;
 821               		.stabn 68,0,272,.LM108-Send_Weigan36
 822               	.LM108:
 823 032e FF20      		tst r15
 824 0330 41F1      		breq .L102
 273:level4.c      **** 	  	  Send_Weigan1();
 825               		.stabn 68,0,273,.LM109-Send_Weigan36
 826               	.LM109:
 827 0332 95D0      		rcall Send_Weigan1
 828               	.L103:
 274:level4.c      **** 	  else
 275:level4.c      **** 	  	  Send_Weigan0();
 276:level4.c      **** 	  for ( i = 0 ; i < 32 ; i++ )                //Send CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC;
 829               		.stabn 68,0,276,.LM110-Send_Weigan36
 830               	.LM110:
 831 0334 C0E0      		ldi r28,lo8(0)
 832 0336 47E0      		ldi r20,lo8(7)
 833 0338 E42E      		mov r14,r20
 834 033a F12C      		mov r15,__zero_reg__
 835               	.L110:
 277:level4.c      **** 	  {
 278:level4.c      **** 	      bit_cnt = i % 8 ;
 836               		.stabn 68,0,278,.LM111-Send_Weigan36
 837               	.LM111:
 838 033c 2C2F      		mov r18,r28
 839 033e 2770      		andi r18,lo8(7)
 279:level4.c      **** 	      if ( ( data[ i / 8 ] >> ( 7 - bit_cnt ) ) & 0x01 )   // MSBit is sent first;
 840               		.stabn 68,0,279,.LM112-Send_Weigan36
 841               	.LM112:
 842 0340 8C2F      		mov r24,r28
 843 0342 8695      		lsr r24
 844 0344 8695      		lsr r24
 845 0346 8695      		lsr r24
 846 0348 F801      		movw r30,r16
 847 034a E80F      		add r30,r24
 848 034c F11D      		adc r31,__zero_reg__
 849 034e 8081      		ld r24,Z
 850 0350 9927      		clr r25
 851 0352 A701      		movw r20,r14
 852 0354 421B      		sub r20,r18
 853 0356 5109      		sbc r21,__zero_reg__
 854 0358 02C0      		rjmp 2f
 855 035a 9595      	1:	asr r25
 856 035c 8795      		ror r24
 857 035e 4A95      	2:	dec r20
 858 0360 E2F7      		brpl 1b
 859 0362 80FF      		sbrs r24,0
 860 0364 0CC0      		rjmp .L108
 280:level4.c      **** 	      	  Send_Weigan1();
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccVbaaa.s 			page 21


 861               		.stabn 68,0,280,.LM113-Send_Weigan36
 862               	.LM113:
 863 0366 7BD0      		rcall Send_Weigan1
 864               		.stabn 68,0,276,.LM114-Send_Weigan36
 865               	.LM114:
 866               	.L106:
 867 0368 CF5F      		subi r28,lo8(-(1))
 868 036a C032      		cpi r28,lo8(32)
 869 036c 38F3      		brlo .L110
 281:level4.c      **** 	      else
 282:level4.c      **** 	      	  Send_Weigan0();	
 283:level4.c      **** 	  }
 284:level4.c      **** 	  Send_Weigan0();                             //Send I bit;           
 870               		.stabn 68,0,284,.LM115-Send_Weigan36
 871               	.LM115:
 872 036e 82D0      		rcall Send_Weigan0
 285:level4.c      **** 	  Send_Weigan0();                             //Send I bit;
 873               		.stabn 68,0,285,.LM116-Send_Weigan36
 874               	.LM116:
 875 0370 81D0      		rcall Send_Weigan0
 286:level4.c      **** 	  if ( weigan36_even_data )                   //Send E bit;
 876               		.stabn 68,0,286,.LM117-Send_Weigan36
 877               	.LM117:
 878 0372 DD20      		tst r13
 879 0374 11F0      		breq .L111

⌨️ 快捷键说明

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