📄 vcomuser.lst
字号:
00000014 7800 LDRB R0,[R0,#0x0]
00000016 2220 MOV R2,#0x20
00000018 4210 TST R0,R2
0000001A D0FA BEQ L_34 ; T=0x00000012
477: U0THR = CR; /* output CR */
0000001C 220D MOV R2,#0xD
0000001E 4800 LDR R0,=0xE000C000
ARM COMPILER V2.31, VCOMuser 23/11/05 10:53:11 PAGE 20
00000020 7002 STRB R2,[R0,#0x0]
479: while (!(U0LSR & 0x20));
00000022 L_41:
00000022 L_38:
00000022 4800 LDR R0,=0xE000C014
00000024 7800 LDRB R0,[R0,#0x0]
00000026 2220 MOV R2,#0x20
00000028 4210 TST R0,R2
0000002A D0FA BEQ L_38 ; T=0x00000022
480: return (U0THR = ch);
0000002C 1C08 MOV R0,R1 ; ch
0000002E 4800 LDR R2,=0xE000C000
00000030 7010 STRB R0,[R2,#0x0]
00000032 0600 LSL R0,R0,#0x18
00000034 0E00 LSR R0,R0,#0x18
00000036 E014 B L_42 ; T=0x00000062
481: }
00000038 L_32:
483: if (ch == '\n') {
00000038 1C08 MOV R0,R1 ; ch
0000003A 280A CMP R0,#0xA ; ch
0000003C D107 BNE L_52 ; T=0x0000004E
484: while (!(U1LSR & 0x20));
0000003E L_45:
0000003E 4800 LDR R0,=0xE0010014
00000040 7800 LDRB R0,[R0,#0x0]
00000042 2220 MOV R2,#0x20
00000044 4210 TST R0,R2
00000046 D0FA BEQ L_45 ; T=0x0000003E
485: U1THR = CR; /* output CR */
00000048 220D MOV R2,#0xD
0000004A 4800 LDR R0,=0xE0010000
0000004C 7002 STRB R2,[R0,#0x0]
487: while (!(U1LSR & 0x20));
0000004E L_52:
0000004E L_49:
0000004E 4800 LDR R0,=0xE0010014
00000050 7800 LDRB R0,[R0,#0x0]
00000052 2220 MOV R2,#0x20
00000054 4210 TST R0,R2
00000056 D0FA BEQ L_49 ; T=0x0000004E
488: return (U1THR = ch);
00000058 1C08 MOV R0,R1 ; ch
0000005A 4800 LDR R1,=0xE0010000
0000005C 7008 STRB R0,[R1,#0x0]
0000005E 0600 LSL R0,R0,#0x18
00000060 0E00 LSR R0,R0,#0x18
490: }
00000062 L_42:
00000062 4770 BX R14
00000064 ENDP ; 'putchar?T'
*** CODE SEGMENT '?PR?getchar?T?VCOMuser':
492: int getchar ( BYTE portNum ) { /* Read character from Serial Port */
00000000 1C01 MOV R1,R0 ; portNum
00000002 ---- Variable 'portNum' assigned to Register 'R1' ----
494: if ( portNum == 0 ) {
00000002 1C08 MOV R0,R1 ; portNum
00000004 0600 LSL R0,R0,#0x18 ; portNum
00000006 0E00 LSR R0,R0,#0x18
00000008 2800 CMP R0,#0x0
0000000A D107 BNE L_63 ; T=0x0000001C
495: while (!(U0LSR & 0x01));
0000000C L_54:
0000000C 4800 LDR R0,=0xE000C014
0000000E 7800 LDRB R0,[R0,#0x0]
00000010 2101 MOV R1,#0x1
ARM COMPILER V2.31, VCOMuser 23/11/05 10:53:11 PAGE 21
00000012 4208 TST R0,R1
00000014 D0FA BEQ L_54 ; T=0x0000000C
496: return (U0RBR);
00000016 4800 LDR R0,=0xE000C000
00000018 7800 LDRB R0,[R0,#0x0]
0000001A E006 B L_58 ; T=0x0000002A
499: while (!(U1LSR & 0x01));
0000001C L_63:
0000001C L_60:
0000001C 4800 LDR R0,=0xE0010014
0000001E 7800 LDRB R0,[R0,#0x0]
00000020 2101 MOV R1,#0x1
00000022 4208 TST R0,R1
00000024 D0FA BEQ L_60 ; T=0x0000001C
500: return (U1RBR);
00000026 4800 LDR R0,=0xE0010000
00000028 7800 LDRB R0,[R0,#0x0]
502: }
0000002A L_58:
0000002A 4770 BX R14
0000002C ENDP ; 'getchar?T'
*** CODE SEGMENT '?PR?SetSIOBaudrate?T?VCOMuser':
505: void SetSIOBaudrate( BYTE channelNum, BYTE Data )
00000000 B430 PUSH {R4-R5}
00000002 1C0B MOV R3,R1 ; Data
00000004 ---- Variable 'Data' assigned to Register 'R3' ----
00000004 1C05 MOV R5,R0 ; channelNum
00000006 ---- Variable 'channelNum' assigned to Register 'R5' ----
514: if ( channelNum == 0 ) {
00000006 1C28 MOV R0,R5 ; channelNum
00000008 0600 LSL R0,R0,#0x18 ; channelNum
0000000A 0E00 LSR R0,R0,#0x18
0000000C 2800 CMP R0,#0x0
0000000E D13C BNE L_64 ; T=0x0000008A
515: U0FCR = 0x07; /* Enable and reset TX and RX FIFO. */
00000010 2207 MOV R2,#0x7
00000012 4800 LDR R1,=0xE000C008
00000014 700A STRB R2,[R1,#0x0]
516: U0LCR |= 0x80;
00000016 2480 MOV R4,#0x80
00000018 4800 LDR R1,=0xE000C00C
0000001A 780A LDRB R2,[R1,#0x0]
0000001C 4322 ORR R2,R4
0000001E 700A STRB R2,[R1,#0x0]
517: if ( Data == 0x01 ) {
00000020 1C19 MOV R1,R3 ; Data
00000022 0609 LSL R1,R1,#0x18 ; Data
00000024 0E09 LSR R1,R1,#0x18
00000026 2901 CMP R1,#0x1
00000028 D106 BNE L_65 ; T=0x00000038
518: U0DLL = 0x20;
0000002A 2420 MOV R4,#0x20
0000002C 4800 LDR R2,=0xE000C000
0000002E 7014 STRB R4,[R2,#0x0]
519: U0DLM = 0x00;
00000030 2400 MOV R4,#0x0
00000032 4800 LDR R2,=0xE000C004
00000034 7014 STRB R4,[R2,#0x0]
520: }
00000036 E022 B L_66 ; T=0x0000007E
00000038 L_65:
521: else if ( Data == 0x02 ) {
00000038 2902 CMP R1,#0x2
0000003A D106 BNE L_67 ; T=0x0000004A
522: U0DLL = 0x41;
0000003C 2441 MOV R4,#0x41
ARM COMPILER V2.31, VCOMuser 23/11/05 10:53:11 PAGE 22
0000003E 4800 LDR R2,=0xE000C000
00000040 7014 STRB R4,[R2,#0x0]
523: U0DLM = 0x00;
00000042 2400 MOV R4,#0x0
00000044 4800 LDR R2,=0xE000C004
00000046 7014 STRB R4,[R2,#0x0]
524: }
00000048 E019 B L_66 ; T=0x0000007E
0000004A L_67:
525: else if ( Data == 0x03 ) {
0000004A 2903 CMP R1,#0x3
0000004C D106 BNE L_69 ; T=0x0000005C
526: U0DLL = 0x61;
0000004E 2461 MOV R4,#0x61
00000050 4800 LDR R2,=0xE000C000
00000052 7014 STRB R4,[R2,#0x0]
527: U0DLM = 0x00;
00000054 2400 MOV R4,#0x0
00000056 4800 LDR R2,=0xE000C004
00000058 7014 STRB R4,[R2,#0x0]
528: }
0000005A E010 B L_66 ; T=0x0000007E
0000005C L_69:
529: else if ( Data == 0x06 ) {
0000005C 2906 CMP R1,#0x6
0000005E D106 BNE L_71 ; T=0x0000006E
530: U0DLL = 0xC3;
00000060 24C3 MOV R4,#0xC3
00000062 4800 LDR R2,=0xE000C000
00000064 7014 STRB R4,[R2,#0x0]
531: U0DLM = 0x00;
00000066 2400 MOV R4,#0x0
00000068 4800 LDR R2,=0xE000C004
0000006A 7014 STRB R4,[R2,#0x0]
532: }
0000006C E007 B L_66 ; T=0x0000007E
0000006E L_71:
533: else if ( Data == 0x0C ) {
0000006E 290C CMP R1,#0xC
00000070 D105 BNE L_66 ; T=0x0000007E
534: U0DLL = 0x86;
00000072 2286 MOV R2,#0x86
00000074 4800 LDR R1,=0xE000C000
00000076 700A STRB R2,[R1,#0x0]
535: U0DLM = 0x01;
00000078 2201 MOV R2,#0x1
0000007A 4800 LDR R1,=0xE000C004
0000007C 700A STRB R2,[R1,#0x0]
536: }
0000007E L_66:
537: U0LCR &= ~0x80;
0000007E 247F MOV R4,#0x7F
00000080 4800 LDR R1,=0xE000C00C
00000082 780A LDRB R2,[R1,#0x0]
00000084 4022 AND R2,R4
00000086 700A STRB R2,[R1,#0x0]
538: }
00000088 E03D B L_74 ; T=0x00000106
0000008A L_64:
539: else if ( channelNum == 1 ) {
0000008A 2801 CMP R0,#0x1
0000008C D13B BNE L_74 ; T=0x00000106
540: U1FCR = 0x07; /* Enable and reset TX and RX FIFO. */
0000008E 2107 MOV R1,#0x7
00000090 4800 LDR R0,=0xE0010008
00000092 7001 STRB R1,[R0,#0x0]
ARM COMPILER V2.31, VCOMuser 23/11/05 10:53:11 PAGE 23
541: U1LCR |= 0x80;
00000094 2280 MOV R2,#0x80
00000096 4800 LDR R0,=0xE001000C
00000098 7801 LDRB R1,[R0,#0x0]
0000009A 4311 ORR R1,R2
0000009C 7001 STRB R1,[R0,#0x0]
542: if ( Data == 0x01 ) {
0000009E 1C18 MOV R0,R3 ; Data
000000A0 0600 LSL R0,R0,#0x18 ; Data
000000A2 0E00 LSR R0,R0,#0x18
000000A4 2801 CMP R0,#0x1
000000A6 D106 BNE L_76 ; T=0x000000B6
543: U1DLL = 0x20;
000000A8 2220 MOV R2,#0x20
000000AA 4800 LDR R1,=0xE0010000
000000AC 700A STRB R2,[R1,#0x0]
544: U1DLM = 0x00;
000000AE 2200 MOV R2,#0x0
000000B0 4800 LDR R1,=0xE0010004
000000B2 700A STRB R2,[R1,#0x0]
545: }
000000B4 E022 B L_77 ; T=0x000000FC
000000B6 L_76:
546: else if ( Data == 0x02 ) {
000000B6 2802 CMP R0,#0x2
000000B8 D106 BNE L_78 ; T=0x000000C8
547: U1DLL = 0x41;
000000BA 2241 MOV R2,#0x41
000000BC 4800 LDR R1,=0xE0010000
000000BE 700A STRB R2,[R1,#0x0]
548: U1DLM = 0x00;
000000C0 2200 MOV R2,#0x0
000000C2 4800 LDR R1,=0xE0010004
000000C4 700A STRB R2,[R1,#0x0]
549: }
000000C6 E019 B L_77 ; T=0x000000FC
000000C8 L_78:
550: else if ( Data == 0x03 ) {
000000C8 2803 CMP R0,#0x3
000000CA D106 BNE L_80 ; T=0x000000DA
551: U1DLL = 0x61;
000000CC 2261 MOV R2,#0x61
000000CE 4800 LDR R1,=0xE0010000
000000D0 700A STRB R2,[R1,#0x0]
552: U1DLM = 0x00;
000000D2 2200 MOV R2,#0x0
000000D4 4800 LDR R1,=0xE0010004
000000D6 700A STRB R2,[R1,#0x0]
553: }
000000D8 E010 B L_77 ; T=0x000000FC
000000DA L_80:
554: else if ( Data == 0x06 ) {
000000DA 2806 CMP R0,#0x6
000000DC D106 BNE L_82 ; T=0x000000EC
555: U1DLL = 0xC3;
000000DE 22C3 MOV R2,#0xC3
000000E0 4800 LDR R1,=0xE0010000
000000E2 700A STRB R2,[R1,#0x0]
556: U1DLM = 0x00;
000000E4 2200 MOV R2,#0x0
000000E6 4800 LDR R1,=0xE0010004
000000E8 700A STRB R2,[R1,#0x0]
557: }
000000EA E007 B L_77 ; T=0x000000FC
000000EC L_82:
558: else if ( Data == 0x0C ) {
ARM COMPILER V2.31, VCOMuser 23/11/05 10:53:11 PAGE 24
000000EC 280C CMP R0,#0xC
000000EE D105 BNE L_77 ; T=0x000000FC
559: U1DLL = 0x86;
000000F0 2186 MOV R1,#0x86
000000F2 4800 LDR R0,=0xE0010000
000000F4 7001 STRB R1,[R0,#0x0]
560: U1DLM = 0x01;
000000F6 2101 MOV R1,#0x1
000000F8 4800 LDR R0,=0xE0010004
000000FA 7001 STRB R1,[R0,#0x0]
561: }
000000FC L_77:
562: U1LCR &= ~0x80;
000000FC 227F MOV R2,#0x7F
000000FE 4800 LDR R0,=0xE001000C
00000100 7801 LDRB R1,[R0,#0x0]
00000102 4011 AND R1,R2
00000104 7001 STRB R1,[R0,#0x0]
563: }
00000106 L_74:
564: }
00000106 BC30 POP {R4-R5}
00000108 4770 BX R14
0000010A ENDP ; 'SetSIOBaudrate?T'
*** CODE SEGMENT '?PR?SetSIOStopBit?T?VCOMuser':
566: void SetSIOStopBit( BYTE channelNum, BYTE ConfigValue )
00000000 B430 PUSH {R4-R5}
00000002 ---- Variable 'ConfigValue' assigned to Register 'R1' ----
00000002 1C05 MOV R5,R0 ; channelNum
00000004 ---- Variable 'channelNum' assigned to Register 'R5' ----
00000004 ---- Variable 'lcr' assigned to Register 'R2' ----
567: {
00000004 ; SCOPE-START
571: if ( channelNum == 0 ) {
00000004 1C28 MOV R0,R5 ; channelNum
00000006 0600 LSL R0,R0,#0x18 ; channelNum
00000008 0E00 LSR R0,R0,#0x18
0000000A 2800 CMP R0,#0x0
0000000C D10E BNE L_85 ; T=0x0000002C
572: lcr = U0LCR & 0xFB;
0000000E 4800 LDR R2,=0xE000C00C
00000010 7812 LDRB
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -