📄 driver0425.lst
字号:
234 3 }break;
235 2 case 2: {
236 3 v51=start_v51; //500
237 3 SENS=5; //0.01875mm 0.1v
238 3 }break;
239 2 case 3: {
240 3 v51=start_v51; //500
C51 COMPILER V7.06 DRIVER0425 06/03/2005 15:08:33 PAGE 5
241 3 SENS=10; //0.0375mm 0.2v
242 3 }break;
243 2 case 4: {
244 3 v51=39; //592
245 3 SENS=16; //0.06mm 0.3v
246 3 }break;
247 2 case 5: {
248 3 v51=30; //778
249 3 SENS=21; //0.08mm 0.4v
250 3 }break;
251 2 case 6: {
252 3 v51=23; //1000
253 3 SENS=27; //0.1mm 0.5v
254 3 }break;
255 2 case 7: {
256 3 v51=19; //1185
257 3 SENS=32; //0.12mm 0.6v
258 3 }break;
259 2 case 8: {
260 3 v51=16; //1407
261 3 SENS=38; //0.14mm 0.7v
262 3 }break;
263 2 case 9: {
264 3 v51=13; //1740
265 3 SENS=47; //0.16mm 0.8v
266 3 }break;
267 2 case 10:{
268 3 v51=11; //2000
269 3 SENS=54; //0.2mm 1v
270 3 }break;
271 2 default:{
272 3 v51=127;
273 3 SENS=5;
274 3 }break;
275 2 }
276 1 }
277
278 void com_type()
279 {
280 1 switch(rbuffer[2])
281 1 {
282 2 case com_calling: called=1;break;
283 2 case com_motor_stop: { //停止点动
284 3 if(motor_stop==0)
285 3 motor_stop=1;
286 3 }break;
287 2 case com_start: start=1;break; //启动
288 2 case com_decrease: {
289 3 if(avc_ok==1)
290 3 {
291 4 PWM0=0;
292 4 IEN1=IEN1&0XFB; //禁止CT2
293 4 IEN1=IEN1&0XF7; //禁止CT3
294 4 avc=0;
295 4 avc_ok=0;
296 4 c_avc=0;
297 4 }
298 3 if(osc_ok==1)
299 3 {
300 4 if(osc_add>osc_dec||osc_add==osc_dec)
301 4 {
302 5 delt_a41=pp.da41*(osc_add-osc_dec);
C51 COMPILER V7.06 DRIVER0425 06/03/2005 15:08:33 PAGE 6
303 5 const0=const0+delt_a41*60+pp.v41*(pp.t42_l+pp.t42_r)/2;
304 5 }
305 4 else
306 4 {
307 5 delt_a41=pp.da41*(osc_dec-osc_add);
308 5 const0=const0-delt_a41*60+pp.v41*(pp.t42_l+pp.t42_r)/2;
309 5 }
310 4 last_out1=out1;
311 4 c_decrease=(unsigned char)(const1/const0)+1;
312 4 if(c_decrease>=8&&c_decrease<=12)
313 4 osc_adjudge=1;
314 4 else if(c_decrease<=13)
315 4 osc_adjudge=2;
316 4 else if(c_decrease<=25)
317 4 osc_adjudge=3;
318 4 else
319 4 osc_adjudge=4;
320 4 c_decrease=c_decrease+osc_adjudge;
321 4 }
322 3 decrease=1;
323 3 }break;
324 2 // case com_decrease_ok: decrease_ok=1;break;
325 2 case com_osc: start_osc=1;break; //启动CT0
326 2 case com_osc_l: {
327 3 if(work==0) //点动
328 3 {
329 4 if(osc_l==0)
330 4 osc_l=1;
331 4 }
332 3 else
333 3 {
334 4 if(center_excursion==0&&judge_ok==0)
335 4 {
336 5 excursion_dir=0;
337 5 center_excursion=1;
338 5 }
339 4 }
340 3 }break;
341 2 case com_osc_r: {
342 3 if(work==0) //点动
343 3 {
344 4 if(osc_r==0)
345 4 osc_r=1;
346 4 }
347 3 else
348 3 {
349 4 if(center_excursion==0&&judge_ok==0)
350 4 {
351 5 excursion_dir=1;
352 5 center_excursion=1;
353 5 }
354 4 }
355 3 }break;
356 2
357 2 case com_breadth_add: {
358 3 if(osc_ok==1&&osc==0)
359 3 {
360 4 osc=1; //启动横摆
361 4 osc_change=1;
362 4 }
363 3 }break;
364 2 case com_breadth_dec: {
C51 COMPILER V7.06 DRIVER0425 06/03/2005 15:08:33 PAGE 7
365 3 if(osc_ok==1&&osc==0)
366 3 {
367 4 osc=1; //启动横摆
368 4 osc_change=0;
369 4 }
370 3 }break;
371 2 case com_avc: start_avc=1;break;
372 2 case com_avc_up: if(avc_up==0)
373 2 avc_up=1;break;
374 2 case com_avc_down: if(avc_down==0)
375 2 avc_down=1;break;
376 2 case com_stop_avc: stop_avc=1;break;
377 2 case com_pgj: pgj=1;break;
378 2 case com_lift: lift=1;break;
379 2 case com_goto_begin: to_begin=1;break;
380 2 case com_need_para: if(need_para==0)
381 2 need_para=1;break;
382 2 case com_ask_lift_ok: ask_lift_ok=1;break;
383 2 case com_lift_ok: lift_ok=1;break;
384 2 case com_demand: demand=1;break;
385 2 default: break;
386 2 }
387 1 }
388
389 void data_type() //对接收到的数据分辨类型
390 {
391 1 switch(rbuffer[1])
392 1 {
393 2 case command: com_type();break;
394 2 // case answer: R_ANSW=rbuffer[1];break;
395 2 case infor: {
396 3 if(rbuffer[1]==com_sector)
397 3 {
398 4 sector=1;
399 4 if(in_sector==0)
400 4 in_sector=1;
401 4 nonce_sec=rbuffer[3];
402 4 }
403 3 }break;
404 2 case parameter: {
405 3 if(rbuffer[2]==7)
406 3 pp.k1=rbuffer[4];
407 3 }break;
408 2 case p_out_sec: receive_p_out=1;break;
409 2
410 2 case p_in_sec: {
411 3 nonce_sec=rbuffer[2];
412 3 receive_p_in=1;
413 3 }break;
414 2 default: break;
415 2 }
416 1 }
417
418 void T0_INT (void) interrupt 1 //横摆起始时间(低速时间)
419 {
420 1 TF0=0;
421 1 c_t0++;
422 1 if(c_t0==10) //1536us
423 1 {
424 2 TR0=0;
425 2 COM=0X36;
426 2 COUNT0=out0%256;
C51 COMPILER V7.06 DRIVER0425 06/03/2005 15:08:33 PAGE 8
427 2 COUNT0=out0/256;
428 2 c_t0=0;
429 2 }
430 1 }
431
432 void T1_INT (void) interrupt 3
433 {
434 1 c_t1++;
435 1 if(send==1)
436 1 {
437 2 if(c_t1==7)
438 2 {
439 3 S0BUF=sbuffer[POINTER0];
440 3 c_t1=0;
441 3 }
442 2 }
443 1 else
444 1 {
445 2 if(c_t1==100)
446 2 {
447 3 TR1=0;
448 3 overtime=1;
449 3 }
450 2 }
451 1 }
452
453 void TR_INT (void) interrupt 4 //串行口中断
454 { //关中断
455 1 if(TI==1) //发送完成
456 1 {
457 2 TI=0;
458 2 POINTER0++;
459 2 if(POINTER0<byte_nums-1)
460 2 SSUM=SSUM+sbuffer[POINTER0]; //6个数据字节求和
461 2 else
462 2 sbuffer[byte_nums-1]=SSUM+sbuffer[0]; //数据和加地址生成校验码
463 2 if(POINTER0==byte_nums)
464 2 REN=1;
465 2 }
466 1
467 1 if(RI==1) //接收完成
468 1 {
469 2 RI=0;
470 2 POINTER1++; //接收缓冲指针加1
471 2 rbuffer[POINTER1-1]=S0BUF; //从接收缓冲读出数据
472 2 if(rbuffer[0]==M_OA||rbuffer[0]==M_ALL)
473 2 {
474 3 SM2=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -