📄 interrupt_usart.lst
字号:
\ 6564
\ 000000C0 2E636F6D2020 DC8 2EH, 63H, 6FH, 6DH, 20H, 20H, 3DH, 3DH
\ 3D3D
\ 000000C8 0A0D3D3D3D3D DC8 0AH, 0DH, 3DH, 3DH, 3DH, 3DH, 3DH, 3DH
\ 3D3D
\ 000000D0 3D3D3D3D3D3D DC8 3DH, 3DH, 3DH, 3DH, 3DH, 3DH, 3DH, 3DH
\ 3D3D
\ 000000D8 3D3D3D3D3D3D DC8 3DH, 3DH, 3DH, 3DH, 3DH, 3DH, 3DH, 3DH
\ 3D3D
\ 000000E0 3D3D3D3D3D3D DC8 3DH, 3DH, 3DH, 3DH, 3DH, 3DH, 3DH, 3DH
\ 3D3D
\ 000000E8 3D3D3D3D3D3D DC8 3DH, 3DH, 3DH, 3DH, 3DH, 3DH, 3DH, 3DH
\ 3D3D
\ 000000F0 3D3D3D3D3D3D DC8 3DH, 3DH, 3DH, 3DH, 3DH, 3DH, 3DH, 3DH
\ 3D3D
\ 000000F8 3D3D0A0D00 DC8 3DH, 3DH, 0AH, 0DH, 0
\ 000000FD 000000 DC8 0, 0, 0
27 {
28 "\n\r================================================"
29 "\n\r== 欢迎使用英贝德公司的产品 =="
30 "\n\r== EBDSAM7X 各种中断的演示测试 =="
31 "\n\r== 更多的的帮助请到 http://www.szembed.com =="
32 "\n\r================================================\n\r"
33 };
\ In segment DATA_C, align 4, align-sorted
34 static const char atmel_header[]=
\ ??atmel_header:
\ 00000000 0A0D20202A2A DC8 0AH, 0DH, 20H, 20H, 2AH, 2AH, 2AH, 20H
\ 2A20
\ 00000008 41544D454C20 DC8 41H, 54H, 4DH, 45H, 4CH, 20H, 55H, 73H
\ 5573
\ 00000010 617274312049 DC8 61H, 72H, 74H, 31H, 20H, 49H, 52H, 51H
\ 5251
\ 00000018 202A2A2A0A0D DC8 20H, 2AH, 2AH, 2AH, 0AH, 0DH, 43H, 6FH
\ 436F
\ 00000020 707972696768 DC8 70H, 79H, 72H, 69H, 67H, 68H, 74H, 20H
\ 7420
\ 00000028 284329203230 DC8 28H, 43H, 29H, 20H, 32H, 30H, 30H, 35H
\ 3035
\ 00000030 2041544D454C DC8 20H, 41H, 54H, 4DH, 45H, 4CH, 20H, 43H
\ 2043
\ 00000038 6F72706F7261 DC8 6FH, 72H, 70H, 6FH, 72H, 61H, 74H, 69H
\ 7469
\ 00000040 6F6E73205665 DC8 6FH, 6EH, 73H, 20H, 56H, 65H, 72H, 73H
\ 7273
\ 00000048 696F6E3A2031 DC8 69H, 6FH, 6EH, 3AH, 20H, 31H, 2EH, 30H
\ 2E30
\ 00000050 0A0D00 DC8 0AH, 0DH, 0
\ 00000053 00 DC8 0
35 {
36 "\n\r *** ATMEL Usart1 IRQ ***\n\r"
37 "Copyright (C) 2005 ATMEL Corporations Version: 1.0\n\r"
38 };
39
40 //* \fn AT91F_US_Baudrate
41 //* \brief Calculate the baudrate
42 //* Standard Asynchronous Mode : 8 bits , 1 stop , no parity
43 #define AT91C_US_ASYNC_MODE ( AT91C_US_USMODE_NORMAL + \
44 AT91C_US_NBSTOP_1_BIT + \
45 AT91C_US_PAR_NONE + \
46 AT91C_US_CHRL_8_BITS + \
47 AT91C_US_CLKS_CLOCK )
48
49 //*------------------------- Internal Function --------------------------------
50
51 //*----------------------------------------------------------------------------
52 //* Function Name : Usart_c_irq_handler
53 //* Object : C handler interrupt function calAT91B_LED by the interrupts
54 //* assembling routine
55 //* Input Parameters : <RTC_pt> time rtc descriptor
56 //* Output Parameters : increment count_timer0_interrupt
57 //*----------------------------------------------------------------------------
\ In segment CODE_I, align 4, keep-with-next
58 __ramfunc void Usart_c_irq_handler(void)
\ Usart_c_irq_handler:
\ 00000000 .... B ?Subroutine4
\ In segment CODE_I, align 4, keep-with-next
\ ?Subroutine4:
\ 00000000 10B4 PUSH {R4}
\ 00000002 1248 LDR R0,??Subroutine4_0 ;; 0xfffc0014
\ 00000004 0068 LDR R0,[R0, #+0]
\ 00000006 1249 LDR R1,??Subroutine4_0+0x4 ;; 0xfffc001c
\ 00000008 124A LDR R2,??Subroutine4_0+0x8 ;; 0xfffc0018
\ 0000000A C307 LSL R3,R0,#+0x1F
\ 0000000C 04D5 BPL ??Subroutine4_1
\ 0000000E 1368 LDR R3,[R2, #+0]
\ 00000010 CC0D LSR R4,R1,#+0x17
\ 00000012 2340 AND R3,R4
\ 00000014 1C40 AND R4,R3
\ 00000016 0C60 STR R4,[R1, #+0]
\ ??Subroutine4_1:
\ 00000018 8306 LSL R3,R0,#+0x1A
\ 0000001A 02D5 BPL ??Subroutine4_2
\ 0000001C 1268 LDR R2,[R2, #+0]
\ 0000001E 4F22 MOV R2,#+0x4F
\ 00000020 0A60 STR R2,[R1, #+0]
\ ??Subroutine4_2:
\ 00000022 0206 LSL R2,R0,#+0x18
\ 00000024 01D5 BPL ??Subroutine4_3
\ 00000026 5022 MOV R2,#+0x50
\ 00000028 0A60 STR R2,[R1, #+0]
\ ??Subroutine4_3:
\ 0000002A 4206 LSL R2,R0,#+0x19
\ 0000002C 01D5 BPL ??Subroutine4_4
\ 0000002E 4622 MOV R2,#+0x46
\ 00000030 0A60 STR R2,[R1, #+0]
\ ??Subroutine4_4:
\ 00000032 8022 MOV R2,#+0x80
\ 00000034 5200 LSL R2,R2,#+0x1 ;; #+0x100
\ 00000036 084B LDR R3,??Subroutine4_0+0xC ;; 0xfffc0000
\ 00000038 1042 TST R0,R2
\ 0000003A 03D0 BEQ ??Subroutine4_5
\ 0000003C D000 LSL R0,R2,#+0x3
\ 0000003E 1860 STR R0,[R3, #+0]
\ 00000040 5420 MOV R0,#+0x54
\ 00000042 0860 STR R0,[R1, #+0]
\ ??Subroutine4_5:
\ 00000044 1A60 STR R2,[R3, #+0]
\ 00000046 10BC POP {R4}
\ 00000048 7047 BX LR ;; return
\ 0000004A C046 NOP
\ ??Subroutine4_0:
\ 0000004C 1400FCFF DC32 0xfffc0014
\ 00000050 1C00FCFF DC32 0xfffc001c
\ 00000054 1800FCFF DC32 0xfffc0018
\ 00000058 0000FCFF DC32 0xfffc0000
59 {
60 AT91PS_USART USART_pt = AT91C_BASE_US0;
61 unsigned int status;
62 //* get Usart status register
63 status = USART_pt->US_CSR;
64 if ( status & AT91C_US_RXRDY){
65 //* Get byte and send
66 AT91F_US_PutChar (USART_pt, AT91F_US_GetChar(USART_pt));
67 }
68
69 if ( status & AT91C_US_OVRE) {
70 //* clear US_RXRDY
71 AT91F_US_GetChar(USART_pt);
72 AT91F_US_PutChar (USART_pt, 'O');
73 }
74
75 //* Check error
76 if ( status & AT91C_US_PARE) {
77 AT91F_US_PutChar (USART_pt, 'P');
78 }
79
80 if ( status & AT91C_US_FRAME) {
81 AT91F_US_PutChar (USART_pt, 'F');
82 }
83
84 if ( status & AT91C_US_TIMEOUT){
85 USART_pt->US_CR = AT91C_US_STTTO;
86 AT91F_US_PutChar (USART_pt, 'T');
87 }
88
89 //* Reset the satus bit
90 USART_pt->US_CR = AT91C_US_RSTSTA;
91 }
92
\ In segment CODE_I, align 4, keep-with-next
93 __ramfunc void Usart1_c_irq_handler(void)
\ Usart1_c_irq_handler:
\ 00000000 REQUIRE ?Subroutine4
\ 00000000 ;; // Fall through to label ?Subroutine4
94 {
95 AT91PS_USART USART_pt = AT91C_BASE_US0;
96 unsigned int status;
97 //* get Usart status register
98 status = USART_pt->US_CSR;
99 if ( status & AT91C_US_RXRDY){
100 //* Get byte and send
101 AT91F_US_PutChar (USART_pt, AT91F_US_GetChar(USART_pt));
102 }
103
104 if ( status & AT91C_US_OVRE) {
105 //* clear US_RXRDY
106 AT91F_US_GetChar(USART_pt);
107 AT91F_US_PutChar (USART_pt, 'O');
108 }
109
110 //* Check error
111 if ( status & AT91C_US_PARE) {
112 AT91F_US_PutChar (USART_pt, 'P');
113 }
114
115 if ( status & AT91C_US_FRAME) {
116 AT91F_US_PutChar (USART_pt, 'F');
117 }
118
119 if ( status & AT91C_US_TIMEOUT){
120 USART_pt->US_CR = AT91C_US_STTTO;
121 AT91F_US_PutChar (USART_pt, 'T');
122 }
123
124 //* Reset the satus bit
125 USART_pt->US_CR = AT91C_US_RSTSTA;
126 }
127 //*-------------------------- External Function -------------------------------
128
129 //*----------------------------------------------------------------------------
130 //* Function Name : Usart_init
131 //* Object : USART initialization
132 //* Input Parameters : none
133 //* Output Parameters : TRUE
134 //*----------------------------------------------------------------------------
\ In segment CODE, align 4, keep-with-next
135 void Usart_init ( void )
136 //* Begin
137 {
\ Usart_init:
\ 00000000 30B5 PUSH {R4,R5,LR}
138 AT91PS_USART COM0 = AT91C_BASE_US0;
139
140 // First, enable the clock of the USART
141 AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_US0 ) ;
\ 00000002 4024 MOV R4,#+0x40
\ 00000004 .... LDR R0,??DataTable7 ;; 0xfffffc10
\ 00000006 0460 STR R4,[R0, #+0]
142
143 //* Configure PIO controllers to periph mode
144 AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA,
145 ((unsigned int) AT91C_PA0_RXD0 ) |
146 ((unsigned int) AT91C_PA1_TXD0 ) |
147 ((unsigned int) AT91C_PA3_RTS0 ) |
148 ((unsigned int) AT91C_PA4_CTS0 ), // Peripheral A
149 0); // Peripheral B
\ 00000008 1B20 MOV R0,#+0x1B
\ 0000000A .... LDR R1,??DataTable8 ;; 0xfffff470
\ 0000000C 0860 STR R0,[R1, #+0]
\ 0000000E .... LDR R1,??DataTable9 ;; 0xfffff474
\ 00000010 0022 MOV R2,#+0
\ 00000012 0A60 STR R2,[R1, #+0]
\ 00000014 .... LDR R1,??DataTable10 ;; 0xfffff404
\ 00000016 0860 STR R0,[R1, #+0]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -