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

📄 usart.lst

📁 atmelsam7s64twi完美底层驱动
💻 LST
📖 第 1 页 / 共 3 页
字号:



*** CODE SEGMENT '?PR?uartinit?T?usart':
   10:     *AT91C_PMC_PCER|=0x00000040;        //PMC外设时钟使能
ARM COMPILER V2.53,  usart                                                                 19/07/06  08:38:09  PAGE 5   

 00000000  2240      MOV         R2,#0x40
 00000002  4800      LDR         R0,=0xFFFFFC10
 00000004  6801      LDR         R1,[R0,#0x0]
 00000006  4311      ORR         R1,R2
 00000008  6001      STR         R1,[R0,#0x0]
   11:     *AT91C_PIOA_PDR|=0x00000060;        //Disable I/O,PA5=RXD0,PA6=TXD0
 0000000A  2260      MOV         R2,#0x60
 0000000C  4800      LDR         R0,=0xFFFFF404
 0000000E  6801      LDR         R1,[R0,#0x0]
 00000010  4311      ORR         R1,R2
 00000012  6001      STR         R1,[R0,#0x0]
   12:     *AT91C_PIOA_ASR|=0x00000060;        //PIO分配成UART
 00000014  4800      LDR         R0,=0xFFFFF470
 00000016  6801      LDR         R1,[R0,#0x0]
 00000018  4311      ORR         R1,R2
 0000001A  6001      STR         R1,[R0,#0x0]
   13:     *AT91C_US0_CR=0XAC;                 //RESET UART
 0000001C  21AC      MOV         R1,#0xAC
 0000001E  4800      LDR         R0,=0xFFFC0000
 00000020  6001      STR         R1,[R0,#0x0]
   14:     *AT91C_US0_MR=0X8C0;                //8bit,No,1Bit Stop
 00000022  4800      LDR         R1,=0x8C0
 00000024  4800      LDR         R0,=0xFFFC0004
 00000026  6001      STR         R1,[R0,#0x0]
   15:     *AT91C_US0_IDR=0XF3FFF;             //Disable UART Interrupt
 00000028  4800      LDR         R1,=0xF3FFF
 0000002A  4800      LDR         R0,=0xFFFC000C
 0000002C  6001      STR         R1,[R0,#0x0]
   17:     *AT91C_US0_BRGR=30;
 0000002E  211E      MOV         R1,#0x1E
 00000030  4800      LDR         R0,=0xFFFC0020
 00000032  6001      STR         R1,[R0,#0x0]
   18:     *AT91C_US0_CR=0X50;                 //SET UART
 00000034  2150      MOV         R1,#0x50
 00000036  4800      LDR         R0,=0xFFFC0000
 00000038  6001      STR         R1,[R0,#0x0]
   19: }
 0000003A  4770      BX          R14
 0000003C          ENDP ; 'uartinit?T'


*** CODE SEGMENT '?PR?Usart1_Init?T?usart':
   29:     *AT91C_PMC_PCER=(unsigned int)1<<AT91C_ID_US1;      //PMC外设时钟使能
 00000000  2180      MOV         R1,#0x80
 00000002  4800      LDR         R0,=0xFFFFFC10
 00000004  6001      STR         R1,[R0,#0x0]
   30:     *AT91C_PIOA_PDR=AT91C_PA21_RXD1 | AT91C_PA22_TXD1;      //Disable I/O,PA5=RXD0,PA6=TXD0
 00000006  4800      LDR         R1,=0x600000
 00000008  4800      LDR         R0,=0xFFFFF404
 0000000A  6001      STR         R1,[R0,#0x0]
   31:     *AT91C_PIOA_ASR=AT91C_PA21_RXD1 | AT91C_PA22_TXD1;      //PIO分配成UART
 0000000C  4800      LDR         R0,=0xFFFFF470
 0000000E  6001      STR         R1,[R0,#0x0]
   32:     *AT91C_US1_CR=0XAC;                 //RESET UART
 00000010  21AC      MOV         R1,#0xAC
 00000012  4800      LDR         R0,=0xFFFC4000
 00000014  6001      STR         R1,[R0,#0x0]
   33:     *AT91C_US1_MR=0X8C0;                //8bit,No,1Bit Stop
 00000016  4800      LDR         R1,=0x8C0
 00000018  4800      LDR         R0,=0xFFFC4004
 0000001A  6001      STR         R1,[R0,#0x0]
   34:     *AT91C_US1_IDR=0XF3FFF;             //Disable UART Interrupt
 0000001C  4800      LDR         R1,=0xF3FFF
 0000001E  4800      LDR         R0,=0xFFFC400C
 00000020  6001      STR         R1,[R0,#0x0]
   36:     *AT91C_US1_BRGR=120;
 00000022  2178      MOV         R1,#0x78
 00000024  4800      LDR         R0,=0xFFFC4020
ARM COMPILER V2.53,  usart                                                                 19/07/06  08:38:09  PAGE 6   

 00000026  6001      STR         R1,[R0,#0x0]
   37:     *AT91C_US1_CR=0X50;                 //SET UART
 00000028  2150      MOV         R1,#0x50
 0000002A  4800      LDR         R0,=0xFFFC4000
 0000002C  6001      STR         R1,[R0,#0x0]
   38: }
 0000002E  4770      BX          R14
 00000030          ENDP ; 'Usart1_Init?T'


*** CODE SEGMENT '?PR?Uart0ISR?A?usart':
   44: void Uart0ISR(void) __irq
 00000000  E92D001F  STMDB       R13!,{R0-R4}
   45: {
 00000004            ; SCOPE-START
   46:     unsigned int s=0;
 00000004  E3A03000  MOV         R3,#0x0
 00000008  ---- Variable 's' assigned to Register 'R3' ----
   47:     unsigned char ch=0;
 00000008  E3A01000  MOV         R1,#0x0
 0000000C  E1A00001  MOV         R0,R1 ; ch
 00000010  ---- Variable 'ch' assigned to Register 'R0' ----
   50:     s = AT91C_BASE_US0->US_CSR;
 00000010  E5102000  LDR         R2,=0xFFFC0014
 00000014  E5923000  LDR         R3,[R2,#0x0]
   52:     if(s&0x01)    // RXRDY
 00000018  E1A02003  MOV         R2,R3 ; s
 0000001C  E3120001  TST         R2,#0x0001 ; s
 00000020  0A000014  BEQ         L_1  ; Targ=0x78
   54:         ch = AT91C_BASE_US0->US_RHR;
 00000024  E5100000  LDR         R0,=0xFFFC0018
 00000028  E5900000  LDR         R0,[R0,#0x0]
 0000002C  E1A00C00  MOV         R0,R0,LSL #24
 00000030  E1A00C20  MOV         R0,R0,LSR #24
   55:         g_bpData[bI++] = AT91C_BASE_US0->US_RHR;
 00000034  E5100000  LDR         R0,=0xFFFC0018
 00000038  E5900000  LDR         R0,[R0,#0x0]
 0000003C  E1A00C00  MOV         R0,R0,LSL #24
 00000040  E1A00C20  MOV         R0,R0,LSR #24
 00000044  E5103000  LDR         R3,=bI ; bI
 00000048  E5D32000  LDRB        R2,[R3,#0x0] ; bI
 0000004C  E2824001  ADD         R4,R2,#0x0001
 00000050  E5C34000  STRB        R4,[R3,#0x0] ; bI
 00000054  E1A03002  MOV         R3,R2
 00000058  E5102000  LDR         R2,=g_bpData ; g_bpData
 0000005C  E7C20003  STRB        R0,[R2,+R3]
   56:         if (bI==20)
 00000060  E5100000  LDR         R0,=bI ; bI
 00000064  E5D00000  LDRB        R0,[R0,#0x0] ; bI
 00000068  E3500014  CMP         R0,#0x0014
 0000006C  1A000001  BNE         L_1  ; Targ=0x78
   58:             bI = 0;
 00000070  E5100000  LDR         R0,=bI ; bI
 00000074  E5C01000  STRB        R1,[R0,#0x0] ; bI
   60:     }
 00000078          L_1:
   66:     AT91C_BASE_AIC->AIC_EOICR = 1;//End of Interrupt
 00000078  E3A01001  MOV         R1,#0x1
 0000007C  E5100000  LDR         R0,=0xFFFFF130
 00000080  E5801000  STR         R1,[R0,#0x0]
 00000084            ; SCOPE-END
   67: }
 00000084  E8BD001F  LDMIA       R13!,{R0-R4}
 00000088  E25EF004  SUBS        R15,R14,#0x0004
 0000008C          ENDP ; 'Uart0ISR?A'


*** CODE SEGMENT '?PR?uart0init?T?usart':
   73: void uart0init(void)
 00000000  B410      PUSH        {R4}
ARM COMPILER V2.53,  usart                                                                 19/07/06  08:38:09  PAGE 7   

   75:     *AT91C_PMC_PCER|=0x00000040;        //PMC外设时钟使能
 00000002  2140      MOV         R1,#0x40
 00000004  4800      LDR         R0,=0xFFFFFC10
 00000006  6802      LDR         R2,[R0,#0x0]
 00000008  430A      ORR         R2,R1
 0000000A  6002      STR         R2,[R0,#0x0]
   76:     *AT91C_PIOA_PDR|=0x00000060;        //Disable I/O,PA5=RXD0,PA6=TXD0
 0000000C  2360      MOV         R3,#0x60
 0000000E  4800      LDR         R0,=0xFFFFF404
 00000010  6802      LDR         R2,[R0,#0x0]
 00000012  431A      ORR         R2,R3
 00000014  6002      STR         R2,[R0,#0x0]
   77:     *AT91C_PIOA_ASR|=0x00000060;        //PIO分配成UART
 00000016  4800      LDR         R0,=0xFFFFF470
 00000018  6802      LDR         R2,[R0,#0x0]
 0000001A  431A      ORR         R2,R3
 0000001C  6002      STR         R2,[R0,#0x0]
   78:     *AT91C_US0_CR=0XAC;                 //RESET UART
 0000001E  22AC      MOV         R2,#0xAC
 00000020  4800      LDR         R0,=0xFFFC0000
 00000022  6002      STR         R2,[R0,#0x0]
   79:     *AT91C_US0_MR=0X8C0;                //8bit,No,1Bit Stop
 00000024  4800      LDR         R2,=0x8C0
 00000026  4800      LDR         R0,=0xFFFC0004
 00000028  6002      STR         R2,[R0,#0x0]
   80:     *AT91C_US0_IDR=0XF3FFF;             //Disable UART Interrupt
 0000002A  4800      LDR         R3,=0xF3FFF
 0000002C  4800      LDR         R0,=0xFFFC000C
 0000002E  6003      STR         R3,[R0,#0x0]
   82:     *AT91C_US0_BRGR=30;
 00000030  221E      MOV         R2,#0x1E
 00000032  4800      LDR         R0,=0xFFFC0020
 00000034  6002      STR         R2,[R0,#0x0]
   83:     *AT91C_US0_CR=0X50;                 //SET UART
 00000036  2250      MOV         R2,#0x50
 00000038  4800      LDR         R0,=0xFFFC0000
 0000003A  6002      STR         R2,[R0,#0x0]
   85:     AT91C_BASE_AIC->AIC_SMR[AT91C_ID_US0] = AT91C_AIC_SRCTYPE_INT_LEVEL_SENSITIVE | 1;
 0000003C  2201      MOV         R2,#0x1
 0000003E  4800      LDR         R0,=0xFFFFF018
 00000040  6002      STR         R2,[R0,#0x0]
   86:     AT91C_BASE_AIC->AIC_SVR[AT91C_ID_US0]=(unsigned int) Uart0ISR;//赋中断服务函数指针  
 00000042  4C00      LDR         R4,=Uart0ISR?A ; Uart0ISR?A
 00000044  4800      LDR         R0,=0xFFFFF098
 00000046  6004      STR         R4,[R0,#0x0]
   87:     AT91C_BASE_US0->US_IDR=0xF3FFF;              // disable all interrupts
 00000048  4800      LDR         R0,=0xFFFC000C
 0000004A  6003      STR         R3,[R0,#0x0]
   88:     AT91C_BASE_US0->US_IER=0x01;//允许接收中断
 0000004C  4800      LDR         R0,=0xFFFC0008
 0000004E  6002      STR         R2,[R0,#0x0]
   89:     AT91C_BASE_AIC->AIC_IECR = (unsigned int)1<<AT91C_ID_US0; 
 00000050  4800      LDR         R0,=0xFFFFF120
 00000052  6001      STR         R1,[R0,#0x0]
   91: }
 00000054  BC10      POP         {R4}
 00000056  4770      BX          R14
 00000058          ENDP ; 'uart0init?T'


*** CODE SEGMENT '?PR?putcharme?T?usart':
   92: unsigned char putcharme (unsigned char ch)
 00000000  1C01      MOV         R1,R0 ; ch
 00000002  ---- Variable 'ch' assigned to Register 'R1' ----
   94:     if (ch == '\n')  
 00000002  1C08      MOV         R0,R1 ; ch
 00000004  0600      LSL         R0,R0,#0x18 ; ch
 00000006  0E00      LSR         R0,R0,#0x18
ARM COMPILER V2.53,  usart                                                                 19/07/06  08:38:09  PAGE 8   

 00000008  280A      CMP         R0,#0xA
 0000000A  D107      BNE         L_11  ; T=0x0000001C
   96:         while (!((*AT91C_US0_CSR) & AT91C_US_TXRDY)); // Wait for Empty Tx Buffer
 0000000C          L_4:
 0000000C  4800      LDR         R0,=0xFFFC0014
 0000000E  6800      LDR         R0,[R0,#0x0]
 00000010  2202      MOV         R2,#0x2
 00000012  4210      TST         R0,R2
 00000014  D0FA      BEQ         L_4  ; T=0x0000000C
   97:         *AT91C_US0_THR = '\r';                      // Output CR
 00000016  220D      MOV         R2,#0xD
 00000018  4800      LDR         R0,=0xFFFC001C
 0000001A  6002      STR         R2,[R0,#0x0]
   99:     while (!((*AT91C_US0_CSR) & AT91C_US_TXRDY));   // Wait for Empty Tx Buffer

⌨️ 快捷键说明

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