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

📄 level4.lst

📁 此程序为利用mage8 AVR 和EM4094实现读取TYPE B类型卡的C程序、读卡稳定、这个项目我们做了好久、非常不错的程序、很适合做这方面产品的朋友们参考
💻 LST
📖 第 1 页 / 共 5 页
字号:
 399 0162 2770      		andi r18,lo8(7)
 184:level4.c      **** 	      if ( ( data[ i / 8 ] >> ( 7 - bit_cnt ) ) & 0x01 )     //MSBit is sent first;
 400               		.stabn 68,0,184,.LM52-Send_Weigan26
 401               	.LM52:
 402 0164 8C2F      		mov r24,r28
 403 0166 8695      		lsr r24
 404 0168 8695      		lsr r24
 405 016a 8695      		lsr r24
 406 016c F801      		movw r30,r16
 407 016e E80F      		add r30,r24
 408 0170 F11D      		adc r31,__zero_reg__
 409 0172 8081      		ld r24,Z
 410 0174 9927      		clr r25
 411 0176 A701      		movw r20,r14
 412 0178 421B      		sub r20,r18
 413 017a 5109      		sbc r21,__zero_reg__
 414 017c 02C0      		rjmp 2f
 415 017e 9595      	1:	asr r25
 416 0180 8795      		ror r24
 417 0182 4A95      	2:	dec r20
 418 0184 E2F7      		brpl 1b
 419 0186 80FF      		sbrs r24,0
 420 0188 0AC0      		rjmp .L52
 185:level4.c      **** 	      	  Send_Weigan1();
 421               		.stabn 68,0,185,.LM53-Send_Weigan26
 422               	.LM53:
 423 018a 52D1      		rcall Send_Weigan1
 424               		.stabn 68,0,181,.LM54-Send_Weigan26
 425               	.LM54:
 426               	.L50:
 427 018c CF5F      		subi r28,lo8(-(1))
 428 018e C032      		cpi r28,lo8(32)
 429 0190 38F3      		brlo .L54
 186:level4.c      **** 	      else
 187:level4.c      **** 	      	  Send_Weigan0();	
 188:level4.c      **** 	  }
 189:level4.c      **** 	  if ( weigan26_odd_data )                    //Send O bit;
 430               		.stabn 68,0,189,.LM55-Send_Weigan26
 431               	.LM55:
 432 0192 DD20      		tst r13
 433 0194 11F0      		breq .L55
 190:level4.c      **** 	  	  Send_Weigan1();
 434               		.stabn 68,0,190,.LM56-Send_Weigan26
 435               	.LM56:
 436 0196 4CD1      		rcall Send_Weigan1
 437 0198 06C0      		rjmp .L35
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQvbaaa.s 			page 12


 438               	.L55:
 191:level4.c      **** 	  else
 192:level4.c      **** 	  	  Send_Weigan0();	
 439               		.stabn 68,0,192,.LM57-Send_Weigan26
 440               	.LM57:
 441 019a 55D1      		rcall Send_Weigan0
 442 019c 04C0      		rjmp .L35
 443               	.L52:
 444               		.stabn 68,0,187,.LM58-Send_Weigan26
 445               	.LM58:
 446 019e 53D1      		rcall Send_Weigan0
 447 01a0 F5CF      		rjmp .L50
 448               	.L46:
 449               		.stabn 68,0,180,.LM59-Send_Weigan26
 450               	.LM59:
 451 01a2 51D1      		rcall Send_Weigan0
 452 01a4 D9CF      		rjmp .L47
 193:level4.c      **** }
 453               		.stabn 68,0,193,.LM60-Send_Weigan26
 454               	.LM60:
 455               	.L35:
 456               	.LBE3:
 457               	/* epilogue: frame size=0 */
 458 01a6 CF91      		pop r28
 459 01a8 1F91      		pop r17
 460 01aa 0F91      		pop r16
 461 01ac FF90      		pop r15
 462 01ae EF90      		pop r14
 463 01b0 DF90      		pop r13
 464 01b2 0895      		ret
 465               	/* epilogue end (size=7) */
 466               	/* function Send_Weigan26 size 121 (108) */
 467               		.size	Send_Weigan26, .-Send_Weigan26
 468               		.stabs	"i:r(4,2)",64,0,160,28
 469               		.stabs	"weigan26_even_data:r(4,2)",64,0,160,22
 470               		.stabs	"parity_bit:r(4,2)",64,0,160,13
 471               		.stabs	"bit_cnt:r(4,2)",64,0,160,18
 472               		.stabn	192,0,0,.LBB3-Send_Weigan26
 473               		.stabn	224,0,0,.LBE3-Send_Weigan26
 474               	.Lscope2:
 475               		.stabs	"",36,0,0,.Lscope2-Send_Weigan26
 476               		.stabs	"Send_Weigan34:F(0,20)",36,0,202,Send_Weigan34
 477               		.stabs	"data:P(1,1)",64,0,201,16
 478               	.global	Send_Weigan34
 479               		.type	Send_Weigan34, @function
 480               	Send_Weigan34:
 194:level4.c      **** 
 195:level4.c      **** // ********************************************************************************************
 196:level4.c      **** // Description : Send weigan34 model and encode according to weigan34 protocol.
 197:level4.c      **** // Return value: None.   
 198:level4.c      **** // parameter   : * data -- the point of the data to be encoded.
 199:level4.c      **** // ********************************************************************************************
 200:level4.c      **** 
 201:level4.c      **** void Send_Weigan34( uint8_t * data )
 202:level4.c      **** {
 481               		.stabn 68,0,202,.LM61-Send_Weigan34
 482               	.LM61:
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQvbaaa.s 			page 13


 483               	/* prologue: frame size=0 */
 484 01b4 DF92      		push r13
 485 01b6 EF92      		push r14
 486 01b8 FF92      		push r15
 487 01ba 0F93      		push r16
 488 01bc 1F93      		push r17
 489 01be CF93      		push r28
 490               	/* prologue end (size=6) */
 491 01c0 8C01      		movw r16,r24
 203:level4.c      ****     uint8_t i , weigan34_even_data , weigan34_odd_data , parity_bit , bit_cnt;
 204:level4.c      **** 	  parity_bit = 0;               //If use even parity check , this bit must be 0;
 492               		.stabn 68,0,204,.LM62-Send_Weigan34
 493               	.LM62:
 494               	.LBB4:
 495 01c2 DD24      		clr r13
 205:level4.c      **** 	  for ( i = 0 ; i < 16 ; i++ )
 496               		.stabn 68,0,205,.LM63-Send_Weigan34
 497               	.LM63:
 498 01c4 CD2D      		mov r28,r13
 499 01c6 47E0      		ldi r20,lo8(7)
 500 01c8 50E0      		ldi r21,hi8(7)
 501               	.L68:
 206:level4.c      **** 	  {
 207:level4.c      **** 	  	  bit_cnt = i % 8 ;
 502               		.stabn 68,0,207,.LM64-Send_Weigan34
 503               	.LM64:
 504 01ca 2C2F      		mov r18,r28
 505 01cc 2770      		andi r18,lo8(7)
 208:level4.c      **** 	  	  parity_bit ^= ( data[ i / 8 ] >> ( 7 - bit_cnt ) ) & 0x01; 
 506               		.stabn 68,0,208,.LM65-Send_Weigan34
 507               	.LM65:
 508 01ce 8C2F      		mov r24,r28
 509 01d0 8695      		lsr r24
 510 01d2 8695      		lsr r24
 511 01d4 8695      		lsr r24
 512 01d6 F801      		movw r30,r16
 513 01d8 E80F      		add r30,r24
 514 01da F11D      		adc r31,__zero_reg__
 515 01dc 8081      		ld r24,Z
 516 01de 9927      		clr r25
 517 01e0 BA01      		movw r22,r20
 518 01e2 621B      		sub r22,r18
 519 01e4 7109      		sbc r23,__zero_reg__
 520 01e6 02C0      		rjmp 2f
 521 01e8 9595      	1:	asr r25
 522 01ea 8795      		ror r24
 523 01ec 6A95      	2:	dec r22
 524 01ee E2F7      		brpl 1b
 525 01f0 8170      		andi r24,lo8(1)
 526 01f2 D826      		eor r13,r24
 527               		.stabn 68,0,205,.LM66-Send_Weigan34
 528               	.LM66:
 529 01f4 CF5F      		subi r28,lo8(-(1))
 530 01f6 C031      		cpi r28,lo8(16)
 531 01f8 40F3      		brlo .L68
 532 01fa C0E1      		ldi r28,lo8(16)
 209:level4.c      **** 	  }
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQvbaaa.s 			page 14


 210:level4.c      **** 	  weigan34_even_data = parity_bit ;
 533               		.stabn 68,0,210,.LM67-Send_Weigan34
 534               	.LM67:
 535 01fc 6D2D      		mov r22,r13
 211:level4.c      **** 	  wdt_reset( );	  
 536               		.stabn 68,0,211,.LM68-Send_Weigan34
 537               	.LM68:
 538               	/* #APP */
 539 01fe A895      		wdr
 212:level4.c      **** 	  parity_bit = 1;               //If use odd parity check , this bit must be 1 ;
 540               		.stabn 68,0,212,.LM69-Send_Weigan34
 541               	.LM69:
 542               	/* #NOAPP */
 543 0200 31E0      		ldi r19,lo8(1)
 544 0202 D32E      		mov r13,r19
 213:level4.c      **** 	  for ( i = 16 ; i < 32 ; i++ )
 545               		.stabn 68,0,213,.LM70-Send_Weigan34
 546               	.LM70:
 547 0204 47E0      		ldi r20,lo8(7)
 548 0206 50E0      		ldi r21,hi8(7)
 549               	.L73:
 214:level4.c      **** 	  {
 215:level4.c      **** 	      bit_cnt = i % 8;
 550               		.stabn 68,0,215,.LM71-Send_Weigan34
 551               	.LM71:
 552 0208 2C2F      		mov r18,r28
 553 020a 2770      		andi r18,lo8(7)
 216:level4.c      **** 	      parity_bit ^= ( data[ i / 8 ]	>> ( 7 - bit_cnt ) ) & 0x01;
 554               		.stabn 68,0,216,.LM72-Send_Weigan34
 555               	.LM72:
 556 020c 8C2F      		mov r24,r28
 557 020e 8695      		lsr r24
 558 0210 8695      		lsr r24
 559 0212 8695      		lsr r24
 560 0214 F801      		movw r30,r16
 561 0216 E80F      		add r30,r24
 562 0218 F11D      		adc r31,__zero_reg__
 563 021a 8081      		ld r24,Z
 564 021c 9927      		clr r25
 565 021e FA01      		movw r30,r20
 566 0220 E21B      		sub r30,r18
 567 0222 F109      		sbc r31,__zero_reg__
 568 0224 02C0      		rjmp 2f
 569 0226 9595      	1:	asr r25
 570 0228 8795      		ror r24
 571 022a EA95      	2:	dec r30
 572 022c E2F7      		brpl 1b
 573 022e 8170      		andi r24,lo8(1)
 574 0230 D826      		eor r13,r24
 575               		.stabn 68,0,213,.LM73-Send_Weigan34
 576               	.LM73:
 577 0232 CF5F      		subi r28,lo8(-(1))
 578 0234 C032      		cpi r28,lo8(32)
 579 0236 40F3      		brlo .L73
 217:level4.c      **** 	  }
 218:level4.c      **** 	  weigan34_odd_data = parity_bit;   
 219:level4.c      **** 	  wdt_reset( );	    
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQvbaaa.s 			page 15


 580               		.stabn 68,0,219,.LM74-Send_Weigan34
 581               	.LM74:
 582               	/* #APP */
 583 0238 A895      		wdr
 220:level4.c      **** 	  if ( weigan34_even_data )                   //Send E bit;
 584               		.stabn 68,0,220,.LM75-Send_Weigan34
 585               	.LM75:
 586               	/* #NOAPP */
 587 023a 6623      		tst r22
 588 023c 31F1      		breq .L74
 221:level4.c      **** 	  	  Send_Weigan1();
 589               		.stabn 68,0,221,.LM76-Send_Weigan34
 590               	.LM76:
 591 023e F8D0      		rcall Send_Weigan1
 592               	.L75:
 222:level4.c      **** 	  else
 223:level4.c      **** 	  	  Send_Weigan0();
 224:level4.c      **** 	  for ( i = 0 ; i < 32 ; i++ )                //Send CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC;
 593               		.stabn 68,0,224,.LM77-Send_Weigan34
 594               	.LM77:
 595 0240 C0E0      		ldi r28,lo8(0)
 596 0242 27E0      		ldi r18,lo8(7)
 597 0244 E22E      		mov r14,r18
 598 0246 F12C      		mov r15,__zero_reg__
 599               	.L82:
 225:level4.c      **** 	  {
 226:level4.c      **** 	      bit_cnt = i % 8 ;
 600               		.stabn 68,0,226,.LM78-Send_Weigan34
 601               	.LM78:
 602 0248 2C2F      		mov r18,r28
 603 024a 2770      		andi r18,lo8(7)
 227:level4.c      **** 	      if ( ( data[ i / 8 ] >> ( 7 - bit_cnt ) ) & 0x01 )    //MSBit is send first;
 604               		.stabn 68,0,227,.LM79-Send_Weigan34
 605               	.LM79:
 606 024c 8C2F      		mov r24,r28
 607 024e 8695      		lsr r24
 608 0250 8695      		lsr r24
 609 0252 8695      		lsr r24
 610 0254 F801      		movw r30,r16
 611 0256 E80F      		add r30,r24
 612 0258 F11D      		adc r31,__zero_reg__
 613 025a 8081      		ld r24,Z
 614 025c 9927      		clr r25
 615 025e A701      		movw r20,r14
 616 0260 421B      		sub r20,r18
 617 0262 5109      		sbc r21,__zero_reg__
 618 0264 02C0      		rjmp 2f
 619 0266 9595      	1:	asr r25
 620 0268 8795      		ror r24
 621 026a 4A95      	2:	dec r20
 622 026c E2F7      		brpl 1b
 623 026e 80FF      		sbrs r24,0
 624 0270 0AC0      		rjmp .L80
 228:level4.c      **** 	      	  Send_Weigan1();
 625               		.stabn 68,0,228,.LM80-Send_Weigan34
 626               	.LM80:
 627 0272 DED0      		rcall Send_Weigan1
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQvbaaa.s 			page 16


 628               		.stabn 68,0,224,.LM81-Send_Weigan34
 629               	.LM81:
 630               	.L78:
 631 0274 CF5F      		subi r28,lo8(-(1))
 632 0276 C032      		cpi r28,lo8(32)
 633 0278 38F3      		brlo .L82
 229:level4.c      **** 	      else
 230:level4.c      **** 	      	  Send_Weigan0();	
 231:level4.c      **** 	  }
 232:level4.c      **** 	  if ( weigan34_odd_data )                    //Send O bit;
 634               		.stabn 68,0,232,.LM82-Send_Weigan34
 635               	.LM82:
 636 027a DD20      		tst r13
 637 027c 11F0      		breq .L83
 233:level4.c      **** 	  	  Send_Weigan1();
 638               		.stabn 68,0,233,.LM83-Send_Weigan34
 639               	.LM83:
 640 027e D8D0      		rcall Send_Weigan1

⌨️ 快捷键说明

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