?? 無刷0621.lst
字號(hào):
386 1 //--查霍爾是否更新--------
387 1 if(hehc_bl!=hehc) //判斷霍爾是否變化,成立執(zhí)行語句1后退出
388 1 {hehc_bl=hehc; //語句2,霍爾變化存入新的數(shù)據(jù)到變量中
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 //**********電流自動(dòng)調(diào)整函數(shù)******************************************************
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 //********************轉(zhuǎn)把工作狀態(tài)分析函數(shù)****************************************
418 //函數(shù)出口--pwm_bl里有查表后數(shù)據(jù),PWM輸出程序直接讀出放入PWM占空比寄存器
419 //ccap0h,ccap1h,ccap2h中即可
420 //********************************************************************************
421 void zb_fx(void)
422 { //---連續(xù)3次測(cè)量轉(zhuǎn)把電壓--------
423 1 set_p13_adc(); //調(diào)轉(zhuǎn)把電壓轉(zhuǎn)換通道
424 1 get_ad_dy(); //第一次測(cè)量轉(zhuǎn)把電壓
-
-
-
C51 COMPILER V6.12 _轤_0621 06/28/2005 07:25:16 PAGE 8
-
-
-
-
-
-
-
-
-
-
-
-
-
-
425 1 pwm_bl=pwmout[adc_data]; //在數(shù)組中查出對(duì)應(yīng)的AD轉(zhuǎn)換PWM值
426 1 if(pwm_bl==1) //為1成立執(zhí)行大的語句1后退出,不成立執(zhí)行語句2后退出
427 1 //語句1,轉(zhuǎn)把電壓等于1說明轉(zhuǎn)把在1.3v以下或4.5v以上停止輸出閃LED
428 1 {
429 2 hehc_bl=0; //霍爾存儲(chǔ)舊數(shù)據(jù)的變量及時(shí)清0否則很難起動(dòng)
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; //關(guān)測(cè)速定時(shí)器,定時(shí)計(jì)數(shù)器清0,轉(zhuǎn)速度計(jì)數(shù)器清0
434 2 pwmal=0;pwmbl=0;pwmcl=0; //關(guān)3個(gè)下橋
435 2 timebj=15; //定時(shí)器1中斷12次閃爍一次LED
436 2 TR1=1;zbyx_bz=0; //開定時(shí)器1-LED閃爍,轉(zhuǎn)把歸0標(biāo)志位為0,pwm輸出就無效
437 2 }
438 1 else
439 1 //語句2,轉(zhuǎn)把電壓不等于1說明在1.3v-4.5v之間正常行駛數(shù)據(jù)
440 1 {led=1;zbyx_bz=1;TR0=1;} //關(guān)定時(shí)器1指示燈,轉(zhuǎn)把有效標(biāo)志位為1,pwm輸出有效
441 1 }
442 //**********************軟啟動(dòng)************************************
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 //********************防盜鎖電機(jī)函數(shù)**********************************************
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) //多分支語句根據(jù)霍爾位置輸出對(duì)應(yīng)節(jié)拍
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刷新參數(shù)開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刷新參數(shù)開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刷新參數(shù)開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刷新參數(shù)開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刷新參數(shù)開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刷新參數(shù)開b下橋a上橋
521 4 // }
522 4 }
523 3 }
524 2 }
525 1 }
526 //********************主函數(shù)******************************************************
527 main()
528 {
529 1 sd_csh(); //調(diào)上電初始化函數(shù)
530 1 qy_jc(); //調(diào)欠壓檢測(cè)函數(shù)
531 1 sd_ffc(); //調(diào)上電防飛車函數(shù),等待歸0后才往下執(zhí)行
532 1 he_gzjc(); //調(diào)霍爾故障檢測(cè)函數(shù),無故障才往下執(zhí)行
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();}//如果防盜口為低電平執(zhí)行防盜程序
537 2 //--------------
538 2 else //否則執(zhí)行正常程序
539 2 {
540 3 if(dz_bz1!=1){zb_fx();} //1>調(diào)轉(zhuǎn)把分析函數(shù)
541 3 if(zbyx_bz==1) //如果轉(zhuǎn)把標(biāo)志位為1轉(zhuǎn)把有效,就執(zhí)行語句體否則不執(zhí)行
542 3 {dl_tz();dgdz();
543 4 he_gzjc();pwm_out();
544 4 } //語句體,調(diào)霍爾分析函數(shù),調(diào)PWM輸出函數(shù)
545 3 sc_stop(); //調(diào)剎車斷電檢測(cè)函數(shù)
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)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -