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

📄 uart.lst

📁 基于keil 3环境下的lpc2132的pwm试验
💻 LST
📖 第 1 页 / 共 2 页
字号:
 00000058  1C18      MOV         R0,R3 ; parity
 0000005A  0600      LSL         R0,R0,#0x18 ; parity
 0000005C  0E00      LSR         R0,R0,#0x18
 0000005E  2804      CMP         R0,#0x4
 00000060  DD01      BLE         L_8  ; T=0x00000066
 00000062  2000      MOV         R0,#0x0
 00000064  E037      B           L_3  ; T=0x000000D6
 00000066          L_8:
   30:     U0LCR = 0x80;                       // DLAB = 1 
 00000066  2180      MOV         R1,#0x80
 00000068  4800      LDR         R0,=0xE000C00C
 0000006A  7001      STRB        R1,[R0,#0x0]
   31:     bak   = (Fpclk >> 4) / baud;
 0000006C  1C29      MOV         R1,R5 ; baud
 0000006E  4800      LDR         R0,=0xA8C00
 00000070  F7FF      BL          ?C?UDIV?T  ; T=0x0001  (1) ; ?C?UDIV?T
 00000072  FFC6      BL          ?C?UDIV?T  ; T=0x0001  (2) ; ?C?UDIV?T
 00000074  1C08      MOV         R0,R1
 00000076  ---- Variable 'bak' assigned to Register 'R0' ----
   32:     U0DLM = bak >> 8;
 00000076  1C05      MOV         R5,R0 ; bak
 00000078  0A2D      LSR         R5,R5,#0x8 ; bak
 0000007A  062D      LSL         R5,R5,#0x18
 0000007C  0E2D      LSR         R5,R5,#0x18
 0000007E  4800      LDR         R1,=0xE000C004
 00000080  700D      STRB        R5,[R1,#0x0]
   33:     U0DLL = bak & 0xFF;
 00000082  1C01      MOV         R1,R0 ; bak
 00000084  20FF      MOV         R0,#0xFF
 00000086  4001      AND         R1,R0
 00000088  0609      LSL         R1,R1,#0x18
 0000008A  0E09      LSR         R1,R1,#0x18
 0000008C  4800      LDR         R0,=0xE000C000
 0000008E  7001      STRB        R1,[R0,#0x0]
   36:     bak   = datab - 5;              // 设置字长
 00000090  1C20      MOV         R0,R4 ; datab
 00000092  0600      LSL         R0,R0,#0x18 ; datab
 00000094  0E00      LSR         R0,R0,#0x18
 00000096  3805      SUB         R0,#0x5
   37:     if (stopb == 2) bak |= 0x04;    // 判断是否为2位停止位
 00000098  1C11      MOV         R1,R2 ; stopb
 0000009A  0609      LSL         R1,R1,#0x18 ; stopb
 0000009C  0E09      LSR         R1,R1,#0x18
 0000009E  2902      CMP         R1,#0x2
 000000A0  D101      BNE         L_9  ; T=0x000000A6
 000000A2  2104      MOV         R1,#0x4
 000000A4  4308      ORR         R0,R1
 000000A6          L_9:
   39:     if (parity != 0)
 000000A6  1C19      MOV         R1,R3 ; parity
 000000A8  0609      LSL         R1,R1,#0x18 ; parity
 000000AA  0E09      LSR         R1,R1,#0x18
 000000AC  2900      CMP         R1,#0x0
 000000AE  D007      BEQ         L_10  ; T=0x000000C0
   41:         parity = parity - 1;
ARM COMPILER V2.53,  UART                                                                  29/01/08  11:33:05  PAGE 6   

 000000B0  1C19      MOV         R1,R3 ; parity
 000000B2  060B      LSL         R3,R1,#0x18 ; parity
 000000B4  0E1B      LSR         R3,R3,#0x18
 000000B6  3B01      SUB         R3,#0x1
 000000B8  061B      LSL         R3,R3,#0x18
 000000BA  0E1B      LSR         R3,R3,#0x18
   42:         bak |= 0x08;
 000000BC  2108      MOV         R1,#0x8
 000000BE  4308      ORR         R0,R1
   43:     }
 000000C0          L_10:
   44:     bak |= parity << 4;             // 设置奇偶校验
 000000C0  1C19      MOV         R1,R3 ; parity
 000000C2  0609      LSL         R1,R1,#0x18 ; parity
 000000C4  0E09      LSR         R1,R1,#0x18
 000000C6  0109      LSL         R1,R1,#0x4
 000000C8  4308      ORR         R0,R1
   46:     U0LCR = bak;
 000000CA  1C01      MOV         R1,R0 ; bak
 000000CC  0609      LSL         R1,R1,#0x18 ; bak
 000000CE  0E09      LSR         R1,R1,#0x18
 000000D0  4800      LDR         R0,=0xE000C00C
 000000D2  7001      STRB        R1,[R0,#0x0]
   48:     return (1);
 000000D4  2001      MOV         R0,#0x1
 000000D6            ; SCOPE-END
   49: }
 000000D6          L_3:
 000000D6  BC30      POP         {R4-R5}
 000000D8  BC08      POP         {R3}
 000000DA  4718      BX          R3
 000000DC          ENDP ; 'UART0_Init?T'


*** CODE SEGMENT '?PR?UART0_GetByte?T?UART':
   59: {
 00000000            ; SCOPE-START
   62:     while ((U0LSR & 0x01) == 0);
 00000000          L_11:
 00000000  4800      LDR         R0,=0xE000C014
 00000002  7800      LDRB        R0,[R0,#0x0]
 00000004  2101      MOV         R1,#0x1
 00000006  4208      TST         R0,R1
 00000008  D0FA      BEQ         L_11  ; T=0x00000000
   63:     rcv_dat = U0RBR;
 0000000A  4800      LDR         R0,=0xE000C000
 0000000C  7801      LDRB        R1,[R0,#0x0]
 0000000E  ---- Variable 'rcv_dat' assigned to Register 'R1' ----
   65:     return (rcv_dat);   
 0000000E  1C08      MOV         R0,R1 ; rcv_dat
 00000010  0600      LSL         R0,R0,#0x18 ; rcv_dat
 00000012  0E00      LSR         R0,R0,#0x18
 00000014            ; SCOPE-END
   66: }
 00000014  4770      BX          R14
 00000016          ENDP ; 'UART0_GetByte?T'


*** CODE SEGMENT '?PR?UART0_GetStr?T?UART':
   75: void UART0_GetStr (uint8 *s, uint32 n)
 00000000  B500      PUSH        {LR}
 00000002  1C0B      MOV         R3,R1 ; n
 00000004  ---- Variable 'n' assigned to Register 'R3' ----
 00000004  1C02      MOV         R2,R0 ; s
 00000006  ---- Variable 's' assigned to Register 'R2' ----
   77:     for ( ; n>0; n--)
 00000006  E005      B           L_18  ; T=0x00000014
 00000008          L_19:
   79:         *s++ = UART0_GetByte();
 00000008  F7FF      BL          UART0_GetByte?T  ; T=0x0001  (1)
ARM COMPILER V2.53,  UART                                                                  29/01/08  11:33:05  PAGE 7   

 0000000A  FFFA      BL          UART0_GetByte?T  ; T=0x0001  (2)
 0000000C  1C11      MOV         R1,R2 ; s
 0000000E  3201      ADD         R2,#0x1
 00000010  7008      STRB        R0,[R1,#0x0] ; s
   80:     }
 00000012  3B01      SUB         R3,#0x1
 00000014          L_18:
 00000014  1C18      MOV         R0,R3 ; n
 00000016  2800      CMP         R0,#0x0 ; n
 00000018  D8F6      BHI         L_19  ; T=0x00000008
   81: }
 0000001A  BC08      POP         {R3}
 0000001C  4718      BX          R3
 0000001E          ENDP ; 'UART0_GetStr?T'


*** CODE SEGMENT '?PR?UART0_Get?T?UART':
   85: void UART0_Get(uint8 *s)
 00000000  B500      PUSH        {LR}
 00000002  1C02      MOV         R2,R0 ; s
 00000004  ---- Variable 's' assigned to Register 'R2' ----
   86:     {while(1)
 00000004          L_23:
   87:        { if (*s == '\0')    break;
 00000004  1C10      MOV         R0,R2 ; s
 00000006  7800      LDRB        R0,[R0,#0x0] ; s
 00000008  2800      CMP         R0,#0x0
 0000000A  D005      BEQ         L_22  ; T=0x00000018
   88:          *s++= UART0_GetByte();
 0000000C  F7FF      BL          UART0_GetByte?T  ; T=0x0001  (1)
 0000000E  FFF8      BL          UART0_GetByte?T  ; T=0x0001  (2)
 00000010  1C11      MOV         R1,R2 ; s
 00000012  3201      ADD         R2,#0x1
 00000014  7008      STRB        R0,[R1,#0x0] ; s
   89:        }
 00000016  E7F5      B           L_23  ; T=0x00000004
 00000018          L_22:
   90:     } 
 00000018  BC08      POP         {R3}
 0000001A  4718      BX          R3
 0000001C          ENDP ; 'UART0_Get?T'


*** CODE SEGMENT '?PR?UART0_SendByte?T?UART':
   97: void UART0_SendByte (uint8 dat)
 00000000  1C02      MOV         R2,R0 ; dat
 00000002  ---- Variable 'dat' assigned to Register 'R2' ----
   99:     U0THR = dat;
 00000002  1C11      MOV         R1,R2 ; dat
 00000004  4800      LDR         R0,=0xE000C000
 00000006  7001      STRB        R1,[R0,#0x0]
  100:     while ((U0LSR & 0x40) == 0);        // 等待数据发送完毕
 00000008          L_26:
 00000008  4800      LDR         R0,=0xE000C014
 0000000A  7800      LDRB        R0,[R0,#0x0]
 0000000C  2140      MOV         R1,#0x40
 0000000E  4208      TST         R0,R1
 00000010  D0FA      BEQ         L_26  ; T=0x00000008
  101: }
 00000012  4770      BX          R14
 00000014          ENDP ; 'UART0_SendByte?T'


*** CODE SEGMENT '?PR?UART0_SendStr?T?UART':
  109: void UART0_SendStr (uint8 const *str)
 00000000  B500      PUSH        {LR}
 00000002  1C03      MOV         R3,R0 ; str
 00000004  ---- Variable 'str' assigned to Register 'R3' ----
  111:     while (1)
 00000004          L_32:
  113:         if (*str == '\0')   break;      // 遇到结束符,退出
 00000004  1C18      MOV         R0,R3 ; str
ARM COMPILER V2.53,  UART                                                                  29/01/08  11:33:05  PAGE 8   

 00000006  7800      LDRB        R0,[R0,#0x0] ; str
 00000008  2800      CMP         R0,#0x0
 0000000A  D005      BEQ         L_31  ; T=0x00000018
  114:         UART0_SendByte(*str++);         // 发送数据
 0000000C  1C18      MOV         R0,R3 ; str
 0000000E  3301      ADD         R3,#0x1
 00000010  7800      LDRB        R0,[R0,#0x0] ; str
 00000012  F7FF      BL          UART0_SendByte?T  ; T=0x0001  (1)
 00000014  FFF5      BL          UART0_SendByte?T  ; T=0x0001  (2)
  115:     }
 00000016  E7F5      B           L_32  ; T=0x00000004
 00000018          L_31:
  116: }
 00000018  BC08      POP         {R3}
 0000001A  4718      BX          R3
 0000001C          ENDP ; 'UART0_SendStr?T'



Module Information          Static
----------------------------------
  code size            =    ------
  data size            =    ------
  const size           =    ------
End of Module Information.


ARM COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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