📄 ad9850-51
字号:
C51 COMPILER V7.50 AD9851 07/14/2009 20:47:15 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE AD9851
OBJECT MODULE PLACED IN ad9851.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ad9851.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //***************************************************//
2 //函数1: ad9851_reset() //
3 //函数2: ad9851_reset_serial() //
4 //函数3: ad9851_wr_parrel(unsigned char w0,double frequence)//
5 //函数4: ad9851_wr_serial(unsigned char w0,double frequence)//
6 //版本: V1.1 //
7 //日期: 2008/12/19 //
8 //修改日期: 2008/12/19 //
9 //编写者: my_dds(my_dds@163.com) //
10 //***************************************************//
11 // 子程序说明 //
12 //***************************************************//
13 //函数1: ad9851_reset()
14 // 复位ad9851,之后为并口写入模式
15 //函数2: ad9851_reset_serial()
16 // 复位ad9851,之后为串口写入模式
17 //函数3: ad9851_wr_parrel(unsigned char w0,double frequence)
18 // 并口写ad9851数据,w0为ad9851中w0的数据,frequence
19 // 为写入的频率
20 //函数4: ad9851_wr_serial(unsigned char w0,double frequence)
21 // 串口写ad9851数据,w0为ad9851中w0的数据,frequence
22 // 为写入的频率
23 //需定义的位:
24 //ad9851_w_clk ;
25 //ad9851_fq_up ;
26 //ad9851_rest ;
27 //ad9851_bit_data ;
28 //例:
29 //sbit ad9851_w_clk =P2^2;
30 //sbit ad9851_fq_up =P2^1;
31 //sbit ad9851_rest =P2^0;
32 //sbit ad9851_bit_data =P1^7;
33 //***************************************************//
34 // 写数据说明 //
35 //***************************************************//
36 //写数据例:
37 // ad9851_reset()
38 // wr_lcd02_data(unsigned char x)
39 // ad9851_wr_parrel(0x01,1000)
40 // ad9851_wr_serial(0x01,1000)
41 //***************************************************//
42 //---------------------------------------------------//
43 // 程序 //
44 //---------------------------------------------------//
45 # include <reg51.h>
46 # include <stdio.h>
47 # include <intrins.h>
48 sbit ad9851_w_clk =P2^2; //P2.2口接AD9851的w_clk脚/PIN7
49 sbit ad9851_fq_up =P2^1; //P2.1口接AD9851的fq_up脚/PIN8
50 sbit ad9851_rest =P2^0; //P2.0口接AD9851的rest脚/PIN12
51 sbit ad9851_bit_data =P1^7; //P1.7口接AD9851的D7脚/PIN25
52 //P1为8位数据口
53 //***************************************************//
54 // ad9851复位(并口模式) //
55 //---------------------------------------------------//
C51 COMPILER V7.50 AD9851 07/14/2009 20:47:15 PAGE 2
56 void ad9851_reset()
57 {
58 1 ad9851_w_clk=0;
59 1 ad9851_fq_up=0;
60 1 //rest信号
61 1 ad9851_rest=0;
62 1 ad9851_rest=1;
63 1 ad9851_rest=0;
64 1 }
65 //***************************************************//
66 // ad9851复位(并口模式) //
67 //---------------------------------------------------//
68 void ad9851_reset_serial()
69 {
70 1 ad9851_w_clk=0;
71 1 ad9851_fq_up=0;
72 1 //rest信号
73 1 ad9851_rest=0;
74 1 ad9851_rest=1;
75 1 ad9851_rest=0;
76 1 //w_clk信号
77 1 ad9851_w_clk=0;
78 1 ad9851_w_clk=1;
79 1 ad9851_w_clk=0;
80 1 //fq_up信号
81 1 ad9851_fq_up=0;
82 1 ad9851_fq_up=1;
83 1 ad9851_fq_up=0;
84 1 }
85 //***************************************************//
86 // 向ad9851中写命令与数据(并口) //
87 //---------------------------------------------------//
88 void ad9851_wr_parrel(unsigned char w0,double frequence)
89 {
90 1 unsigned char w;
91 1 long int y;
92 1 double x;
93 1 //计算频率的HEX值
94 1 x=4294967295/180;//适合180M晶振/180为最终时钟频率(或30M六倍频)
95 1 //如果时钟频率不为180MHZ,修改该处的频率值,单位MHz !!!
96 1 frequence=frequence/1000000;
97 1 frequence=frequence*x;
98 1 y=frequence;
99 1 //写w0数据
100 1 w=w0;
101 1 P1=w; //w0
102 1 ad9851_w_clk=1;
103 1 ad9851_w_clk=0;
104 1 //写w1数据
105 1 w=(y>>24);
106 1 P1=w; //w1
107 1 ad9851_w_clk=1;
108 1 ad9851_w_clk=0;
109 1 //写w2数据
110 1 w=(y>>16);
111 1 P1=w; //w2
112 1 ad9851_w_clk=1;
113 1 ad9851_w_clk=0;
114 1 //写w3数据
115 1 w=(y>>8);
116 1 P1=w; //w3
117 1 ad9851_w_clk=1;
C51 COMPILER V7.50 AD9851 07/14/2009 20:47:15 PAGE 3
118 1 ad9851_w_clk=0;
119 1 //写w4数据
120 1 w=(y>>=0);
121 1 P1=w; //w4
122 1 ad9851_w_clk=1;
123 1 ad9851_w_clk=0;
124 1 //移入始能
125 1 ad9851_fq_up=1;
126 1 ad9851_fq_up=0;
127 1 }
128 //***************************************************//
129 // 向ad9851中写命令与数据(串口) //
130 //---------------------------------------------------//
131 void ad9851_wr_serial(unsigned char w0,double frequence)
132 {
133 1 unsigned char i,w;
134 1 long int y;
135 1 double x;
136 1 //计算频率的HEX值
137 1 x=4294967295/180;//适合180M晶振/180为最终时钟频率(或30M六倍频)
138 1 //如果时钟频率不为180MHZ,修改该处的频率值,单位MHz !!!
139 1 frequence=frequence/1000000;
140 1 frequence=frequence*x;
141 1 y=frequence;
142 1 //写w4数据
143 1 w=(y>>=0);
144 1 for(i=0;i<8;i++)
145 1 {
146 2 ad9851_bit_data=(w>>i)&0x01;
147 2 ad9851_w_clk=1;
148 2 ad9851_w_clk=0;
149 2 }
150 1 //写w3数据
151 1 w=(y>>8);
152 1 for(i=0;i<8;i++)
153 1 {
154 2 ad9851_bit_data=(w>>i)&0x01;
155 2 ad9851_w_clk=1;
156 2 ad9851_w_clk=0;
157 2 }
158 1 //写w2数据
159 1 w=(y>>16);
160 1 for(i=0;i<8;i++)
161 1 {
162 2 ad9851_bit_data=(w>>i)&0x01;
163 2 ad9851_w_clk=1;
164 2 ad9851_w_clk=0;
165 2 }
166 1 //写w1数据
167 1 w=(y>>24);
168 1 for(i=0;i<8;i++)
169 1 {
170 2 ad9851_bit_data=(w>>i)&0x01;
171 2 ad9851_w_clk=1;
172 2 ad9851_w_clk=0;
173 2 }
174 1 //写w0数据
175 1 w=w0;
176 1 for(i=0;i<8;i++)
177 1 {
178 2 ad9851_bit_data=(w>>i)&0x01;
179 2 ad9851_w_clk=1;
C51 COMPILER V7.50 AD9851 07/14/2009 20:47:15 PAGE 4
180 2 ad9851_w_clk=0;
181 2 }
182 1 //移入始能
183 1 ad9851_fq_up=1;
184 1 ad9851_fq_up=0;
185 1 }
186 //***************************************************//
187 // 测试程序1000Hz //
188 //---------------------------------------------------//
189 main()
190 {
191 1 P0=0x00;
192 1 P1=0x00;
193 1 P2=0x00;
194 1 P3=0x00;
195 1 //---------------------------------------------------//
196 1 //并行写1000Hz程序
197 1 //ad9851_reset();
198 1 //ad9851_wr_parrel(0x01,1000);
199 1 //0X01为开六备频
200 1 //ad9851_wr_parrel(0x00,1000);
201 1 //0X00为不开六备频
202 1 //---------------------------------------------------//
203 1 //---------------------------------------------------//
204 1 //串行写1000Hz程序
205 1 ad9851_reset_serial();
206 1 ad9851_wr_serial(0x01,1000);
207 1 //0X01为开六备频
208 1 //ad9851_wr_serial(0x00,1000);
209 1 //0X00为不开六备频
210 1 //---------------------------------------------------//
211 1 while(1)
212 1 {
213 2 }
214 1 }
215
216
217
218
219
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 480 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 26
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 + -