?? ad9854.lst
字號(hào):
C51 COMPILER V8.02 AD9854 07/31/2007 11:02:36 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE AD9854
OBJECT MODULE PLACED IN AD9854.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE AD9854.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h>
2 #include <intrins.h>
3 #include <string.h>
4
5 #define uchar unsigned char
6 #define uint unsigned int
7
8 sbit reset=P3^4;
9 sbit SPSET=P3^5;
10 sbit WR_LOW=P3^6;
11 sbit RD_LOW=P3^7;
12 sbit RAMP=P2^6;
13 sbit FDATA=P2^7;
14
15 uchar data0;
16 //延時(shí)程序
17 void AD9854_delay(int time)
18 {
19 1 int i;
20 1 for(i = 0; i < time; i++)
21 1 {
22 2 _nop_();
23 2 _nop_();
24 2 _nop_();
25 2 _nop_();
26 2 }
27 1 }
28
29 //復(fù)位
30 void AD9854_reset(void)
31 {
32 1 reset=1;
33 1 AD9854_delay(5000);
34 1 reset=0;
35 1 }
36
37
38
39
40 //寫(xiě)一個(gè)字節(jié)
41 void AD9854_ParallelSendByte(uchar addr,uchar data1)
42 {
43 1 P2=addr;
44 1 P0=data1;
45 1 WR_LOW=0;
46 1 WR_LOW=1;
47 1
48 1 }
49
50
51 uchar AD9854_ParallelReadByte(uchar addr)
52 {
53 1 uchar result;
54 1 RD_LOW=1;
55 1 P1=0xff;
C51 COMPILER V8.02 AD9854 07/31/2007 11:02:36 PAGE 2
56 1 P1 = (addr & 0x3f);
57 1 RD_LOW=0;
58 1 result = P2;
59 1 RD_LOW=1;
60 1 return result;
61 1 }
62
63
64 //相位寄存器1控制字
65 void AD9854_ParallelSetPhase1(uchar *phase)
66 {
67 1 data0=*phase;
68 1 AD9854_ParallelSendByte(0x00,data0);
69 1 AD9854_delay(5);
70 1 data0=*(phase+1);
71 1 AD9854_ParallelSendByte(0x01,data0);
72 1 AD9854_delay(5);
73 1
74 1 }
75
76
77 //相位寄存器2控制字
78 void AD9854_ParallelSetPhase2(uchar *phase)
79 {
80 1 data0=*phase;
81 1 AD9854_ParallelSendByte(0x02, data0);
82 1 AD9854_delay(5);
83 1 data0=*(phase+1);
84 1 AD9854_ParallelSendByte(0x03, data0);
85 1 AD9854_delay(5);
86 1 }
87
88
89 //頻率寄存器1控制字
90 void AD9854_ParallelSetFreq1(uchar *freq)
91 {
92 1 uchar i,freq_addr;
93 1 freq_addr=0x04;
94 1 for(i=0;i<6;i++)
95 1 {
96 2 data0=*(freq+i);
97 2 AD9854_ParallelSendByte(freq_addr+i,data0);
98 2 AD9854_delay(5);
99 2 }
100 1 }
101
102
103 //頻率寄存器2控制字
104 void AD9854_ParallelSetFreq2(uchar *freq)
105 {
106 1 uchar i,freq_addr,data0;
107 1 freq_addr=0x0A;
108 1 for(i=0;i<6;i++)
109 1 {
110 2 data0=*(freq+i);
111 2 AD9854_ParallelSendByte(freq_addr+i, data0);
112 2 AD9854_delay(5);
113 2 }
114 1 }
115
116
117 //DELTA Frequency Word
C51 COMPILER V8.02 AD9854 07/31/2007 11:02:36 PAGE 3
118 void AD9854_ParallelSetDFW(uchar *delta)
119 {
120 1 uchar i,delta_addr;
121 1 delta_addr=0x10;
122 1 for(i=0;i<6;i++)
123 1 {
124 2 data0=*(delta+i);
125 2 AD9854_ParallelSendByte(delta_addr, data0);
126 2 AD9854_delay(5);
127 2 }
128 1 }
129
130
131 //內(nèi)部時(shí)鐘寄存器控制字
132 void AD9854_ParallelSetUDClk(uchar *uclk)
133 {
134 1 uchar i,uclk_addr;
135 1 uclk_addr=0x16;
136 1 for(i=0;i<4;i++)
137 1 {
138 2 data0=*(uclk+i);
139 2 AD9854_ParallelSendByte(uclk_addr,data0);
140 2 AD9854_delay(5);
141 2 }
142 1 }
143
144
145 //斜率寄存器控制字
146 void AD9854_ParallelSetRamp(uchar *ramp)
147 {
148 1 uchar i,ramp_addr;
149 1 ramp_addr=0x1A;
150 1 for(i=0;i<3;i++)
151 1 {
152 2 data0=*(ramp+i);
153 2 AD9854_ParallelSendByte(ramp_addr,data0);
154 2 AD9854_delay(5);
155 2 }
156 1 }
157
158
159 //特殊功能寄存器
160 void AD9854_ParallelSetSpecialWord(uchar *SWord)
161 {
162 1 uchar i,Special_addr;
163 1 Special_addr=0x1D;
164 1 for(i=0;i<4;i++)
165 1 {
166 2 data0=*(SWord+i);
167 2 AD9854_ParallelSendByte(Special_addr,data0);
168 2 AD9854_delay(5);
169 2 }
170 1 }
171
172
173 //輸出振幅寄存器控制字
174 void AD9854_ParallelSetOutkey(bit mark,uchar *key)
175 {
176 1 uchar i,Outkey_addr;
177 1 if(mark==0)
178 1 Outkey_addr=0x21; //輸出I振幅寄存器地址
179 1 else
C51 COMPILER V8.02 AD9854 07/31/2007 11:02:36 PAGE 4
180 1 Outkey_addr=0x23; //輸出Q振幅寄存器地址
181 1 for(i=0;i<2;i++)
182 1 {
183 2 data0=*(key+i);
184 2 AD9854_ParallelSendByte(Outkey_addr,data0);
185 2 AD9854_delay(5);
186 2 }
187 1 }
188
189
190 //輸出振幅斜率寄存器控制字
191 void ParallelSetOutkeyRamp(uchar Key_ramp)
192 {
193 1 AD9854_ParallelSendByte(0x25, Key_ramp);
194 1 AD9854_delay(5);
195 1 }
196
197
198 //QDAC
199 void AD9854_ParallelSetQDAC(uchar *QDAC)
200 {
201 1 uchar i,QDAC_addr;
202 1 QDAC_addr=0x26;
203 1 for(i=0;i<2;i++)
204 1 {
205 2 data0=*(QDAC+i);
206 2 AD9854_ParallelSendByte(QDAC_addr, data0);
207 2 AD9854_delay(5);
208 2 }
209 1 }
210
211 //初始化
212 void Init9854(void)
213 {
214 1 AD9854_reset();
215 1 WR_LOW=1;
216 1 RD_LOW=1;
217 1 }
218
219
220 void main(void)
221 {
222 1 uchar udclk[4]={0x00,0x00,0x09,0xc3};
223 1 uchar mode1[4]={0x10,0x44,0x01,0x00};
224 1 uchar frequency[6]={0x05,0x1E,0xB8,0x51,0xEB,0x85};
225 1 uchar shape_key[2]={0x06,0x00};
226 1 uchar *data4;
227 1 Init9854();
228 1 /* uchar i;
229 1 P0=0x00;
230 1 Init9854();
231 1 AD9854_ParallelSendByte(0x04,0xAA);
232 1 AD9854_IOUpdate();
233 1 P0=AD9854_ParallelReadByte(0x04); */
234 1 while(1)
235 1 {
236 2 data4=udclk;
237 2 AD9854_ParallelSetUDClk(data4);
238 2 data4=mode1;
239 2 AD9854_ParallelSetSpecialWord(data4);
240 2 data4=frequency;
241 2 AD9854_ParallelSetFreq1(data4);
C51 COMPILER V8.02 AD9854 07/31/2007 11:02:36 PAGE 5
242 2 AD9854_delay(500);
243 2 }
244 1
245 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 662 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 59
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -