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

📄 uart.lst

📁 AD9958arm控制源程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 00000004  E5100000  LDR         R0,=0xE000C008
 00000008  E5D00000  LDRB        R0,[R0,#0x0]
 0000000C  E200000F  AND         R0,R0,#0x000F
 00000010  E3500004  CMP         R0,#0x0004
 00000014  1A00001C  BNE         L_1  ; Targ=0x8C
   42:         receive_buffer[uart0_receive_count++]=U0RBR;    
 00000018  E5100000  LDR         R0,=0xE000C000
 0000001C  E5D00000  LDRB        R0,[R0,#0x0]
 00000020  E5102000  LDR         R2,=uart0_receive_count ; uart0_receive_count
 00000024  E5D21000  LDRB        R1,[R2,#0x0] ; uart0_receive_count
 00000028  E2813001  ADD         R3,R1,#0x0001
 0000002C  E5C23000  STRB        R3,[R2,#0x0] ; uart0_receive_count
 00000030  E1A02001  MOV         R2,R1
 00000034  E5101000  LDR         R1,=receive_buffer ; receive_buffer
 00000038  E7C10002  STRB        R0,[R1,+R2]
   43:         if(receive_buffer[uart0_receive_count-2]=='\r'&&
 0000003C  E5100000  LDR         R0,=uart0_receive_count ; uart0_receive_count
 00000040  E5D00000  LDRB        R0,[R0,#0x0] ; uart0_receive_count
 00000044  E1A01000  MOV         R1,R0
 00000048  E5100000  LDR         R0,=receive_buffer + 0xFFFFFFFE ; receive_buffer-2
 0000004C  E7D00001  LDRB        R0,[R0,+R1]
 00000050  E350000D  CMP         R0,#0x000D
 00000054  1A000009  BNE         L_2  ; Targ=0x80
 00000058  E5100000  LDR         R0,=receive_buffer + 0xFFFFFFFF ; receive_buffer-1
 0000005C  E7D00001  LDRB        R0,[R0,+R1]
 00000060  E350000A  CMP         R0,#0x000A
 00000064  1A000005  BNE         L_2  ; Targ=0x80
   45:                uart0_receive_count=0;
 00000068  E3A01000  MOV         R1,#0x0
 0000006C  E5100000  LDR         R0,=uart0_receive_count ; uart0_receive_count
 00000070  E5C01000  STRB        R1,[R0,#0x0] ; uart0_receive_count
   46:                uart0_receive_ok_flag=TRUE;
 00000074  E3A01001  MOV         R1,#0x1
ARM COMPILER V2.53,  uart                                                                  23/07/06  16:59:03  PAGE 5   

 00000078  E5100000  LDR         R0,=uart0_receive_ok_flag ; uart0_receive_ok_flag
 0000007C  E5C01000  STRB        R1,[R0,#0x0] ; uart0_receive_ok_flag
   47:          }
 00000080          L_2:
   49:     VICVectAddr = 0x00;         // 中断处理结束
 00000080  E3A01000  MOV         R1,#0x0
 00000084  E5100000  LDR         R0,=0xFFFFF030
 00000088  E5801000  STR         R1,[R0,#0x0]
   50:     }
 0000008C          L_1:
   53: }
 0000008C  E8BD000F  LDMIA       R13!,{R0-R3}
 00000090  E25EF004  SUBS        R15,R14,#0x0004
 00000094          ENDP ; 'irq_uart0?A'


*** CODE SEGMENT '?PR?initialize_uart0?T?uart':
   65: {
 00000000            ; SCOPE-START
   69:     PINSEL0 |= 0x00000005;
 00000000  2205      MOV         R2,#0x5
 00000002  4800      LDR         R0,=0xE002C000
 00000004  6801      LDR         R1,[R0,#0x0]
 00000006  4311      ORR         R1,R2
 00000008  6001      STR         R1,[R0,#0x0]
   71:     U0LCR = 0x83;               // DLAB=1,允许设置波特率
 0000000A  2183      MOV         R1,#0x83
 0000000C  4800      LDR         R0,=0xE000C00C
 0000000E  7001      STRB        R1,[R0,#0x0]
   73:     U0DLM = Fdiv / 256;
 00000010  2100      MOV         R1,#0x0
 00000012  4800      LDR         R0,=0xE000C004
 00000014  7001      STRB        R1,[R0,#0x0]
   74:     U0DLL = Fdiv % 256;
 00000016  21B4      MOV         R1,#0xB4
 00000018  4800      LDR         R0,=0xE000C000
 0000001A  7001      STRB        R1,[R0,#0x0]
   75:     U0LCR = 0x03;
 0000001C  2103      MOV         R1,#0x3
 0000001E  4800      LDR         R0,=0xE000C00C
 00000020  7001      STRB        R1,[R0,#0x0]
   79:     U0FCR = 0x01;                       // 使能FIFO,并设置触发点为1字节
 00000022  2101      MOV         R1,#0x1
 00000024  4800      LDR         R0,=0xE000C008
 00000026  7001      STRB        R1,[R0,#0x0]
   80:     U0IER = 0x01;                       // 允许RBR中断,即接收中断
 00000028  4800      LDR         R0,=0xE000C004
 0000002A  7001      STRB        R1,[R0,#0x0]
   84:     VICIntSelect = 0x00000000;          // 设置所有的通道为IRQ中断
 0000002C  2100      MOV         R1,#0x0
 0000002E  4800      LDR         R0,=0xFFFFF00C
 00000030  6001      STR         R1,[R0,#0x0]
   85:     VICVectCntl0 = 0x20 | 0x06;         // UART0分配到IRQ slot0,即最高优先级
 00000032  2126      MOV         R1,#0x26
 00000034  4800      LDR         R0,=0xFFFFF200
 00000036  6001      STR         R1,[R0,#0x0]
   86:     VICVectAddr0 = (unsigned long int)irq_uart0;    // 设置UART0向量地址
 00000038  4900      LDR         R1,=irq_uart0?A ; irq_uart0?A
 0000003A  4800      LDR         R0,=0xFFFFF100
 0000003C  6001      STR         R1,[R0,#0x0]
   87:     VICIntEnable |= 1 << 0x06;          // 使能UART0中断
 0000003E  2240      MOV         R2,#0x40
 00000040  4800      LDR         R0,=0xFFFFF010
 00000042  6801      LDR         R1,[R0,#0x0]
 00000044  4311      ORR         R1,R2
 00000046  6001      STR         R1,[R0,#0x0]
 00000048            ; SCOPE-END
   89: }
ARM COMPILER V2.53,  uart                                                                  23/07/06  16:59:03  PAGE 6   

 00000048  4770      BX          R14
 0000004A          ENDP ; 'initialize_uart0?T'


*** CODE SEGMENT '?PR?initialize_uart1?T?uart':
  103: {
 00000000            ; SCOPE-START
  107:     PINSEL0 |= 0x00050000;
 00000000  4800      LDR         R2,=0x50000
 00000002  4800      LDR         R0,=0xE002C000
 00000004  6801      LDR         R1,[R0,#0x0]
 00000006  4311      ORR         R1,R2
 00000008  6001      STR         R1,[R0,#0x0]
  109:     U1LCR = 0x83;               // DLAB=1,允许设置波特率
 0000000A  2183      MOV         R1,#0x83
 0000000C  4800      LDR         R0,=0xE001000C
 0000000E  7001      STRB        R1,[R0,#0x0]
  111:     U1DLM = Fdiv / 256;
 00000010  2100      MOV         R1,#0x0
 00000012  4800      LDR         R0,=0xE0010004
 00000014  7001      STRB        R1,[R0,#0x0]
  112:     U1DLL = Fdiv % 256;
 00000016  21B4      MOV         R1,#0xB4
 00000018  4800      LDR         R0,=0xE0010000
 0000001A  7001      STRB        R1,[R0,#0x0]
  113:     U1LCR = 0x03;
 0000001C  2103      MOV         R1,#0x3
 0000001E  4800      LDR         R0,=0xE001000C
 00000020  7001      STRB        R1,[R0,#0x0]
  116:     U1FCR = 0x01;                       // 使能FIFO,并设置触发点为1字节
 00000022  2101      MOV         R1,#0x1
 00000024  4800      LDR         R0,=0xE0010008
 00000026  7001      STRB        R1,[R0,#0x0]
  117:     U1IER = 0x0;                        // 禁止中断
 00000028  2100      MOV         R1,#0x0
 0000002A  4800      LDR         R0,=0xE0010004
 0000002C  7001      STRB        R1,[R0,#0x0]
 0000002E            ; SCOPE-END
  118: }
 0000002E  4770      BX          R14
 00000030          ENDP ; 'initialize_uart1?T'


*** CODE SEGMENT '?PR?send_string_to_uart1?T?uart':
  130: void send_string_to_uart1(char * str)
 00000000  ---- Variable 'str' assigned to Register 'R0' ----
  134:     while(*str!='\0'){
 00000000  E009      B           L_3  ; T=0x00000016
 00000002          L_5:
  135:         U1THR=(*str++);
 00000002  1C01      MOV         R1,R0 ; str
 00000004  3001      ADD         R0,#0x1
 00000006  780A      LDRB        R2,[R1,#0x0] ; str
 00000008  4800      LDR         R1,=0xE0010000
 0000000A  700A      STRB        R2,[R1,#0x0]
  136:         while(!(U1LSR&0X40));
 0000000C          L_7:
 0000000C  4800      LDR         R1,=0xE0010014
 0000000E  7809      LDRB        R1,[R1,#0x0]
 00000010  2240      MOV         R2,#0x40
 00000012  4211      TST         R1,R2
 00000014  D0FA      BEQ         L_7  ; T=0x0000000C
  137:     }
 00000016          L_3:
 00000016  1C01      MOV         R1,R0 ; str
 00000018  7809      LDRB        R1,[R1,#0x0] ; str
 0000001A  2900      CMP         R1,#0x0
 0000001C  D1F1      BNE         L_5  ; T=0x00000002
  139: }
 0000001E  4770      BX          R14
ARM COMPILER V2.53,  uart                                                                  23/07/06  16:59:03  PAGE 7   

 00000020          ENDP ; 'send_string_to_uart1?T'


*** CODE SEGMENT '?PR?send_string_to_uart0?T?uart':
  153: void send_string_to_uart0(char * str)
 00000000  ---- Variable 'str' assigned to Register 'R0' ----
  157:     while(*str!='\0'){
 00000000  E009      B           L_11  ; T=0x00000016
 00000002          L_13:
  158:         U0THR=(*str++);
 00000002  1C01      MOV         R1,R0 ; str
 00000004  3001      ADD         R0,#0x1
 00000006  780A      LDRB        R2,[R1,#0x0] ; str
 00000008  4800      LDR         R1,=0xE000C000
 0000000A  700A      STRB        R2,[R1,#0x0]
  159:     while(!(U0LSR&0X40));   
 0000000C          L_15:
 0000000C  4800      LDR         R1,=0xE000C014
 0000000E  7809      LDRB        R1,[R1,#0x0]
 00000010  2240      MOV         R2,#0x40
 00000012  4211      TST         R1,R2
 00000014  D0FA      BEQ         L_15  ; T=0x0000000C
  160:     }
 00000016          L_11:
 00000016  1C01      MOV         R1,R0 ; str
 00000018  7809      LDRB        R1,[R1,#0x0] ; str
 0000001A  2900      CMP         R1,#0x0
 0000001C  D1F1      BNE         L_13  ; T=0x00000002
  164: }
 0000001E  4770      BX          R14
 00000020          ENDP ; 'send_string_to_uart0?T'


*** CODE SEGMENT '?PR?clear_receive_buffer?T?uart':
  176: void clear_receive_buffer(void)
 00000000  B500      PUSH        {LR}
  178:     memset(receive_buffer,0,sizeof(receive_buffer));
 00000002  4800      LDR         R0,=receive_buffer ; receive_buffer
 00000004  2100      MOV         R1,#0x0
 00000006  2264      MOV         R2,#0x64
 00000008  F7FF      BL          memset?T  ; T=0x0001  (1)
 0000000A  FFFA      BL          memset?T  ; T=0x0001  (2)
 0000000C  BC08      POP         {R3}
 0000000E  4718      BX          R3
 00000010          ENDP ; 'clear_receive_buffer?T'



Module Information          Static
----------------------------------
  code size            =    ------
  data size            =       102
  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 + -