📄 driver9954.lst
字号:
C51 COMPILER V7.20 DRIVER9954 08/16/2007 11:03:46 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE DRIVER9954
OBJECT MODULE PLACED IN driver9954.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE driver9954.c OPTIMIZE(6,SPEED) BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "includes.h"
2 //sbit OSK=
3 //sbit IOSYNC=
4
5
6 void delay(uint i)
7 {
8 1 while(i--);
9 1 }
10 void AD9954_RESET(void)
11 {
12 1 RESET=0;
13 1 RESET=1;
14 1 delay(100);
15 1 RESET=0;
16 1 CS=0;
17 1 SCLK=1;
18 1 }
19 void AD9954_SENDBYTE(uchar dat)//发送一个字节的内容
20 {
21 1 uchar i=8;
22 1 while(i--)
23 1 {
24 2 SCLK=0;
25 2
26 2 if(dat&0x80)
27 2 {
28 3 SDIO=1;
29 3 }
30 2 else
31 2 {
32 3 SDIO=0;
33 3 }
34 2 SCLK=1;
35 2 dat<<= 1;
36 2 }
37 1 }
38 void UPDATE(void)
39 {
40 1 IOUPDATE=0;
41 1 IOUPDATE=1;
42 1 delay(10);
43 1 IOUPDATE=0;
44 1 }
45 void AD9954_Initial(void)
46 {
47 1 //single tone
48 1 AD9954_SENDBYTE(0x00);//地址0写操作
49 1 AD9954_SENDBYTE(0x00);//
50 1 AD9954_SENDBYTE(0x00);
51 1 AD9954_SENDBYTE(0x00);
52 1 AD9954_SENDBYTE(0x40);
53 1 //linear sweep mode
54 1 /*AD9954_SENDBYTE(0x00);//地址0写操作
55 1 AD9954_SENDBYTE(0x00);//
C51 COMPILER V7.20 DRIVER9954 08/16/2007 11:03:46 PAGE 2
56 1 AD9954_SENDBYTE(0x20);
57 1 AD9954_SENDBYTE(0x00);
58 1 AD9954_SENDBYTE(0x40);*/
59 1 //
60 1 AD9954_SENDBYTE(0x01);//地址1写操作
61 1 AD9954_SENDBYTE(0x00);//
62 1 AD9954_SENDBYTE(0x00);
63 1 AD9954_SENDBYTE(0x44);//8倍频,打开VCO控制高位,系统时钟倍频后为400M
64 1
65 1 }
66 void AD9954_SETFRE(float f)//single tone
67 {
68 1 union
69 1 {
70 1 unsigned long int det1;
71 1 struct{uchar dhh;uchar dhl;uchar dlh;uchar dll; }det2;
72 1 }dat;
73 1 dat.det1=10.7374*f;//det=(f/fclk)x2^32=10.7374xf
74 1 AD9954_SENDBYTE(0x04);//FTW0地址
75 1 AD9954_SENDBYTE(dat.det2.dhh);//频率控制字
76 1 AD9954_SENDBYTE(dat.det2.dhl);
77 1 AD9954_SENDBYTE(dat.det2.dlh);
78 1 AD9954_SENDBYTE(dat.det2.dll);
79 1 UPDATE();
80 1 }
81 void LINEARSWEEP(float f1,float f2)//linear sweep mode
82 {
83 1 union
84 1 {
85 1 unsigned long int det1;
86 1 struct{uchar dhh;uchar dhl;uchar dlh;uchar dll; }det2;
87 1 }dat;
88 1 dat.det1=10.7374*f1;
89 1 AD9954_SENDBYTE(0x04);//FTW0地址
90 1 AD9954_SENDBYTE(dat.det2.dhh);//频率控制字
91 1 AD9954_SENDBYTE(dat.det2.dhl);
92 1 AD9954_SENDBYTE(dat.det2.dlh);
93 1 AD9954_SENDBYTE(dat.det2.dll);
94 1 dat.det1=10.7374*f2;
95 1 AD9954_SENDBYTE(0x06);//FTW1地址
96 1 AD9954_SENDBYTE(dat.det2.dhh);//频率控制字
97 1 AD9954_SENDBYTE(dat.det2.dhl);
98 1 AD9954_SENDBYTE(dat.det2.dlh);
99 1 AD9954_SENDBYTE(dat.det2.dll);
100 1 AD9954_SENDBYTE(0x07);//NLSCW
101 1 AD9954_SENDBYTE(0x01);
102 1 AD9954_SENDBYTE(0x00);
103 1 AD9954_SENDBYTE(0x00);
104 1 AD9954_SENDBYTE(0x1b);
105 1 AD9954_SENDBYTE(0xf4);
106 1 AD9954_SENDBYTE(0x08);//RLSCW
107 1 AD9954_SENDBYTE(0x01);
108 1 AD9954_SENDBYTE(0x00);
109 1 AD9954_SENDBYTE(0x01);
110 1 AD9954_SENDBYTE(0xa3);
111 1 AD9954_SENDBYTE(0x6f);
112 1 UPDATE();
113 1 }
114 //实现4相的FSK
115 void DirectSwitchFSK(float f1,float f2,float f3,float f4)
116 {
117 1 union
C51 COMPILER V7.20 DRIVER9954 08/16/2007 11:03:46 PAGE 3
118 1 {
119 1 unsigned long int det1;
120 1 struct{uchar dhh;uchar dhl;uchar dlh;uchar dll; }det2;
121 1 }dat;
122 1
123 1 AD9954_SENDBYTE(0x00);//地址0写操作
124 1 AD9954_SENDBYTE(0x00);//打开RAM控制位驱动FTW
125 1 AD9954_SENDBYTE(0x00);
126 1 AD9954_SENDBYTE(0x00);
127 1 AD9954_SENDBYTE(0x40);
128 1 //
129 1 AD9954_SENDBYTE(0x01);//地址1写操作
130 1 AD9954_SENDBYTE(0x00);//
131 1 AD9954_SENDBYTE(0x00);
132 1 AD9954_SENDBYTE(0x44);//8倍频,打开VCO控制高位,系统时钟倍频后为400M
133 1 PS0=0;
134 1 PS1=0;
135 1 AD9954_SENDBYTE(0x07);
136 1 AD9954_SENDBYTE(0x01);//ramp rate=0x0010
137 1 AD9954_SENDBYTE(0x00);
138 1 AD9954_SENDBYTE(0x00);//final address:0x000
139 1 AD9954_SENDBYTE(0x00);//start address:0x000;
140 1 AD9954_SENDBYTE(0x00);//RAM0工作于模式0,不停留位没有激活
141 1 UPDATE();
142 1 dat.det1=10.7374*f1;
143 1 AD9954_SENDBYTE(0x0b);
144 1 AD9954_SENDBYTE(dat.det2.dhh);//频率控制字
145 1 AD9954_SENDBYTE(dat.det2.dhl);
146 1 AD9954_SENDBYTE(dat.det2.dlh);
147 1 AD9954_SENDBYTE(dat.det2.dll);
148 1
149 1 PS0=1;//ram1
150 1 PS1=0;
151 1
152 1 AD9954_SENDBYTE(0x08);
153 1 AD9954_SENDBYTE(0x01);//ramp rate=0x0010
154 1 AD9954_SENDBYTE(0x00);
155 1 AD9954_SENDBYTE(0x01);//final address:0x0001
156 1 AD9954_SENDBYTE(0x04);//start address:0x0001
157 1 AD9954_SENDBYTE(0x00);//RAM1工作于模式0,不停留位没有激活
158 1 UPDATE();
159 1 dat.det1=10.7374*f2;
160 1 AD9954_SENDBYTE(0x0b);
161 1 AD9954_SENDBYTE(dat.det2.dhh);//频率控制字
162 1 AD9954_SENDBYTE(dat.det2.dhl);
163 1 AD9954_SENDBYTE(dat.det2.dlh);
164 1 AD9954_SENDBYTE(dat.det2.dll);
165 1
166 1 PS0=0;//ram2
167 1 PS1=1;
168 1
169 1 AD9954_SENDBYTE(0x09);
170 1 AD9954_SENDBYTE(0x01);//ramp rate=0x0010
171 1 AD9954_SENDBYTE(0x00);
172 1 AD9954_SENDBYTE(0x02);//final address:0x0002
173 1 AD9954_SENDBYTE(0x08);//start address:0x0002
174 1 AD9954_SENDBYTE(0x00);
175 1 UPDATE();
176 1 dat.det1=10.7374*f3;
177 1 AD9954_SENDBYTE(0x0b);
178 1 AD9954_SENDBYTE(dat.det2.dhh);//频率控制字
179 1 AD9954_SENDBYTE(dat.det2.dhl);
C51 COMPILER V7.20 DRIVER9954 08/16/2007 11:03:46 PAGE 4
180 1 AD9954_SENDBYTE(dat.det2.dlh);
181 1 AD9954_SENDBYTE(dat.det2.dll);
182 1 PS0=1;//ram3
183 1 PS1=1;
184 1 AD9954_SENDBYTE(0x0a);
185 1 AD9954_SENDBYTE(0x01);//ramp rate=0x0010
186 1 AD9954_SENDBYTE(0x00);
187 1 AD9954_SENDBYTE(0x03);//final address:0x0003
188 1 AD9954_SENDBYTE(0x0c);//start address:0x0003
189 1 AD9954_SENDBYTE(0x00);
190 1 UPDATE();
191 1 dat.det1=10.7374*f4;
192 1 AD9954_SENDBYTE(0x0b);
193 1 AD9954_SENDBYTE(dat.det2.dhh);//频率控制字
194 1 AD9954_SENDBYTE(dat.det2.dhl);
195 1 AD9954_SENDBYTE(dat.det2.dlh);
196 1 AD9954_SENDBYTE(dat.det2.dll);
197 1
198 1 AD9954_SENDBYTE(0x00);//地址0写操作
199 1 AD9954_SENDBYTE(0x80);//打开RAM控制位驱动FTW
200 1 AD9954_SENDBYTE(0x00);
201 1 AD9954_SENDBYTE(0x00);
202 1 AD9954_SENDBYTE(0x40);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -