📄 dds9852_01.lst
字号:
C51 COMPILER V7.06 DDS9852_01 08/08/2007 21:37:26 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE DDS9852_01
OBJECT MODULE PLACED IN DDS9852_01.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE DDS9852_01.C BROWSE DEBUG OBJECTEXTEND
stmt level source
1 //AD9852测试程序
2 //**********************************************
3 #include<reg52.h>
4 #include<intrins.h> //包含右移
5 #include<math.h>
6
7 sbit UPDCLK = P0^0; //20 更新时钟,上升沿锁存数据到编程寄存器
8 sbit MRESET = P0^1; //71 主复位端,高电平有效复位
9 sbit PMODE = P0^2; //70 串并编程模式选择 0:串行 1:并行
10 sbit WRCLK = P0^3; //21 写端口数据 上升沿锁存数据
11 sbit RDCLK = P0^4; //22 读端口数据 高电平读
12 sbit F_B_H = P0^5; //29 低电平
13 sbit OSK = P0^6; //30
14
15 sbit DATACLK= P1^0; //高电平有效,选中数据锁存器,低电平锁存
16 sbit ADDRCLK= P1^1; //高电平有效,选中地址锁存器,低电平锁存
17 sbit CONCLK = P1^2; //高电平有效,选中外部控制端驱运器,低电平锁存
18
19 sbit PD = P1^4;
20 sbit EN = P1^5;
21 sbit SCLK = P1^6;
22 sbit SDATA = P1^7;
23
24 //unsigned char FWord[6]={0x00,0xDA,0x74,0x0D,0xA7,0x40}; //1MHz频率字寄存器
25 unsigned char FWord[6]={0x08,0x88,0x88,0x88,0x88,0x88}; //10MHz频率字寄存器
26 unsigned char Address; //寄存器地址
27 unsigned char PortReg; //控制端口寄存器
28 unsigned char MultReg; //乘法寄存器
29 unsigned char ModeReg; //工作模式寄存器
30 unsigned char PowerReg; //功率寄存器
31
32 void WriteData(unsigned char DataByte); //写字节数据
33 void WriteADDR(unsigned char DATAAddress); //写寄存器地址
34 void UpdataFWord(unsigned char *FWord);
35 void AD8320(unsigned char Gain);//AD8320增益控制
36 //*********************************
37 void main()
38 {
39 1 unsigned char n;
40 1
41 1 MultReg = 0x46; //乘法器
42 1 PortReg = 0x04; //控制端口
43 1 P0=0;
44 1 DATACLK=0;
45 1 ADDRCLK=0;
46 1
47 1 P0=0x06; //设置成并行模式,并复位
48 1 for(n=5;n>0;)
49 1 n--;
50 1 P0=0x04;
51 1 CONCLK =0; //锁存控制端口状态
52 1 //*************************
53 1 WriteADDR(0x1E); //写乘法器地址
54 1 WriteData(0x46); //初始化乘法器,打开倍速频器,倍频6x50=300Mhz
55 1
C51 COMPILER V7.06 DDS9852_01 08/08/2007 21:37:26 PAGE 2
56 1 UpdataFWord(FWord);
57 1
58 1 WriteADDR(0x20); //反辛格函数滤波器地址
59 1 WriteData(0x60); //关闭反辛格函数滤波
60 1 WriteADDR(0x21); //幅度字高字节地址
61 1 WriteData(0xFF); //幅度字高字节
62 1 WriteADDR(0x22); //幅度字低字节地址
63 1 WriteData(0xFF);
64 1 AD8320(100); //AD8320增益控制
65 1 while(1);
66 1
67 1 }
68 //*********************************
69 //***频率字更新
70 void UpdataFWord(unsigned char *FWord)
71 {
72 1 WriteADDR(0x04);
73 1 WriteData(FWord[0]);//0x0f); //频率字最高字节
74 1 WriteADDR(0x05);
75 1 WriteData(FWord[1]);//0x45);
76 1 WriteADDR(0x06);
77 1 WriteData(FWord[2]);//0x45);
78 1 WriteADDR(0x07);
79 1 WriteData(FWord[3]);//0x45);
80 1 WriteADDR(0x08);
81 1 WriteData(FWord[4]);//0x45);
82 1 WriteADDR(0x09);
83 1 WriteData(FWord[5]);//0x00); //频率字最低字节
84 1 }
85 //*********************************
86 //***写入数据
87 void WriteData(unsigned char DataByte)
88 {
89 1 unsigned char bdata x,y;
90 1 x =DataByte;
91 1 y =0;
92 1 if(x&0x01) //数据格式旋转180
93 1 y=y|0x80; //由D7 D6 D5 D4 D3 D2 D1 D0
94 1 if(x&0x02) // D0 D1 D2 D3 D4 D5 D6 D7
95 1 y=y|0x40;
96 1 if(x&0x04)
97 1 y=y|0x20;
98 1 if(x&0x08)
99 1 y=y|0x10;
100 1 if(x&0x10)
101 1 y=y|0x08;
102 1 if(x&0x20)
103 1 y=y|0x04;
104 1 if(x&0x40)
105 1 y=y|0x02;
106 1 if(x&0x80)
107 1 y=y|0x01;
108 1 P0=y;
109 1 DATACLK=1; //锁存数据
110 1 DATACLK=0;
111 1
112 1 }
113 //*********************************
114 //***完整地址
115 void WriteADDR(unsigned char DATAAddress)
116 {
117 1 P0=DATAAddress;
C51 COMPILER V7.06 DDS9852_01 08/08/2007 21:37:26 PAGE 3
118 1 ADDRCLK=1;
119 1 ADDRCLK=0;
120 1
121 1 P0=0x04;
122 1 CONCLK = 1;
123 1 WRCLK=1;
124 1 WRCLK=0;
125 1 CONCLK = 0;
126 1
127 1 }
128 //*********************************
129 void AD8320(unsigned char Gain)
130 {
131 1 unsigned char n,A;
132 1 A=Gain;
133 1 EN=0;
134 1 SCLK=0;
135 1 SDATA=0;
136 1 for(n=8;n>0;n--)
137 1 {
138 2 if((A&0x80)==0x80)
139 2 SDATA=1;
140 2 else
141 2 SDATA=0;
142 2 A=A<<1;
143 2 SCLK=1;
144 2 SCLK=0;
145 2 }
146 1 EN=1;
147 1 }
148
149
150
151
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 318 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 13 3
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 + -