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

📄 timer.lst

📁 AD9958arm控制源程序
💻 LST
字号:
ARM COMPILER V2.53,  timer                                                                 23/07/06  16:59:03  PAGE 1   


ARM COMPILER V2.53, COMPILATION OF MODULE timer
OBJECT MODULE PLACED IN timer.obj
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe driver\timer.c THUMB WARNINGLEVEL(3) OPTIMIZE(8,SPEED) DEBUG PRINT(.\TIMER.L
                    -ST) TABS(4) OBJECT(timer.obj) 

stmt  level    source

    1          /*------------------------------------------------------------
    2            FILE NAME : timer.c
    3          DESCRIPTION : timer of bs1084 arm firmware.
    4          VERSION     : 0.0.1 (c)aureole
    5          AUTHOR      : Aureole
    6          CREATE DATE : 07.22.2006
    7          MODIFY DATE : 00.00.2006
    8          LOGS        :---\
    9          
   10          -
   11          -0.0.0 ----. 07.22.2006  create
   12          --------------------------------------------------------------*/
   13          
   14          
   15          //-----------------include files-------------------------//
   16          #include "..\include\arm.h"
   17          #include "..\include\config.h"
   18          #include "..\include\timer.h"
   19          
   20          
   21          //-----------------function prototype--------------------//
   22          void initialize_timer0(void);
   23          void timer0_interrupt(void) __irq;
   24          void disable_interrupt(void);
   25          void enable_interrupt(void);
   26          
   27          
   28          
   29          //-----------------variable area-------------------------//
   30          unsigned int counter=0;
   31          unsigned long int vic_bak;
   32          
   33          
   34          
   35          //-----------------Function area-------------------------//
   36           /*-------------------------------------------------------
   37          NAME       : timer0_interrupt
   38          ENTRY  TYPE: void
   39          RETURN TYPE: int
   40          PURPOSE    : ---
   41          VERSION    : 0.0.1
   42          DESCRIPTION:
   43          CREATE DATE: ---
   44          LOGS        :---\
   45          
   46          
   47          1.first create. 07.22.2006
   48          --------------------------------------------------------*/
   49          void irq_timer0(void) __irq
   50          {
   51   1       counter++;
   52   1       T0IR=0x01; //清除中断标志;
   53   1       VICVectAddr=0x0;  //通知VIC 中断处理结束;
   54   1      }
   55          
   56          /*-------------------------------------------------------
   57          NAME       : initialize_timer
   58          ENTRY  TYPE: void
ARM COMPILER V2.53,  timer                                                                 23/07/06  16:59:03  PAGE 2   

   59          RETURN TYPE: int
   60          PURPOSE    : ---
   61          VERSION    : 0.0.1
   62          DESCRIPTION:
   63          CREATE DATE: ---
   64          LOGS        :---\
   65          
   66          
   67          1.first create. 07.22.2006
   68          --------------------------------------------------------*/
   69          void initialize_timer0(void)
   70          {
   71   1      
   72   1          T0CTCR=0x00; //timer0 -> timer
   73   1          T0PR=0; //不分频
   74   1          T0MCR=0x03;
   75   1          T0MR0=Fcclk*0.00001;        //定时 10 us 
   76   1          disable_timer0();
   77   1          
   78   1          //Set IRQ
   79   1      
   80   1          VICIntSelect = 0x00000000;          
   81   1          VICVectCntl1 = 0x20 | 0x04;         
   82   1          VICVectAddr1 = (unsigned long int)irq_timer0;   
   83   1          VICIntEnable |= 1 << 0x04;  
   84   1      }
   85          
   86          /*-------------------------------------------------------
   87          NAME       : disable_interrupt
   88          ENTRY  TYPE: void
   89          RETURN TYPE: int
   90          PURPOSE    : 关外设中断
   91          VERSION    : 0.0.1
   92          DESCRIPTION:
   93          CREATE DATE: ---
   94          LOGS        :---\
   95          
   96          
   97          1.first create. 07.23.2006
   98          --------------------------------------------------------*/
   99            
  100          void disable_interrupt(void)
  101          {       
  102   1        
  103   1       vic_bak=VICIntEnable;
  104   1       
  105   1       VICIntEnClr=vic_bak;
  106   1      }
  107          /*-------------------------------------------------------
  108          NAME       : enable_interrupt
  109          ENTRY  TYPE: void
  110          RETURN TYPE: int
  111          PURPOSE    : 开外设中断
  112          VERSION    : 0.0.1
  113          DESCRIPTION: 必须与关外设中断配合使用
  114          CREATE DATE: ---
  115          LOGS        :---\
  116          
  117          
  118          1.first create. 07.23.2006
  119          --------------------------------------------------------*/
  120          void  enable_interrupt(void)
  121          {
  122   1       VICIntEnable=vic_bak;
  123   1      }
ARM COMPILER V2.53,  timer                                                                 23/07/06  16:59:03  PAGE 3   

ASSEMBLY LISTING OF GENERATED OBJECT CODE



*** PUBLICS:
 PUBLIC         initialize_timer0?T
 PUBLIC         enable_interrupt?T
 PUBLIC         disable_interrupt?T
 PUBLIC         irq_timer0?A
 PUBLIC         counter
 PUBLIC         vic_bak



*** DATA SEGMENT '?DT0?timer':
 00000000          counter:
 00000000           BEGIN_INIT
 00000000  00000000  DD          0x0
 00000004           END_INIT
 00000004          vic_bak:
 00000004            DS          4



*** CODE SEGMENT '?PR?irq_timer0?A?timer':
   49: void irq_timer0(void) __irq
 00000000  E92D0003  STMDB       R13!,{R0-R1}
   51:  counter++;
 00000004  E5100000  LDR         R0,=counter ; counter
 00000008  E5901000  LDR         R1,[R0,#0x0] ; counter
 0000000C  E2811001  ADD         R1,R1,#0x0001
 00000010  E5801000  STR         R1,[R0,#0x0] ; counter
   52:  T0IR=0x01; //清除中断标志;
 00000014  E3A01001  MOV         R1,#0x1
 00000018  E5100000  LDR         R0,=0xE0004000
 0000001C  E5801000  STR         R1,[R0,#0x0]
   53:  VICVectAddr=0x0;  //通知VIC 中断处理结束;
 00000020  E3A01000  MOV         R1,#0x0
 00000024  E5100000  LDR         R0,=0xFFFFF030
 00000028  E5801000  STR         R1,[R0,#0x0]
   54: }
 0000002C  E8BD0003  LDMIA       R13!,{R0-R1}
 00000030  E25EF004  SUBS        R15,R14,#0x0004
 00000034          ENDP ; 'irq_timer0?A'


*** CODE SEGMENT '?PR?initialize_timer0?T?timer':
   72:     T0CTCR=0x00; //timer0 -> timer
 00000000  2100      MOV         R1,#0x0
 00000002  4800      LDR         R0,=0xE0004070
 00000004  6001      STR         R1,[R0,#0x0]
   73:     T0PR=0; //不分频
 00000006  4800      LDR         R0,=0xE000400C
 00000008  6001      STR         R1,[R0,#0x0]
   74:     T0MCR=0x03;
 0000000A  2203      MOV         R2,#0x3
 0000000C  4800      LDR         R0,=0xE0004014
 0000000E  6002      STR         R2,[R0,#0x0]
   75:     T0MR0=Fcclk*0.00001;        //定时 10 us 
 00000010  4A8A      LDR         R2,=0x228
 00000012  4800      LDR         R0,=0xE0004018
 00000014  6002      STR         R2,[R0,#0x0]
   76:     disable_timer0();
 00000016  4800      LDR         R0,=0xE0004004
 00000018  6001      STR         R1,[R0,#0x0]
   80:     VICIntSelect = 0x00000000;          
 0000001A  4800      LDR         R0,=0xFFFFF00C
 0000001C  6001      STR         R1,[R0,#0x0]
   81:     VICVectCntl1 = 0x20 | 0x04;         
 0000001E  2124      MOV         R1,#0x24
 00000020  4800      LDR         R0,=0xFFFFF204
 00000022  6001      STR         R1,[R0,#0x0]
   82:     VICVectAddr1 = (unsigned long int)irq_timer0;   
ARM COMPILER V2.53,  timer                                                                 23/07/06  16:59:03  PAGE 4   

 00000024  4900      LDR         R1,=irq_timer0?A ; irq_timer0?A
 00000026  4800      LDR         R0,=0xFFFFF104
 00000028  6001      STR         R1,[R0,#0x0]
   83:     VICIntEnable |= 1 << 0x04;  
 0000002A  2210      MOV         R2,#0x10
 0000002C  4800      LDR         R0,=0xFFFFF010
 0000002E  6801      LDR         R1,[R0,#0x0]
 00000030  4311      ORR         R1,R2
 00000032  6001      STR         R1,[R0,#0x0]
   84: }
 00000034  4770      BX          R14
 00000036          ENDP ; 'initialize_timer0?T'


*** CODE SEGMENT '?PR?disable_interrupt?T?timer':
  103:  vic_bak=VICIntEnable;
 00000000  4800      LDR         R0,=0xFFFFF010
 00000002  6801      LDR         R1,[R0,#0x0]
 00000004  4800      LDR         R0,=vic_bak ; vic_bak
 00000006  6001      STR         R1,[R0,#0x0] ; vic_bak
  105:  VICIntEnClr=vic_bak;
 00000008  4800      LDR         R0,=vic_bak ; vic_bak
 0000000A  6801      LDR         R1,[R0,#0x0] ; vic_bak
 0000000C  4800      LDR         R0,=0xFFFFF014
 0000000E  6001      STR         R1,[R0,#0x0]
  106: }
 00000010  4770      BX          R14
 00000012          ENDP ; 'disable_interrupt?T'


*** CODE SEGMENT '?PR?enable_interrupt?T?timer':
  122:  VICIntEnable=vic_bak;
 00000000  4800      LDR         R0,=vic_bak ; vic_bak
 00000002  6801      LDR         R1,[R0,#0x0] ; vic_bak
 00000004  4800      LDR         R0,=0xFFFFF010
 00000006  6001      STR         R1,[R0,#0x0]
  123: }
 00000008  4770      BX          R14
 0000000A          ENDP ; 'enable_interrupt?T'



Module Information          Static
----------------------------------
  code size            =    ------
  data size            =         8
  const size           =    ------
End of Module Information.


ARM COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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