📄 interrupt_usart.lst
字号:
##############################################################################
# #
# IAR ARM ANSI C/C++ Compiler V4.30A/W32 KICKSTART 28/Oct/2005 11:13:58 #
# Copyright 1999-2005 IAR Systems. All rights reserved. #
# #
# Cpu mode = interwork #
# Endian = little #
# Stack alignment = 4 #
# Source file = E:\SAM7X\AT91_SAM7X256-IAR\AT91SAM7X256-Interrupt-IA #
# R4_30A-1_2\AT91SAM7X-Interrupt\src\interrupt_Usart.c #
# Command line = E:\SAM7X\AT91_SAM7X256-IAR\AT91SAM7X256-Interrupt-IA #
# R4_30A-1_2\AT91SAM7X-Interrupt\src\interrupt_Usart.c #
# -lC E:\SAM7X\AT91_SAM7X256-IAR\AT91SAM7X256-Interru #
# pt-IAR4_30A-1_2\AT91SAM7X-Interrupt\compil\FLASH_Deb #
# ug\List\ -o E:\SAM7X\AT91_SAM7X256-IAR\AT91SAM7X256- #
# Interrupt-IAR4_30A-1_2\AT91SAM7X-Interrupt\compil\FL #
# ASH_Debug\Obj\ -z9 --debug --cpu_mode thumb #
# --endian little --cpu ARM7TDMI --stack_align 4 #
# --interwork -e --fpu None --dlib_config "D:\Program #
# Files\IAR Systems\Embedded Workbench 4.0 #
# Kickstart\arm\LIB\dl4tptinl8n.h" -I #
# E:\SAM7X\AT91_SAM7X256-IAR\AT91SAM7X256-Interrupt-IA #
# R4_30A-1_2\AT91SAM7X-Interrupt\compil\srcIAR\ -I #
# E:\SAM7X\AT91_SAM7X256-IAR\AT91SAM7X256-Interrupt-IA #
# R4_30A-1_2\AT91SAM7X-Interrupt\compil\..\src\ -I #
# E:\SAM7X\AT91_SAM7X256-IAR\AT91SAM7X256-Interrupt-IA #
# R4_30A-1_2\AT91SAM7X-Interrupt\compil\..\..\ -I #
# "D:\Program Files\IAR Systems\Embedded Workbench #
# 4.0 Kickstart\arm\INC\" #
# List file = E:\SAM7X\AT91_SAM7X256-IAR\AT91SAM7X256-Interrupt-IA #
# R4_30A-1_2\AT91SAM7X-Interrupt\compil\FLASH_Debug\Li #
# st\interrupt_Usart.lst #
# Object file = E:\SAM7X\AT91_SAM7X256-IAR\AT91SAM7X256-Interrupt-IA #
# R4_30A-1_2\AT91SAM7X-Interrupt\compil\FLASH_Debug\Ob #
# j\interrupt_Usart.r79 #
# #
# #
##############################################################################
E:\SAM7X\AT91_SAM7X256-IAR\AT91SAM7X256-Interrupt-IAR4_30A-1_2\AT91SAM7X-Interrupt\src\interrupt_Usart.c
1 // ----------------------------------------------------------------------------
2 // ATMEL Microcontroller Software Support - ROUSSET -
3 // ----------------------------------------------------------------------------
4 // DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
5 // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
6 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
7 // DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
8 // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
9 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
10 // OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
11 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
12 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
13 // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
14 // ----------------------------------------------------------------------------
15 // File Name : interrupt_Usart.c
16 // Object : USART Interrupt Management
17 // Creation : JPP 08-Sep-2005
18 // ----------------------------------------------------------------------------
19
20 // Include Standard LIB files
21 #include "project.h"
\ In segment CODE, align 4, keep-with-next
\ __??Code16?? __code __interwork __atpcs void AT91F_PDC_Open(AT91PS_PDC)
\ AT91F_PDC_Open:
\ 00000000 0221 MOV R1,#+0x2
\ 00000002 0162 STR R1,[R0, #+0x20]
\ 00000004 0902 LSL R1,R1,#+0x8
\ 00000006 0162 STR R1,[R0, #+0x20]
\ 00000008 0021 MOV R1,#+0
\ 0000000A 8161 STR R1,[R0, #+0x18]
\ 0000000C C161 STR R1,[R0, #+0x1C]
\ 0000000E 0161 STR R1,[R0, #+0x10]
\ 00000010 4161 STR R1,[R0, #+0x14]
\ 00000012 8160 STR R1,[R0, #+0x8]
\ 00000014 C160 STR R1,[R0, #+0xC]
\ 00000016 0160 STR R1,[R0, #+0]
\ 00000018 4160 STR R1,[R0, #+0x4]
\ 0000001A 0121 MOV R1,#+0x1
\ 0000001C 0162 STR R1,[R0, #+0x20]
\ 0000001E 0902 LSL R1,R1,#+0x8
\ 00000020 0162 STR R1,[R0, #+0x20]
\ 00000022 7047 BX LR ;; return
22
23 #define USART_INTERRUPT_LEVEL 7
24 #define AT91_BAUD_RATE 115200
\ In segment DATA_C, align 4, align-sorted
25 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 617274204952 DC8 61H, 72H, 74H, 20H, 49H, 52H, 51H, 20H
\ 5120
\ 00000018 2A2A2A0A0D43 DC8 2AH, 2AH, 2AH, 0AH, 0DH, 43H, 6FH, 70H
\ 6F70
\ 00000020 797269676874 DC8 79H, 72H, 69H, 67H, 68H, 74H, 20H, 28H
\ 2028
\ 00000028 432920323030 DC8 43H, 29H, 20H, 32H, 30H, 30H, 35H, 20H
\ 3520
\ 00000030 41544D454C20 DC8 41H, 54H, 4DH, 45H, 4CH, 20H, 43H, 6FH
\ 436F
\ 00000038 72706F726174 DC8 72H, 70H, 6FH, 72H, 61H, 74H, 69H, 6FH
\ 696F
\ 00000040 6E7320566572 DC8 6EH, 73H, 20H, 56H, 65H, 72H, 73H, 69H
\ 7369
\ 00000048 6F6E3A20312E DC8 6FH, 6EH, 3AH, 20H, 31H, 2EH, 30H, 0AH
\ 300A
\ 00000050 0D00 DC8 0DH, 0
\ 00000052 0000 DC8 0, 0
26 {
27 "\n\r *** ATMEL Usart IRQ ***\n\r"
28 "Copyright (C) 2005 ATMEL Corporations Version: 1.0\n\r"
29 };
30
31 //* \fn AT91F_US_Baudrate
32 //* \brief Calculate the baudrate
33 //* Standard Asynchronous Mode : 8 bits , 1 stop , no parity
34 #define AT91C_US_ASYNC_MODE ( AT91C_US_USMODE_NORMAL + \
35 AT91C_US_NBSTOP_1_BIT + \
36 AT91C_US_PAR_NONE + \
37 AT91C_US_CHRL_8_BITS + \
38 AT91C_US_CLKS_CLOCK )
39
40 //*------------------------- Internal Function --------------------------------
41
42 //*----------------------------------------------------------------------------
43 //* Function Name : Usart_c_irq_handler
44 //* Object : C handler interrupt function calAT91B_LED by the interrupts
45 //* assembling routine
46 //* Input Parameters : <RTC_pt> time rtc descriptor
47 //* Output Parameters : increment count_timer0_interrupt
48 //*----------------------------------------------------------------------------
\ In segment CODE_I, align 4, keep-with-next
49 __ramfunc void Usart_c_irq_handler(void)
50 {
\ Usart_c_irq_handler:
\ 00000000 10B4 PUSH {R4}
51 AT91PS_USART USART_pt = AT91C_BASE_US0;
52 unsigned int status;
53 //* get Usart status register
54 status = USART_pt->US_CSR;
\ 00000002 1248 LDR R0,??Usart_c_irq_handler_0 ;; 0xfffc0014
\ 00000004 0068 LDR R0,[R0, #+0]
55 if ( status & AT91C_US_RXRDY){
\ 00000006 1249 LDR R1,??Usart_c_irq_handler_0+0x4 ;; 0xfffc001c
\ 00000008 124A LDR R2,??Usart_c_irq_handler_0+0x8 ;; 0xfffc0018
\ 0000000A C307 LSL R3,R0,#+0x1F
\ 0000000C 04D5 BPL ??Usart_c_irq_handler_1
56 //* Get byte and send
57 AT91F_US_PutChar (USART_pt, AT91F_US_GetChar(USART_pt));
\ 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]
58 }
59
60 if ( status & AT91C_US_OVRE) {
\ ??Usart_c_irq_handler_1:
\ 00000018 8306 LSL R3,R0,#+0x1A
\ 0000001A 02D5 BPL ??Usart_c_irq_handler_2
61 //* clear US_RXRDY
62 AT91F_US_GetChar(USART_pt);
\ 0000001C 1268 LDR R2,[R2, #+0]
63 AT91F_US_PutChar (USART_pt, 'O');
\ 0000001E 4F22 MOV R2,#+0x4F
\ 00000020 0A60 STR R2,[R1, #+0]
64 }
65
66 //* Check error
67 if ( status & AT91C_US_PARE) {
\ ??Usart_c_irq_handler_2:
\ 00000022 0206 LSL R2,R0,#+0x18
\ 00000024 01D5 BPL ??Usart_c_irq_handler_3
68 AT91F_US_PutChar (USART_pt, 'P');
\ 00000026 5022 MOV R2,#+0x50
\ 00000028 0A60 STR R2,[R1, #+0]
69 }
70
71 if ( status & AT91C_US_FRAME) {
\ ??Usart_c_irq_handler_3:
\ 0000002A 4206 LSL R2,R0,#+0x19
\ 0000002C 01D5 BPL ??Usart_c_irq_handler_4
72 AT91F_US_PutChar (USART_pt, 'F');
\ 0000002E 4622 MOV R2,#+0x46
\ 00000030 0A60 STR R2,[R1, #+0]
73 }
74
75 if ( status & AT91C_US_TIMEOUT){
\ ??Usart_c_irq_handler_4:
\ 00000032 8022 MOV R2,#+0x80
\ 00000034 5200 LSL R2,R2,#+0x1 ;; #+0x100
\ 00000036 084B LDR R3,??Usart_c_irq_handler_0+0xC ;; 0xfffc0000
\ 00000038 1042 TST R0,R2
\ 0000003A 03D0 BEQ ??Usart_c_irq_handler_5
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -