📄 serial.txt
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 939] for uVision
; commandline ArmCC [--debug -c --asm --interleave -o.\obj\serial.o --depend=.\obj\serial.d --device=DARMP --apcs=interwork -O0 -IC:\Keil305\ARM\INC\Philips --omf_browse=.\obj\serial.crf Serial.c]
ARM
AREA ||.text||, CODE, READONLY, ALIGN=2
init_serial PROC
;;;20 /* Configure UART1 for 115200 baud. */
;;;21 PINSEL0 &= ~0xC0000000;
000000 e59f00cc LDR r0,|L1.212|
000004 e5900000 LDR r0,[r0,#0]
000008 e3c00103 BIC r0,r0,#0xc0000000
00000c e59f10c0 LDR r1,|L1.212|
000010 e5810000 STR r0,[r1,#0]
;;;22 PINSEL0 |= 0x40000000; /* Enable TxD1 pin */
000014 e1a00001 MOV r0,r1
000018 e5900000 LDR r0,[r0,#0]
00001c e3800101 ORR r0,r0,#0x40000000
000020 e5810000 STR r0,[r1,#0]
;;;23 PINSEL1 &= ~0x00000003;
000024 e1a00001 MOV r0,r1
000028 e5900004 LDR r0,[r0,#4]
00002c e3c00003 BIC r0,r0,#3
000030 e5810004 STR r0,[r1,#4]
;;;24 PINSEL1 |= 0x00000001; /* Enable RxD1 pin */
000034 e1a00001 MOV r0,r1
000038 e5900004 LDR r0,[r0,#4]
00003c e3800001 ORR r0,r0,#1
000040 e5810004 STR r0,[r1,#4]
;;;25
;;;26 U1LCR = 0x83; /* 8 bits, no Parity, 1 Stop bit*/
000044 e3a00083 MOV r0,#0x83
000048 e2411907 SUB r1,r1,#0x1c000
00004c e581000c STR r0,[r1,#0xc]
;;;27 U1DLL = 3; /* for 12MHz PCLK Clock */
000050 e3a00003 MOV r0,#3
000054 e5810000 STR r0,[r1,#0]
;;;28 U1FDR = 0x67; /* Fractional Divider */
000058 e3a00067 MOV r0,#0x67
00005c e5810028 STR r0,[r1,#0x28]
;;;29 U1LCR = 0x03; /* DLAB = 0 */
000060 e3a00003 MOV r0,#3
000064 e581000c STR r0,[r1,#0xc]
;;;30 }
000068 e12fff1e BX lr
;;;31
ENDP
sendchar PROC
;;;35 int sendchar (int ch) {
;;;36 if (ch == '\n') {
00006c e350000a CMP r0,#0xa
000070 1a000007 BNE |L1.148|
;;;37 while (!(U1LSR & 0x20));
000074 e1a00000 MOV r0,r0
|L1.120|
000078 e59f1058 LDR r1,|L1.216|
00007c e5911014 LDR r1,[r1,#0x14]
000080 e3110020 TST r1,#0x20
000084 0afffffb BEQ |L1.120|
;;;38 U1THR = '\r';
000088 e3a0100d MOV r1,#0xd
00008c e59f2044 LDR r2,|L1.216|
000090 e5821000 STR r1,[r2,#0]
|L1.148|
;;;39 }
;;;40 while (!(U1LSR & 0x20));
000094 e1a00000 MOV r0,r0
|L1.152|
000098 e59f1038 LDR r1,|L1.216|
00009c e5911014 LDR r1,[r1,#0x14]
0000a0 e3110020 TST r1,#0x20
0000a4 0afffffb BEQ |L1.152|
;;;41 return (U1THR = ch);
0000a8 e59f1028 LDR r1,|L1.216|
0000ac e5810000 STR r0,[r1,#0]
;;;42 }
0000b0 e12fff1e BX lr
;;;43
ENDP
getkey PROC
;;;47 int getkey (void) {
;;;48 while (!(U1LSR & 0x01));
0000b4 e1a00000 MOV r0,r0
|L1.184|
0000b8 e59f0018 LDR r0,|L1.216|
0000bc e5900014 LDR r0,[r0,#0x14]
0000c0 e3100001 TST r0,#1
0000c4 0afffffb BEQ |L1.184|
;;;49 return (U1RBR);
0000c8 e59f0008 LDR r0,|L1.216|
0000cc e5900000 LDR r0,[r0,#0]
;;;50 }
0000d0 e12fff1e BX lr
;;;51
ENDP
|L1.212|
0000d4 e002c000 DCD 0xe002c000
|L1.216|
0000d8 e0010000 DCD 0xe0010000
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -