📄 interrupt_usart.lst
字号:
##############################################################################
# #
# IAR ARM ANSI C/C++ Compiler V4.31A/W32 EVALUATION 28/Feb/2007 15:38:30 #
# Copyright 1999-2005 IAR Systems. All rights reserved. #
# #
# Cpu mode = interwork #
# Endian = little #
# Stack alignment = 4 #
# Source file = D:\work\AC-530\software\my #
# usb\AT91SAM7S-USART_USB_SAM7S\src\interrupt_Usart.c #
# Command line = "D:\work\AC-530\software\my #
# usb\AT91SAM7S-USART_USB_SAM7S\src\interrupt_Usart.c" #
# -lC "D:\work\AC-530\software\my #
# usb\AT91SAM7S-USART_USB_SAM7S\Compil\Binary\List\" #
# -o "D:\work\AC-530\software\my #
# usb\AT91SAM7S-USART_USB_SAM7S\Compil\Binary\Obj\" #
# -z9 --debug --cpu_mode thumb --endian little --cpu #
# ARM7TDMI --stack_align 4 --interwork -e --fpu None #
# --dlib_config "C:\Program Files\IAR #
# Systems\Embedded Workbench 4.0 #
# Evaluation\arm\LIB\dl4tptinl8n.h" -I #
# "D:\work\AC-530\software\my #
# usb\AT91SAM7S-USART_USB_SAM7S\Compil\srcIAR\" -I #
# "D:\work\AC-530\software\my #
# usb\AT91SAM7S-USART_USB_SAM7S\Compil\..\src\" -I #
# "D:\work\AC-530\software\my #
# usb\AT91SAM7S-USART_USB_SAM7S\Compil\..\..\" -I #
# "C:\Program Files\IAR Systems\Embedded Workbench #
# 4.0 Evaluation\arm\INC\" #
# List file = D:\work\AC-530\software\my #
# usb\AT91SAM7S-USART_USB_SAM7S\Compil\Binary\List\int #
# errupt_Usart.lst #
# Object file = D:\work\AC-530\software\my #
# usb\AT91SAM7S-USART_USB_SAM7S\Compil\Binary\Obj\inte #
# rrupt_Usart.r79 #
# #
# #
##############################################################################
D:\work\AC-530\software\my usb\AT91SAM7S-USART_USB_SAM7S\src\interrupt_Usart.c
1 //*----------------------------------------------------------------------------
2 //* ATMEL Microcontroller Software Support - ROUSSET -
3 //*----------------------------------------------------------------------------
4 //* The software is delivered "AS IS" without warranty or condition of any
5 //* kind, either express, implied or statutory. This includes without
6 //* limitation any warranty or condition with respect to merchantability or
7 //* fitness for any particular purpose, or against the infringements of
8 //* intellectual property rights of others.
9 //*----------------------------------------------------------------------------
10 //* File Name : interrupt_Usart.c
11 //* Object : USART Interrupt Management
12 //*
13 //* 1.0 14/Dec/04 JPP : Creation
14 //* 1.1 29/Aug/05 JPP : Update AIC definion
15 //*----------------------------------------------------------------------------
16
17
18 // Include Standard LIB files
19 #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,#+2
\ 00000002 0162 STR R1,[R0, #+32]
\ 00000004 0902 LSL R1,R1,#+8
\ 00000006 0162 STR R1,[R0, #+32]
\ 00000008 0021 MOV R1,#+0
\ 0000000A 8161 STR R1,[R0, #+24]
\ 0000000C C161 STR R1,[R0, #+28]
\ 0000000E 0161 STR R1,[R0, #+16]
\ 00000010 4161 STR R1,[R0, #+20]
\ 00000012 8160 STR R1,[R0, #+8]
\ 00000014 C160 STR R1,[R0, #+12]
\ 00000016 0160 STR R1,[R0, #+0]
\ 00000018 4160 STR R1,[R0, #+4]
\ 0000001A 0121 MOV R1,#+1
\ 0000001C 0162 STR R1,[R0, #+32]
\ 0000001E 0902 LSL R1,R1,#+8
\ 00000020 0162 STR R1,[R0, #+32]
\ 00000022 7047 BX LR ;; return
20
21
22 #include "cdc_enumerate.h"
23
24 #define USART_INTERRUPT_LEVEL 1
25
\ In segment DATA_Z, align 4, align-sorted
26 AT91PS_USART COM0;
\ COM0:
\ 00000000 DS8 4
27 #define USART_BAUD_RATE 115200
28
29 extern struct _AT91S_CDC pCDC;
30 static char buff_rx[100];
31 static char buff_rx1[100];
32 unsigned int first =0;
\ first:
\ 00000004 DS8 4
\ 00000008 DS8 100
\ 0000006C DS8 100
33 //*------------------------- Internal Function --------------------------------
34
35 //*----------------------------------------------------------------------------
36 //* Function Name : Trace_Toggel_LED
37 //* Object : Toggel a LED
38 //*----------------------------------------------------------------------------
\ In segment CODE, align 4, keep-with-next
39 void Trace_Toggel_LED (unsigned int Led)
40 {
41 if ( (AT91F_PIO_GetInput(AT91C_BASE_PIOA) & Led ) == Led )
\ Trace_Toggel_LED:
\ 00000000 0549 LDR R1,??Trace_Toggel_LED_0 ;; 0xfffff43c
\ 00000002 0968 LDR R1,[R1, #+0]
\ 00000004 0140 AND R1,R0
\ 00000006 8142 CMP R1,R0
\ 00000008 01D1 BNE ??Trace_Toggel_LED_1
42 {
43 AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, Led );
\ 0000000A 0449 LDR R1,??Trace_Toggel_LED_0+0x4 ;; 0xfffff434
\ 0000000C 00E0 B ??Trace_Toggel_LED_2
44 }
45 else
46 {
47 AT91F_PIO_SetOutput( AT91C_BASE_PIOA, Led );
\ ??Trace_Toggel_LED_1:
\ 0000000E 0449 LDR R1,??Trace_Toggel_LED_0+0x8 ;; 0xfffff430
\ ??Trace_Toggel_LED_2:
\ 00000010 0860 STR R0,[R1, #+0]
48 }
49 }
\ 00000012 00B0 ADD SP,#+0
\ 00000014 7047 BX LR ;; return
\ 00000016 C046 NOP
\ ??Trace_Toggel_LED_0:
\ 00000018 3CF4FFFF DC32 0xfffff43c
\ 0000001C 34F4FFFF DC32 0xfffff434
\ 00000020 30F4FFFF DC32 0xfffff430
50 //*------------------------- Interrupt Function -------------------------------
51
52 //*----------------------------------------------------------------------------
53 //* Function Name : Usart_c_irq_handler
54 //* Object : C handler interrupt function called by the interrupts
55 //* assembling routine
56 //*----------------------------------------------------------------------------
\ In segment CODE, align 4, keep-with-next
57 void Usart_c_irq_handler(void)
58 {
\ Usart_c_irq_handler:
\ 00000000 F3B5 PUSH {R0,R1,R4-R7,LR}
59 AT91PS_USART USART_pt = COM0;
\ 00000002 .... LDR R4,??DataTable2 ;; COM0
\ 00000004 2568 LDR R5,[R4, #+0]
60 unsigned int status;
61
62 //* get Usart status register and active interrupt
63 status = USART_pt->US_CSR ;
\ 00000006 6869 LDR R0,[R5, #+20]
64 status &= USART_pt->US_IMR;
\ 00000008 2E69 LDR R6,[R5, #+16]
\ 0000000A 0640 AND R6,R0
65
66 if ( status & AT91C_US_RXBUFF){
\ 0000000C 201C MOV R0,R4
\ 0000000E 6C30 ADD R0,#+108
\ 00000010 0090 STR R0,[SP, #+0]
\ 00000012 201C MOV R0,R4
\ 00000014 0830 ADD R0,#+8
\ 00000016 0190 STR R0,[SP, #+4]
\ 00000018 304F LDR R7,??Usart_c_irq_handler_0 ;; pCDC
\ 0000001A F004 LSL R0,R6,#+19
\ 0000001C 27D5 BPL ??Usart_c_irq_handler_1
67 //* Toggel LED
68 Trace_Toggel_LED( AT91B_LED3) ;
\ 0000001E 0420 MOV R0,#+4
\ 00000020 ........ BL Trace_Toggel_LED
69 //* transfert the char to DBGU
70 if ( first == 0){
\ 00000024 6068 LDR R0,[R4, #+4]
\ 00000026 0028 CMP R0,#+0
\ 00000028 10D1 BNE ??Usart_c_irq_handler_2
71 COM0->US_RPR = (unsigned int) buff_rx1;
\ 0000002A 8020 MOV R0,#+128
\ 0000002C 4000 LSL R0,R0,#+1 ;; #+256
\ 0000002E 2168 LDR R1,[R4, #+0]
\ 00000030 0818 ADD R0,R1,R0
\ 00000032 0099 LDR R1,[SP, #+0]
\ 00000034 0160 STR R1,[R0, #+0]
72 COM0->US_RCR = 100;
\ 00000036 6421 MOV R1,#+100
\ 00000038 4160 STR R1,[R0, #+4]
73 pCDC.Write(&pCDC, buff_rx,100);
\ 0000003A 6422 MOV R2,#+100
\ 0000003C 211C MOV R1,R4
\ 0000003E 0831 ADD R1,#+8
\ 00000040 381C MOV R0,R7
\ 00000042 3B69 LDR R3,[R7, #+16]
\ 00000044 ........ BL ??rT_BX_R3
74 first =1;
\ 00000048 0120 MOV R0,#+1
\ 0000004A 0FE0 B ??Usart_c_irq_handler_3
75 }else{
76 COM0->US_RPR = (unsigned int) buff_rx;
\ ??Usart_c_irq_handler_2:
\ 0000004C 8020 MOV R0,#+128
\ 0000004E 4000 LSL R0,R0,#+1 ;; #+256
\ 00000050 2168 LDR R1,[R4, #+0]
\ 00000052 0818 ADD R0,R1,R0
\ 00000054 0199 LDR R1,[SP, #+4]
\ 00000056 0160 STR R1,[R0, #+0]
77 COM0->US_RCR = 100;
\ 00000058 6421 MOV R1,#+100
\ 0000005A 4160 STR R1,[R0, #+4]
78 pCDC.Write(&pCDC, buff_rx1,100);
\ 0000005C 6422 MOV R2,#+100
\ 0000005E 211C MOV R1,R4
\ 00000060 6C31 ADD R1,#+108
\ 00000062 381C MOV R0,R7
\ 00000064 3B69 LDR R3,[R7, #+16]
\ 00000066 ........ BL ??rT_BX_R3
79 first=0;
\ 0000006A 0020 MOV R0,#+0
\ ??Usart_c_irq_handler_3:
\ 0000006C 6060 STR R0,[R4, #+4]
\ ??Usart_c_irq_handler_1:
\ 0000006E 8020 MOV R0,#+128
\ 00000070 4000 LSL R0,R0,#+1 ;; #+256
\ 00000072 0642 TST R6,R0
\ 00000074 2BD0 BEQ ??Usart_c_irq_handler_4
80 }
81 }
82 //* Check error
83
84 if ( status & AT91C_US_TIMEOUT){
85 Trace_Toggel_LED( AT91B_LED4) ;
\ 00000076 0820 MOV R0,#+8
\ 00000078 ........ BL Trace_Toggel_LED
86 status = 100 - COM0->US_RCR;
\ 0000007C 8020 MOV R0,#+128
\ 0000007E 4000 LSL R0,R0,#+1 ;; #+256
\ 00000080 2168 LDR R1,[R4, #+0]
\ 00000082 0818 ADD R0,R1,R0
\ 00000084 6421 MOV R1,#+100
\ 00000086 4268 LDR R2,[R0, #+4]
\ 00000088 8E1A SUB R6,R1,R2
87 if (status !=0){
\ 0000008A 20D0 BEQ ??Usart_c_irq_handler_4
88 if ( first == 0){
\ 0000008C 6168 LDR R1,[R4, #+4]
\ 0000008E 0029 CMP R1,#+0
\ 00000090 0CD1 BNE ??Usart_c_irq_handler_5
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -