?? ltc2600.lst
字號:
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 + -