📄 无刷0621.lst
字号:
386 1 //--查霍尔是否更新--------
387 1 if(hehc_bl!=hehc) //判断霍尔是否变化,成立执行语句1后退出
388 1 {hehc_bl=hehc; //语句2,霍尔变化存入新的数据到变量中
389 2 he_cs_sj1=hehc;he_cs_bz1=1;
390 2 if(he_cs_bz1==1){he_cs_sj2=hehc;he_cs_bz2=1;}
391 2 if(he_cs_bz2==1){he_cs_sj3=hehc;he_cs_bz3=1;}
392 2 //----------------------------------------
393 2 if(he_cs_bz1==1)
394 2 {if(he_cs_bz2==1)
395 3 {if(he_cs_bz3==1)
396 4 {if(he_cs_sj1&he_cs_sj2&he_cs_sj3!=0x00)
397 5 {zs_js++;he_cs_bz1=0;he_cs_bz2=0;he_cs_bz3=0;}
398 5 }
399 4 }
400 3 }
401 2 //--------------------
402 2 }
403 1
404 1 }
405 //**********电流自动调整函数******************************************************
406 void dl_tz(void)
407 { set_p17_adc();
408 1 do
409 1 {get_ad_dy();}
410 1 while(adc_data>=20);
411 1 {pwm_bls=adc_data*10+pwm_bl;
412 2 if(pwm_bls>=241){pwm_bls=241;}
413 2 he_gzjc();pwm_out();zb_fx();dgdz();
414 2 }
415 1 pwm_bls=pwm_bl;
416 1 }
417 //********************转把工作状态分析函数****************************************
418 //函数出口--pwm_bl里有查表后数据,PWM输出程序直接读出放入PWM占空比寄存器
419 //ccap0h,ccap1h,ccap2h中即可
420 //********************************************************************************
421 void zb_fx(void)
422 { //---连续3次测量转把电压--------
423 1 set_p13_adc(); //调转把电压转换通道
424 1 get_ad_dy(); //第一次测量转把电压
-
-
-
C51 COMPILER V6.12 _轤_0621 06/28/2005 07:25:16 PAGE 8
-
-
-
-
-
-
-
-
-
-
-
-
-
-
425 1 pwm_bl=pwmout[adc_data]; //在数组中查出对应的AD转换PWM值
426 1 if(pwm_bl==1) //为1成立执行大的语句1后退出,不成立执行语句2后退出
427 1 //语句1,转把电压等于1说明转把在1.3v以下或4.5v以上停止输出闪LED
428 1 {
429 2 hehc_bl=0; //霍尔存储旧数据的变量及时清0否则很难起动
430 2 pca_pwm0=0x03; //停止所有输出
431 2 pca_pwm1=0x03;
432 2 pca_pwm2=0x03;
433 2 TR0=0;zs_ds_js=0;zs_js=0; //关测速定时器,定时计数器清0,转速度计数器清0
434 2 pwmal=0;pwmbl=0;pwmcl=0; //关3个下桥
435 2 timebj=15; //定时器1中断12次闪烁一次LED
436 2 TR1=1;zbyx_bz=0; //开定时器1-LED闪烁,转把归0标志位为0,pwm输出就无效
437 2 }
438 1 else
439 1 //语句2,转把电压不等于1说明在1.3v-4.5v之间正常行驶数据
440 1 {led=1;zbyx_bz=1;TR0=1;} //关定时器1指示灯,转把有效标志位为1,pwm输出有效
441 1 }
442 //**********************软启动************************************
443 //dg_rqd()
444 //{dgdz();
445 //if(pwm_bl!=pwm_blj)
446 // {for(pwm_bls=241;pwm_bl!=pwm_bls;pwm_bls--)
447 // {he_gzjc();pwm_out();}pwm_blj=pwm_bl;
448 // }
449 //else
450 // {if(shache_bz==1)
451 // {for(pwm_bls=241;pwm_bl!=pwm_bls;pwm_bls--)
452 // {he_gzjc();pwm_out();}pwm_blj=pwm_bl;shache_bz=0;
453 // }
454 // else
455 // {he_gzjc();pwm_out();}
456 // }
457 //}
458 //********************防盗锁电机函数**********************************************
459 fd_dg()
460 {while(fd==0)
461 1 {
462 2 {int fd_he;
463 3 fd_he=P1&0X07;
464 3 if(fd_he!=fd_hej)
465 3 {fd_hej=fd_he;
466 4 //switch(fd_he) //多分支语句根据霍尔位置输出对应节拍
467 4 // {case 0x01:{
468 4 pca_pwm0=0x03;pca_pwm2=0x03;pwmbl=0;pwmcl=0;
469 4 ccap1h=10;pwmal=1;pca_pwm1=0x00;delay(20);
470 4 pwmal=0;pca_pwm1=0x03;
471 4 pwmal=1;pwmbl=1;pwmcl=1;delay(300);
472 4 //-------
C51 COMPILER V6.12 _轤_0621 06/28/2005 07:25:16 PAGE 9
473 4 //pwmcl=1;pca_pwm0=0x00;delay(1);
474 4 // pwmcl=0;pca_pwm0=0x03;delay(2);
475 4 // break;} //第1拍ccap0h刷新参数开C下桥A上桥
476 4 //-------------------------------------------------------------
477 4 // case 0x03:{pca_pwm0=0x03;pca_pwm1=0x03;pwmbl=0;pwmcl=0;
478 4 // ccap2h=10;pwmal=1;pca_pwm2=0x00;delay(20);
479 4 // pwmal=0;pca_pwm2=0x03;
480 4 // pwmal=1;pwmbl=1;pwmcl=1;delay(200);
481 4 //--------
482 4 // pwmcl=1;pca_pwm1=0x00;delay(1);
483 4 // pwmcl=0;pca_pwm1=0x03;delay(2);
484 4 // break;} //第2拍ccap1h刷新参数开C下桥b上桥
485 4 //-------------------------------------------------------------
486 4 // case 0x02:{pca_pwm0=0x03;pca_pwm1=0x03;pwmal=0;pwmcl=0;
487 4 // ccap2h=10;pwmbl=1;pca_pwm2=0x00;delay(20);
488 4 // pwmbl=0;pca_pwm2=0x03;
489 4 // pwmal=1;pwmbl=1;pwmcl=1;delay(200);
490 4 // //--------
491 4 //pwmal=1;pca_pwm1=0x00;delay(1);
492 4 // //pwmal=0;pca_pwm1=0x03;delay(2);
493 4 // break;} //第3拍ccap1h刷新参数开a下桥b上桥
494 4 //-------------------------------------------------------------
495 4 // case 0x06:{pca_pwm1=0x03;pca_pwm2=0x03;pwmal=0;pwmcl=0;
496 4 // ccap0h=10;pwmbl=1;pca_pwm0=0x00;delay(20);
497 4 // pwmbl=0;pca_pwm0=0x03;
498 4 // pwmal=1;pwmbl=1;pwmcl=1;delay(200);
499 4 //---------
500 4 //pwmal=1;pca_pwm2=0x00;delay(1);
501 4 //pwmal=0;pca_pwm2=0x03;delay(2);
502 4 // break;} //第4拍ccap2h刷新参数开a下桥c上桥
503 4 //-------------------------------------------------------------
504 4 // case 0x04:{pca_pwm1=0x03;pca_pwm2=0x03;pwmal=0;pwmbl=0;
505 4 // ccap0h=10;pwmcl=1;pca_pwm0=0x00;delay(20);
506 4 // pwmcl=0;pca_pwm0=0x03;
507 4 // pwmal=1;pwmbl=1;pwmcl=1;delay(200);
508 4 // //---------
509 4 //pwmbl=1;pca_pwm2=0x00;delay(1);
510 4 //pwmbl=0;pca_pwm2=0x03;delay(2);
511 4 // break;} //第5拍ccap2h刷新参数开b下桥c上桥
512 4 //-------------------------------------------------------------
513 4 // case 0x05:{pca_pwm0=0x03;pca_pwm2=0x03;pwmal=0;pwmbl=0;
514 4 // ccap1h=10;pwmcl=1;pca_pwm1=0x00;delay(20);
515 4 // pwmcl=0;pca_pwm1=0x03;
516 4 // pwmal=1;pwmbl=1;pwmcl=1;delay(200);
517 4 //----------
518 4 // pwmbl=1;pca_pwm0=0x00;delay(1);
519 4 // // pwmbl=0;pca_pwm0=0x03;delay(2);
520 4 // break;} //第6拍ccap0h刷新参数开b下桥a上桥
521 4 // }
522 4 }
523 3 }
524 2 }
525 1 }
526 //********************主函数******************************************************
527 main()
528 {
529 1 sd_csh(); //调上电初始化函数
530 1 qy_jc(); //调欠压检测函数
531 1 sd_ffc(); //调上电防飞车函数,等待归0后才往下执行
532 1 he_gzjc(); //调霍尔故障检测函数,无故障才往下执行
533 1 while(1)
534 1 {
C51 COMPILER V6.12 _轤_0621 06/28/2005 07:25:16 PAGE 10
535 2 qy_jc();
536 2 if(fd==0){fd_hej=P1&0x07;fd_dg();}//如果防盗口为低电平执行防盗程序
537 2 //--------------
538 2 else //否则执行正常程序
539 2 {
540 3 if(dz_bz1!=1){zb_fx();} //1>调转把分析函数
541 3 if(zbyx_bz==1) //如果转把标志位为1转把有效,就执行语句体否则不执行
542 3 {dl_tz();dgdz();
543 4 he_gzjc();pwm_out();
544 4 } //语句体,调霍尔分析函数,调PWM输出函数
545 3 sc_stop(); //调刹车断电检测函数
546 3 }
547 2 //-----------------------
548 2 }
549 1 }
550 //********************************************************************************
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1613 ----
CONSTANT SIZE = 256 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 66 4
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 + -