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

📄 level4.lst

📁 此程序为利用mage8 AVR 和EM4094实现读取TYPE A类型卡的C程序、读卡稳定、这个项目我们做了好久、非常不错的程序、很适合做这方面产品的朋友们参考
💻 LST
📖 第 1 页 / 共 5 页
字号:
 407 015a 81D1      		rcall Send_Weigan1
 408               	.L47:
 176:level4.c      **** 	  else
 177:level4.c      **** 	  	  Send_Weigan0();
 178:level4.c      **** 	  for ( i = 8 ; i < 32 ; i++ )                //Send CCCC CCCC CCCC CCCC CCCC CCCC;
 409               		.stabn 68,0,178,.LM52-Send_Weigan26
 410               	.LM52:
 411 015c C8E0      		ldi r28,lo8(8)
 412 015e 87E0      		ldi r24,lo8(7)
 413 0160 E82E      		mov r14,r24
 414 0162 F12C      		mov r15,__zero_reg__
 415               	.L54:
 179:level4.c      **** 	  {
 180:level4.c      **** 	      bit_cnt = i % 8 ;
 416               		.stabn 68,0,180,.LM53-Send_Weigan26
 417               	.LM53:
 418 0164 2C2F      		mov r18,r28
 419 0166 2770      		andi r18,lo8(7)
 181:level4.c      **** 	      if ( ( data[ i / 8 ] >> ( 7 - bit_cnt ) ) & 0x01 )     //MSBit is sent first;
 420               		.stabn 68,0,181,.LM54-Send_Weigan26
 421               	.LM54:
 422 0168 8C2F      		mov r24,r28
 423 016a 8695      		lsr r24
 424 016c 8695      		lsr r24
 425 016e 8695      		lsr r24
 426 0170 F801      		movw r30,r16
 427 0172 E80F      		add r30,r24
 428 0174 F11D      		adc r31,__zero_reg__
 429 0176 8081      		ld r24,Z
 430 0178 9927      		clr r25
 431 017a A701      		movw r20,r14
 432 017c 421B      		sub r20,r18
 433 017e 5109      		sbc r21,__zero_reg__
 434 0180 02C0      		rjmp 2f
 435 0182 9595      	1:	asr r25
 436 0184 8795      		ror r24
 437 0186 4A95      	2:	dec r20
 438 0188 E2F7      		brpl 1b
 439 018a 80FF      		sbrs r24,0
 440 018c 0AC0      		rjmp .L52
 182:level4.c      **** 	      	  Send_Weigan1();
 441               		.stabn 68,0,182,.LM55-Send_Weigan26
 442               	.LM55:
 443 018e 67D1      		rcall Send_Weigan1
 444               		.stabn 68,0,178,.LM56-Send_Weigan26
 445               	.LM56:
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccVbaaa.s 			page 12


 446               	.L50:
 447 0190 CF5F      		subi r28,lo8(-(1))
 448 0192 C032      		cpi r28,lo8(32)
 449 0194 38F3      		brlo .L54
 183:level4.c      **** 	      else
 184:level4.c      **** 	      	  Send_Weigan0();	
 185:level4.c      **** 	  }
 186:level4.c      **** 	  if ( weigan26_odd_data )                    //Send O bit;
 450               		.stabn 68,0,186,.LM57-Send_Weigan26
 451               	.LM57:
 452 0196 DD20      		tst r13
 453 0198 11F0      		breq .L55
 187:level4.c      **** 	  	  Send_Weigan1();
 454               		.stabn 68,0,187,.LM58-Send_Weigan26
 455               	.LM58:
 456 019a 61D1      		rcall Send_Weigan1
 457 019c 06C0      		rjmp .L35
 458               	.L55:
 188:level4.c      **** 	  else
 189:level4.c      **** 	  	  Send_Weigan0();		  	  
 459               		.stabn 68,0,189,.LM59-Send_Weigan26
 460               	.LM59:
 461 019e 6AD1      		rcall Send_Weigan0
 462 01a0 04C0      		rjmp .L35
 463               	.L52:
 464               		.stabn 68,0,184,.LM60-Send_Weigan26
 465               	.LM60:
 466 01a2 68D1      		rcall Send_Weigan0
 467 01a4 F5CF      		rjmp .L50
 468               	.L46:
 469               		.stabn 68,0,177,.LM61-Send_Weigan26
 470               	.LM61:
 471 01a6 66D1      		rcall Send_Weigan0
 472 01a8 D9CF      		rjmp .L47
 190:level4.c      **** }
 473               		.stabn 68,0,190,.LM62-Send_Weigan26
 474               	.LM62:
 475               	.L35:
 476               	.LBE3:
 477               	/* epilogue: frame size=0 */
 478 01aa CF91      		pop r28
 479 01ac 1F91      		pop r17
 480 01ae 0F91      		pop r16
 481 01b0 FF90      		pop r15
 482 01b2 EF90      		pop r14
 483 01b4 DF90      		pop r13
 484 01b6 0895      		ret
 485               	/* epilogue end (size=7) */
 486               	/* function Send_Weigan26 size 123 (110) */
 487               		.size	Send_Weigan26, .-Send_Weigan26
 488               		.stabs	"i:r(4,2)",64,0,151,28
 489               		.stabs	"weigan26_even_data:r(4,2)",64,0,151,15
 490               		.stabs	"parity_bit:r(4,2)",64,0,151,13
 491               		.stabs	"bit_cnt:r(4,2)",64,0,151,18
 492               		.stabn	192,0,0,.LBB3-Send_Weigan26
 493               		.stabn	224,0,0,.LBE3-Send_Weigan26
 494               	.Lscope2:
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccVbaaa.s 			page 13


 495               		.stabs	"",36,0,0,.Lscope2-Send_Weigan26
 496               		.stabs	"Send_Weigan34:F(0,20)",36,0,199,Send_Weigan34
 497               		.stabs	"data:P(1,1)",64,0,198,16
 498               	.global	Send_Weigan34
 499               		.type	Send_Weigan34, @function
 500               	Send_Weigan34:
 191:level4.c      **** 
 192:level4.c      **** // ********************************************************************************************
 193:level4.c      **** // Description : Send weigan34 model and encode according to weigan34 protocol.
 194:level4.c      **** // Return value: None.   
 195:level4.c      **** // parameter   : * data -- the point of the data to be encoded.
 196:level4.c      **** // ********************************************************************************************
 197:level4.c      **** 
 198:level4.c      **** void Send_Weigan34( uint8_t * data )
 199:level4.c      **** {
 501               		.stabn 68,0,199,.LM63-Send_Weigan34
 502               	.LM63:
 503               	/* prologue: frame size=0 */
 504 01b8 DF92      		push r13
 505 01ba EF92      		push r14
 506 01bc FF92      		push r15
 507 01be 0F93      		push r16
 508 01c0 1F93      		push r17
 509 01c2 CF93      		push r28
 510               	/* prologue end (size=6) */
 511 01c4 8C01      		movw r16,r24
 200:level4.c      ****     uint8_t i , weigan34_even_data , weigan34_odd_data , parity_bit , bit_cnt;
 201:level4.c      **** 	  parity_bit = 0;               //If use even parity check , this bit must be 0;
 512               		.stabn 68,0,201,.LM64-Send_Weigan34
 513               	.LM64:
 514               	.LBB4:
 515 01c6 DD24      		clr r13
 202:level4.c      **** 	  for ( i = 0 ; i < 16 ; i++ )
 516               		.stabn 68,0,202,.LM65-Send_Weigan34
 517               	.LM65:
 518 01c8 CD2D      		mov r28,r13
 519 01ca 47E0      		ldi r20,lo8(7)
 520 01cc 50E0      		ldi r21,hi8(7)
 521               	.L68:
 203:level4.c      **** 	  {
 204:level4.c      **** 	  	  bit_cnt = i % 8 ;
 522               		.stabn 68,0,204,.LM66-Send_Weigan34
 523               	.LM66:
 524 01ce 2C2F      		mov r18,r28
 525 01d0 2770      		andi r18,lo8(7)
 205:level4.c      **** 	  	  parity_bit ^= ( data[ i / 8 ] >> ( 7 - bit_cnt ) ) & 0x01; 
 526               		.stabn 68,0,205,.LM67-Send_Weigan34
 527               	.LM67:
 528 01d2 8C2F      		mov r24,r28
 529 01d4 8695      		lsr r24
 530 01d6 8695      		lsr r24
 531 01d8 8695      		lsr r24
 532 01da F801      		movw r30,r16
 533 01dc E80F      		add r30,r24
 534 01de F11D      		adc r31,__zero_reg__
 535 01e0 8081      		ld r24,Z
 536 01e2 9927      		clr r25
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccVbaaa.s 			page 14


 537 01e4 BA01      		movw r22,r20
 538 01e6 621B      		sub r22,r18
 539 01e8 7109      		sbc r23,__zero_reg__
 540 01ea 02C0      		rjmp 2f
 541 01ec 9595      	1:	asr r25
 542 01ee 8795      		ror r24
 543 01f0 6A95      	2:	dec r22
 544 01f2 E2F7      		brpl 1b
 545 01f4 8170      		andi r24,lo8(1)
 546 01f6 D826      		eor r13,r24
 547               		.stabn 68,0,202,.LM68-Send_Weigan34
 548               	.LM68:
 549 01f8 CF5F      		subi r28,lo8(-(1))
 550 01fa C031      		cpi r28,lo8(16)
 551 01fc 40F3      		brlo .L68
 552 01fe C0E1      		ldi r28,lo8(16)
 206:level4.c      **** 	  }
 207:level4.c      **** 	  weigan34_even_data = parity_bit ;
 553               		.stabn 68,0,207,.LM69-Send_Weigan34
 554               	.LM69:
 555 0200 FD2C      		mov r15,r13
 208:level4.c      **** 	  wdt_reset( );
 556               		.stabn 68,0,208,.LM70-Send_Weigan34
 557               	.LM70:
 558               	/* #APP */
 559 0202 A895      		wdr
 209:level4.c      **** #ifdef WDT
 210:level4.c      ****     WatchDog_Feed( );
 560               		.stabn 68,0,210,.LM71-Send_Weigan34
 561               	.LM71:
 562               	/* #NOAPP */
 563 0204 00D0      		rcall WatchDog_Feed
 211:level4.c      **** #endif  
 212:level4.c      **** 	  parity_bit = 1;               //If use odd parity check , this bit must be 1 ;
 564               		.stabn 68,0,212,.LM72-Send_Weigan34
 565               	.LM72:
 566 0206 31E0      		ldi r19,lo8(1)
 567 0208 D32E      		mov r13,r19
 213:level4.c      **** 	  for ( i = 16 ; i < 32 ; i++ )
 568               		.stabn 68,0,213,.LM73-Send_Weigan34
 569               	.LM73:
 570 020a 47E0      		ldi r20,lo8(7)
 571 020c 50E0      		ldi r21,hi8(7)
 572               	.L73:
 214:level4.c      **** 	  {
 215:level4.c      **** 	      bit_cnt = i % 8;
 573               		.stabn 68,0,215,.LM74-Send_Weigan34
 574               	.LM74:
 575 020e 2C2F      		mov r18,r28
 576 0210 2770      		andi r18,lo8(7)
 216:level4.c      **** 	      parity_bit ^= ( data[ i / 8 ]	>> ( 7 - bit_cnt ) ) & 0x01;
 577               		.stabn 68,0,216,.LM75-Send_Weigan34
 578               	.LM75:
 579 0212 8C2F      		mov r24,r28
 580 0214 8695      		lsr r24
 581 0216 8695      		lsr r24
 582 0218 8695      		lsr r24
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccVbaaa.s 			page 15


 583 021a F801      		movw r30,r16
 584 021c E80F      		add r30,r24
 585 021e F11D      		adc r31,__zero_reg__
 586 0220 8081      		ld r24,Z
 587 0222 9927      		clr r25
 588 0224 BA01      		movw r22,r20
 589 0226 621B      		sub r22,r18
 590 0228 7109      		sbc r23,__zero_reg__
 591 022a 02C0      		rjmp 2f
 592 022c 9595      	1:	asr r25
 593 022e 8795      		ror r24
 594 0230 6A95      	2:	dec r22
 595 0232 E2F7      		brpl 1b
 596 0234 8170      		andi r24,lo8(1)
 597 0236 D826      		eor r13,r24
 598               		.stabn 68,0,213,.LM76-Send_Weigan34
 599               	.LM76:
 600 0238 CF5F      		subi r28,lo8(-(1))
 601 023a C032      		cpi r28,lo8(32)
 602 023c 40F3      		brlo .L73
 217:level4.c      **** 	  }
 218:level4.c      **** 	  weigan34_odd_data = parity_bit;   
 219:level4.c      **** 	  wdt_reset( );
 603               		.stabn 68,0,219,.LM77-Send_Weigan34
 604               	.LM77:
 605               	/* #APP */
 606 023e A895      		wdr
 220:level4.c      **** #ifdef WDT
 221:level4.c      ****     WatchDog_Feed( );
 607               		.stabn 68,0,221,.LM78-Send_Weigan34
 608               	.LM78:
 609               	/* #NOAPP */
 610 0240 00D0      		rcall WatchDog_Feed
 222:level4.c      **** #endif      
 223:level4.c      **** 	  if ( weigan34_even_data )                   //Send E bit;
 611               		.stabn 68,0,223,.LM79-Send_Weigan34
 612               	.LM79:
 613 0242 FF20      		tst r15
 614 0244 31F1      		breq .L74
 224:level4.c      **** 	  	  Send_Weigan1();
 615               		.stabn 68,0,224,.LM80-Send_Weigan34
 616               	.LM80:
 617 0246 0BD1      		rcall Send_Weigan1
 618               	.L75:
 225:level4.c      **** 	  else
 226:level4.c      **** 	  	  Send_Weigan0();
 227:level4.c      **** 	  for ( i = 0 ; i < 32 ; i++ )                //Send CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC;
 619               		.stabn 68,0,227,.LM81-Send_Weigan34
 620               	.LM81:
 621 0248 C0E0      		ldi r28,lo8(0)
 622 024a 27E0      		ldi r18,lo8(7)
 623 024c E22E      		mov r14,r18
 624 024e F12C      		mov r15,__zero_reg__
 625               	.L82:
 228:level4.c      **** 	  {
 229:level4.c      **** 	      bit_cnt = i % 8 ;
 626               		.stabn 68,0,229,.LM82-Send_Weigan34
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccVbaaa.s 			page 16


 627               	.LM82:
 628 0250 2C2F      		mov r18,r28
 629 0252 2770      		andi r18,lo8(7)
 230:level4.c      **** 	      if ( ( data[ i / 8 ] >> ( 7 - bit_cnt ) ) & 0x01 )    //MSBit is send first;
 630               		.stabn 68,0,230,.LM83-Send_Weigan34
 631               	.LM83:
 632 0254 8C2F      		mov r24,r28
 633 0256 8695      		lsr r24
 634 0258 8695      		lsr r24
 635 025a 8695      		lsr r24
 636 025c F801      		movw r30,r16
 637 025e E80F      		add r30,r24
 638 0260 F11D      		adc r31,__zero_reg__
 639 0262 8081      		ld r24,Z
 640 0264 9927      		clr r25
 641 0266 A701      		movw r20,r14
 642 0268 421B      		sub r20,r18
 643 026a 5109      		sbc r21,__zero_reg__

⌨️ 快捷键说明

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