📄 ad7705 sensor.lst
字号:
142 //---------------------------------------------------------------------------
143 //功能:AD7705通信端口复位
144 //---------------------------------------------------------------------------
145 void Reset7705(void)
146 {
147 1 uchar i;
148 1 for(i=0;i<35;i++) //多于连续32个 DIN=1 使串口复位
149 1 {
150 2 AdClk=0;
151 2 Wait7705(AD_CLK_WIDTH);
152 2 AdDin =1;
153 2 Wait7705(AD_CLK_WIDTH);
154 2 AdClk=1;
155 2 Wait7705(AD_CLK_WIDTH);
156 2 }
157 1 }
158 //---------------------------------------------------------------------------
159 //功能:AD7705初始化 通道channel 1=IN1,2=IN2; 输入极性polarity -0=双极性,1=单极性; PGA 增益gai 非缓冲模式
160 //---------------------------------------------------------------------------
161 void Init7705(uchar channel, bit polarity , uchar gain)
162 {
163 1 uchar x;
164 1 Reset7705(); /* 防止串口失步 */
165 1 if(channel == 1)
166 1 {
167 2 WriteByte7705(0x20); /* 写ch0 clock register */
168 2 WriteByte7705(0x05); /* 2.4576MHz时钟,50Hz数据更新速率 */
169 2 }
170 1 else
171 1 {
172 2 WriteByte7705(0x21); /* 写CH1 clock register */
173 2 WriteByte7705(0x05); /* 2.4576MHz时钟,50Hz数据更新速率 */
174 2 }
175 1 if(channel==1) /* com register ,选择下步操作 setup register */
176 1 WriteByte7705(0x10);
177 1 else
178 1 WriteByte7705(0x11);
179 1 if(polarity) /* setup register */
C51 COMPILER V7.50 AD7705_SENSOR 03/13/2007 14:59:24 PAGE 4
180 1 x=0x04;
181 1 else
182 1 x=0x00;
183 1 switch(gain)
184 1 {
185 2 case 1 : x|=0x40;break;
186 2 case 2 : x|=0x48;break;
187 2 case 4 : x|=0x50;break;
188 2 case 8 : x|=0x58;break;
189 2 case 16 : x|=0x60;break;
190 2 case 32 : x|=0x68;break;
191 2 case 64 : x|=0x70;break;
192 2 case 128 : x|=0x78;break;
193 2 default : x|=0x40;break;
194 2 }
195 1 WriteByte7705(x);
196 1 }
197 //---------------------------------------------------------------------------
198 //功能:读AD7705转换数据 输入通道channel ----1=IN1,2=IN2;
199 //---------------------------------------------------------------------------
200 uint GetData7705(uchar channel)
201 {
202 1 if(channel==1)
203 1 WriteByte7705(0x38);
204 1 else
205 1 WriteByte7705(0x39);
206 1 return ( ReadWord7705() );
207 1 }
208 //---------------------------------------------------------------------------
209 //功能:处理串口收到的数据
210 //---------------------------------------------------------------------------
211 void ArrangeData(void)
212 {
213 1 if(CommandData[6] == 'C'|CommandData[6] == 'c') /*终止数据更新命令*/
214 1 {
215 2 Update_temp = 0;
216 2 }
217 1 if(CommandData[6] == '$'&(CommandData[5] == 'I'|CommandData[5] == 'i')&CommandData[4] == ','&CommandData
-[1] == 0x0d) /*终止数据更新命令*/
218 1 {
219 2 ID1_temp = CommandData[3];
220 2 ID0_temp = CommandData[2];
221 2 EA = 0;
222 2 FLASH_WriteByte(&ID1,ID1_temp);
*** WARNING C214 IN LINE 222 OF AD7705 SENSOR.C: 'Argument': conversion: pointer to non-pointer
223 2 FLASH_WriteByte(&ID0,ID0_temp);
*** WARNING C214 IN LINE 223 OF AD7705 SENSOR.C: 'Argument': conversion: pointer to non-pointer
224 2 EA = 1;
225 2 if(ID0==ID0_temp&ID1==ID1_temp)
226 2 printf("ID SET OK.\n");
227 2 else
228 2 printf("ID SET FAILURE.\n");
229 2 printf("Currently ID=%c%c\n",ID1,ID0);
230 2 }
231 1 if((CommandData[6] == 'T'|CommandData[6] == 't')&CommandData[5] == 0x0d)
232 1 {
233 2 printf("\nID=%c%c\n",ID1_temp,ID0_temp);
234 2 printf("ZeroPoint_X=%2.3f\n",ZeroPoint_X*LSB);
235 2 printf("ZeroPoint_Y=%2.3f\n",ZeroPoint_Y*LSB);
236 2 printf("ALARM_X+:%2.3f,ALARM_X-:-%2.3f\n",(ALARM_X_P*LSB-15),(15-ALARM_X_N*LSB));
237 2 printf("ALARM_Y+:%2.3f,ALARM_Y-:-%2.3f\n",(ALARM_Y_P*LSB-15),(15-ALARM_Y_N*LSB));
238 2 }
C51 COMPILER V7.50 AD7705_SENSOR 03/13/2007 14:59:24 PAGE 5
239 1 if(CommandData[6] == '$'&(CommandData[5] == 'R'|CommandData[5] == 'r')&CommandData[4] == 0x0d)/*复位命令*
-/
240 1 {
241 2 EA = 0;
242 2 FLASH_WriteByte(&ALARM[7],0xff);
*** WARNING C214 IN LINE 242 OF AD7705 SENSOR.C: 'Argument': conversion: pointer to non-pointer
243 2 FLASH_WriteByte(&ALARM[6],0xff);
*** WARNING C214 IN LINE 243 OF AD7705 SENSOR.C: 'Argument': conversion: pointer to non-pointer
244 2 FLASH_WriteByte(&ALARM[5],0x00);
*** WARNING C214 IN LINE 244 OF AD7705 SENSOR.C: 'Argument': conversion: pointer to non-pointer
245 2 FLASH_WriteByte(&ALARM[4],0x00);
*** WARNING C214 IN LINE 245 OF AD7705 SENSOR.C: 'Argument': conversion: pointer to non-pointer
246 2 FLASH_WriteByte(&ALARM[3],0xff);
*** WARNING C214 IN LINE 246 OF AD7705 SENSOR.C: 'Argument': conversion: pointer to non-pointer
247 2 FLASH_WriteByte(&ALARM[2],0xff);
*** WARNING C214 IN LINE 247 OF AD7705 SENSOR.C: 'Argument': conversion: pointer to non-pointer
248 2 FLASH_WriteByte(&ALARM[1],0x00);
*** WARNING C214 IN LINE 248 OF AD7705 SENSOR.C: 'Argument': conversion: pointer to non-pointer
249 2 FLASH_WriteByte(&ALARM[0],0x00);
*** WARNING C214 IN LINE 249 OF AD7705 SENSOR.C: 'Argument': conversion: pointer to non-pointer
250 2 FLASH_WriteByte(&ZERO[3],0x00);
*** WARNING C214 IN LINE 250 OF AD7705 SENSOR.C: 'Argument': conversion: pointer to non-pointer
251 2 FLASH_WriteByte(&ZERO[2],0x00);
*** WARNING C214 IN LINE 251 OF AD7705 SENSOR.C: 'Argument': conversion: pointer to non-pointer
252 2 FLASH_WriteByte(&ZERO[1],0x00);
*** WARNING C214 IN LINE 252 OF AD7705 SENSOR.C: 'Argument': conversion: pointer to non-pointer
253 2 FLASH_WriteByte(&ZERO[0],0x00);
*** WARNING C214 IN LINE 253 OF AD7705 SENSOR.C: 'Argument': conversion: pointer to non-pointer
254 2 EA = 1;
255 2 ALARM_X_P = ALARM[7];
256 2 ALARM_X_P<<=8;
257 2 ALARM_X_P |=ALARM[6];
258 2 ALARM_X_N = ALARM[5];
259 2 ALARM_X_N<<=8;
260 2 ALARM_X_N |=ALARM[4];
261 2 ALARM_Y_P = ALARM[3];
262 2 ALARM_Y_P<<=8;
263 2 ALARM_Y_P |=ALARM[2];
264 2 ALARM_Y_N = ALARM[1];
265 2 ALARM_Y_N<<=8;
266 2 ALARM_Y_N |=ALARM[0];
267 2 ZeroPoint_X = 0;
268 2 ZeroPoint_Y = 0;
269 2 }
270 1 if((CommandData[6] == 'G'|CommandData[6] == 'g')&(CommandData[5] == 'O'|CommandData[5] == 'o')&CommandDat
-a[4] == 0x0d)
271 1 {
272 2 Update_temp = 1;//Update; /*继续输出数据*/
273 2 }
274 1 if(CommandData[6] == '$'&(CommandData[5] == 'Z'|CommandData[5] == 'z')&CommandData[4] == 0x0d)/*将当前位
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -