📄 dds9851.lst
字号:
C51 COMPILER V7.50 DDS9851 02/11/2009 16:16:26 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE DDS9851
OBJECT MODULE PLACED IN dds9851.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE dds9851.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /************************************************************************
2 *文件名:DDS9851。C *
3 *功能: 高频实验箱DDS程序。 *
4 *作者: 杨乐 *
5 *日期: 2009年1月21日 *
6 ************************************************************************/
7 #include <stdio.h >
8 #include <intrins.h >
9 #include "dds9851.h"
10 #include "FMAMTABLE.H"
11 /************************************************************************
12 *作者: 杨乐 *
13 *函数名: delay1 *
14 *功能: 延时 *
15 *入口参数:无 *
16 *返回值: 无 *
17 *日期: 2009年1月21日 *
18 ************************************************************************/
19 void delay1(void)
20 {
21 1 unsigned char i;
22 1 i = 255;
23 1 for (;i;i--);
24 1 }
25 /************************************************************************
26 *作者: 杨乐 *
27 *函数名: SetFreq *
28 *功能: DDS频率设置 *
29 *入口参数:double f,unsigned char p *
30 *返回值: 无 *
31 *日期: 2009年1月21日 *
32 ************************************************************************/
33 void SetFreq(double f,unsigned char p ) //* f 为频率值,p phase */
34 {
35 1 unsigned long a ;
36 1 unsigned char W[5];
37 1
38 1 if (p >= 32)
39 1 p = 0;
40 1 W[0] = 0x01+(p<<3);
41 1 /* 由频率计算相位阶距 */
42 1 f *= 4294967296.0;
43 1 a = f/MOS ;
44 1
45 1 W[1] = a / 0x1000000;
46 1 W[2] = (a / 0x10000) % 0x100;
47 1 W[3] = (a / 0x100) % 0x100;
48 1 W[4] = a % 0x100;
49 1
50 1 outData(&W[0]);
51 1 }
52 /************************************************************************
53 *作者: 杨乐 *
54 *函数名: Init_DDS *
55 *功能: DDS初始化 *
C51 COMPILER V7.50 DDS9851 02/11/2009 16:16:26 PAGE 2
56 *入口参数:无 *
57 *返回值: 无 *
58 *日期: 2009年1月21日 *
59 ************************************************************************/
60 void Init_DDS(void)
61 {
62 1 SetFreq(1000,0);
63 1 /* unsigned long a ;
64 1 unsigned char W[5];
65 1
66 1 // 相位初值为0,power up ,6倍频
67 1 W[0] = 0x01;
68 1 a = 1000.0;
69 1 a *= 4294967296.0 ;
70 1 a = a/MOS;
71 1
72 1 W[1] = a / 0x1000000;
73 1 W[2] = (a / 0x10000) % 0x100;
74 1 W[3] = (a / 0x100) % 0x100;
75 1 W[4] = a % 0x100;
76 1
77 1 outData(&(W[0]));
78 1 */
79 1 }
80
81 void outData(unsigned char * w)
82 {
83 1 unsigned char i;
84 1
85 1 DDS_FQ_UD = 0;
86 1
87 1 for (i=0; i<5; i++)
88 1 {
89 2 _nop_();
90 2 DDS_W_CLK = 0;
91 2 _nop_();
92 2 _nop_();
93 2 DDS_Data = w[i];
94 2 _nop_();
95 2 _nop_();
96 2 DDS_W_CLK = 1;
97 2 _nop_();
98 2 _nop_();
99 2 }
100 1
101 1 DDS_FQ_UD = 1;
102 1 _nop_();
103 1 _nop_();
104 1 _nop_();
105 1 _nop_();
106 1 DDS_FQ_UD = 0;
107 1 }
108
109 /*
110 void SetAM(unsigned char * QUIT)
111 {
112 unsigned char i,tmph,tmpl;
113
114 SetReg(0,0,0,0x04,COMMAND);
115 SetFreq(6500000,FREQ0);
116 SelectFreqReg(0);
117 while (!(*QUIT))
C51 COMPILER V7.50 DDS9851 02/11/2009 16:16:26 PAGE 3
118 {
119 for (i = 0 ; i< 36; i++)
120 {
121 tmph = (AmTable[i]>>8);
122 tmpl = AmTable[i]&0x00FF;
123 SetReg(0,0,tmph,tmpl,IQMOD);
124 }
125 }
126 }
127 */
128 /************************************************************************
129 *作者: 杨乐 *
130 *函数名: SetFM *
131 *功能: DDS产生FM信号 *
132 *入口参数:unsigned char * QUIT *
133 *返回值: 无 *
134 *日期: 2009年1月21日 *
135 ************************************************************************/
136 void SetFM(unsigned char * QUIT)
137 {
138 1 int i;
139 1 SetFreq(6500000,0);
140 1
141 1 while (!(*QUIT))
142 1 {
143 2 for (i = 0 ; i< 32; i++)
144 2 {
145 3 SetFreq(FmTable[i],0);
146 3 }
147 2 }
148 1 }
149 /************************************************************************
150 *作者: 杨乐 *
151 *函数名: SetPSK *
152 *功能: DDS产生PSK信号 *
153 *入口参数:unsigned char * QUIT *
154 *返回值: 无 *
155 *日期: 2009年1月21日 *
156 ************************************************************************/
157 void SetPSK(unsigned char * QUIT)
158 {
159 1 unsigned char W;
160 1
161 1 SetFreq(200000,0);
162 1
163 1 while (!(*QUIT))
164 1 {
165 2 W = 0x81;
166 2 DDS_FQ_UD = 0;
167 2 _nop_();
168 2 DDS_W_CLK = 0;
169 2 _nop_();
170 2 _nop_();
171 2 DDS_Data = W;
172 2 _nop_();
173 2 _nop_();
174 2 DDS_W_CLK = 1;
175 2 _nop_();
176 2 _nop_();
177 2 DDS_FQ_UD = 1;
178 2 delay1();
179 2 W = 0x01;
C51 COMPILER V7.50 DDS9851 02/11/2009 16:16:26 PAGE 4
180 2 DDS_FQ_UD = 0;
181 2 _nop_();
182 2 DDS_W_CLK = 0;
183 2 _nop_();
184 2 _nop_();
185 2 DDS_Data = W;
186 2 _nop_();
187 2 _nop_();
188 2 DDS_W_CLK = 1;
189 2 _nop_();
190 2 _nop_();
191 2 DDS_FQ_UD = 1;
192 2 delay1();
193 2 }
194 1 }
195 /************************************************************************
196 *作者: 杨乐 *
197 *函数名: SetASK *
198 *功能: DDS产生ASK信号 *
199 *入口参数:unsigned char * QUIT *
200 *返回值: 无 *
201 *日期: 2009年1月21日 *
202 ************************************************************************/
203 void SetASK(unsigned char * QUIT)
204 {
205 1
206 1 SetFreq(500000,0);
207 1
208 1 while (!(*QUIT))
209 1 {
210 2 SetFreq(000000,0);
211 2 delay1();
212 2 SetFreq(500000,0);
213 2 delay1();
214 2 }
215 1 }
216 /************************************************************************
217 *作者: 杨乐 *
218 *函数名: SetFSK *
219 *功能: DDS产生FSK信号 *
220 *入口参数:unsigned char * QUIT *
221 *返回值: 无 *
222 *日期: 2009年1月21日 *
223 ************************************************************************/
224 void SetFSK(unsigned char * QUIT)
225 {
226 1
227 1 while (!(*QUIT))
228 1 {
229 2 SetFreq(100000,0);
230 2 _nop_();
231 2 _nop_();
232 2 SetFreq(50000,0);
233 2 _nop_();
234 2 _nop_();
235 2 }
236 1 }
237
238
MODULE INFORMATION: STATIC OVERLAYABLE
C51 COMPILER V7.50 DDS9851 02/11/2009 16:16:26 PAGE 5
CODE SIZE = 483 ----
CONSTANT SIZE = 136 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 31
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -