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

📄 interrupt_usart.lst

📁 关于usb的一段程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
##############################################################################
#                                                                            #
# 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 + -