📄 ad7705.lst
字号:
C51 COMPILER V8.08 AD7705 11/20/2008 22:02:46 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE AD7705
OBJECT MODULE PLACED IN AD7705.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE AD7705.C BROWSE DEBUG OBJECTEXTEND
line level source
1 #include"reg52.h"
2 #include"IOCfg.c"
3 #include"delay.h"
4 #include"Config.h"
5 #include"AD7705.h"
6 #include "intrins.h"
7
8
9 /************************************************************************************
10 复位AD7705
11 ************************************************************************************/
12 void rst_ad()
13 {
14 1 AD_DRDY = 1;
15 1 AD_CLK = 1;
16 1 AD_DIN = 1;
17 1 AD_DOUT = 1;
18 1 //AD_RST = 0;
19 1 delay(300);
20 1 AD_RST = 1;
21 1 write_ad(0xff);
22 1 write_ad(0xff);
23 1 write_ad(0xff);
24 1 write_ad(0xff);
25 1 write_ad(0xff);
26 1 delay(500);
27 1 }
28
29 /************************************************************************************
30 写1字节到AD7705
31 ************************************************************************************/
32 write_ad(uchar i)
33 {
34 1 uchar a;
35 1 for(a = 8;a > 0;a--)
36 1 {
37 2
38 2 if((i & 0x80) == 0)
39 2 {
40 3 AD_DIN = 0;
41 3 }
42 2 else
43 2 {
44 3 AD_DIN = 1;
45 3 }
46 2 i <<= 1;
47 2 AD_CLK = 0;
48 2 _nop_();
49 2 _nop_();
50 2 _nop_();
51 2 AD_CLK = 1;
52 2 }
53 1 }
54
55 /************************************************************************************
C51 COMPILER V8.08 AD7705 11/20/2008 22:02:46 PAGE 2
56 设置AD7705通道
57 * 0 为第一通道
58 * 1 为第二通道
59
60 //MD1(0) 工 作 模 式
61 //MD0(0) 工 作 模 式
62 //G2(0) 增益选择 0 0 0 0 1 1 1 1
63 //G1(0) 增益选择 0 0 1 1 0 0 1 1
64 //G0(0) 增益选择 0 1 0 1 0 1 0 1
65 // 1 2 4 8 16 32 64 128
66 //B/U(0) 单极性/双极性工作。“0”表示选择双极性操作,“1”表示选择单极性工作
67 //BUF(0) 缓冲器控制。“0”表示片内缓冲器短路,缓冲器短路后,电源电流降低
68 // 此位处于高电平时,缓冲器与模拟输入串联,输入端允许处理高阻抗源
69 //FSYNC(1) 滤波器同步
70
71 //设置40H 双极性方式 44H 单极性方式
72 //-----短路滤波器后线性也好了
73 ************************************************************************************/
74
75 void set_7705_ch(bit a)
76 {
77 1 if(a == 0)
78 1 {
79 2 write_ad(0x20);//write_ad(0x20);
80 2 write_ad(0x05);
81 2 write_ad(0x10);//write_ad(0x10);
82 2 write_ad(0x44);//write_ad(0x46);
83 2 }
84 1 else
85 1 {
86 2 write_ad(0x20);//write_ad(0x20);
87 2 write_ad(0x05);
88 2 write_ad(0x10);//write_ad(0x10);
89 2 write_ad(0x44);//write_ad(0x46);
90 2 }
91 1 }
92
93
94 /************************************************************************************
95 读1字节到AD7705
96 ************************************************************************************/
97 uchar read_ad()
98 {
99 1 uchar temp2;
100 1 uchar a;
101 1 for(a = 8;a > 0;a--)
102 1 {
103 2 AD_CLK = 0;
104 2 _nop_();
105 2 _nop_();
106 2 _nop_();
107 2 AD_CLK = 1;
108 2 _nop_();
109 2 _nop_();
110 2 _nop_();
111 2 temp2 <<= 1;
112 2 if(AD_DOUT == 0)
113 2 {
114 3 temp2 &= 0xfe;
115 3 }
116 2 else
117 2 {
C51 COMPILER V8.08 AD7705 11/20/2008 22:02:46 PAGE 3
118 3 temp2 |= 0x01;
119 3 }
120 2 }
121 1 return temp2;
122 1 }
123
124 /************************************************************************************
125
126 读AD7705转换后的数据 ,不检测DRDY
127
128 ************************************************************************************/
129
130 uint readAD_data()
131 {
132 1 uint temp;
133 1 uchar i;
134 1 for(i = 16;i > 0;i--)
135 1 {
136 2 AD_CLK = 0;
137 2 _nop_();
138 2 _nop_();
139 2 _nop_();
140 2 AD_CLK = 1;
141 2 _nop_();
142 2 _nop_();
143 2 _nop_();
144 2 temp <<= 1;
145 2 if(AD_DOUT == 0)
146 2 {
147 3 temp &= 0xfffe;
148 3 }
149 2 else
150 2 {
151 3 temp |= 0x0001;
152 3 }
153 2 }
154 1 return temp;
155 1 }
156
157 /************************************************************************************
158 AD的16位整形数转换成浮点电压或电流值
159 ************************************************************************************/
160 float adjisuan_U(uint x)
161 {
162 1 idata float temp1;
163 1 temp1 = 11.990 / 0x5e1f;
164 1 temp1 = x * temp1;
165 1 return temp1;
166 1 }
167
168 float adjisuan_I(uint x) //
169 {
170 1 idata float temp1;
171 1 temp1 = (1.059 + 0.009) / 0x2c03;
172 1 //temp1 = (x * temp1) - 0.0039;
173 1 temp1 = (x * temp1) - 0.0069 ;
174 1 return temp1;
175 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 262 ----
C51 COMPILER V8.08 AD7705 11/20/2008 22:02:46 PAGE 4
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- 8
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -