📄 ad9850-51
字号:
C51 COMPILER V7.50 AD9851 12/19/2008 20:24:16 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; //P2.2口接AD9851的D7脚/PIN25
52 //***************************************************//
53 // ad9851复位(并口模式) //
54 //---------------------------------------------------//
55 void ad9851_reset()
C51 COMPILER V7.50 AD9851 12/19/2008 20:24:16 PAGE 2
56 {
57 1 ad9851_w_clk=0;
58 1 ad9851_fq_up=0;
59 1 //rest信号
60 1 ad9851_rest=0;
61 1 ad9851_rest=1;
62 1 ad9851_rest=0;
63 1 }
64 //***************************************************//
65 // ad9851复位(并口模式) //
66 //---------------------------------------------------//
67 void ad9851_reset_serial()
68 {
69 1 ad9851_w_clk=0;
70 1 ad9851_fq_up=0;
71 1 //rest信号
72 1 ad9851_rest=0;
73 1 ad9851_rest=1;
74 1 ad9851_rest=0;
75 1 //w_clk信号
76 1 ad9851_w_clk=0;
77 1 ad9851_w_clk=1;
78 1 ad9851_w_clk=0;
79 1 //fq_up信号
80 1 ad9851_fq_up=0;
81 1 ad9851_fq_up=1;
82 1 ad9851_fq_up=0;
83 1 }
84 //***************************************************//
85 // 向ad9851中写命令与数据(并口) //
86 //---------------------------------------------------//
87 void ad9851_wr_parrel(unsigned char w0,double frequence)
88 {
89 1 unsigned char w;
90 1 long int y;
91 1 double x;
92 1 //计算频率的HEX值
93 1 x=4294967295/180;//适合180M晶振/180为最终时钟频率(或30M六倍频)
94 1 //如果时钟频率不为180MHZ,修改该处的频率值,单位MHz !!!
95 1 frequence=frequence/1000000;
96 1 frequence=frequence*x;
97 1 y=frequence;
98 1 //写w0数据
99 1 w=w0;
100 1 P1=w; //w0
101 1 ad9851_w_clk=1;
102 1 ad9851_w_clk=0;
103 1 //写w1数据
104 1 w=(y>>24);
105 1 P1=w; //w1
106 1 ad9851_w_clk=1;
107 1 ad9851_w_clk=0;
108 1 //写w2数据
109 1 w=(y>>16);
110 1 P1=w; //w2
111 1 ad9851_w_clk=1;
112 1 ad9851_w_clk=0;
113 1 //写w3数据
114 1 w=(y>>8);
115 1 P1=w; //w3
116 1 ad9851_w_clk=1;
117 1 ad9851_w_clk=0;
C51 COMPILER V7.50 AD9851 12/19/2008 20:24:16 PAGE 3
118 1 //写w4数据
119 1 w=(y>>=0);
120 1 P1=w; //w4
121 1 ad9851_w_clk=1;
122 1 ad9851_w_clk=0;
123 1 //移入始能
124 1 ad9851_fq_up=1;
125 1 ad9851_fq_up=0;
126 1 }
127 //***************************************************//
128 // 向ad9851中写命令与数据(串口) //
129 //---------------------------------------------------//
130 void ad9851_wr_serial(unsigned char w0,double frequence)
131 {
132 1 unsigned char i,w;
133 1 long int y;
134 1 double x;
135 1 //计算频率的HEX值
136 1 x=4294967295/180;//适合180M晶振/180为最终时钟频率(或30M六倍频)
137 1 //如果时钟频率不为180MHZ,修改该处的频率值,单位MHz !!!
138 1 frequence=frequence/1000000;
139 1 frequence=frequence*x;
140 1 y=frequence;
141 1 //写w4数据
142 1 w=(y>>=0);
143 1 for(i=0;i<8;i++)
144 1 {
145 2 ad9851_bit_data=(w>>i)&0x01;
146 2 ad9851_w_clk=1;
147 2 ad9851_w_clk=0;
148 2 }
149 1 //写w3数据
150 1 w=(y>>8);
151 1 for(i=0;i<8;i++)
152 1 {
153 2 ad9851_bit_data=(w>>i)&0x01;
154 2 ad9851_w_clk=1;
155 2 ad9851_w_clk=0;
156 2 }
157 1 //写w2数据
158 1 w=(y>>16);
159 1 for(i=0;i<8;i++)
160 1 {
161 2 ad9851_bit_data=(w>>i)&0x01;
162 2 ad9851_w_clk=1;
163 2 ad9851_w_clk=0;
164 2 }
165 1 //写w1数据
166 1 w=(y>>24);
167 1 for(i=0;i<8;i++)
168 1 {
169 2 ad9851_bit_data=(w>>i)&0x01;
170 2 ad9851_w_clk=1;
171 2 ad9851_w_clk=0;
172 2 }
173 1 //写w0数据
174 1 w=w0;
175 1 for(i=0;i<8;i++)
176 1 {
177 2 ad9851_bit_data=(w>>i)&0x01;
178 2 ad9851_w_clk=1;
179 2 ad9851_w_clk=0;
C51 COMPILER V7.50 AD9851 12/19/2008 20:24:16 PAGE 4
180 2 }
181 1 //移入始能
182 1 ad9851_fq_up=1;
183 1 ad9851_fq_up=0;
184 1 }
185 //***************************************************//
186 // 测试程序1000Hz //
187 //---------------------------------------------------//
188 main()
189 {
190 1 P0=0x00;
191 1 P1=0x00;
192 1 P2=0x00;
193 1 P3=0x00;
194 1 //---------------------------------------------------//
195 1 //并行写1000Hz程序
196 1 ad9851_reset();
197 1 ad9851_wr_parrel(0x01,1000);
198 1 //0X01为开六备频
199 1 //ad9851_wr_parrel(0x00,1000);
200 1 //0X00为不开六备频
201 1 //---------------------------------------------------//
202 1 //---------------------------------------------------//
203 1 //串行写1000Hz程序
204 1 //ad9851_reset_serial();
205 1 //ad9851_wr_serial(0x01,1000);
206 1 //0X01为开六备频
207 1 //ad9851_wr_serial(0x00,1000);
208 1 //0X00为不开六备频
209 1 //---------------------------------------------------//
210 1 while(1)
211 1 {
212 2 }
213 1 }
214
215
216
217
218
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 + -