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

📄 level2.lst

📁 此程序为利用mage8 AVR 和EM4094实现读取ISO15693类型卡的C程序、读卡稳定、这个项目我们做了好久、非常不错的程序、很适合做这方面产品的朋友们参考
💻 LST
📖 第 1 页 / 共 5 页
字号:
 420 01d4 89BF      		out 89-0x20,r24
 155:level2.c      ****     TCCR1B = 1;                              //internal clock T1, RUN!
 421               		.stabn 68,0,155,.LM49-SendForward
 422               	.LM49:
 423 01d6 81E0      		ldi r24,lo8(1)
 424 01d8 8EBD      		out 78-0x20,r24
 156:level2.c      **** 
 157:level2.c      ****   // waiting for clearing TOIE1 => command sending
 158:level2.c      ****     while ( bit_is_set( TIMSK , TOIE1 ) != 0 )
 425               		.stabn 68,0,158,.LM50-SendForward
 426               	.LM50:
 427               	.L31:
 428 01da 09B6      		in __tmp_reg__,89-0x20
 429 01dc 02FC      		sbrc __tmp_reg__,2
 430 01de FDCF      		rjmp .L31
 159:level2.c      ****     {
 160:level2.c      **** //      SetLEDOff();
 161:level2.c      **** //      SetLEDOn();
 162:level2.c      **** //      SetLEDOff();
 163:level2.c      ****     }
 164:level2.c      **** }
 431               		.stabn 68,0,164,.LM51-SendForward
 432               	.LM51:
 433               	.LBE2:
 434               	/* epilogue: frame size=0 */
 435 01e0 0895      		ret
 436               	/* epilogue end (size=1) */
 437               	/* function SendForward size 55 (54) */
 438               		.size	SendForward, .-SendForward
 439               	.Lscope1:
 440               		.stabs	"",36,0,0,.Lscope1-SendForward
 441               		.stabs	"Prepare_Data:F(4,2)",36,0,173,Prepare_Data
 442               		.stabs	"data:P(4,2)",64,0,172,25
 443               	.global	Prepare_Data
 444               		.type	Prepare_Data, @function
 445               	Prepare_Data:
 165:level2.c      **** 
 166:level2.c      **** 
 167:level2.c      **** 
 168:level2.c      **** // ==================================================================
 169:level2.c      **** // prepares data bit pairs
 170:level2.c      **** // see EM4x35 uplink spec
 171:level2.c      **** 
 172:level2.c      **** uint8_t Prepare_Data( uint8_t data ) 
 173:level2.c      **** {
 446               		.stabn 68,0,173,.LM52-Prepare_Data
 447               	.LM52:
 448               	/* prologue: frame size=0 */
 449               	/* prologue end (size=0) */
 450 01e2 982F      		mov r25,r24
 174:level2.c      ****     register uint8_t i;
 175:level2.c      **** 
 176:level2.c      ****     for ( i = 0 ; i < 4 ; i++ ) 
 451               		.stabn 68,0,176,.LM53-Prepare_Data
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccU5baaa.s 			page 12


 452               	.LM53:
 453               	.LBB3:
 454 01e4 20E0      		ldi r18,lo8(0)
 455               	.L41:
 177:level2.c      ****     {
 178:level2.c      ****         *forward_ptr++ = data & 3;
 456               		.stabn 68,0,178,.LM54-Prepare_Data
 457               	.LM54:
 458 01e6 E091 0000 		lds r30,forward_ptr
 459 01ea F091 0000 		lds r31,(forward_ptr)+1
 460 01ee 892F      		mov r24,r25
 461 01f0 8370      		andi r24,lo8(3)
 462 01f2 8193      		st Z+,r24
 463 01f4 F093 0000 		sts (forward_ptr)+1,r31
 464 01f8 E093 0000 		sts forward_ptr,r30
 179:level2.c      ****         data >>= 2;
 465               		.stabn 68,0,179,.LM55-Prepare_Data
 466               	.LM55:
 467 01fc 9695      		lsr r25
 468 01fe 9695      		lsr r25
 469               		.stabn 68,0,176,.LM56-Prepare_Data
 470               	.LM56:
 471 0200 2F5F      		subi r18,lo8(-(1))
 472 0202 2430      		cpi r18,lo8(4)
 473 0204 80F3      		brlo .L41
 180:level2.c      ****     }
 181:level2.c      ****     return 4;                             //return number of emited bits
 182:level2.c      **** }
 474               		.stabn 68,0,182,.LM57-Prepare_Data
 475               	.LM57:
 476               	.LBE3:
 477 0206 84E0      		ldi r24,lo8(4)
 478 0208 90E0      		ldi r25,hi8(4)
 479               	/* epilogue: frame size=0 */
 480 020a 0895      		ret
 481               	/* epilogue end (size=1) */
 482               	/* function Prepare_Data size 21 (20) */
 483               		.size	Prepare_Data, .-Prepare_Data
 484               		.stabs	"i:r(4,2)",64,0,174,18
 485               		.stabn	192,0,0,.LBB3-Prepare_Data
 486               		.stabn	224,0,0,.LBE3-Prepare_Data
 487               	.Lscope2:
 488               		.stabs	"",36,0,0,.Lscope2-Prepare_Data
 489               		.stabs	"ClearCaptureBuffers:F(0,20)",36,0,188,ClearCaptureBuffers
 490               	.global	ClearCaptureBuffers
 491               		.type	ClearCaptureBuffers, @function
 492               	ClearCaptureBuffers:
 183:level2.c      **** 
 184:level2.c      **** 
 185:level2.c      **** // ==================================================================
 186:level2.c      **** 
 187:level2.c      **** void ClearCaptureBuffers( void ) 
 188:level2.c      **** {
 493               		.stabn 68,0,188,.LM58-ClearCaptureBuffers
 494               	.LM58:
 495               	/* prologue: frame size=0 */
 496               	/* prologue end (size=0) */
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccU5baaa.s 			page 13


 189:level2.c      ****     uint8_t i;
 190:level2.c      ****     for ( i = 0 ; i < CAPTURE_SIZE ; i++ ) 
 497               		.stabn 68,0,190,.LM59-ClearCaptureBuffers
 498               	.LM59:
 499               	.LBB4:
 500 020c 90E0      		ldi r25,lo8(0)
 501               	.L49:
 191:level2.c      ****     {
 192:level2.c      ****         capture.capture_data[ i ] = 0;
 502               		.stabn 68,0,192,.LM60-ClearCaptureBuffers
 503               	.LM60:
 504 020e E92F      		mov r30,r25
 505 0210 FF27      		clr r31
 506 0212 E050      		subi r30,lo8(-(capture))
 507 0214 F040      		sbci r31,hi8(-(capture))
 508 0216 1082      		st Z,__zero_reg__
 193:level2.c      ****         capture.capture_valid[ i ] = 0xFF;
 509               		.stabn 68,0,193,.LM61-ClearCaptureBuffers
 510               	.LM61:
 511 0218 E058      		subi r30,lo8(-(128))
 512 021a FF4F      		sbci r31,hi8(-(128))
 513 021c 8FEF      		ldi r24,lo8(-1)
 514 021e 8083      		st Z,r24
 515               		.stabn 68,0,190,.LM62-ClearCaptureBuffers
 516               	.LM62:
 517 0220 9F5F      		subi r25,lo8(-(1))
 518 0222 97FF      		sbrs r25,7
 519 0224 F4CF      		rjmp .L49
 194:level2.c      ****     }
 195:level2.c      ****     bufferClean = 1;
 520               		.stabn 68,0,195,.LM63-ClearCaptureBuffers
 521               	.LM63:
 522 0226 81E0      		ldi r24,lo8(1)
 523 0228 8093 0000 		sts bufferClean,r24
 196:level2.c      **** }
 524               		.stabn 68,0,196,.LM64-ClearCaptureBuffers
 525               	.LM64:
 526               	.LBE4:
 527               	/* epilogue: frame size=0 */
 528 022c 0895      		ret
 529               	/* epilogue end (size=1) */
 530               	/* function ClearCaptureBuffers size 17 (16) */
 531               		.size	ClearCaptureBuffers, .-ClearCaptureBuffers
 532               		.stabs	"i:r(4,2)",64,0,189,25
 533               		.stabn	192,0,0,.LBB4-ClearCaptureBuffers
 534               		.stabn	224,0,0,.LBE4-ClearCaptureBuffers
 535               	.Lscope3:
 536               		.stabs	"",36,0,0,.Lscope3-ClearCaptureBuffers
 537               		.stabs	"WaitSPI:F(0,20)",36,0,201,WaitSPI
 538               	.global	WaitSPI
 539               		.type	WaitSPI, @function
 540               	WaitSPI:
 197:level2.c      **** 
 198:level2.c      **** 
 199:level2.c      **** // ==================================================================
 200:level2.c      **** 
 201:level2.c      **** void WaitSPI(void) {
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccU5baaa.s 			page 14


 541               		.stabn 68,0,201,.LM65-WaitSPI
 542               	.LM65:
 543               	/* prologue: frame size=0 */
 544               	/* prologue end (size=0) */
 202:level2.c      ****   int register x = SPI_DELAY;
 545               		.stabn 68,0,202,.LM66-WaitSPI
 546               	.LM66:
 547               	.LBB5:
 548 022e 25E0      		ldi r18,lo8(5)
 549 0230 30E0      		ldi r19,hi8(5)
 203:level2.c      ****   while(x-->0)
 550               		.stabn 68,0,203,.LM67-WaitSPI
 551               	.LM67:
 552               	.L53:
 553 0232 C901      		movw r24,r18
 554 0234 2150      		subi r18,lo8(-(-1))
 555 0236 3040      		sbci r19,hi8(-(-1))
 556 0238 1816      		cp __zero_reg__,r24
 557 023a 1906      		cpc __zero_reg__,r25
 558 023c D4F3      		brlt .L53
 204:level2.c      ****     {}
 205:level2.c      **** }
 559               		.stabn 68,0,205,.LM68-WaitSPI
 560               	.LM68:
 561               	.LBE5:
 562               	/* epilogue: frame size=0 */
 563 023e 0895      		ret
 564               	/* epilogue end (size=1) */
 565               	/* function WaitSPI size 9 (8) */
 566               		.size	WaitSPI, .-WaitSPI
 567               		.stabs	"x:r(0,1)",64,0,202,18
 568               		.stabn	192,0,0,.LBB5-WaitSPI
 569               		.stabn	224,0,0,.LBE5-WaitSPI
 570               	.Lscope4:
 571               		.stabs	"",36,0,0,.Lscope4-WaitSPI
 572               		.stabs	"WriteSPI:F(0,20)",36,0,209,WriteSPI
 573               		.stabs	"low:P(4,4)",64,0,209,24
 574               		.stabs	"hi:P(4,4)",64,0,209,14
 575               	.global	WriteSPI
 576               		.type	WriteSPI, @function
 577               	WriteSPI:
 206:level2.c      **** 
 207:level2.c      **** // ==================================================================
 208:level2.c      **** 
 209:level2.c      **** void WriteSPI(uint16_t low, uint16_t hi) {
 578               		.stabn 68,0,209,.LM69-WriteSPI
 579               	.LM69:
 580               	/* prologue: frame size=0 */
 581 0240 EF92      		push r14
 582 0242 FF92      		push r15
 583 0244 1F93      		push r17
 584 0246 CF93      		push r28
 585 0248 DF93      		push r29
 586               	/* prologue end (size=5) */
 587 024a 7B01      		movw r14,r22
 210:level2.c      **** 
 211:level2.c      ****   int16_t data = low;  
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccU5baaa.s 			page 15


 588               		.stabn 68,0,211,.LM70-WriteSPI
 589               	.LM70:
 590               	.LBB6:
 591 024c EC01      		movw r28,r24
 212:level2.c      ****   uint8_t bitcnt = 32;  
 213:level2.c      **** 
 214:level2.c      ****   //SPI start event
 215:level2.c      ****   cbi(PORTC, MOD_PIN);
 592               		.stabn 68,0,215,.LM71-WriteSPI
 593               	.LM71:
 594 024e A998      		cbi 53-0x20,1
 216:level2.c      ****   WaitSPI();
 595               		.stabn 68,0,216,.LM72-WriteSPI
 596               	.LM72:
 597 0250 EEDF      		rcall WaitSPI
 217:level2.c      ****   sbi(PORTC, DCLK_PIN);
 598               		.stabn 68,0,217,.LM73-WriteSPI
 599               	.LM73:
 600 0252 A89A      		sbi 53-0x20,0
 218:level2.c      ****   WaitSPI();
 601               		.stabn 68,0,218,.LM74-WriteSPI
 602               	.LM74:
 603 0254 ECDF      		rcall WaitSPI
 219:level2.c      ****   sbi(PORTC, MOD_PIN);
 604               		.stabn 68,0,219,.LM75-WriteSPI
 605               	.LM75:
 606 0256 A99A      		sbi 53-0x20,1
 220:level2.c      ****   WaitSPI();
 607               		.stabn 68,0,220,.LM76-WriteSPI
 608               	.LM76:
 609 0258 EADF      		rcall WaitSPI
 221:level2.c      **** 
 222:level2.c      ****   while (bitcnt-- > 0) {
 610               		.stabn 68,0,222,.LM77-WriteSPI
 611               	.LM77:
 612 025a 1FE1      		ldi r17,lo8(31)
 613               	.L63:
 223:level2.c      **** 
 224:level2.c      ****     cbi(PORTC, DCLK_PIN);
 614               		.stabn 68,0,224,.LM78-WriteSPI
 615               	.LM78:
 616 025c A898      		cbi 53-0x20,0
 225:level2.c      ****     WaitSPI();
 617               		.stabn 68,0,225,.LM79-WriteSPI
 618               	.LM79:
 619 025e E7DF      		rcall WaitSPI
 226:level2.c      ****   
 227:level2.c      ****     if(data & 1) sbi(PORTC, MOD_PIN); else cbi(PORTC, MOD_PIN);
 620               		.stabn 68,0,227,.LM80-WriteSPI
 621               	.LM80:
 622 0260 C0FF      		sbrs r28,0
 623 0262 02C0      		rjmp .L60
 624 0264 A99A      		sbi 53-0x20,1
 625 0266 01C0      		rjmp .L61
 626               	.L60:
 627 0268 A998      		cbi 53-0x20,1
 628               	.L61:
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccU5baaa.s 			page 16


 228:level2.c      ****     WaitSPI();
 629               		.stabn 68,0,228,.LM81-WriteSPI
 630               	.LM81:
 631 026a E1DF      		rcall WaitSPI
 229:level2.c      ****   
 230:level2.c      ****     data >>= 1;

⌨️ 快捷键说明

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