📄 ad9833.lst
字号:
C51 COMPILER V7.06 AD9833 08/16/2008 14:17:54 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE AD9833
OBJECT MODULE PLACED IN ad9833.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ad9833.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 // name : ad9833.c
2 // author : pyy
3 // date : 2008-8-6
4
5 #include <reg51.h>
6
7 sbit AD9833_FSYNC = P1^2;
8 sbit AD9833_SCLK = P1^3;
9 sbit AD9833_SDATA = P1^4;
10 //控制子数组
11 unsigned int Config_Data[8];
12 //写入一个字的数据
13 void Send_Word(unsigned int Data_In);
14 //产生一个频率波形 以及选择波形模式
15 void Wave_Generate(unsigned long , unsigned char );
16 void main( void )
17 {
18 1 AD9833_FSYNC = 1;
19 1 AD9833_SCLK = 0;
20 1 while(1)
21 1 {
22 2 Wave_Generate(1, 2);
23 2 Wave_Generate(12, 2);
24 2 Wave_Generate(123, 2);
25 2 Wave_Generate(1234, 2);
26 2 Wave_Generate(12345, 2);
27 2 Wave_Generate(123456, 2);
28 2 Wave_Generate(1234567, 2);
29 2 Wave_Generate(2234567, 2);
30 2 Wave_Generate(3234567, 2);
31 2 Wave_Generate(4234567, 2);
32 2 Wave_Generate(5234567, 2);
33 2 Wave_Generate(6234567, 2);
34 2 Wave_Generate(7234567, 2);
35 2 Wave_Generate(8234567, 2);
36 2 Wave_Generate(9234567, 2);
37 2
38 2 Wave_Generate(10000000, 2);
39 2 // 5Mhz sine
40 2 Wave_Generate(5000000, 2);
41 2 Wave_Generate(4000000, 2);
42 2 Wave_Generate(3000000, 2);
43 2 Wave_Generate(2000000, 2);
44 2 Wave_Generate(1000000, 2);
45 2 // 1Mhz sine
46 2 Wave_Generate(1000000, 2);
47 2 Wave_Generate(900000, 2);
48 2 Wave_Generate(800000, 2);
49 2 Wave_Generate(700000, 2);
50 2 Wave_Generate(600000, 2);
51 2 Wave_Generate(500000, 2);
52 2 Wave_Generate(400000, 2);
53 2 Wave_Generate(300000, 2);
54 2 Wave_Generate(200000, 2);
55 2 Wave_Generate(100000, 2);
C51 COMPILER V7.06 AD9833 08/16/2008 14:17:54 PAGE 2
56 2
57 2 Wave_Generate(5000000, 0);
58 2 Wave_Generate(4000000, 0);
59 2 Wave_Generate(3000000, 0);
60 2 Wave_Generate(2000000, 0);
61 2 Wave_Generate(1000000, 0);
62 2 Wave_Generate(1000000, 0);
63 2 Wave_Generate(900000, 0);
64 2 Wave_Generate(800000, 0);
65 2 Wave_Generate(700000, 0);
66 2 Wave_Generate(600000, 0);
67 2 Wave_Generate(500000, 0);
68 2 Wave_Generate(400000, 0);
69 2 Wave_Generate(300000, 0);
70 2 Wave_Generate(200000, 0);
71 2 Wave_Generate(100000, 0);
72 2
73 2
74 2 Wave_Generate(1000000, 1);
75 2 Wave_Generate(900000, 1);
76 2 Wave_Generate(800000, 1);
77 2 Wave_Generate(700000, 1);
78 2 Wave_Generate(600000, 1);
79 2 Wave_Generate(500000, 1);
80 2 Wave_Generate(400000, 1);
81 2 Wave_Generate(300000, 1);
82 2 Wave_Generate(200000, 1);
83 2 Wave_Generate(100000, 1);
84 2 // 100Khz sine
85 2 Wave_Generate(100000, 2);
86 2 // 10Khz sine
87 2 Wave_Generate(10000, 2);
88 2 // 1Khz sine
89 2 Wave_Generate(1000, 2);
90 2 // 100hz sine
91 2 Wave_Generate(100, 2);
92 2 // 10hz sine
93 2 Wave_Generate(10, 2);
94 2 // 1hz sine
95 2 Wave_Generate(1, 2);
96 2
97 2
98 2
99 2
100 2 // 10Mhz sine
101 2 Wave_Generate(10000000, 0);
102 2 // 5Mhz sine
103 2 Wave_Generate(5000000, 0);
104 2 // 1Mhz sine
105 2 Wave_Generate(1000000, 0);
106 2 // 100Khz sine
107 2 Wave_Generate(100000, 0);
108 2 // 10Khz sine
109 2 Wave_Generate(10000, 0);
110 2 // 1Khz sine
111 2 Wave_Generate(1000, 0);
112 2 // 100hz sine
113 2 Wave_Generate(100, 0);
114 2 // 10hz sine
115 2 Wave_Generate(10, 0);
116 2 // 1hz sine
117 2 Wave_Generate(1, 0);
C51 COMPILER V7.06 AD9833 08/16/2008 14:17:54 PAGE 3
118 2
119 2
120 2 // 10Mhz 三角波
121 2 Wave_Generate(10000000, 1);
122 2 // 5Mhz sine
123 2 Wave_Generate(5000000, 1);
124 2 // 1Mhz sine
125 2 Wave_Generate(1000000, 1);
126 2 // 100Khz sine
127 2 Wave_Generate(100000, 1);
128 2 // 10Khz sine
129 2 Wave_Generate(10000, 1);
130 2 // 1Khz sine
131 2 Wave_Generate(1000, 1);
132 2 // 100hz sine
133 2 Wave_Generate(100, 1);
134 2 // 10hz sine
135 2 Wave_Generate(10, 1);
136 2 // 1hz sine
137 2 Wave_Generate(1, 1);
138 2
139 2
140 2 // 10Mhz 方波
141 2 Wave_Generate(10000000, 2);
142 2 // 5Mhz sine
143 2 Wave_Generate(5000000, 2);
144 2 // 1Mhz sine
145 2 Wave_Generate(1000000, 2);
146 2 // 100Khz sine
147 2 Wave_Generate(100000, 2);
148 2 // 10Khz sine
149 2 Wave_Generate(10000, 2);
150 2 // 1Khz sine
151 2 Wave_Generate(1000, 2);
152 2 // 100hz sine
153 2 Wave_Generate(100, 2);
154 2 // 10hz sine
155 2 Wave_Generate(10, 2);
156 2 // 1hz sine
157 2 Wave_Generate(1, 2);
158 2 }
159 1
160 1 }
161
162 void Send_Word(unsigned int Data_In)
163 {
164 1 unsigned int i,j;
165 1 AD9833_SCLK = 1;
166 1 AD9833_FSYNC = 0;
167 1 for(i = 0; i < 16; i++)
168 1 {
169 2 AD9833_SCLK = 1;
170 2 AD9833_SDATA = (bit) ((Data_In & 0x8000)>>15);
171 2 j = 0x01;
172 2 while(j--);
173 2 AD9833_SCLK = 0;
174 2 Data_In = Data_In << 1;
175 2 j = 0x01;
176 2 while(j--);
177 2 }
178 1 AD9833_FSYNC = 1;
179 1 AD9833_SCLK = 0;
C51 COMPILER V7.06 AD9833 08/16/2008 14:17:54 PAGE 4
180 1 }
181 //波形发生函数
182 //入口参数: 频率 <= 10MHz
183 // 形状: 0 正弦波 1 三角波 2 方波
184 //默认: FMCLK - 20MHz 0相移
185
186 void Wave_Generate(unsigned long Freq, unsigned char Shape )
187 {
188 1 unsigned long temp;
189 1 unsigned char k;
190 1 if(Freq > 10000000) Freq = 10000000;
191 1 switch(Shape)
192 1 {
193 2 case 0 : Config_Data[0]=0x2108;
194 2 Config_Data[7]=0x2008;
195 2 break;
196 2 case 1 :
197 2 Config_Data[0]=0x210A;
198 2 Config_Data[7]=0x200A;
199 2 break;
200 2 case 2 :
201 2 Config_Data[0]=0x2128;
202 2 Config_Data[7]=0x2028;
203 2 break;
204 2 default : Config_Data[0]=0x2108;
205 2 Config_Data[7]=0x2008;
206 2 break;
207 2
208 2 }
209 1 //20M 13.4218
210 1 //19.6608M 13.6533
211 1 //16M 16.7772
212 1 //24M 11.1848
213 1 temp = Freq*11.1848;
214 1 Config_Data[1] = temp&0x00003fff;
215 1 Config_Data[3] = Config_Data[1];
216 1 Config_Data[2] = (temp&0x0fffc000)>>14;
217 1 Config_Data[4] = Config_Data[2];
218 1
219 1 Config_Data[1] = Config_Data[1] | 0x4000;
220 1 Config_Data[2] = Config_Data[2] | 0x4000;
221 1 Config_Data[3] = Config_Data[3] | 0x8000;
222 1 Config_Data[4] = Config_Data[4] | 0x8000;
223 1
224 1 Config_Data[5] = 0xC000;
225 1 Config_Data[6] = 0xE000;
226 1 for(k = 0; k<8; k++)
227 1 {
228 2 Send_Word(Config_Data[k]);
229 2 }
230 1
231 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1408 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 16 11
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
C51 COMPILER V7.06 AD9833 08/16/2008 14:17:54 PAGE 5
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -