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

📄 ltc2600.lst

📁 AD9958arm控制源程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
ARM COMPILER V2.53,  ltc2600                                                               23/07/06  16:59:03  PAGE 1   


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

stmt  level    source

    1          /*------------------------------------------------------
    2          FILE NAME   : ltc2600.c
    3          DESCRIPTION : ltc2600 driver.
    4          VERSION     : 0.0.0 (C)aureole
    5          AUTHOR      : Aureole
    6          CREATE DATE : 3.30.2006
    7          MODIFY DATE : ---
    8          LOGS        :-\ 
    9          1. First create for hardware test. 3.30.2006
   10          2. Add...   4.10.2006
   11          
   12          --------------------------------------------------------*/
   13          
   14          
   15          //--------------------Include files-----------------------//
   16          
   17          #include "..\include\ltc2600.h"
   18          #include "..\include\common.h"
   19          #include "..\include\config.h"
   20          
   21          
   22          //--------------------Variable----------------------------//
   23          CAL_STRUCT cal_a={
   24              59000,
   25              13500,
   26              60000,
   27              60000,
   28              40000
   29              };
   30          CAL_STRUCT cal_b={
   31              59000,
   32              13500,
   33              60000,
   34              60000,
   35              40000
   36              }; 
   37          
   38          
   39          
   40          
   41          
   42          
   43          
   44          //--------------------Function----------------------------//
   45          /*---------------------------------------------------------------
   46          NAME       : set_ac_zero
   47          ENTRY  TYPE: unsigned short,unsigned short
   48          RETURN TYPE: int
   49          PURPOSE    : ---
   50          VERSION    : 0.1
   51          DESCRIPTION:
   52          CREATE DATE: 4.4.2006
   53          LOGS       : 1.first create;
   54          
   55          -----------------------------------------------------------------*/
   56          int set_squa_ac_zero(unsigned short channel_a_zero,unsigned short channel_b_zero)
   57          {
   58   1          return(
ARM COMPILER V2.53,  ltc2600                                                               23/07/06  16:59:03  PAGE 2   

   59   1                  write_data_to_ltc2600(DACD,channel_a_zero)&&
   60   1                  write_data_to_ltc2600(DACH,channel_b_zero)
   61   1                );
   62   1      }
   63          /*---------------------------------------------------------------
   64          NAME       : set_ac_zero
   65          ENTRY  TYPE: unsigned short,unsigned short
   66          RETURN TYPE: int
   67          PURPOSE    : ---
   68          VERSION    : 0.1
   69          DESCRIPTION:
   70          CREATE DATE: 4.4.2006
   71          LOGS       : 1.first create;
   72          
   73          -----------------------------------------------------------------*/
   74          int set_sine_ac_zero(unsigned short channel_a_zero,unsigned short channel_b_zero)
   75          {
   76   1          return(
   77   1                  write_data_to_ltc2600(DACC,channel_a_zero)&&
   78   1                  write_data_to_ltc2600(DACG,channel_b_zero)
   79   1                );
   80   1      }
   81          
   82          /*---------------------------------------------------------------
   83          NAME       : write_data_to_ltc2600
   84          ENTRY  TYPE: unsigned int channel,unsigned int value
   85          RETURN TYPE: int
   86          PURPOSE    : ---
   87          VERSION    : 0.1
   88          DESCRIPTION:
   89          CREATE DATE: 3.30.2006
   90          LOGS       : 1.first create;
   91          2.fix bug; 4.2.2006
   92          -----------------------------------------------------------------*/
   93          int write_data_to_ltc2600(unsigned char chan,unsigned int value)
   94          {
   95   1          unsigned char i;
   96   1          unsigned int dat;
   97   1      
   98   1          if(chan>DACH)return 0;
   99   1          if(value>65535)return 0;
  100   1      
  101   1          dat=0x20000000;
  102   1          dat|=(chan<<24);
  103   1          dat|=(value<<8);
  104   1      
  105   1              LTC2600_CS_OFF
  106   1              LTC2600_CLK_OFF
  107   1      
  108   1              for(i=0;i<24;i++){
  109   2      
  110   2                  if(dat&0x80000000){
  111   3                      LTC2600_SDI_ON
  112   3                  } else{
  113   3                      LTC2600_SDI_OFF
  114   3                  }
  115   2                  dat<<=1;
  116   2                  LTC2600_CLK_ON
  117   2                      LTC2600_CLK_OFF
  118   2              }
  119   1              LTC2600_CS_ON
  120   1              LTC2600_CLK_ON
  121   1              LTC2600_SDI_ON
  122   1      
  123   1              return 1;
  124   1      }
ARM COMPILER V2.53,  ltc2600                                                               23/07/06  16:59:03  PAGE 3   

  125          
  126          /*---------------------------------------------------------------
  127          NAME       : set_amplitude
  128          ENTRY  TYPE: unsigned int channel,unsigned int wv,float value
  129          RETURN TYPE: int
  130          PURPOSE    : ---
  131          VERSION    : 0.1
  132          DESCRIPTION:
  133          CREATE DATE: 4.10.2006
  134          LOGS       : 1.first create;
  135          
  136          -----------------------------------------------------------------*/
  137          int set_amplitude(unsigned int chan,unsigned int wv,float value)
  138          {
  139   1      
  140   1      
  141   1          if(value<0 || value>MAX_OUTPUT_AMPLITUDE)return 0;
  142   1          if(chan!=CHANNEL_A && chan!=CHANNEL_B)return 0;
  143   1          if(wv!=WAVEFORM_SINE && wv!=WAVEFORM_SQUA)return 0;
  144   1      
  145   1      
  146   1          value/=20.0;
  147   1      
  148   1          if(chan==CHANNEL_A){
  149   2              if(wv==WAVEFORM_SINE)value*=cal_a.sine_amp;
  150   2              else value*=cal_a.squa_amp;
  151   2              write_data_to_ltc2600(DACA,(unsigned int)value);
  152   2          }
  153   1          if(chan==CHANNEL_B){
  154   2              if(wv==WAVEFORM_SINE)value*=cal_b.sine_amp;
  155   2              else value*=cal_b.squa_amp;
  156   2              write_data_to_ltc2600(DACE,(unsigned int)value);
  157   2          }
  158   1          return 1;
  159   1      }
  160          
  161          
  162          
  163          
  164          
ARM COMPILER V2.53,  ltc2600                                                               23/07/06  16:59:03  PAGE 4   

ASSEMBLY LISTING OF GENERATED OBJECT CODE



*** EXTERNALS:
 EXTERN CODE16 (?C?FPCMP?T)
 EXTERN CODE16 (?C?FPDIV?T)
 EXTERN CODE16 (?C?FCASTU?T)
 EXTERN CODE16 (?C?FPMUL?T)
 EXTERN CODE16 (?C?CASTF?T)



*** PUBLICS:
 PUBLIC         write_data_to_ltc2600?T
 PUBLIC         set_sine_ac_zero?T
 PUBLIC         set_squa_ac_zero?T
 PUBLIC         set_amplitude?T
 PUBLIC         cal_a
 PUBLIC         cal_b



*** DATA SEGMENT '?DT0?ltc2600':
 00000000          cal_a:
 00000000           BEGIN_INIT
 00000000  E678      DW          0xE678
 00000002  34BC      DW          0x34BC
 00000004  EA60      DW          0xEA60
 00000006  EA60      DW          0xEA60
 00000008  9C40      DW          0x9C40
 0000000A            SPACE       2
 0000000C           END_INIT
 0000000C          cal_b:
 0000000C           BEGIN_INIT
 0000000C  E678      DW          0xE678
 0000000E  34BC      DW          0x34BC
 00000010  EA60      DW          0xEA60
 00000012  EA60      DW          0xEA60
 00000014  9C40      DW          0x9C40
 00000016            SPACE       2
 00000018           END_INIT



