📄 dc_current_souce.lst
字号:
164 5 cc=cc-10*m;
165 5 dispbuff[7]=cc;
166 5 display(7);
167 5 }
168 4 else if((control/100))
169 4 {
170 5 cc=control;
171 5 dispbuff[5]=cc/100;
172 5 display(5);
173 5 m=dispbuff[5];
174 5 cc=cc-100*m;
175 5 dispbuff[6]=cc/10;
176 5 display(6);
177 5 m=dispbuff[6];
178 5 cc=cc-10*m;
C51 COMPILER V7.07 DC_CURRENT_SOUCE 09/10/2005 19:28:46 PAGE 4
179 5 dispbuff[7]=cc;
180 5 display(7);
181 5 }
182 4 else if((control/10))
183 4 {
184 5 cc=control;
185 5 dispbuff[6]=cc/10;
186 5 display(6);
187 5 m=dispbuff[6];
188 5 cc=cc-10*m;
189 5 dispbuff[7]=cc;
190 5 display(7);
191 5 }
192 4 else
193 4 {
194 5 dispbuff[7]=control;
195 5 display(7);
196 5 }
197 4 }
198 3 else if(control==2000)
199 3 {
200 4 dispbuff[7]=0;
201 4 display(7);
202 4 dispbuff[6]=0;
203 4 display(6);
204 4 dispbuff[5]=0;
205 4 display(5);
206 4 dispbuff[4]=2;
207 4 display(4);
208 4 }
209 3 }
210 2 dacconvent();
211 2 for(time=0;time<200;time++)
212 2 delay(200);
213 2 }
214 1
215 1 }
216
217 char ReadKB() //读键盘
218 { char kb=0,j;
219 1 CS=1;
220 1 CLK=0;
221 1 delay (50);
222 1 sent(0x15);//发送读键盘指令
223 1 delay(10);
224 1 DIO=1; //要读dio的值,必须先对其置一。
225 1 CLK=1;
226 1 delay(50);
227 1 for(j=0;j<8;j++)
228 1 {CLK=0;
229 2 kb=kb*2+(char)DIO;//读1位数据
230 2 delay(10);
231 2 CLK=1;
232 2 delay(10);
233 2 }
234 1 CS=1;
235 1 return(kb);
236 1 }
237
238 void sent(unsigned char sent_buf) //发送数据
239 {
240 1 char j;
C51 COMPILER V7.07 DC_CURRENT_SOUCE 09/10/2005 19:28:46 PAGE 5
241 1 CLK=0; /*置SPI时钟线为低*/
242 1 CS=0; /*置SPI片选线为低*/
243 1 delay (50); /*延时50us*/
244 1 for(j=0;j<8;j++) /*发送8位数据*/
245 1 {
246 2 sent_buf=sent_buf<<1; /*从数据最高位开始,将要发发送的数据位移入进位位CY*/
247 2 DIO=CY; /*数据位送数据线*/
248 2 CLK=1; /* 置SPI时钟线为高*/
249 2 delay (10); /*延时10us*/
250 2 CLK=0; /* 置SPI时钟线为低,发送完1位数据*/
251 2 delay (10);/*延时10us*/
252 2 }
253 1 DIO=0;//为何dio清零??
254 1 }
255
256 void delay(unsigned char time) //延时
257 {
258 1 unsigned char j;
259 1 for(j=0;j<time;j++);
260 1 }
261
262
263 void display(unsigned char k)reentrant //显示
264 {
265 1 CS=1;
266 1 sent(0xc8+k);
267 1 sent(dispbuff[k]);
268 1 CS=1;
269 1
270 1 }
271
272 void transkey1(void) //将所设定的数值转化为控制字(10进制转16进制)
273 { unsigned char y;
274 1 control=0;
275 1 for(y=0;y<i;y++)
276 1 {
277 2 control=control*10;
278 2 control=control+keybuf[y];
279 2 }
280 1 if(control>2000)
281 1 control=2000;
282 1 }
283
284 void dis_control(unsigned char keycontrol)reentrant //控制显示函数(可再入)
285 {
286 1 sent(keycontrol);
287 1 CS=1;
288 1 }
289
290
291 void dacconvent(void)reentrant //da转换采用ldac/=0的接法,先发送低八位数据,再发送高八位数据
292 {
293 1 unsigned int voltage; //电流变量
294 1 unsigned char nh4,nl8;
295 1 voltage=control*2;
296 1 nh4=voltage/256;
297 1 nl8=voltage%256;
298 1 max530_ad=0x0000; ; //cs0地址片选(高四位)
299 1 *max530_ad=nl8;
300 1 max530_ad=0x0003; //cs0地址片选(低八位)
301 1 *max530_ad=nh4;
302 1 }
C51 COMPILER V7.07 DC_CURRENT_SOUCE 09/10/2005 19:28:46 PAGE 6
303
304 void xiuzheng(void) //对电流的误差进行分段修正,让电流更加准确
305 {
306 1
307 1 }
308
309
310
311
312
313
314
315
316
317
318
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1422 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 26 10
IDATA SIZE = ---- ----
BIT SIZE = 2 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -