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

📄 level4.lst

📁 此程序为利用mage8 AVR 和EM4094实现读取TYPE B类型卡的C程序、读卡稳定、这个项目我们做了好久、非常不错的程序、很适合做这方面产品的朋友们参考
💻 LST
📖 第 1 页 / 共 5 页
字号:
 641 0280 06C0      		rjmp .L63
 642               	.L83:
 234:level4.c      **** 	  else
 235:level4.c      **** 	  	  Send_Weigan0();	  
 643               		.stabn 68,0,235,.LM84-Send_Weigan34
 644               	.LM84:
 645 0282 E1D0      		rcall Send_Weigan0
 646 0284 04C0      		rjmp .L63
 647               	.L80:
 648               		.stabn 68,0,230,.LM85-Send_Weigan34
 649               	.LM85:
 650 0286 DFD0      		rcall Send_Weigan0
 651 0288 F5CF      		rjmp .L78
 652               	.L74:
 653               		.stabn 68,0,223,.LM86-Send_Weigan34
 654               	.LM86:
 655 028a DDD0      		rcall Send_Weigan0
 656 028c D9CF      		rjmp .L75
 236:level4.c      **** }
 657               		.stabn 68,0,236,.LM87-Send_Weigan34
 658               	.LM87:
 659               	.L63:
 660               	.LBE4:
 661               	/* epilogue: frame size=0 */
 662 028e CF91      		pop r28
 663 0290 1F91      		pop r17
 664 0292 0F91      		pop r16
 665 0294 FF90      		pop r15
 666 0296 EF90      		pop r14
 667 0298 DF90      		pop r13
 668 029a 0895      		ret
 669               	/* epilogue end (size=7) */
 670               	/* function Send_Weigan34 size 121 (108) */
 671               		.size	Send_Weigan34, .-Send_Weigan34
 672               		.stabs	"i:r(4,2)",64,0,203,28
 673               		.stabs	"weigan34_even_data:r(4,2)",64,0,203,22
 674               		.stabs	"parity_bit:r(4,2)",64,0,203,13
 675               		.stabs	"bit_cnt:r(4,2)",64,0,203,18
 676               		.stabn	192,0,0,.LBB4-Send_Weigan34
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQvbaaa.s 			page 17


 677               		.stabn	224,0,0,.LBE4-Send_Weigan34
 678               	.Lscope3:
 679               		.stabs	"",36,0,0,.Lscope3-Send_Weigan34
 680               		.stabs	"Send_Weigan36:F(0,20)",36,0,245,Send_Weigan36
 681               		.stabs	"data:P(1,1)",64,0,244,16
 682               	.global	Send_Weigan36
 683               		.type	Send_Weigan36, @function
 684               	Send_Weigan36:
 237:level4.c      **** 
 238:level4.c      **** // ********************************************************************************************
 239:level4.c      **** // Description : Send weigan36 model and encode according to weigan36 protocol.
 240:level4.c      **** // Return value: None.   
 241:level4.c      **** // parameter   : * data -- the point of the data to be encoded.
 242:level4.c      **** // ********************************************************************************************
 243:level4.c      **** 
 244:level4.c      **** void Send_Weigan36( uint8_t * data )
 245:level4.c      **** {
 685               		.stabn 68,0,245,.LM88-Send_Weigan36
 686               	.LM88:
 687               	/* prologue: frame size=0 */
 688 029c DF92      		push r13
 689 029e EF92      		push r14
 690 02a0 FF92      		push r15
 691 02a2 0F93      		push r16
 692 02a4 1F93      		push r17
 693 02a6 CF93      		push r28
 694               	/* prologue end (size=6) */
 695 02a8 8C01      		movw r16,r24
 246:level4.c      **** 	  uint8_t i , weigan36_even_data , weigan36_odd_data , parity_bit , bit_cnt;
 247:level4.c      **** 	  parity_bit = 1;               //If use odd parity check , this bit must be 1 ;
 696               		.stabn 68,0,247,.LM89-Send_Weigan36
 697               	.LM89:
 698               	.LBB5:
 699 02aa 51E0      		ldi r21,lo8(1)
 700 02ac D52E      		mov r13,r21
 248:level4.c      **** 	  for ( i = 0 ; i < 17 ; i++ )
 701               		.stabn 68,0,248,.LM90-Send_Weigan36
 702               	.LM90:
 703 02ae C0E0      		ldi r28,lo8(0)
 704 02b0 47E0      		ldi r20,lo8(7)
 705 02b2 50E0      		ldi r21,hi8(7)
 706               	.L96:
 249:level4.c      **** 	  {
 250:level4.c      **** 	  	  bit_cnt = i % 8 ;
 707               		.stabn 68,0,250,.LM91-Send_Weigan36
 708               	.LM91:
 709 02b4 2C2F      		mov r18,r28
 710 02b6 2770      		andi r18,lo8(7)
 251:level4.c      **** 	  	  parity_bit ^= ( data[ i / 8 ] >> ( 7 - bit_cnt ) ) & 0x01; 
 711               		.stabn 68,0,251,.LM92-Send_Weigan36
 712               	.LM92:
 713 02b8 8C2F      		mov r24,r28
 714 02ba 8695      		lsr r24
 715 02bc 8695      		lsr r24
 716 02be 8695      		lsr r24
 717 02c0 F801      		movw r30,r16
 718 02c2 E80F      		add r30,r24
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQvbaaa.s 			page 18


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


 767 0302 8081      		ld r24,Z
 768 0304 9927      		clr r25
 769 0306 FA01      		movw r30,r20
 770 0308 E21B      		sub r30,r18
 771 030a F109      		sbc r31,__zero_reg__
 772 030c 02C0      		rjmp 2f
 773 030e 9595      	1:	asr r25
 774 0310 8795      		ror r24
 775 0312 EA95      	2:	dec r30
 776 0314 E2F7      		brpl 1b
 777 0316 8170      		andi r24,lo8(1)
 778 0318 D826      		eor r13,r24
 779               		.stabn 68,0,257,.LM100-Send_Weigan36
 780               	.LM100:
 781 031a CF5F      		subi r28,lo8(-(1))
 782 031c C032      		cpi r28,lo8(32)
 783 031e 40F3      		brlo .L101
 261:level4.c      **** 	  }
 262:level4.c      **** 	  weigan36_even_data = parity_bit;
 263:level4.c      **** 	  wdt_reset( );	  
 784               		.stabn 68,0,263,.LM101-Send_Weigan36
 785               	.LM101:
 786               	/* #APP */
 787 0320 A895      		wdr
 264:level4.c      **** 	  if ( weigan36_odd_data )                    //Send O bit;
 788               		.stabn 68,0,264,.LM102-Send_Weigan36
 789               	.LM102:
 790               	/* #NOAPP */
 791 0322 6623      		tst r22
 792 0324 41F1      		breq .L102
 265:level4.c      **** 	  	  Send_Weigan1();
 793               		.stabn 68,0,265,.LM103-Send_Weigan36
 794               	.LM103:
 795 0326 84D0      		rcall Send_Weigan1
 796               	.L103:
 266:level4.c      **** 	  else
 267:level4.c      **** 	  	  Send_Weigan0();
 268:level4.c      **** 	  for ( i = 0 ; i < 32 ; i++ )                //Send CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC;
 797               		.stabn 68,0,268,.LM104-Send_Weigan36
 798               	.LM104:
 799 0328 C0E0      		ldi r28,lo8(0)
 800 032a 47E0      		ldi r20,lo8(7)
 801 032c E42E      		mov r14,r20
 802 032e F12C      		mov r15,__zero_reg__
 803               	.L110:
 269:level4.c      **** 	  {
 270:level4.c      **** 	      bit_cnt = i % 8 ;
 804               		.stabn 68,0,270,.LM105-Send_Weigan36
 805               	.LM105:
 806 0330 2C2F      		mov r18,r28
 807 0332 2770      		andi r18,lo8(7)
 271:level4.c      **** 	      if ( ( data[ i / 8 ] >> ( 7 - bit_cnt ) ) & 0x01 )   // MSBit is sent first;
 808               		.stabn 68,0,271,.LM106-Send_Weigan36
 809               	.LM106:
 810 0334 8C2F      		mov r24,r28
 811 0336 8695      		lsr r24
 812 0338 8695      		lsr r24
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQvbaaa.s 			page 20


 813 033a 8695      		lsr r24
 814 033c F801      		movw r30,r16
 815 033e E80F      		add r30,r24
 816 0340 F11D      		adc r31,__zero_reg__
 817 0342 8081      		ld r24,Z
 818 0344 9927      		clr r25
 819 0346 A701      		movw r20,r14
 820 0348 421B      		sub r20,r18
 821 034a 5109      		sbc r21,__zero_reg__
 822 034c 02C0      		rjmp 2f
 823 034e 9595      	1:	asr r25
 824 0350 8795      		ror r24
 825 0352 4A95      	2:	dec r20
 826 0354 E2F7      		brpl 1b
 827 0356 80FF      		sbrs r24,0
 828 0358 0CC0      		rjmp .L108
 272:level4.c      **** 	      	  Send_Weigan1();
 829               		.stabn 68,0,272,.LM107-Send_Weigan36
 830               	.LM107:
 831 035a 6AD0      		rcall Send_Weigan1
 832               		.stabn 68,0,268,.LM108-Send_Weigan36
 833               	.LM108:
 834               	.L106:
 835 035c CF5F      		subi r28,lo8(-(1))
 836 035e C032      		cpi r28,lo8(32)
 837 0360 38F3      		brlo .L110
 273:level4.c      **** 	      else
 274:level4.c      **** 	      	  Send_Weigan0();	
 275:level4.c      **** 	  }
 276:level4.c      **** 	  Send_Weigan0();                             //Send I bit;           
 838               		.stabn 68,0,276,.LM109-Send_Weigan36
 839               	.LM109:
 840 0362 71D0      		rcall Send_Weigan0
 277:level4.c      **** 	  Send_Weigan0();                             //Send I bit;
 841               		.stabn 68,0,277,.LM110-Send_Weigan36
 842               	.LM110:
 843 0364 70D0      		rcall Send_Weigan0
 278:level4.c      **** 	  if ( weigan36_even_data )                   //Send E bit;
 844               		.stabn 68,0,278,.LM111-Send_Weigan36
 845               	.LM111:
 846 0366 DD20      		tst r13
 847 0368 11F0      		breq .L111
 279:level4.c      **** 	  	  Send_Weigan1();
 848               		.stabn 68,0,279,.LM112-Send_Weigan36
 849               	.LM112:
 850 036a 62D0      		rcall Send_Weigan1
 851 036c 06C0      		rjmp .L91
 852               	.L111:
 280:level4.c      **** 	  else
 281:level4.c      **** 	  	  Send_Weigan0();
 853               		.stabn 68,0,281,.LM113-Send_Weigan36
 854               	.LM113:
 855 036e 6BD0      		rcall Send_Weigan0
 856 0370 04C0      		rjmp .L91
 857               	.L108:
 858               		.stabn 68,0,274,.LM114-Send_Weigan36
 859               	.LM114:
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQvbaaa.s 			page 21


 860 0372 69D0      		rcall Send_Weigan0
 861 0374 F3CF      		rjmp .L106
 862               	.L102:
 863               		.stabn 68,0,267,.LM115-Send_Weigan36
 864               	.LM115:
 865 0376 67D0      		rcall Send_Weigan0
 866 0378 D7CF      		rjmp .L103
 282:level4.c      **** }
 867               		.stabn 68,0,282,.LM116-Send_Weigan36
 868               	.LM116:
 869               	.L91:
 870               	.LBE5:
 871               	/* epilogue: frame size=0 */
 872 037a CF91      		pop r28
 873 037c 1F91      		pop r17
 874 037e 0F91      		pop r16
 875 0380 FF90      		pop r15
 876 0382 EF90      		pop r14
 877 0384 DF90      		pop r13
 878 0386 0895      		ret
 879               	/* epilogue end (size=7) */
 880               	/* function Send_Weigan36 size 123 (110) */
 881               		.size	Send_Weigan36, .-Send_Weigan36
 882               		.stabs	"i:r(4,2)",64,0,246,28
 883               		.stabs	"weigan36_odd_data:r(4,2)",64,0,246,22

⌨️ 快捷键说明

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