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

📄 level4.lst

📁 此程序为利用mage8 AVR 和EM4094实现读取ISO15693类型卡的C程序、读卡稳定、这个项目我们做了好久、非常不错的程序、很适合做这方面产品的朋友们参考
💻 LST
📖 第 1 页 / 共 5 页
字号:
 346               		.stabn 68,0,219,.LM46-SendByte
 347               	.LM46:
 348 0100 88EE      		ldi r24,lo8(1000)
 349 0102 93E0      		ldi r25,hi8(1000)
 350 0104 00D0      		rcall Delayus
 220:level4.c      ****     cbi( PORTC , TEN_485 );     
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyKbaaa.s 			page 11


 351               		.stabn 68,0,220,.LM47-SendByte
 352               	.LM47:
 353 0106 AD98      		cbi 53-0x20,5
 221:level4.c      **** }
 354               		.stabn 68,0,221,.LM48-SendByte
 355               	.LM48:
 356               	/* epilogue: frame size=0 */
 357 0108 0895      		ret
 358               	/* epilogue end (size=1) */
 359               	/* function SendByte size 9 (8) */
 360               		.size	SendByte, .-SendByte
 361               	.Lscope3:
 362               		.stabs	"",36,0,0,.Lscope3-SendByte
 363               		.stabs	"Send_Weigan26:F(0,20)",36,0,247,Send_Weigan26
 364               		.stabs	"data:P(1,1)",64,0,246,16
 365               	.global	Send_Weigan26
 366               		.type	Send_Weigan26, @function
 367               	Send_Weigan26:
 222:level4.c      **** 
 223:level4.c      **** 
 224:level4.c      **** //weigan26
 225:level4.c      **** //E CCCC CCCC CCCC                    CCCC CCCC CCCC O
 226:level4.c      **** 
 227:level4.c      **** //weigan34 
 228:level4.c      **** //E CCCC CCCC CCCC CCCC          CCCC CCCC CCCC CCCC O
 229:level4.c      **** 
 230:level4.c      **** //weigan36
 231:level4.c      **** //O CCCC CCCC CCCC CCCC C       CCC CCCC CCCC CCCC IIE
 232:level4.c      **** //I is '0';
 233:level4.c      **** 
 234:level4.c      **** //weigan44
 235:level4.c      **** //CCCC CCCC CCCC CCCC CCCC
 236:level4.c      **** //CCCC CCCC CCCC CCCC CCCC XXXX
 237:level4.c      **** //XXXX is the value of XOR of first 10 CCCC;
 238:level4.c      **** 
 239:level4.c      **** 
 240:level4.c      **** // ********************************************************************************************
 241:level4.c      **** // Description : Send weigan26 model and encode according to weigan26 protocol.
 242:level4.c      **** // Return value: None.   
 243:level4.c      **** // parameter   : * data -- the point of the data to be encoded.
 244:level4.c      **** // ********************************************************************************************
 245:level4.c      **** 
 246:level4.c      **** void Send_Weigan26( uint8_t * data )
 247:level4.c      **** {
 368               		.stabn 68,0,247,.LM49-Send_Weigan26
 369               	.LM49:
 370               	/* prologue: frame size=0 */
 371 010a EF92      		push r14
 372 010c FF92      		push r15
 373 010e 0F93      		push r16
 374 0110 1F93      		push r17
 375 0112 CF93      		push r28
 376               	/* prologue end (size=5) */
 377 0114 8C01      		movw r16,r24
 248:level4.c      **** 	  uint8_t i , weigan26_even_data , weigan26_odd_data , parity_bit , bit_cnt;
 249:level4.c      **** 	  parity_bit = 0;               //If use even parity check , this bit must be 0;
 378               		.stabn 68,0,249,.LM50-Send_Weigan26
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyKbaaa.s 			page 12


 379               	.LM50:
 380               	.LBB3:
 381 0116 FF24      		clr r15
 250:level4.c      **** 	  for ( i = 8 ; i < 20 ; i++ )
 382               		.stabn 68,0,250,.LM51-Send_Weigan26
 383               	.LM51:
 384 0118 C8E0      		ldi r28,lo8(8)
 385               	.L46:
 251:level4.c      **** 	  {
 252:level4.c      **** 	  	  bit_cnt = i % 8 ;
 386               		.stabn 68,0,252,.LM52-Send_Weigan26
 387               	.LM52:
 388 011a 4C2F      		mov r20,r28
 389 011c 4770      		andi r20,lo8(7)
 253:level4.c      **** 	  	  parity_bit ^= ( data[ i / 8 ] >> ( 7 - bit_cnt ) ) & 0x01; 
 390               		.stabn 68,0,253,.LM53-Send_Weigan26
 391               	.LM53:
 392 011e 8C2F      		mov r24,r28
 393 0120 8695      		lsr r24
 394 0122 8695      		lsr r24
 395 0124 8695      		lsr r24
 396 0126 F801      		movw r30,r16
 397 0128 E80F      		add r30,r24
 398 012a F11D      		adc r31,__zero_reg__
 399 012c 8081      		ld r24,Z
 400 012e 282F      		mov r18,r24
 401 0130 3327      		clr r19
 402 0132 87E0      		ldi r24,lo8(7)
 403 0134 90E0      		ldi r25,hi8(7)
 404 0136 841B      		sub r24,r20
 405 0138 9109      		sbc r25,__zero_reg__
 406 013a 02C0      		rjmp 2f
 407 013c 3595      	1:	asr r19
 408 013e 2795      		ror r18
 409 0140 8A95      	2:	dec r24
 410 0142 E2F7      		brpl 1b
 411 0144 822F      		mov r24,r18
 412 0146 8170      		andi r24,lo8(1)
 413 0148 F826      		eor r15,r24
 414               		.stabn 68,0,250,.LM54-Send_Weigan26
 415               	.LM54:
 416 014a CF5F      		subi r28,lo8(-(1))
 417 014c C431      		cpi r28,lo8(20)
 418 014e 28F3      		brlo .L46
 419 0150 C4E1      		ldi r28,lo8(20)
 254:level4.c      **** 	  }
 255:level4.c      **** 	  wdt_reset( );
 420               		.stabn 68,0,255,.LM55-Send_Weigan26
 421               	.LM55:
 422               	/* #APP */
 423 0152 A895      		wdr
 256:level4.c      **** #ifdef WDT
 257:level4.c      ****         WatchDog_Feed( );
 424               		.stabn 68,0,257,.LM56-Send_Weigan26
 425               	.LM56:
 426               	/* #NOAPP */
 427 0154 00D0      		rcall WatchDog_Feed
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyKbaaa.s 			page 13


 258:level4.c      **** #endif	  
 259:level4.c      **** 	  weigan26_even_data = parity_bit ;
 428               		.stabn 68,0,259,.LM57-Send_Weigan26
 429               	.LM57:
 430 0156 EF2C      		mov r14,r15
 260:level4.c      **** 	  parity_bit = 1;               //If use odd parity check , this bit must be 1 ;
 431               		.stabn 68,0,260,.LM58-Send_Weigan26
 432               	.LM58:
 433 0158 81E0      		ldi r24,lo8(1)
 434 015a F82E      		mov r15,r24
 435               	.L51:
 261:level4.c      **** 	  for ( i = 20 ; i < 32 ; i++ )
 262:level4.c      **** 	  {
 263:level4.c      **** 	      bit_cnt = i % 8;
 436               		.stabn 68,0,263,.LM59-Send_Weigan26
 437               	.LM59:
 438 015c 4C2F      		mov r20,r28
 439 015e 4770      		andi r20,lo8(7)
 264:level4.c      **** 	      parity_bit ^= ( data[ i / 8 ]	>> ( 7 - bit_cnt ) ) & 0x01;
 440               		.stabn 68,0,264,.LM60-Send_Weigan26
 441               	.LM60:
 442 0160 8C2F      		mov r24,r28
 443 0162 8695      		lsr r24
 444 0164 8695      		lsr r24
 445 0166 8695      		lsr r24
 446 0168 F801      		movw r30,r16
 447 016a E80F      		add r30,r24
 448 016c F11D      		adc r31,__zero_reg__
 449 016e 8081      		ld r24,Z
 450 0170 282F      		mov r18,r24
 451 0172 3327      		clr r19
 452 0174 87E0      		ldi r24,lo8(7)
 453 0176 90E0      		ldi r25,hi8(7)
 454 0178 841B      		sub r24,r20
 455 017a 9109      		sbc r25,__zero_reg__
 456 017c 02C0      		rjmp 2f
 457 017e 3595      	1:	asr r19
 458 0180 2795      		ror r18
 459 0182 8A95      	2:	dec r24
 460 0184 E2F7      		brpl 1b
 461 0186 822F      		mov r24,r18
 462 0188 8170      		andi r24,lo8(1)
 463 018a F826      		eor r15,r24
 464               		.stabn 68,0,261,.LM61-Send_Weigan26
 465               	.LM61:
 466 018c CF5F      		subi r28,lo8(-(1))
 467 018e C032      		cpi r28,lo8(32)
 468 0190 28F3      		brlo .L51
 265:level4.c      **** 	  }
 266:level4.c      **** 	  wdt_reset( );
 469               		.stabn 68,0,266,.LM62-Send_Weigan26
 470               	.LM62:
 471               	/* #APP */
 472 0192 A895      		wdr
 267:level4.c      **** #ifdef WDT
 268:level4.c      ****         WatchDog_Feed( );
 473               		.stabn 68,0,268,.LM63-Send_Weigan26
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyKbaaa.s 			page 14


 474               	.LM63:
 475               	/* #NOAPP */
 476 0194 00D0      		rcall WatchDog_Feed
 269:level4.c      **** #endif	  
 270:level4.c      **** 	  weigan26_odd_data = parity_bit;
 271:level4.c      **** 	  if ( weigan26_even_data )                   //Send E bit;                     
 477               		.stabn 68,0,271,.LM64-Send_Weigan26
 478               	.LM64:
 479 0196 EE20      		tst r14
 480 0198 11F0      		breq .L52
 272:level4.c      **** 	  	  Send_Weigan1();
 481               		.stabn 68,0,272,.LM65-Send_Weigan26
 482               	.LM65:
 483 019a 61D1      		rcall Send_Weigan1
 484 019c 01C0      		rjmp .L53
 485               	.L52:
 273:level4.c      **** 	  else
 274:level4.c      **** 	  	  Send_Weigan0();
 486               		.stabn 68,0,274,.LM66-Send_Weigan26
 487               	.LM66:
 488 019e 6AD1      		rcall Send_Weigan0
 489               	.L53:
 275:level4.c      **** 	  for ( i = 8 ; i < 32 ; i++ )                //Send CCCC CCCC CCCC CCCC CCCC CCCC;
 490               		.stabn 68,0,275,.LM67-Send_Weigan26
 491               	.LM67:
 492 01a0 C8E0      		ldi r28,lo8(8)
 493               	.L60:
 276:level4.c      **** 	  {
 277:level4.c      **** 	      bit_cnt = i % 8 ;
 494               		.stabn 68,0,277,.LM68-Send_Weigan26
 495               	.LM68:
 496 01a2 4C2F      		mov r20,r28
 497 01a4 4770      		andi r20,lo8(7)
 278:level4.c      **** 	      if ( ( data[ i / 8 ] >> ( 7 - bit_cnt ) ) & 0x01 )     //MSBit is sent first;
 498               		.stabn 68,0,278,.LM69-Send_Weigan26
 499               	.LM69:
 500 01a6 8C2F      		mov r24,r28
 501 01a8 8695      		lsr r24
 502 01aa 8695      		lsr r24
 503 01ac 8695      		lsr r24
 504 01ae F801      		movw r30,r16
 505 01b0 E80F      		add r30,r24
 506 01b2 F11D      		adc r31,__zero_reg__
 507 01b4 8081      		ld r24,Z
 508 01b6 282F      		mov r18,r24
 509 01b8 3327      		clr r19
 510 01ba 87E0      		ldi r24,lo8(7)
 511 01bc 90E0      		ldi r25,hi8(7)
 512 01be 841B      		sub r24,r20
 513 01c0 9109      		sbc r25,__zero_reg__
 514 01c2 02C0      		rjmp 2f
 515 01c4 3595      	1:	asr r19
 516 01c6 2795      		ror r18
 517 01c8 8A95      	2:	dec r24
 518 01ca E2F7      		brpl 1b
 519 01cc 20FF      		sbrs r18,0
 520 01ce 02C0      		rjmp .L58
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyKbaaa.s 			page 15


 279:level4.c      **** 	      	  Send_Weigan1();
 521               		.stabn 68,0,279,.LM70-Send_Weigan26
 522               	.LM70:
 523 01d0 46D1      		rcall Send_Weigan1
 524 01d2 01C0      		rjmp .L56
 525               	.L58:
 280:level4.c      **** 	      else
 281:level4.c      **** 	      	  Send_Weigan0();	
 526               		.stabn 68,0,281,.LM71-Send_Weigan26
 527               	.LM71:
 528 01d4 4FD1      		rcall Send_Weigan0
 529               		.stabn 68,0,275,.LM72-Send_Weigan26
 530               	.LM72:
 531               	.L56:
 532 01d6 CF5F      		subi r28,lo8(-(1))
 533 01d8 C032      		cpi r28,lo8(32)
 534 01da 18F3      		brlo .L60
 282:level4.c      **** 	  }
 283:level4.c      **** 	  if ( weigan26_odd_data )                    //Send O bit;
 535               		.stabn 68,0,283,.LM73-Send_Weigan26
 536               	.LM73:
 537 01dc FF20      		tst r15
 538 01de 11F0      		breq .L61
 284:level4.c      **** 	  	  Send_Weigan1();
 539               		.stabn 68,0,284,.LM74-Send_Weigan26
 540               	.LM74:
 541 01e0 3ED1      		rcall Send_Weigan1
 542 01e2 01C0      		rjmp .L41
 543               	.L61:
 285:level4.c      **** 	  else
 286:level4.c      **** 	  	  Send_Weigan0();	
 544               		.stabn 68,0,286,.LM75-Send_Weigan26
 545               	.LM75:
 546 01e4 47D1      		rcall Send_Weigan0
 287:level4.c      **** }
 547               		.stabn 68,0,287,.LM76-Send_Weigan26
 548               	.LM76:
 549               	.L41:
 550               	.LBE3:
 551               	/* epilogue: frame size=0 */
 552 01e6 CF91      		pop r28
 553 01e8 1F91      		pop r17
 554 01ea 0F91      		pop r16
 555 01ec FF90      		pop r15
 556 01ee EF90      		pop r14
 557 01f0 0895      		ret
 558               	/* epilogue end (size=6) */
 559               	/* function Send_Weigan26 size 121 (110) */

⌨️ 快捷键说明

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