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

📄 serial.lst

📁 基于keil环境
💻 LST
📖 第 1 页 / 共 2 页
字号:
 00000012  4718      BX          R3
 00000014          ENDP ; 'main'


*** CODE SEGMENT '?PR?uart_init?T?Serial':
   66:     UBRDIV0 = BRD;          // 19200bps
 00000000  21C2      MOV         R1,#0xC2
 00000002  4800      LDR         R0,=0x1D00028
 00000004  6001      STR         R1,[R0,#0x0]
   67:     ULCON0 = 0x03;          // 帧长度8位,停止位1位,无校验
 00000006  2203      MOV         R2,#0x3
 00000008  4800      LDR         R0,=0x1D00000
 0000000A  6002      STR         R2,[R0,#0x0]
   68:     UCON0 = 0x0C2;          // 接收BDMA0允许,允许接收超时、错误中断
 0000000C  4800      LDR         R0,=0x1D00004
 0000000E  6001      STR         R1,[R0,#0x0]
   69:     UFCON0 = 0x21;          // 启用FIFO,接收FIFO触发级别为12字节
 00000010  2121      MOV         R1,#0x21
 00000012  4800      LDR         R0,=0x1D00008
 00000014  6001      STR         R1,[R0,#0x0]
   70: }
 00000016  4770      BX          R14
 00000018          ENDP ; 'uart_init?T'


*** CODE SEGMENT '?PR?isr_init?T?Serial':
   76:     INTMSK &= 0x03FDBF7F;   // Global Interrupt Enable
 00000000  4800      LDR         R2,=0x3FDBF7F
 00000002  4800      LDR         R0,=0x1E0000C
 00000004  6801      LDR         R1,[R0,#0x0]
 00000006  4011      AND         R1,R2
 00000008  6001      STR         R1,[R0,#0x0]
   80:     INTCON  =  0x01;        // Disable FIQ, Enable IRQ, 
ARM COMPILER V2.51a,  Serial                                                               19/07/06  11:31:13  PAGE 5   

 0000000A  2101      MOV         R1,#0x1
 0000000C  4800      LDR         R0,=0x1E00000
 0000000E  6001      STR         R1,[R0,#0x0]
   82: }
 00000010  4770      BX          R14
 00000012          ENDP ; 'isr_init?T'


*** CODE SEGMENT '?PR?dmac_init?T?Serial':
   89:     BDISRC0=(0<<30)+(3<<28)+(int)(URXH0);   // byte,fix,URXH0
 00000000  4800      LDR         R0,=0x1D00024
 00000002  6801      LDR         R1,[R0,#0x0]
 00000004  4800      LDR         R0,=0x30000000
 00000006  1809      ADD         R1,R0
 00000008  4800      LDR         R0,=0x1F80004
 0000000A  6001      STR         R1,[R0,#0x0]
   90:     BDIDES0=(2<<30)+(1<<28)+(int)(rxdata);  // IO2M,inc,rxdata
 0000000C  4800      LDR         R1,=rxdata + 0x90000000 ; rxdata-1879048192
 0000000E  4800      LDR         R0,=0x1F80008
 00000010  6001      STR         R1,[R0,#0x0]
   92:     BDICNT0=(2<<30)+(1<<26)+(3<<22)+(0<<21)+(0<<20)+RXDATA_SIZE;
 00000012  4800      LDR         R1,=0x84C000FF
 00000014  4800      LDR         R0,=0x1F8000C
 00000016  6001      STR         R1,[R0,#0x0]
   93:     BDICNT0 |= (1<<20);// DMA enable
 00000018  4800      LDR         R2,=0x100000
 0000001A  4800      LDR         R0,=0x1F8000C
 0000001C  6801      LDR         R1,[R0,#0x0]
 0000001E  4311      ORR         R1,R2
 00000020  6001      STR         R1,[R0,#0x0]
   94:     BDCON0 = 0x0<<2;
 00000022  2100      MOV         R1,#0x0
 00000024  4800      LDR         R0,=0x1F80000
 00000026  6001      STR         R1,[R0,#0x0]
   95: }
 00000028  4770      BX          R14
 0000002A          ENDP ; 'dmac_init?T'


*** CODE SEGMENT '?PR?HandlerBDMA0?A?Serial':
  101: void HandlerBDMA0(void) __irq
 00000000  E92D0003  STMDB       R13!,{R0-R1}
  103:     BDISRC0=(0<<30)+(3<<28)+(int)(URXH0);   // byte,fix,URXH0
 00000004  E5100000  LDR         R0,=0x1D00024
 00000008  E5901000  LDR         R1,[R0,#0x0]
 0000000C  E2811203  ADD         R1,R1,#0x30000000
 00000010  E5100000  LDR         R0,=0x1F80004
 00000014  E5801000  STR         R1,[R0,#0x0]
  104:     BDIDES0=(2<<30)+(1<<28)+(int)(rxdata);  // IO2M,inc,rxdata
 00000018  E5101000  LDR         R1,=rxdata + 0x90000000 ; rxdata-1879048192
 0000001C  E5100000  LDR         R0,=0x1F80008
 00000020  E5801000  STR         R1,[R0,#0x0]
  106:     BDICNT0=(2<<30)+(1<<26)+(3<<22)+(0<<21)+(0<<20)+RXDATA_SIZE;
 00000024  E5101000  LDR         R1,=0x84C000FF
 00000028  E5100000  LDR         R0,=0x1F8000C
 0000002C  E5801000  STR         R1,[R0,#0x0]
  107:     BDICNT0 |= (1<<20);// DMA enable
 00000030  E5100000  LDR         R0,=0x1F8000C
 00000034  E5901000  LDR         R1,[R0,#0x0]
 00000038  E3811601  ORR         R1,R1,#0x100000
 0000003C  E5801000  STR         R1,[R0,#0x0]
  108:     BDCON0 = 0x0<<2;
 00000040  E3A01000  MOV         R1,#0x0
 00000044  E3A0077E  MOV         R0,#0x1F80000
 00000048  E5801000  STR         R1,[R0,#0x0]
  109: }
 0000004C  E8BD0003  LDMIA       R13!,{R0-R1}
 00000050  E25EF004  SUBS        R15,R14,#0x0004
 00000054          ENDP ; 'HandlerBDMA0?A'


*** CODE SEGMENT '?PR?HandlerUERR01?A?Serial':
ARM COMPILER V2.51a,  Serial                                                               19/07/06  11:31:13  PAGE 6   

  114: void HandlerUERR01(void) __irq
 00000000  E92D0003  STMDB       R13!,{R0-R1}
  115: {
 00000004            ; SCOPE-START
  117:     errflag = UERSTAT0;     // 读错误状态寄存器
 00000004  E5100000  LDR         R0,=0x1D00014
 00000008  E5901000  LDR         R1,[R0,#0x0]
 0000000C  E1A01C01  MOV         R1,R1,LSL #24
 00000010  E1A01C21  MOV         R1,R1,LSR #24
 00000014  ---- Variable 'errflag' assigned to Register 'R1' ----
  118:     if(errflag&0x01)        // 溢出错误
 00000014  E1A00001  MOV         R0,R1 ; errflag
 00000018  E1A00C00  MOV         R0,R0,LSL #24 ; errflag
 0000001C  E1A00C20  MOV         R0,R0,LSR #24
 00000020  E3100001  TST         R0,#0x0001
 00000024  0A000001  BEQ         L_5  ; Targ=0x30
  119:         errdata = URXH0;    // 读接收缓冲区
 00000028  E5100000  LDR         R0,=0x1D00024
 0000002C  E5900000  LDR         R0,[R0,#0x0]
 00000030          L_5:
  120:     I_ISPC = (1<<14);       // 清除UERR01 Error Interrupt
 00000030  E3A01901  MOV         R1,#0x4000
 00000034  E5100000  LDR         R0,=0x1E00024
 00000038  E5801000  STR         R1,[R0,#0x0]
 0000003C            ; SCOPE-END
  122: }
 0000003C  E8BD0003  LDMIA       R13!,{R0-R1}
 00000040  E25EF004  SUBS        R15,R14,#0x0004
 00000044          ENDP ; 'HandlerUERR01?A'


*** CODE SEGMENT '?PR?HandlerURXD0?A?Serial':
  128: void HandlerURXD0(void) __irq
 00000000  E92D001F  STMDB       R13!,{R0-R4}
 00000004  E24DD010  SUB         R13,R13,#0x0010
  129: {
 00000008            ; SCOPE-START
  133:     I_ISPC = (1<<7);        // 清除UART0 Rx Interrupt
 00000008  E3A01080  MOV         R1,#0x80
 0000000C  E5100000  LDR         R0,=0x1E00024
 00000010  E5801000  STR         R1,[R0,#0x0]
  134:     rxcount = UFSTAT0&0x0f; // 接收FIFO的数据量
 00000014  E5100000  LDR         R0,=0x1D00018
 00000018  E5901000  LDR         R1,[R0,#0x0]
 0000001C  E201100F  AND         R1,R1,#0x000F
 00000020  ---- Variable 'rxcount' assigned to Register 'R1' ----
  135:     for(k=0; k<rxcount; k++)
 00000020  E3A00000  MOV         R0,#0x0
 00000024  ---- Variable 'k' assigned to Register 'R0' ----
 00000024  EA000007  B           L_8  ; Targ=0x48
 00000028          L_9:
  136:         data[k]=URXH0 ;     // 从接收FIFO读入剩余数据
 00000028  E5102000  LDR         R2,=0x1D00024
 0000002C  E5922000  LDR         R2,[R2,#0x0]
 00000030  E1A02C02  MOV         R2,R2,LSL #24
 00000034  E1A02C22  MOV         R2,R2,LSR #24
 00000038  E1A04000  MOV         R4,R0 ; k
 0000003C  E28D3000  ADD         R3,R13,#0x0000
 00000040  E7C32004  STRB        R2,[R3,+R4]
 00000044  E2800001  ADD         R0,R0,#0x0001 ; k
 00000048          L_8:
 00000048  E1A03001  MOV         R3,R1 ; rxcount
 0000004C  E1A02000  MOV         R2,R0 ; k
 00000050  E1520003  CMP         R2,R3 ; k
 00000054  BAFFFFF3  BLT         L_9  ; Targ=0x28
 00000058            ; SCOPE-END
  137: }
 00000058  E28DD010  ADD         R13,R13,#0x0010
ARM COMPILER V2.51a,  Serial                                                               19/07/06  11:31:13  PAGE 7   

 0000005C  E8BD001F  LDMIA       R13!,{R0-R4}
 00000060  E25EF004  SUBS        R15,R14,#0x0004
 00000064          ENDP ; 'HandlerURXD0?A'



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