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

📄 level4.lst

📁 此程序为利用mage8 AVR 和EM4094实现读取TYPE B类型卡的C程序、读卡稳定、这个项目我们做了好久、非常不错的程序、很适合做这方面产品的朋友们参考
💻 LST
📖 第 1 页 / 共 5 页
字号:
 884               		.stabs	"parity_bit:r(4,2)",64,0,246,13
 885               		.stabs	"bit_cnt:r(4,2)",64,0,246,18
 886               		.stabn	192,0,0,.LBB5-Send_Weigan36
 887               		.stabn	224,0,0,.LBE5-Send_Weigan36
 888               	.Lscope4:
 889               		.stabs	"",36,0,0,.Lscope4-Send_Weigan36
 890               		.stabs	"Send_Weigan44:F(0,20)",36,0,291,Send_Weigan44
 891               		.stabs	"data:P(1,1)",64,0,290,16
 892               	.global	Send_Weigan44
 893               		.type	Send_Weigan44, @function
 894               	Send_Weigan44:
 283:level4.c      **** 
 284:level4.c      **** // ********************************************************************************************
 285:level4.c      **** // Description : Send weigan44 model and encode according to weigan44 protocol.
 286:level4.c      **** // Return value: None.   
 287:level4.c      **** // parameter   : * data -- the point of the data to be encoded.
 288:level4.c      **** // ********************************************************************************************
 289:level4.c      **** 
 290:level4.c      **** void Send_Weigan44( uint8_t * data )
 291:level4.c      **** {
 895               		.stabn 68,0,291,.LM117-Send_Weigan44
 896               	.LM117:
 897               	/* prologue: frame size=0 */
 898 0388 DF92      		push r13
 899 038a EF92      		push r14
 900 038c FF92      		push r15
 901 038e 0F93      		push r16
 902 0390 1F93      		push r17
 903 0392 CF93      		push r28
 904               	/* prologue end (size=6) */
 905 0394 8C01      		movw r16,r24
 292:level4.c      **** 	  uint8_t i , bit_cnt , weigan44_low_byte = 0;
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQvbaaa.s 			page 22


 906               		.stabn 68,0,292,.LM118-Send_Weigan44
 907               	.LM118:
 908               	.LBB6:
 909 0396 C0E0      		ldi r28,lo8(0)
 293:level4.c      **** /*
 294:level4.c      **** 	  for ( i = 0 ; i < 40 ; i += 4 )
 295:level4.c      **** 	  {
 296:level4.c      **** 	  	  bit_cnt = i % 8;
 297:level4.c      **** 	  	  weigan44_low_byte ^= ( data[ i / 8 ] >> ( 4 - bit_cnt ) ) & 0x0F ;
 298:level4.c      **** 	  }
 299:level4.c      **** */	
 300:level4.c      ****     for ( i = 0 ; i < 5 ; i++ )
 910               		.stabn 68,0,300,.LM119-Send_Weigan44
 911               	.LM119:
 912 0398 DC2E      		mov r13,r28
 913 039a E0E0      		ldi r30,lo8(weigan_data)
 914 039c F0E0      		ldi r31,hi8(weigan_data)
 915               	.L124:
 301:level4.c      ****         weigan44_low_byte ^= weigan_data[ i ];
 916               		.stabn 68,0,301,.LM120-Send_Weigan44
 917               	.LM120:
 918 039e 8191      		ld r24,Z+
 919 03a0 D826      		eor r13,r24
 920               		.stabn 68,0,300,.LM121-Send_Weigan44
 921               	.LM121:
 922 03a2 CF5F      		subi r28,lo8(-(1))
 923 03a4 C530      		cpi r28,lo8(5)
 924 03a6 D8F3      		brlo .L124
 302:level4.c      ****     weigan44_low_byte = ( weigan44_low_byte >> 4 ) ^ ( weigan44_low_byte & 0x0F );  
 925               		.stabn 68,0,302,.LM122-Send_Weigan44
 926               	.LM122:
 927 03a8 8D2D      		mov r24,r13
 928 03aa 8295      		swap r24
 929 03ac 8F70      		andi r24,0x0f
 930 03ae 4FE0      		ldi r20,lo8(15)
 931 03b0 D422      		and r13,r20
 932 03b2 D826      		eor r13,r24
 303:level4.c      **** 	  wdt_reset( );	  
 933               		.stabn 68,0,303,.LM123-Send_Weigan44
 934               	.LM123:
 935               	/* #APP */
 936 03b4 A895      		wdr
 304:level4.c      **** 	  for( i = 0 ; i < 40 ; i++ )         //Send CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC;   
 937               		.stabn 68,0,304,.LM124-Send_Weigan44
 938               	.LM124:
 939               	/* #NOAPP */
 940 03b6 C0E0      		ldi r28,lo8(0)
 941 03b8 67E0      		ldi r22,lo8(7)
 942 03ba E62E      		mov r14,r22
 943 03bc F12C      		mov r15,__zero_reg__
 944               	.L131:
 305:level4.c      **** 	  {
 306:level4.c      **** 	      bit_cnt = i % 8;
 945               		.stabn 68,0,306,.LM125-Send_Weigan44
 946               	.LM125:
 947 03be 2C2F      		mov r18,r28
 948 03c0 2770      		andi r18,lo8(7)
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQvbaaa.s 			page 23


 307:level4.c      **** 	      if ( ( data[ i / 8 ] >> ( 7 - bit_cnt ) ) & 0x01 )
 949               		.stabn 68,0,307,.LM126-Send_Weigan44
 950               	.LM126:
 951 03c2 8C2F      		mov r24,r28
 952 03c4 8695      		lsr r24
 953 03c6 8695      		lsr r24
 954 03c8 8695      		lsr r24
 955 03ca F801      		movw r30,r16
 956 03cc E80F      		add r30,r24
 957 03ce F11D      		adc r31,__zero_reg__
 958 03d0 8081      		ld r24,Z
 959 03d2 9927      		clr r25
 960 03d4 A701      		movw r20,r14
 961 03d6 421B      		sub r20,r18
 962 03d8 5109      		sbc r21,__zero_reg__
 963 03da 02C0      		rjmp 2f
 964 03dc 9595      	1:	asr r25
 965 03de 8795      		ror r24
 966 03e0 4A95      	2:	dec r20
 967 03e2 E2F7      		brpl 1b
 968 03e4 80FF      		sbrs r24,0
 969 03e6 16C0      		rjmp .L129
 308:level4.c      **** 	      	  Send_Weigan1();
 970               		.stabn 68,0,308,.LM127-Send_Weigan44
 971               	.LM127:
 972 03e8 23D0      		rcall Send_Weigan1
 973               		.stabn 68,0,304,.LM128-Send_Weigan44
 974               	.LM128:
 975               	.L127:
 976 03ea CF5F      		subi r28,lo8(-(1))
 977 03ec C832      		cpi r28,lo8(40)
 978 03ee 38F3      		brlo .L131
 309:level4.c      **** 	      else
 310:level4.c      **** 	      	  Send_Weigan0(); 	
 311:level4.c      **** 	  }
 312:level4.c      **** 	  for( i = 4 ; i > 0 ; i-- )          //Send XXXX ;
 979               		.stabn 68,0,312,.LM129-Send_Weigan44
 980               	.LM129:
 981 03f0 C4E0      		ldi r28,lo8(4)
 982 03f2 ED2C      		mov r14,r13
 983 03f4 FF24      		clr r15
 984 03f6 03E0      		ldi r16,lo8(3)
 985 03f8 10E0      		ldi r17,hi8(3)
 986               	.L138:
 313:level4.c      **** 	  {	      
 314:level4.c      **** 	      if ( ( weigan44_low_byte >> ( i - 1 ) ) & 0x01 )    
 987               		.stabn 68,0,314,.LM130-Send_Weigan44
 988               	.LM130:
 989 03fa C701      		movw r24,r14
 990 03fc 002E      		mov r0,r16
 991 03fe 02C0      		rjmp 2f
 992 0400 9595      	1:	asr r25
 993 0402 8795      		ror r24
 994 0404 0A94      	2:	dec r0
 995 0406 E2F7      		brpl 1b
 996 0408 80FF      		sbrs r24,0
 997 040a 02C0      		rjmp .L136
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQvbaaa.s 			page 24


 315:level4.c      **** 	      	  Send_Weigan1( );
 998               		.stabn 68,0,315,.LM131-Send_Weigan44
 999               	.LM131:
 1000 040c 11D0      		rcall Send_Weigan1
 1001 040e 04C0      		rjmp .L134
 1002               	.L136:
 316:level4.c      **** 	      else
 317:level4.c      **** 	      	  Send_Weigan0( );	
 1003               		.stabn 68,0,317,.LM132-Send_Weigan44
 1004               	.LM132:
 1005 0410 1AD0      		rcall Send_Weigan0
 1006 0412 02C0      		rjmp .L134
 1007               	.L129:
 1008               		.stabn 68,0,310,.LM133-Send_Weigan44
 1009               	.LM133:
 1010 0414 18D0      		rcall Send_Weigan0
 1011 0416 E9CF      		rjmp .L127
 1012               		.stabn 68,0,312,.LM134-Send_Weigan44
 1013               	.LM134:
 1014               	.L134:
 1015 0418 C150      		subi r28,lo8(-(-1))
 1016 041a 0150      		subi r16,lo8(-(-1))
 1017 041c 1040      		sbci r17,hi8(-(-1))
 1018 041e CC23      		tst r28
 1019 0420 61F7      		brne .L138
 318:level4.c      **** 	  }
 319:level4.c      **** }
 1020               		.stabn 68,0,319,.LM135-Send_Weigan44
 1021               	.LM135:
 1022               	.LBE6:
 1023               	/* epilogue: frame size=0 */
 1024 0422 CF91      		pop r28
 1025 0424 1F91      		pop r17
 1026 0426 0F91      		pop r16
 1027 0428 FF90      		pop r15
 1028 042a EF90      		pop r14
 1029 042c DF90      		pop r13
 1030 042e 0895      		ret
 1031               	/* epilogue end (size=7) */
 1032               	/* function Send_Weigan44 size 86 (73) */
 1033               		.size	Send_Weigan44, .-Send_Weigan44
 1034               		.stabs	"i:r(4,2)",64,0,292,28
 1035               		.stabs	"weigan44_low_byte:r(4,2)",64,0,292,13
 1036               		.stabn	192,0,0,.LBB6-Send_Weigan44
 1037               		.stabn	224,0,0,.LBE6-Send_Weigan44
 1038               	.Lscope5:
 1039               		.stabs	"",36,0,0,.Lscope5-Send_Weigan44
 1040               		.stabs	"Send_Weigan1:F(0,20)",36,0,324,Send_Weigan1
 1041               	.global	Send_Weigan1
 1042               		.type	Send_Weigan1, @function
 1043               	Send_Weigan1:
 320:level4.c      **** 
 321:level4.c      **** 
 322:level4.c      **** 
 323:level4.c      **** void Send_Weigan1( void )
 324:level4.c      **** {
 1044               		.stabn 68,0,324,.LM136-Send_Weigan1
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQvbaaa.s 			page 25


 1045               	.LM136:
 1046               	/* prologue: frame size=0 */
 1047               	/* prologue end (size=0) */
 325:level4.c      **** 	  sbi( PORTB , WEIGAN_1 );
 1048               		.stabn 68,0,325,.LM137-Send_Weigan1
 1049               	.LM137:
 1050 0430 C29A      		sbi 56-0x20,2
 326:level4.c      **** 	  Delayus( 100 );
 1051               		.stabn 68,0,326,.LM138-Send_Weigan1
 1052               	.LM138:
 1053 0432 84E6      		ldi r24,lo8(100)
 1054 0434 90E0      		ldi r25,hi8(100)
 1055 0436 00D0      		rcall Delayus
 327:level4.c      **** 	  cbi( PORTB , WEIGAN_1 );
 1056               		.stabn 68,0,327,.LM139-Send_Weigan1
 1057               	.LM139:
 1058 0438 C298      		cbi 56-0x20,2
 328:level4.c      **** 	  Delayus( 1500 );
 1059               		.stabn 68,0,328,.LM140-Send_Weigan1
 1060               	.LM140:
 1061 043a 8CED      		ldi r24,lo8(1500)
 1062 043c 95E0      		ldi r25,hi8(1500)
 1063 043e 00D0      		rcall Delayus
 329:level4.c      **** 	  wdt_reset( );
 1064               		.stabn 68,0,329,.LM141-Send_Weigan1
 1065               	.LM141:
 1066               	/* #APP */
 1067 0440 A895      		wdr
 330:level4.c      **** #ifdef WDT
 331:level4.c      ****         WatchDog_Feed( );
 1068               		.stabn 68,0,331,.LM142-Send_Weigan1
 1069               	.LM142:
 1070               	/* #NOAPP */
 1071 0442 00D0      		rcall WatchDog_Feed
 332:level4.c      **** #endif	  
 333:level4.c      **** }
 1072               		.stabn 68,0,333,.LM143-Send_Weigan1
 1073               	.LM143:
 1074               	/* epilogue: frame size=0 */
 1075 0444 0895      		ret
 1076               	/* epilogue end (size=1) */
 1077               	/* function Send_Weigan1 size 12 (11) */
 1078               		.size	Send_Weigan1, .-Send_Weigan1
 1079               	.Lscope6:
 1080               		.stabs	"",36,0,0,.Lscope6-Send_Weigan1
 1081               		.stabs	"Send_Weigan0:F(0,20)",36,0,336,Send_Weigan0
 1082               	.global	Send_Weigan0
 1083               		.type	Send_Weigan0, @function
 1084               	Send_Weigan0:
 334:level4.c      **** 
 335:level4.c      **** void Send_Weigan0( void )
 336:level4.c      **** {
 1085               		.stabn 68,0,336,.LM144-Send_Weigan0
 1086               	.LM144:
 1087               	/* prologue: frame size=0 */
 1088               	/* prologue end (size=0) */
 337:level4.c      **** 	  sbi( PORTB , WEIGAN_0 );
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQvbaaa.s 			page 26


 1089               		.stabn 68,0,337,.LM145-Send_Weigan0
 1090               	.LM145:
 1091 0446 C19A      		sbi 56-0x20,1
 338:level4.c      **** 	  Delayus( 100 );
 1092               		.stabn 68,0,338,.LM146-Send_Weigan0
 1093               	.LM146:
 1094 0448 84E6      		ldi r24,lo8(100)
 1095 044a 90E0      		ldi r25,hi8(100)
 1096 044c 00D0      		rcall Delayus
 339:level4.c      **** 	  cbi( PORTB , WEIGAN_0 );
 1097               		.stabn 68,0,339,.LM147-Send_Weigan0
 1098               	.LM147:
 1099 044e C198      		cbi 56-0x20,1
 340:level4.c      **** 	  Delayus( 1500 );
 1100               		.stabn 68,0,340,.LM148-Send_Weigan0
 1101               	.LM148:
 1102 0450 8CED      		ldi r24,lo8(1500)
 1103 0452 95E0      		ldi r25,hi8(1500)
 1104 0454 00D0      		rcall Delayus
 341:level4.c      **** 	  wdt_reset( );
 1105               		.stabn 68,0,341,.LM149-Send_Weigan0
 1106               	.LM149:
 1107               	/* #APP */
 1108 0456 A895      		wdr
 342:level4.c      **** #ifdef WDT
 343:level4.c      ****         WatchDog_Feed( );
 1109               		.stabn 68,0,343,.LM150-Send_Weigan0
 1110               	.LM150:
 1111               	/*

⌨️ 快捷键说明

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