?? pump.lst
字號:
346 1 for(i=0;i<8;i++)
347 1 { if((data1&0x01)==0x01)
348 2 lcd2wbit(1);
349 2 else
350 2 lcd2wbit(0);
351 2 data1>>=1;
352 2 }
353 1 }
354 /**********************************************************************************************
355 函數:void lcdwd1(void)
356 說明:LCD4段數據傳輸函數
357 ***********************************************************************************************/
358 void lcd2wd1(void)
359 { uchar i;
360 1 for(i=0;i<5;i++)
361 1 {lcd2wd(l_data[i]);
362 2 } delay(1);}
363 /**********************************************************************************************
364 函數:void l2_set(void)
365 說明:各段顯示數據設置,若存在小數點,則相應位的顯示數據改變
366 ***********************************************************************************************/
367 void l2_set(void)
368 {uchar i;
369 1 l_data[0]=0xff;
370 1 if(Fluxdrop_Flag) //判斷是流量還是滴數模式
371 1 Point_Flag=0xff;
372 1 else
373 1 Point_Flag=2;
374 1 for(i=1;i<5;i++)
375 1 {l_data[i]=lcd_data[temp2[i-1]];
376 2 }
C51 COMPILER V8.01 PUMP 09/19/2006 11:35:54 PAGE 11
377 1 // if(Point_Flag!=0xff)
378 1 // l_data[(Point_Flag+1)]=l_data[(Point_Flag+1)]&0x7F;
379 1 }
380 /**********************************************************************************************
381 函數:void display2(void)
382 說明:顯示設置數據
383 ***********************************************************************************************/
384 void display2(void)
385 {l2_set();
386 1 lcd2wd1();
387 1 delay(Time_50ms);
388 1 WDTCN=0xA5;
389 1 delay(Time_50ms);
390 1 WDTCN=0xA5;
391 1 delay(Time_50ms);
392 1 WDTCN=0xA5;
393 1 delay(Time_50ms);
394 1 WDTCN=0xA5;
395 1 }
396 /**********************************************************************************************
397 函數:void noplay2(void)
398 說明:為實現閃爍,需要一段時間空白顯示
399 ***********************************************************************************************/
400 void noplay2(void)
401 {uchar i;
402 1 for(i=1;i<6;i++)
403 1 l_data[i]=0xff;
404 1 lcd2wd1();
405 1 delay(Time_50ms);
406 1 WDTCN=0xA5;
407 1 delay(Time_50ms);
408 1 WDTCN=0xA5;
409 1 delay(Time_50ms);
410 1 WDTCN=0xA5;
411 1 delay(Time_50ms);
412 1 WDTCN=0xA5;
413 1 }
414
415 /**********************************************************************************************
416 函數:void SM_Set(void)
417 說明:電機工作方式和初始狀態設置
418 ***********************************************************************************************/
419 void SM_Set(void)
420 { DAC0_Set();
421 1 SM_RST=0;
422 1 nop(5);
423 1 SM_RST=1;
424 1 nop(5);
425 1 SM_MODE=1;
426 1 SM_CW=1;
427 1 nop(5);
428 1 }
429 /**********************************************************************************************
430 函數:void Timer0_Set(void)
431 說明:定時器T0設置,用于電機PWM控制脈沖的產生,采用中斷方式
432 ***********************************************************************************************/
433 void T0_Set(void)
434 {
435 1 TMOD=0x51;
436 1 TL0=((-PWM_Width)&0xff);
437 1 TH0=((-PWM_Width>>8)&0xff);
438 1 TR0=1;
C51 COMPILER V8.01 PUMP 09/19/2006 11:35:54 PAGE 12
439 1 }
440 /**********************************************************************************************
441 函數:void Timer0_ISR(void)
442 說明:定時器T0中斷服務函數,當驅動步進電機的PWM頻率比較小,延遲時間比較長的時候,在中斷中進行
443 時間累積,達到一定時間后,變換驅動脈沖的電平值
444 ***********************************************************************************************/
445 void T0_ISR(void) interrupt 1
446 { TR0=0;
447 1 TL0=((-PWM_Width)&0xff);
448 1 TH0=((-PWM_Width>>8)&0xff);
449 1 TR0=1;
450 1 BUFFER++;
451 1 if(BUFFER==Buffer_NUM)
452 1 { BUFFER=0;
453 2 SM_CLK1=!SM_CLK1;
454 2 }
455 1 All_Pulse--;
456 1 if(All_Pulse==0)
457 1 { SR_Flag=0;
458 2 SM_SR();
459 2 }
460 1 }
461 /**********************************************************************************************
462 函數:void SM_SR(void)
463 說明:電機運行控制,當運行標志為1時,電機運轉,反之停轉
464 ***********************************************************************************************/
465 void SM_SR(void)
466 { if(SR_Flag)
467 1 {
468 2 T0_Set();
469 2 SM_RST=1;
470 2 nop(5);
471 2 SM_EN=1;
472 2 // nop(5);
473 2 // ET1=1;
474 2 // EIE2=0x01;
475 2 // TR1=1;
476 2 // TR2=1;
477 2 // TMR3CN=0x04;
478 2 }
479 1 else
480 1 { SM_EN=0;
481 2 SM_RST=0;
482 2 TR0=0;
483 2 // ET0=0;
484 2 TR1=0;
485 2 TR2=0;
486 2 TMR3CN=0x00;
487 2 }
488 1 }
489 /**********************************************************************************************
490 函數:void DAC0_Set(void)
491 說明:設置斬波驅動的比較電壓,取內部電壓基準2.4V,給DAC偏置,考慮電流為400mA,取樣電阻阻值為0.7,
492 目前取0.26V,采用12位分辨率時,應先設置DAC0L,后設置DAC0H
493 ***********************************************************************************************/
494 void DAC0_Set(void)
495 { REF0CN=0x03;
496 1 DAC0L=(0xff&DAC0_DATA);
497 1 DAC0H=(0xff&(DAC0_DATA>>8));
498 1 DAC0CN=0x80;
499 1 }
500 /**********************************************************************************************
C51 COMPILER V8.01 PUMP 09/19/2006 11:35:54 PAGE 13
501 函數:void DAC1_Set(void)
502 說明:設置LM306P的比較電壓,取內部電壓基準2.4V,給DAC偏置,暫取1.8V,初值十六進制為0x0c00,采用
503 12位分辨率時,應先設置DAC1L,后設置DAC1H
504 ***********************************************************************************************/
505 void DAC1_Set(void)
506 { REF0CN=0x03;
507 1 DAC1L=(0xff&DAC1_DATA);
508 1 DAC1H=(0xff&(DAC1_DATA>>8));
509 1 DAC1CN=0x80;
510 1 }
511 /**********************************************************************************************
512 函數:void ADC_Set(void)
513 說明:取內部參考電壓2.4V,當檢測到電源電壓大于2.28V,或是小于1.93V時,提示電源電壓低于限定值,
514 停機,報警。選用通道0,單端輸入方式,窗口比較模式.采樣后結果為2.04,電壓表測量為2.06V,
515 還可以
516 ***********************************************************************************************/
517 void ADC_Set(void)
518 { AMX0CF = 0x00;
519 1 AMX0SL = 0x00;
520 1 ADC0CF = 0x60;
521 1 ADC0CN = 0x48;
522 1 ADC0LTH = 0x0C;
523 1 ADC0LTL = 0xA1;
524 1 ADC0GTH = 0x0F;
525 1 ADC0GTL = 0x33;
526 1 ADCEN=1;
527 1 }
528 /**********************************************************************************************
529 函數:void ADC_ISR(void) interrupt 8
530 說明:ADC中斷函數,當電源電壓低于正常值時,停機,報警 (模擬電源需要關閉,不知是什么意思)
531 ***********************************************************************************************/
532 void ADC_ISR(void) interrupt 8
533 { EIE1=0x00;
534 1 Lpower_LED=0;
535 1 SR_Flag=0;
536 1 SM_SR();
537 1 }
538 /**********************************************************************************************
539 函數:void T1_Set(void)
540 說明:定時器T1寄存器設置函數
541 ***********************************************************************************************/
542 void T1_Set(void)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -