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

📄 uart.lst

📁 rtc code for lpc2148
💻 LST
📖 第 1 页 / 共 5 页
字号:
 536              		ldmfd	sp!, {r4, pc}
 537 03b0 30309FE5 	.L57:
 538 03b4 B040C3E1 		.align	2
 539 03b8 2C309FE5 	.L56:
 540 03bc B040C3E1 		.word	-536690688
 541              		.word	-536805376
 542 03c0 28309FE5 		.word	-4096
 543 03c4 004083E5 		.word	uart1ISR
 544              		.word	uart1_rx_extract_idx
 545 03c8 24309FE5 		.word	uart1_tx_insert_idx
 546 03cc B040C3E1 		.word	uart1_tx_extract_idx
 398:uart.c        **** #endif
 399:uart.c        **** #endif
 400:uart.c        **** }
 547              	ng
 548 03d0 1080BDE8 		.word	uart1_rx_insert_idx
 549              	.LFE10:
 551              		.align	2
 552 03d4 00C002E0 		.global	uart1Putch
 554 03dc 00F0FFFF 	uart1Putch:
 555 03e0 00000000 	.LFB11:
 556 03e4 00000000 		.loc 1 418 0
 557 03e8 00000000 		@ args = 0, pretend = 0, frame = 0
 558 03ec 00000000 		@ frame_needed = 0, uses_anonymous_args = 0
 559 03f0 00000000 	.LVL38:
 560 03f4 00000000 		stmfd	sp!, {r4, r5, r6, r7, lr}
 561              	.LCFI7:
 562              		.loc 1 423 0
 563              		ldr	r6, .L67
 564              		ldrh	r3, [r6, #0]
 565              		ldr	r2, .L67+4
 566              		add	r3, r3, #1
 567              		and	r2, r3, r2
 401:uart.c        **** 
 402:uart.c        **** /******************************************************************************
 403:uart.c        ****  *
 404:uart.c        ****  * Function Name: uart1Putch()
 405:uart.c        ****  *
 406:uart.c        ****  * Description:  
 407:uart.c        ****  *    This function puts a character into the UART output queue for
 408:uart.c        ****  *    transmission.
 409:uart.c        ****  *
 410:uart.c        ****  * Calling Sequence: 
 411:uart.c        ****  *    ch - character to be transmitted
 412:uart.c        ****  *
 413:uart.c        ****  * Returns:
 414:uart.c        ****  *    ch on success, -1 on error (queue full)
 415:uart.c        ****  *
 416:uart.c        ****  *****************************************************************************/
 417:uart.c        **** int uart1Putch(int ch)
 418:uart.c        **** {
 568              	, .L67+8
 569              		.loc 1 423 0
 570              		mov	r2, r2, asl #16
 571              		.loc 1 425 0
 572 03f8 F0402DE9 		ldrh	r3, [r3, #0]
 573              		.loc 1 423 0
 419:uart.c        **** #ifdef UART1_TX_INT_MODE
 420:uart.c        ****   uint16_t temp;
 421:uart.c        ****   unsigned cpsr;
 422:uart.c        **** 
 423:uart.c        ****   temp = (uart1_tx_insert_idx + 1) % UART1_TX_BUFFER_SIZE;
 574              	5, r2, lsr #16
 575 03fc 94609FE5 	.LVL39:
 576 0400 B030D6E1 		.loc 1 425 0
 577 0404 90209FE5 		cmp	r3, r5
 578 0408 013083E2 		.loc 1 429 0
 579 040c 022003E0 		ldr	r7, .L67+12
 424:uart.c        **** 
 425:uart.c        ****   if (temp == uart1_tx_extract_idx)
 580              	1 425 0
 581 0410 88309FE5 		mvn	r3, #0
 582              		.loc 1 418 0
 583 0414 0228A0E1 		mov	r4, r0
 584              		.loc 1 425 0
 585 0418 B030D3E1 		beq	.L62
 586              	.LVL40:
 587 041c 2258A0E1 		.loc 1 428 0
 588              		bl	disableIRQ
 589              		.loc 1 429 0
 590 0420 050053E1 		ldrb	r3, [r7, #4]	@ zero_extendqisi2
 426:uart.c        ****     return -1;                          // no room
 427:uart.c        **** 
 428:uart.c        ****   cpsr = disableIRQ();                  // disable global interrupts
 429:uart.c        ****   U1IER &= ~UIER_ETBEI;                 // disable TX interrupts
 591              	, #253
 592 0424 78709FE5 		strb	r3, [r7, #4]
 593              		.loc 1 430 0
 594 0428 0030E0E3 		bl	restoreIRQ
 595              		.loc 1 433 0
 596 042c 0040A0E1 		ldr	r1, .L67+16
 597              		ldr	r3, [r1, #0]
 598 0430 1600000A 		cmp	r3, #0
 599              		.loc 1 443 0
 600              		and	r2, r4, #255
 601 0434 FEFFFFEB 		.loc 1 436 0
 602              		ldrne	r3, .L67+20
 603 0438 0430D7E5 		ldrneh	r2, [r6, #0]
 604 043c FD3003E2 		.loc 1 442 0
 605 0440 0430C7E5 		moveq	r3, #1
 430:uart.c        ****   restoreIRQ(cpsr);                     // restore global interrupts
 606              	strneb	r4, [r2, r3]
 607 0444 FEFFFFEB 		.loc 1 442 0
 431:uart.c        **** 
 432:uart.c        ****   // check if in process of sending data
 433:uart.c        ****   if (uart1_tx_running)
 608              	treq	r3, [r1, #0]
 609 0448 58109FE5 		.loc 1 443 0
 610 044c 003091E5 		streqb	r2, [r7, #0]
 611 0450 000053E3 		.loc 1 437 0
 434:uart.c        ****     {
 435:uart.c        ****     // add to queue
 436:uart.c        ****     uart1_tx_buffer[uart1_tx_insert_idx] = (uint8_t)ch;
 437:uart.c        ****     uart1_tx_insert_idx = temp;
 438:uart.c        ****     }
 439:uart.c        ****   else
 440:uart.c        ****     {
 441:uart.c        ****     // set running flag and write to output register
 442:uart.c        ****     uart1_tx_running = 1;
 443:uart.c        ****     U1THR = (uint8_t)ch;
 612              	neh	r5, [r6, #0]	@ movhi
 613 0454 FF2004E2 		.loc 1 446 0
 614              		bl	disableIRQ
 615 0458 4C309F15 		.loc 1 447 0
 616 045c B020D611 		ldr	r2, .L67+12
 617              		ldrb	r3, [r2, #4]	@ zero_extendqisi2
 618 0460 0130A003 		orr	r3, r3, #2
 619              		strb	r3, [r2, #4]
 620 0464 0340C217 		.loc 1 448 0
 621              		bl	restoreIRQ
 622 0468 00308105 		.loc 1 455 0
 623              		and	r3, r4, #255
 624 046c 0020C705 	.LVL41:
 625              	.L62:
 626 0470 B050C611 		.loc 1 456 0
 444:uart.c        ****     }
 445:uart.c        **** 
 446:uart.c        ****   cpsr = disableIRQ();                  // disable global interrupts
 627              	mfd	sp!, {r4, r5, r6, r7, pc}
 628 0474 FEFFFFEB 	.L68:
 447:uart.c        ****   U1IER |= UIER_ETBEI;                  // enable TX interrupts
 629              	align	2
 630 0478 24209FE5 	.L67:
 631 047c 0430D2E5 		.word	uart1_tx_insert_idx
 632 0480 023083E3 		.word	-2147483521
 633 0484 0430C2E5 		.word	uart1_tx_extract_idx
 448:uart.c        ****   restoreIRQ(cpsr);                     // restore global interrupts
 634              	d	-536805376
 635 0488 FEFFFFEB 		.word	uart1_tx_running
 449:uart.c        **** #else
 450:uart.c        ****   while (!(U1LSR & ULSR_THRE))          // wait for TX buffer to empty
 451:uart.c        ****     continue;                           // also either WDOG() or swap()
 452:uart.c        **** 
 453:uart.c        ****   U1THR = (uint8_t)ch;
 454:uart.c        **** #endif
 455:uart.c        ****   return (uint8_t)ch;
 636              	word	uart1_tx_buffer
 637 048c FF3004E2 	.LFE11:
 639              		.align	2
 456:uart.c        **** }
 640              	obal	uart1Space
 642 0494 F080BDE8 	uart1Space:
 643              	.LFB12:
 644              		.loc 1 473 0
 645              		@ args = 0, pretend = 0, frame = 0
 646 0498 00000000 		@ frame_needed = 0, uses_anonymous_args = 0
 647 049c 7F000080 		@ link register save eliminated.
 648 04a0 00000000 	.LVL42:
 649 04a4 000001E0 		.loc 1 477 0
 650 04a8 00000000 		ldr	r3, .L73
 651 04ac 00000000 		ldrh	r2, [r3, #0]
 652              		ldr	r3, .L73+4
 653              		ldrh	r3, [r3, #0]
 654              		rsb	r0, r3, r2
 655              	.LVL43:
 656              		cmp	r0, #0
 657              		.loc 1 478 0
 658              		addle	r0, r0, #128
 457:uart.c        **** 
 458:uart.c        **** /******************************************************************************
 459:uart.c        ****  *
 460:uart.c        ****  * Function Name: uart1Space()
 461:uart.c        ****  *
 462:uart.c        ****  * Description:  
 463:uart.c        ****  *    This function gets the available space in the transmit queue
 464:uart.c        ****  *
 465:uart.c        ****  * Calling Sequence: 
 466:uart.c        ****  *    void
 467:uart.c        ****  *
 468:uart.c        ****  * Returns:
 469:uart.c        ****  *    available space in the transmit queue
 470:uart.c        ****  *
 471:uart.c        ****  *****************************************************************************/
 472:uart.c        **** uint16_t uart1Space(void)
 473:uart.c        **** {
 659              	L44:
 660              		mov	r0, r0, asl #16
 661              		.loc 1 484 0
 662              		mov	r0, r0, lsr #16
 663              		.loc 1 473 0
 474:uart.c        **** #ifdef UART1_TX_INT_MODE
 475:uart.c        ****   int space;
 476:uart.c        **** 
 477:uart.c        ****   if ((space = (uart1_tx_extract_idx - uart1_tx_insert_idx)) <= 0)
 664              	 needed for prologue
 665 04b0 24309FE5 		.loc 1 484 0
 666 04b4 B020D3E1 		bx	lr
 667 04b8 20309FE5 	.L74:
 668 04bc B030D3E1 		.align	2
 669 04c0 020063E0 	.L73:
 670              		.word	uart1_tx_extract_idx
 671 04c4 000050E3 		.word	uart1_tx_insert_idx
 478:uart.c        ****     space += UART1_TX_BUFFER_SIZE;
 673 04c8 800080D2 		.align	2
 674 04cc 010040E2 		.global	uart1Puts
 676 04d0 0008A0E1 	uart1Puts:
 479:uart.c        **** 
 480:uart.c        ****   return (uint16_t)(space - 1);
 481:uart.c        **** #else
 482:uart.c        ****   return USHRT_MAX;
 483:uart.c        **** #endif
 484:uart.c        **** }
 677              	3:
 678 04d4 2008A0E1 		.loc 1 503 0
 679              		@ args = 0, pretend = 0, frame = 0
 680              		@ frame_needed = 0, uses_anonymous_args = 0
 681              	.LVL45:
 682 04d8 1EFF2FE1 		stmfd	sp!, {r4, lr}
 683              	.LCFI8:
 684              		.loc 1 503 0
 685              		mov	r4, r0
 686 04dc 00000000 		b	.L76
 687 04e0 00000000 	.LVL46:
 688              	.L77:
 689              		.loc 1 507 0
 690              		add	r4, r4, #1
 691              	.LVL47:
 692              	.L76:
 693              		.loc 1 506 0
 694              		ldrb	r3, [r4, #0]	@ zero_extendqisi2
 485:uart.c        **** 
 486:uart.c        **** /******************************************************************************
 487:uart.c        ****  *
 488:uart.c        ****  * Function Name: uart1Puts()
 489:uart.c        ****  *
 490:uart.c        ****  * Description:  
 491:uart.c        ****  *    This function writes a NULL terminated 'string' to the UART output
 492:uart.c        ****  *    queue, returning a pointer to the next character to be written.
 493:uart.c        ****  *
 494:uart.c        ****  * Calling Sequence: 
 495:uart.c        ****  *    address of the string
 496:uart.c        ****  *
 497:uart.c        ****  * Returns:
 498:uart.c        ****  *    a pointer to the next character to be written
 499:uart.c        ****  *    (\0 if full string is written)
 500:uart.c        ****  *
 501:uart.c        ****  *****************************************************************************/
 502:uart.c        **** const char *uart1Puts(const char *string)
 503:uart.c        **** {
 695              	r3, #0
 696              		beq	.L78
 697              	.LVL49:
 698              		bl	uart1Putch
 699 04e4 10402DE9 	.LVL50:
 700              		cmp	r0, #0
 701              		bge	.L77
 702 04e8 0040A0E1 	.LVL51:
 703 04ec 000000EA 	.L78:
 704              		.loc 1 510 0
 705              		mov	r0, r4
 504:uart.c        ****   register char ch;
 505:uart.c        **** 
 506:uart.c        ****   while ((ch = *string) && (uart1Putch(ch) >= 0))
 507:uart.c        ****     string++;
 706              	mfd	sp!, {r4, pc}
 707 04f0 014084E2 	.LFE13:
 709              		.align	2
 710              		.global	uart1Write
 712              	uart1Write:
 713 04f8 000053E2 	.LFB14:
 714 04fc 0200000A 		.loc 1 529 0
 715              		@ args = 0, pretend = 0, frame = 0
 716 0500 FEFFFFEB 		@ frame_needed = 0, uses_anonymous_args = 0
 717              	.LVL53:
 718 0504 000050E3 		stmfd	sp!, {r4, r5, r6, lr}
 719 0508 F8FFFFAA 	.LCFI9:
 720              		.loc 1 529 0
 721              		mov	r1, r1, asl #16
 508:uart.c        **** 
 509:uart.c        ****   return string;
 510:uart.c        **** }
 722              	 r1, lsr #16
 723 050c 0400A0E1 	.LVL55:
 724              		mov	r5, r0
 725 0510 1080BDE8 		.loc 1 531 0
 726              		bl	uart1Space
 727              	.LVL56:
 728              		cmp	r6, r0
 729              		mvnhi	r0, #0
 730              		ldmhifd	sp!, {r4, r5, r6, pc}
 731              		b	.L82
 732              	.LVL57:
 511:uart.c        **** 

⌨️ 快捷键说明

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