*** CODE SEGMENT '?PR?set_squa_ac_zero?T?ltc2600':
   56: int set_squa_ac_zero(unsigned short channel_a_zero,unsigned short channel_b_zero)
 00000000  B510      PUSH        {R4,LR}
 00000002  1C0C      MOV         R4,R1 ; channel_b_zero
 00000004  ---- Variable 'channel_b_zero' assigned to Register 'R4' ----
 00000004  1C01      MOV         R1,R0 ; channel_a_zero
 00000006  ---- Variable 'channel_a_zero' assigned to Register 'R1' ----
   58:     return(
 00000006  1C08      MOV         R0,R1 ; channel_a_zero
 00000008  0401      LSL         R1,R0,#0x10 ; channel_a_zero
 0000000A  0C09      LSR         R1,R1,#0x10
 0000000C  2003      MOV         R0,#0x3
 0000000E  F7FF      BL          write_data_to_ltc2600?T  ; T=0x0001  (1)
 00000010  FFF7      BL          write_data_to_ltc2600?T  ; T=0x0001  (2)
 00000012  2800      CMP         R0,#0x0 ; write_data_to_ltc2600?T
 00000014  D009      BEQ         L_2  ; T=0x0000002A
 00000016  1C20      MOV         R0,R4 ; channel_b_zero
 00000018  0401      LSL         R1,R0,#0x10 ; channel_b_zero
 0000001A  0C09      LSR         R1,R1,#0x10
 0000001C  2007      MOV         R0,#0x7
 0000001E  F7FF      BL          write_data_to_ltc2600?T  ; T=0x0001  (1)
 00000020  FFEF      BL          write_data_to_ltc2600?T  ; T=0x0001  (2)
 00000022  2800      CMP         R0,#0x0 ; write_data_to_ltc2600?T
 00000024  D001      BEQ         L_2  ; T=0x0000002A
 00000026  2001      MOV         R0,#0x1
 00000028  E000      B           L_3  ; T=0x0000002C
 0000002A          L_2:
 0000002A  2000      MOV         R0,#0x0
ARM COMPILER V2.53,  ltc2600                                                               23/07/06  16:59:03  PAGE 5   

 0000002C          L_3:
   62: }
 0000002C  BC10      POP         {R4}
 0000002E  BC08      POP         {R3}
 00000030  4718      BX          R3
 00000032          ENDP ; 'set_squa_ac_zero?T'


*** CODE SEGMENT '?PR?set_sine_ac_zero?T?ltc2600':
   74: int set_sine_ac_zero(unsigned short channel_a_zero,unsigned short channel_b_zero)
 00000000  B510      PUSH        {R4,LR}
 00000002  1C0C      MOV         R4,R1 ; channel_b_zero
 00000004  ---- Variable 'channel_b_zero' assigned to Register 'R4' ----
 00000004  1C01      MOV         R1,R0 ; channel_a_zero
 00000006  ---- Variable 'channel_a_zero' assigned to Register 'R1' ----
   76:     return(
 00000006  1C08      MOV         R0,R1 ; channel_a_zero
 00000008  0401      LSL         R1,R0,#0x10 ; channel_a_zero
 0000000A  0C09      LSR         R1,R1,#0x10
 0000000C  2002      MOV         R0,#0x2
 0000000E  F7FF      BL          write_data_to_ltc2600?T  ; T=0x0001  (1)
 00000010  FFF7      BL          write_data_to_ltc2600?T  ; T=0x0001  (2)
 00000012  2800      CMP         R0,#0x0 ; write_data_to_ltc2600?T
 00000014  D009      BEQ         L_5  ; T=0x0000002A
 00000016  1C20      MOV         R0,R4 ; channel_b_zero
 00000018  0401      LSL         R1,R0,#0x10 ; channel_b_zero
 0000001A  0C09      LSR         R1,R1,#0x10
 0000001C  2006      MOV         R0,#0x6
 0000001E  F7FF      BL          write_data_to_ltc2600?T  ; T=0x0001  (1)

⌨️ 快捷键说明

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