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

📄 serial.txt

📁 mp3量不要让站长把时间都花费在为您修正说明上。压缩包解压时不能有密码。系统会自动删除debug和release目录
💻 TXT
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 934] for uVision
; commandline ArmCC [--debug -c --asm --interleave -oserial.o --depend=serial.d --device=DARMP --apcs=interwork -O3 -IC:\Keil\ARM\INC\Philips --omf_browse=serial.crf serial.c]
                          ARM

                          AREA ||.text||, CODE, READONLY, ALIGN=2

                  uart0_init PROC
;;;30         
;;;31         PINSEL0 = (PINSEL0 & 0xfffffff0) | 0x05;    /* Select the pins for Uart 选择管脚为UART0 */
000000  e59f0144          LDR      r0,|L1.332|
000004  e5901000          LDR      r1,[r0,#0]
000008  e3c1100f          BIC      r1,r1,#0xf
00000c  e3811005          ORR      r1,r1,#5
000010  e5801000          STR      r1,[r0,#0]
;;;32     
;;;33         U0LCR = 0x80;                               /* Enable to access the frequenc regecter 	
000014  e3a01080          MOV      r1,#0x80
000018  e2400802          SUB      r0,r0,#0x20000
00001c  e5c0100c          STRB     r1,[r0,#0xc]
;;;34     												允许访问分频因子寄存器 */
;;;35         Fdiv = (Fpclk / 16) / BR;                  /* Set the baudrate设置波特率 */
;;;36         U0DLM = Fdiv / 256;							
000020  e3a01000          MOV      r1,#0
000024  e5c01004          STRB     r1,[r0,#4]
;;;37     	U0DLL = Fdiv % 256;						
000028  e3a02006          MOV      r2,#6
00002c  e5c02000          STRB     r2,[r0,#0]
;;;38         U0LCR = 0x03;                               /* Disable to access the frequenc regecter 
000030  e3a02003          MOV      r2,#3
000034  e5c0200c          STRB     r2,[r0,#0xc]
;;;39     												禁止访问分频因子寄存器 */
;;;40                                                     /* set to 8,1,n 且设置为8,1,n */
;;;41     	U0IER = 0x00;                               /* Disable interrupt禁止中断 */
000038  e5c01004          STRB     r1,[r0,#4]
;;;42         U0FCR = 0x00;                               /* initial FIFO 初始化FIFO */
00003c  e5c01008          STRB     r1,[r0,#8]
;;;43     
;;;44     #if 0
;;;45       /* mt: n.b: uart0 clock must be enabled to use it */
;;;46     
;;;47       //*AT91C_PIOA_PDR = AT91C_PA5_RXD0 |        /* Enable RxD0 Pin */
;;;48      //                   AT91C_PA6_TXD0;         /* Enalbe TxD0 Pin */
;;;49     
;;;50       *AT91C_PIOA_PDR = AT91C_PA9_DRXD |        /* Enable RxD0 Pin */
;;;51                         AT91C_PA10_DTXD;         /* Enalbe TxD0 Pin */
;;;52     
;;;53       pUSART->US_CR = AT91C_US_RSTRX |          /* Reset Receiver      */
;;;54                       AT91C_US_RSTTX |          /* Reset Transmitter   */
;;;55                       AT91C_US_RXDIS |          /* Receiver Disable    */
;;;56                       AT91C_US_TXDIS;           /* Transmitter Disable */
;;;57     
;;;58       pUSART->US_MR = AT91C_US_USMODE_NORMAL |  /* Normal Mode */
;;;59                       AT91C_US_CLKS_CLOCK    |  /* Clock = MCK */
;;;60                       AT91C_US_CHRL_8_BITS   |  /* 8-bit Data  */
;;;61                       AT91C_US_PAR_NONE      |  /* No Parity   */
;;;62                       AT91C_US_NBSTOP_1_BIT;    /* 1 Stop Bit  */
;;;63     
;;;64       pUSART->US_BRGR = BRD;                    /* Baud Rate Divisor */
;;;65     
;;;66       pUSART->US_CR = AT91C_US_RXEN  |          /* Receiver Enable     */
;;;67                       AT91C_US_TXEN;            /* Transmitter Enable  */
;;;68       #endif
;;;69     }
000040  e12fff1e          BX       lr
;;;70     
                          ENDP

                  uart0_putc PROC
000044  e59f1104          LDR      r1,|L1.336|
000048  e5c10000          STRB     r0,[r1,#0]            ;0
                  |L1.76|
00004c  e5d10014          LDRB     r0,[r1,#0x14]         ;0
000050  e3500000          CMP      r0,#0                 ;0
000054  0afffffc          BEQ      |L1.76|
000058  e3a00000          MOV      r0,#0                 ;0
00005c  e12fff1e          BX       lr                    ;0
                          ENDP

                  uart0_putchar PROC
000060  e350000a          CMP      r0,#0xa               ;0
000064  e1a02000          MOV      r2,r0                 ;0
000068  03a0000d          MOVEQ    r0,#0xd               ;0
00006c  e52de004          PUSH     {lr}                  ;0
000070  0bfffffe          BLEQ     uart0_putc
000074  e49de004          POP      {lr}                  ;0
000078  e1a00002          MOV      r0,r2                 ;0
00007c  eafffffe          B        uart0_putc
                          ENDP

                  uart0_puts PROC
;;;91     int uart0_puts ( char* s )
;;;92     {
000080  e1a02000          MOV      r2,r0
;;;93     	int i = 0;
000084  e3a03000          MOV      r3,#0
000088  e52de004          PUSH     {lr}                  ;92
;;;94     	while ( *s ) {
00008c  ea000002          B        |L1.156|
                  |L1.144|
;;;95     		uart0_putc( *s++ );
000090  e2822001          ADD      r2,r2,#1
000094  ebfffffe          BL       uart0_putc
;;;96     		i++;
000098  e2833001          ADD      r3,r3,#1
                  |L1.156|
00009c  e5d20000          LDRB     r0,[r2,#0]            ;94
0000a0  e3500000          CMP      r0,#0                 ;94
0000a4  1afffff9          BNE      |L1.144|
;;;97     	}
;;;98     	return i;
0000a8  e49de004          POP      {lr}
0000ac  e1a00003          MOV      r0,r3
;;;99     }
0000b0  e12fff1e          BX       lr
;;;100    
                          ENDP

                  uart0_prints PROC
;;;101    int uart0_prints ( char* s )
;;;102    {
0000b4  e1a03000          MOV      r3,r0
;;;103    	int i = 0;
0000b8  e3a0c000          MOV      r12,#0
0000bc  e52de004          PUSH     {lr}                  ;102
;;;104    	while ( *s ) {
0000c0  ea000002          B        |L1.208|
                  |L1.196|
;;;105    		uart0_putchar( *s++ );
0000c4  e2833001          ADD      r3,r3,#1
0000c8  ebfffffe          BL       uart0_putchar
;;;106    		i++;
0000cc  e28cc001          ADD      r12,r12,#1
                  |L1.208|
0000d0  e5d30000          LDRB     r0,[r3,#0]            ;104
0000d4  e3500000          CMP      r0,#0                 ;104
0000d8  1afffff9          BNE      |L1.196|
;;;107    	}
;;;108    	return i;
0000dc  e49de004          POP      {lr}
0000e0  e1a0000c          MOV      r0,r12
;;;109    }
0000e4  e12fff1e          BX       lr
;;;110    
                          ENDP

                  uart0_kbhit PROC
;;;120    	#endif
;;;121    return 0;
0000e8  e3a00000          MOV      r0,#0
;;;122    }
0000ec  e12fff1e          BX       lr
;;;123    
                          ENDP

                  uart0_getc PROC
;;;129    #endif
;;;130    return 0;
0000f0  e3a00000          MOV      r0,#0
;;;131    }
0000f4  e12fff1e          BX       lr
;;;132    
                          ENDP

                  sendchar PROC
;;;134    /* implementation of putchar (also used by printf function to output data)    */
;;;135    int sendchar (int ch)  {                 /* Write character to Serial Port    */
0000f8  e59f1050          LDR      r1,|L1.336|
;;;136    
;;;137      if (ch == '\n')  {
0000fc  e350000a          CMP      r0,#0xa
000100  1a000005          BNE      |L1.284|
                  |L1.260|
;;;138        while (!(U0LSR & 0x20));
000104  e5d12014          LDRB     r2,[r1,#0x14]
000108  e3120020          TST      r2,#0x20
00010c  0afffffc          BEQ      |L1.260|
;;;139        U1THR = CR;                          /* output CR */
000110  e59f303c          LDR      r3,|L1.340|
000114  e3a0200d          MOV      r2,#0xd
000118  e5c32000          STRB     r2,[r3,#0]
                  |L1.284|
;;;140      }
;;;141      while (!(U0LSR & 0x20));
00011c  e5d12014          LDRB     r2,[r1,#0x14]
000120  e3120020          TST      r2,#0x20
000124  0afffffc          BEQ      |L1.284|
;;;142      return (U0THR = ch);
000128  e20000ff          AND      r0,r0,#0xff
00012c  e5c10000          STRB     r0,[r1,#0]
;;;143    }
000130  e12fff1e          BX       lr
;;;144    
                          ENDP

                  getkey PROC
;;;145    
;;;146    int getkey (void)  {                     /* Read character from Serial Port   */
000134  e59f0014          LDR      r0,|L1.336|
                  |L1.312|
;;;147    
;;;148      while (!(U0LSR & 0x01));
000138  e5d01014          LDRB     r1,[r0,#0x14]
00013c  e3110001          TST      r1,#1
000140  0afffffc          BEQ      |L1.312|
;;;149    
;;;150      return (U0RBR);
000144  e5d00000          LDRB     r0,[r0,#0]
;;;151    }
000148  e12fff1e          BX       lr
;;;152    
                          ENDP

                  |L1.332|
00014c  e002c000          DCD      0xe002c000
                  |L1.336|
000150  e000c000          DCD      0xe000c000
                  |L1.340|
000154  e0010000          DCD      0xe0010000

⌨️ 快捷键说明

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