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

📄 level4.lst

📁 此程序为利用mage8 AVR 和EM4094实现读取ISO15693类型卡的C程序、读卡稳定、这个项目我们做了好久、非常不错的程序、很适合做这方面产品的朋友们参考
💻 LST
📖 第 1 页 / 共 5 页
字号:
 784 02dc FF92      		push r15
 785 02de 0F93      		push r16
 786 02e0 1F93      		push r17
 787 02e2 CF93      		push r28
 788               	/* prologue end (size=5) */
 789 02e4 8C01      		movw r16,r24
 346:level4.c      **** 	  uint8_t i , weigan36_even_data , weigan36_odd_data , parity_bit , bit_cnt;
 347:level4.c      **** 	  parity_bit = 1;               //If use odd parity check , this bit must be 1 ;
 790               		.stabn 68,0,347,.LM106-Send_Weigan36
 791               	.LM106:
 792               	.LBB5:
 793 02e6 21E0      		ldi r18,lo8(1)
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyKbaaa.s 			page 21


 794 02e8 F22E      		mov r15,r18
 348:level4.c      **** 	  for ( i = 0 ; i < 17 ; i++ )
 795               		.stabn 68,0,348,.LM107-Send_Weigan36
 796               	.LM107:
 797 02ea C0E0      		ldi r28,lo8(0)
 798               	.L102:
 349:level4.c      **** 	  {
 350:level4.c      **** 	  	  bit_cnt = i % 8 ;
 799               		.stabn 68,0,350,.LM108-Send_Weigan36
 800               	.LM108:
 801 02ec 4C2F      		mov r20,r28
 802 02ee 4770      		andi r20,lo8(7)
 351:level4.c      **** 	  	  parity_bit ^= ( data[ i / 8 ] >> ( 7 - bit_cnt ) ) & 0x01; 
 803               		.stabn 68,0,351,.LM109-Send_Weigan36
 804               	.LM109:
 805 02f0 8C2F      		mov r24,r28
 806 02f2 8695      		lsr r24
 807 02f4 8695      		lsr r24
 808 02f6 8695      		lsr r24
 809 02f8 F801      		movw r30,r16
 810 02fa E80F      		add r30,r24
 811 02fc F11D      		adc r31,__zero_reg__
 812 02fe 8081      		ld r24,Z
 813 0300 282F      		mov r18,r24
 814 0302 3327      		clr r19
 815 0304 87E0      		ldi r24,lo8(7)
 816 0306 90E0      		ldi r25,hi8(7)
 817 0308 841B      		sub r24,r20
 818 030a 9109      		sbc r25,__zero_reg__
 819 030c 02C0      		rjmp 2f
 820 030e 3595      	1:	asr r19
 821 0310 2795      		ror r18
 822 0312 8A95      	2:	dec r24
 823 0314 E2F7      		brpl 1b
 824 0316 822F      		mov r24,r18
 825 0318 8170      		andi r24,lo8(1)
 826 031a F826      		eor r15,r24
 827               		.stabn 68,0,348,.LM110-Send_Weigan36
 828               	.LM110:
 829 031c CF5F      		subi r28,lo8(-(1))
 830 031e C131      		cpi r28,lo8(17)
 831 0320 28F3      		brlo .L102
 832 0322 C1E1      		ldi r28,lo8(17)
 352:level4.c      **** 	  }
 353:level4.c      **** 	  
 354:level4.c      **** 	  weigan36_odd_data = parity_bit ;
 833               		.stabn 68,0,354,.LM111-Send_Weigan36
 834               	.LM111:
 835 0324 EF2C      		mov r14,r15
 355:level4.c      **** 	  wdt_reset( );	
 836               		.stabn 68,0,355,.LM112-Send_Weigan36
 837               	.LM112:
 838               	/* #APP */
 839 0326 A895      		wdr
 356:level4.c      **** #ifdef WDT
 357:level4.c      ****         WatchDog_Feed( );
 840               		.stabn 68,0,357,.LM113-Send_Weigan36
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyKbaaa.s 			page 22


 841               	.LM113:
 842               	/* #NOAPP */
 843 0328 00D0      		rcall WatchDog_Feed
 358:level4.c      **** #endif	    
 359:level4.c      **** 	  parity_bit = 0;               //If use even parity check , this bit must be 0;
 844               		.stabn 68,0,359,.LM114-Send_Weigan36
 845               	.LM114:
 846 032a FF24      		clr r15
 847               	.L107:
 360:level4.c      **** 	  for ( i = 17 ; i < 32 ; i++ )
 361:level4.c      **** 	  {
 362:level4.c      **** 	      bit_cnt = i % 8;
 848               		.stabn 68,0,362,.LM115-Send_Weigan36
 849               	.LM115:
 850 032c 4C2F      		mov r20,r28
 851 032e 4770      		andi r20,lo8(7)
 363:level4.c      **** 	      parity_bit ^= ( data[ i / 8 ]	>> ( 7 - bit_cnt ) ) & 0x01;
 852               		.stabn 68,0,363,.LM116-Send_Weigan36
 853               	.LM116:
 854 0330 8C2F      		mov r24,r28
 855 0332 8695      		lsr r24
 856 0334 8695      		lsr r24
 857 0336 8695      		lsr r24
 858 0338 F801      		movw r30,r16
 859 033a E80F      		add r30,r24
 860 033c F11D      		adc r31,__zero_reg__
 861 033e 8081      		ld r24,Z
 862 0340 282F      		mov r18,r24
 863 0342 3327      		clr r19
 864 0344 87E0      		ldi r24,lo8(7)
 865 0346 90E0      		ldi r25,hi8(7)
 866 0348 841B      		sub r24,r20
 867 034a 9109      		sbc r25,__zero_reg__
 868 034c 02C0      		rjmp 2f
 869 034e 3595      	1:	asr r19
 870 0350 2795      		ror r18
 871 0352 8A95      	2:	dec r24
 872 0354 E2F7      		brpl 1b
 873 0356 822F      		mov r24,r18
 874 0358 8170      		andi r24,lo8(1)
 875 035a F826      		eor r15,r24
 876               		.stabn 68,0,360,.LM117-Send_Weigan36
 877               	.LM117:
 878 035c CF5F      		subi r28,lo8(-(1))
 879 035e C032      		cpi r28,lo8(32)
 880 0360 28F3      		brlo .L107
 364:level4.c      **** 	  }
 365:level4.c      **** 	  weigan36_even_data = parity_bit;
 366:level4.c      **** 	  wdt_reset( );	
 881               		.stabn 68,0,366,.LM118-Send_Weigan36
 882               	.LM118:
 883               	/* #APP */
 884 0362 A895      		wdr
 367:level4.c      **** #ifdef WDT
 368:level4.c      ****         WatchDog_Feed( );
 885               		.stabn 68,0,368,.LM119-Send_Weigan36
 886               	.LM119:
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyKbaaa.s 			page 23


 887               	/* #NOAPP */
 888 0364 00D0      		rcall WatchDog_Feed
 369:level4.c      **** #endif	    
 370:level4.c      **** 	  if ( weigan36_odd_data )                    //Send O bit;
 889               		.stabn 68,0,370,.LM120-Send_Weigan36
 890               	.LM120:
 891 0366 EE20      		tst r14
 892 0368 11F0      		breq .L108
 371:level4.c      **** 	  	  Send_Weigan1();
 893               		.stabn 68,0,371,.LM121-Send_Weigan36
 894               	.LM121:
 895 036a 79D0      		rcall Send_Weigan1
 896 036c 01C0      		rjmp .L109
 897               	.L108:
 372:level4.c      **** 	  else
 373:level4.c      **** 	  	  Send_Weigan0();
 898               		.stabn 68,0,373,.LM122-Send_Weigan36
 899               	.LM122:
 900 036e 82D0      		rcall Send_Weigan0
 901               	.L109:
 374:level4.c      **** 	  for ( i = 0 ; i < 32 ; i++ )                //Send CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC;
 902               		.stabn 68,0,374,.LM123-Send_Weigan36
 903               	.LM123:
 904 0370 C0E0      		ldi r28,lo8(0)
 905               	.L116:
 375:level4.c      **** 	  {
 376:level4.c      **** 	      bit_cnt = i % 8 ;
 906               		.stabn 68,0,376,.LM124-Send_Weigan36
 907               	.LM124:
 908 0372 4C2F      		mov r20,r28
 909 0374 4770      		andi r20,lo8(7)
 377:level4.c      **** 	      if ( ( data[ i / 8 ] >> ( 7 - bit_cnt ) ) & 0x01 )   // MSBit is sent first;
 910               		.stabn 68,0,377,.LM125-Send_Weigan36
 911               	.LM125:
 912 0376 8C2F      		mov r24,r28
 913 0378 8695      		lsr r24
 914 037a 8695      		lsr r24
 915 037c 8695      		lsr r24
 916 037e F801      		movw r30,r16
 917 0380 E80F      		add r30,r24
 918 0382 F11D      		adc r31,__zero_reg__
 919 0384 8081      		ld r24,Z
 920 0386 282F      		mov r18,r24
 921 0388 3327      		clr r19
 922 038a 87E0      		ldi r24,lo8(7)
 923 038c 90E0      		ldi r25,hi8(7)
 924 038e 841B      		sub r24,r20
 925 0390 9109      		sbc r25,__zero_reg__
 926 0392 02C0      		rjmp 2f
 927 0394 3595      	1:	asr r19
 928 0396 2795      		ror r18
 929 0398 8A95      	2:	dec r24
 930 039a E2F7      		brpl 1b
 931 039c 20FF      		sbrs r18,0
 932 039e 02C0      		rjmp .L114
 378:level4.c      **** 	      	  Send_Weigan1();
 933               		.stabn 68,0,378,.LM126-Send_Weigan36
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyKbaaa.s 			page 24


 934               	.LM126:
 935 03a0 5ED0      		rcall Send_Weigan1
 936 03a2 01C0      		rjmp .L112
 937               	.L114:
 379:level4.c      **** 	      else
 380:level4.c      **** 	      	  Send_Weigan0();	
 938               		.stabn 68,0,380,.LM127-Send_Weigan36
 939               	.LM127:
 940 03a4 67D0      		rcall Send_Weigan0
 941               		.stabn 68,0,374,.LM128-Send_Weigan36
 942               	.LM128:
 943               	.L112:
 944 03a6 CF5F      		subi r28,lo8(-(1))
 945 03a8 C032      		cpi r28,lo8(32)
 946 03aa 18F3      		brlo .L116
 381:level4.c      **** 	  }
 382:level4.c      **** 	  Send_Weigan0();                             //Send I bit;           
 947               		.stabn 68,0,382,.LM129-Send_Weigan36
 948               	.LM129:
 949 03ac 63D0      		rcall Send_Weigan0
 383:level4.c      **** 	  Send_Weigan0();                             //Send I bit;
 950               		.stabn 68,0,383,.LM130-Send_Weigan36
 951               	.LM130:
 952 03ae 62D0      		rcall Send_Weigan0
 384:level4.c      **** 	  if ( weigan36_even_data )                   //Send E bit;
 953               		.stabn 68,0,384,.LM131-Send_Weigan36
 954               	.LM131:
 955 03b0 FF20      		tst r15
 956 03b2 11F0      		breq .L117
 385:level4.c      **** 	  	  Send_Weigan1();
 957               		.stabn 68,0,385,.LM132-Send_Weigan36
 958               	.LM132:
 959 03b4 54D0      		rcall Send_Weigan1
 960 03b6 01C0      		rjmp .L97
 961               	.L117:
 386:level4.c      **** 	  else
 387:level4.c      **** 	  	  Send_Weigan0();
 962               		.stabn 68,0,387,.LM133-Send_Weigan36
 963               	.LM133:
 964 03b8 5DD0      		rcall Send_Weigan0
 388:level4.c      **** }
 965               		.stabn 68,0,388,.LM134-Send_Weigan36
 966               	.LM134:
 967               	.L97:
 968               	.LBE5:
 969               	/* epilogue: frame size=0 */
 970 03ba CF91      		pop r28
 971 03bc 1F91      		pop r17
 972 03be 0F91      		pop r16
 973 03c0 FF90      		pop r15
 974 03c2 EF90      		pop r14
 975 03c4 0895      		ret
 976               	/* epilogue end (size=6) */
 977               	/* function Send_Weigan36 size 123 (112) */
 978               		.size	Send_Weigan36, .-Send_Weigan36
 979               		.stabs	"i:r(4,2)",64,0,346,28
 980               		.stabs	"weigan36_odd_data:r(4,2)",64,0,346,14
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyKbaaa.s 			page 25


 981               		.stabs	"parity_bit:r(4,2)",64,0,346,15
 982               		.stabs	"bit_cnt:r(4,2)",64,0,346,20
 983               		.stabn	192,0,0,.LBB5-Send_Weigan36
 984               		.stabn	224,0,0,.LBE5-Send_Weigan36
 985               	.Lscope6:
 986               		.stabs	"",36,0,0,.Lscope6-Send_Weigan36
 987               		.stabs	"Send_Weigan44:F(0,20)",36,0,397,Send_Weigan44
 988               		.stabs	"data:P(1,1)",64,0,396,28
 989               	.global	Send_Weigan44
 990               		.type	Send_Weigan44, @function
 991               	Send_Weigan44:
 389:level4.c      **** 
 390:level4.c      **** // ********************************************************************************************
 391:level4.c      **** // Description : Send weigan44 model and encode according to weigan44 protocol.
 392:level4.c      **** // Return value: None.   
 393:level4.c      **** // parameter   : * data -- the point of the data to be encoded.
 394:level4.c      **** // ********************************************************************************************
 395:level4.c      **** 
 396:level4.c      **** void Send_Weigan44( uint8_t * data )
 397:level4.c      **** {
 992               		.stabn 68,0,397,.LM135-Send_Weigan44
 993               	.LM135:
 994               	/* prologue: frame size=0 */
 995 03c6 0F93      		push r16
 996 03c8 1F93      		push r17
 997 03ca CF93      		push r28
 998 03cc DF93      		push r29
 999               	/* prologue end (size=4) */
 1000 03ce EC01      		movw r28,r24
 398:level4.c      **** 	  uint8_t i , bit_cnt , weigan44_low_byte = 0;
 1001               		.stabn 68,0,398,.LM136-Send_Weigan44
 1002               	.LM136:
 1003               	.LBB6:
 1004 03d0 10E0      		ldi r17,lo8(0)
 399:level4.c      **** 
 400:level4.c      ****     for ( i = 0 ; i < 5 ; i++ )
 1005               		.stabn 68,0,400,.LM137-Send_Weigan44
 1006               	.LM137:
 1007 03d2 012F      		mov r16,r17
 1008 03d4 E0E0      		ldi r30,lo8(weiga

⌨️ 快捷键说明

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