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

📄 serial.lst

📁 MMC/SD on Olimex Sam7-EX256
💻 LST
字号:
   1              		.code	16   2              		.file	"serial.c"  10              	.Ltext0:  11              		.global	pUSART  12              		.data  13              		.align	2  16              	pUSART:  17 0000 0000FCFF 		.word	-262144  18              		.text  19              		.align	2  20              		.global	uart0_kbhit  21              		.code 16  22              		.thumb_func  24              	uart0_kbhit:  25              	.LFB2:  26              		.file 1 "usart/serial.c"   1:usart/serial.c **** /******************************************************************************/
   2:usart/serial.c **** /*  This file has been a part of the uVision/ARM development tools            */
   3:usart/serial.c **** /*  Copyright KEIL ELEKTRONIK GmbH 2002-2004                                  */
   4:usart/serial.c **** /******************************************************************************/
   5:usart/serial.c **** /*                                                                            */
   6:usart/serial.c **** /*  SERIAL.C:  Low Level Serial Routines                                      */
   7:usart/serial.c **** /*                                                                            */
   8:usart/serial.c **** /******************************************************************************/
   9:usart/serial.c **** 
  10:usart/serial.c **** /* 
  11:usart/serial.c ****    Martin Thomas : 
  12:usart/serial.c ****    - slightly modified for the WinARM example 
  13:usart/serial.c ****    - changed function names to avoid conflict with "stdio"
  14:usart/serial.c ****      (so far no syscalls for the newlib in this example)
  15:usart/serial.c ****    - Keil seems to "reject" the AT91lib*.h. Don't know
  16:usart/serial.c ****      why since the layer is "thin". Maybe will change this to 
  17:usart/serial.c **** 	 "lib Style" in later version...
  18:usart/serial.c **** */
  19:usart/serial.c **** 
  20:usart/serial.c **** // already done in Board.h: #include <AT91SAM7S64.H>                    /* AT91SAMT7S64 definitions  21:usart/serial.c **** //#include "include/Board.h"
  22:usart/serial.c **** #include "../include/include.h"
  23:usart/serial.c **** 
  24:usart/serial.c **** #define BR   115200                        /* Baud Rate */
  25:usart/serial.c **** #define MCK             47923200   // MCK (PLLRC div by 2)
  26:usart/serial.c **** #define BRD  (MCK/16/BR)                    /* Baud Rate Divisor */
  27:usart/serial.c **** 
  28:usart/serial.c **** 
  29:usart/serial.c **** AT91S_USART * pUSART = AT91C_BASE_US0;      /* Global Pointer to USART0 */
  30:usart/serial.c **** 
  31:usart/serial.c **** 
  32:usart/serial.c **** int uart0_kbhit( void ) /* returns true if character in receive buffer */
  33:usart/serial.c **** {
  27              		.loc 1 33 0  28              	.LVL0:  34:usart/serial.c **** 	if ( pUSART->US_CSR & AT91C_US_RXRDY) {
  29              		.loc 1 34 0  30 0000 024B     		ldr	r3, .L3  31 0002 1B68     		ldr	r3, [r3]  32 0004 5869     		ldr	r0, [r3, #20]  33 0006 0123     		mov	r3, #1  34 0008 1840     		and	r0, r0, r3  35              		.loc 1 33 0  36              		@ lr needed for prologue  35:usart/serial.c **** 		return 1;
  36:usart/serial.c **** 	}
  37:usart/serial.c **** 	else {
  38:usart/serial.c **** 		return 0;
  39:usart/serial.c **** 	}
  40:usart/serial.c **** }
  37              		.loc 1 40 0  38              		@ sp needed for prologue  39 000a 7047     		bx	lr  40              	.L4:  41              		.align	2  42              	.L3:  43 000c 00000000 		.word	pUSART  44              	.LFE2:  46              		.align	2  47              		.global	uart0_init  48              		.code 16  49              		.thumb_func  51              	uart0_init:  52              	.LFB3:  41:usart/serial.c **** 
  42:usart/serial.c **** 
  43:usart/serial.c **** void uart0_init (void) {                   /* Initialize Serial Interface */
  53              		.loc 1 43 0  54              	.LVL1:  44:usart/serial.c ****   /* mt: n.b: uart0 clock must be enabled to use it */
  45:usart/serial.c **** 
  46:usart/serial.c ****   *AT91C_PIOA_PDR = AT91C_PA0_RXD0 |        /* Enable RxD0 Pin */
  55              		.loc 1 46 0  56 0010 074B     		ldr	r3, .L7  57 0012 0322     		mov	r2, #3  58 0014 1A60     		str	r2, [r3]  47:usart/serial.c ****                     AT91C_PA1_TXD0;         /* Enalbe TxD0 Pin */
  48:usart/serial.c **** 
  49:usart/serial.c ****   pUSART->US_CR = AT91C_US_RSTRX |          /* Reset Receiver      */
  59              		.loc 1 49 0  60 0016 074B     		ldr	r3, .L7+4  61 0018 1A68     		ldr	r2, [r3]  62 001a AC23     		mov	r3, #172  63 001c 1360     		str	r3, [r2]  50:usart/serial.c ****                   AT91C_US_RSTTX |          /* Reset Transmitter   */
  51:usart/serial.c ****                   AT91C_US_RXDIS |          /* Receiver Disable    */
  52:usart/serial.c ****                   AT91C_US_TXDIS;           /* Transmitter Disable */
  53:usart/serial.c **** 
  54:usart/serial.c ****   pUSART->US_MR = AT91C_US_USMODE_NORMAL |  /* Normal Mode */
  64              		.loc 1 54 0  65 001e 8C23     		mov	r3, #140  66 0020 1B01     		lsl	r3, r3, #4  67 0022 5360     		str	r3, [r2, #4]  55:usart/serial.c ****                   AT91C_US_CLKS_CLOCK    |  /* Clock = MCK */
  56:usart/serial.c ****                   AT91C_US_CHRL_8_BITS   |  /* 8-bit Data  */
  57:usart/serial.c ****                   AT91C_US_PAR_NONE      |  /* No Parity   */
  58:usart/serial.c ****                   AT91C_US_NBSTOP_1_BIT;    /* 1 Stop Bit  */
  59:usart/serial.c **** 
  60:usart/serial.c ****   pUSART->US_BRGR = BRD;                    /* Baud Rate Divisor */
  68              		.loc 1 60 0  69 0024 1A23     		mov	r3, #26  70 0026 1362     		str	r3, [r2, #32]  61:usart/serial.c **** 
  62:usart/serial.c ****   pUSART->US_CR = AT91C_US_RXEN  |          /* Receiver Enable     */
  71              		.loc 1 62 0  72 0028 5023     		mov	r3, #80  73              		.loc 1 43 0  74              		@ lr needed for prologue  75              		.loc 1 62 0  76 002a 1360     		str	r3, [r2]  63:usart/serial.c ****                   AT91C_US_TXEN;            /* Transmitter Enable  */                  
  64:usart/serial.c **** }
  77              		.loc 1 64 0  78              		@ sp needed for prologue  79 002c 7047     		bx	lr  80              	.L8:  81 002e 0000     		.align	2  82              	.L7:  83 0030 04F4FFFF 		.word	-3068  84 0034 00000000 		.word	pUSART  85              	.LFE3:  87              		.align	2  88              		.global	uart0_putc  89              		.code 16  90              		.thumb_func  92              	uart0_putc:  93              	.LFB4:  65:usart/serial.c **** 
  66:usart/serial.c **** 
  67:usart/serial.c **** 
  68:usart/serial.c **** int uart0_putc(int ch) 
  69:usart/serial.c **** {
  94              		.loc 1 69 0  95              	.LVL2:  70:usart/serial.c **** 	while (!(pUSART->US_CSR & AT91C_US_TXRDY));   /* Wait for Empty Tx Buffer */
  96              		.loc 1 70 0  97 0038 034B     		ldr	r3, .L16  98 003a 1A68     		ldr	r2, [r3]  99              		.loc 1 69 0 100              		@ lr needed for prologue 101              	.L11: 102              		.loc 1 70 0 103 003c 5369     		ldr	r3, [r2, #20] 104 003e 9907     		lsl	r1, r3, #30 105 0040 FCD5     		bpl	.L11  71:usart/serial.c **** 	return (pUSART->US_THR = ch);                 /* Transmit Character */
 106              		.loc 1 71 0 107 0042 D061     		str	r0, [r2, #28] 108 0044 D069     		ldr	r0, [r2, #28] 109              	.LVL3:  72:usart/serial.c **** }	
 110              		.loc 1 72 0 111              		@ sp needed for prologue 112 0046 7047     		bx	lr 113              	.L17: 114              		.align	2 115              	.L16: 116 0048 00000000 		.word	pUSART 117              	.LFE4: 119              		.align	2 120              		.global	uart0_putchar 121              		.code 16 122              		.thumb_func 124              	uart0_putchar: 125              	.LFB5:  73:usart/serial.c **** 
  74:usart/serial.c **** int uart0_putchar (int ch) {                      /* Write Character to Serial Port */
 126              		.loc 1 74 0 127 004c 10B5     		push	{r4, lr} 128              	.LCFI0: 129              	.LVL4: 130              		.loc 1 74 0 131 004e 041C     		mov	r4, r0  75:usart/serial.c **** 
  76:usart/serial.c ****   if (ch == '\n')  {                            /* Check for LF */
 132              		.loc 1 76 0 133 0050 0A28     		cmp	r0, #10 134 0052 02D1     		bne	.L19  77:usart/serial.c ****     uart0_putc( '\r' );                         /* Output CR */
 135              		.loc 1 77 0 136 0054 0D20     		mov	r0, #13 137              	.LVL5: 138 0056 FFF7FEFF 		bl	uart0_putc 139              	.LVL6: 140              	.L19:  78:usart/serial.c ****   }
  79:usart/serial.c ****   return uart0_putc( ch );                     /* Transmit Character */
 141              		.loc 1 79 0 142 005a 201C     		mov	r0, r4 143 005c FFF7FEFF 		bl	uart0_putc  80:usart/serial.c **** }
 144              		.loc 1 80 0 145              		@ sp needed for prologue 146              	.LVL7: 147 0060 10BC     		pop	{r4} 148 0062 02BC     		pop	{r1} 149 0064 0847     		bx	r1 150              	.LFE5: 152 0066 0000     		.align	2 153              		.global	uart0_puts 154              		.code 16 155              		.thumb_func 157              	uart0_puts: 158              	.LFB6:  81:usart/serial.c **** 
  82:usart/serial.c **** int uart0_puts ( char* s ){
 159              		.loc 1 82 0 160 0068 10B5     		push	{r4, lr} 161              	.LCFI1: 162              	.LVL8: 163              		.loc 1 82 0 164 006a 041C     		mov	r4, r0 165 006c 02E0     		b	.L23 166              	.LVL9: 167              	.L24:  83:usart/serial.c **** 	while ( *s ) uart0_putchar( *s++ );
 168              		.loc 1 83 0 169 006e 0134     		add	r4, r4, #1 170 0070 FFF7FEFF 		bl	uart0_putchar 171              	.LVL10: 172              	.L23: 173 0074 2078     		ldrb	r0, [r4] 174 0076 0028     		cmp	r0, #0 175 0078 F9D1     		bne	.L24  84:usart/serial.c **** 	return 0;
  85:usart/serial.c **** }
 176              		.loc 1 85 0 177              		@ sp needed for prologue 178              	.LVL11: 179 007a 10BC     		pop	{r4} 180 007c 02BC     		pop	{r1} 181 007e 0847     		bx	r1 182              	.LFE6: 184              		.align	2 185              		.global	uart0_getc 186              		.code 16 187              		.thumb_func 189              	uart0_getc: 190              	.LFB7:  86:usart/serial.c **** 
  87:usart/serial.c **** 
  88:usart/serial.c **** 
  89:usart/serial.c **** int uart0_getc ( void )  /* Read Character from Serial Port */
  90:usart/serial.c **** {    
 191              		.loc 1 90 0 192              	.LVL12:  91:usart/serial.c **** 
  92:usart/serial.c ****   while (!(pUSART->US_CSR & AT91C_US_RXRDY));   /* Wait for Full Rx Buffer */
 193              		.loc 1 92 0 194 0080 034B     		ldr	r3, .L34 195 0082 1A68     		ldr	r2, [r3] 196              		.loc 1 90 0 197              		@ lr needed for prologue 198              	.L29: 199              		.loc 1 92 0 200 0084 5369     		ldr	r3, [r2, #20] 201 0086 D907     		lsl	r1, r3, #31 202 0088 FCD5     		bpl	.L29  93:usart/serial.c ****   return (pUSART->US_RHR);                      /* Read Character */
 203              		.loc 1 93 0 204 008a 9069     		ldr	r0, [r2, #24]  94:usart/serial.c **** }
 205              		.loc 1 94 0 206              		@ sp needed for prologue 207 008c 7047     		bx	lr 208              	.L35: 209 008e 0000     		.align	2 210              	.L34: 211 0090 00000000 		.word	pUSART 212              	.LFE7: 295              	.Letext0:DEFINED SYMBOLS                            *ABS*:00000000 serial.c/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccZfcStZ.s:1      .text:00000000 $t/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccZfcStZ.s:16     .data:00000000 pUSART/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccZfcStZ.s:17     .data:00000000 $d/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccZfcStZ.s:24     .text:00000000 uart0_kbhit/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccZfcStZ.s:43     .text:0000000c $d/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccZfcStZ.s:51     .text:00000010 uart0_init/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccZfcStZ.s:48     .text:00000010 $t/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccZfcStZ.s:83     .text:00000030 $d/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccZfcStZ.s:92     .text:00000038 uart0_putc/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccZfcStZ.s:89     .text:00000038 $t/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccZfcStZ.s:116    .text:00000048 $d/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccZfcStZ.s:124    .text:0000004c uart0_putchar/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccZfcStZ.s:121    .text:0000004c $t/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccZfcStZ.s:157    .text:00000068 uart0_puts/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccZfcStZ.s:189    .text:00000080 uart0_getc/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccZfcStZ.s:211    .text:00000090 $dNO UNDEFINED SYMBOLS

⌨️ 快捷键说明

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