Thông báo

Collapse
No announcement yet.

các pro giúp em với! dùng pic 18f4520 cho lập trình hai động cơ

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • các pro giúp em với! dùng pic 18f4520 cho lập trình hai động cơ

    em lập trình cho hai động cơ, nhưng báo lỗi nhiều qua, mà không biết lỗi ở đâu, ai giúp em với, thanks

    Chương Trình :
    Code:
    #include <18f4520.h>
    #include <def_4520.h>
    #fuses HS,NOWDT,NOPROTECT,NOLVP
    #use delay(clock=20000000)
    
    void main()
    {
    
       setup_adc_ports(NO_ANALOGS|VSS_VDD);
       setup_adc(ADC_OFF|ADC_TAD_MUL_0);
       setup_psp(PSP_DISABLED);
       setup_spi(SPI_SS_DISABLED);
       setup_wdt(WDT_OFF);
       setup_timer_0(RTCC_INTERNAL);
       setup_timer_1(T1_DISABLED);
       setup_timer_2(T2_DISABLED,0,1);
       setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
       setup_comparator(NC_NC_NC_NC);
       setup_vref(FALSE);
    //Setup_Oscillator parameter not selected from Intr Oscillator Config tab
    
       // TODO: USER CODE!!
    
    #define pwm1 output_high(pin_d0); delay_ms(70); output_low(pin_d0); delay_ms(30);
    #define pwm2 output_high(pin_d2); delay_ms(70); output_low(pin_d2); delay_ms(30);
    #define DC1_1 output_high(pin_d1)
    #define DC1_0 output_low(pin_d1)
    #define DC2_1 output_high(pin_d3)
    #define DC2_0 output_low(pin_d3)
    #define PHIM_BAM  PORTA
    
    /* KHAI BÁO CÁC CHUONG TRÌNH CON */
    {void motor_left_forward();
    void motor_left_reverse();
    void motor_right_forward();
    void motor_right_reverse();
    void forward();
    void reverse();
    void turn_left();
    void turn_right();
    
    
    /* CAC CHUONG TRINH CON */
    // DC TRAI THUAN
    void motor_left_forward()
    {
      int8 i=100;
      DC1_1; // set xung dieu khien =1;
      while(i--){pwm1;}
       }
    // DC TRAI NGUOC
    void motor_left_reverse()
    {
      int8 k=100;
      DC1_0 ;   // reset xung dieu khien ve gtri 0
      while(k--){pwm1;}
      }
    // DC PHAI THUAN
    void motor_right_forward()
    {
      int8 l=100;
      DC2_1 ;   // reset xung dieu khien ve gtri 0
      while(l--){pwm2;}
     
    }
    // DC PHAI CHAY NGUOC
    void motor_right_reverse()
    {
      int8 m=100;
      DC2_0 ;   // reset xung dieu khien ve gtri 0
      while(m--){pwm2;}
      }
    // TIEN
    void forward()
    {
    motor_left_forward();
    motor_right_forward();
    }
    // LUI
    void reverse()
    {
    motor_left_reverse();
    motor_right_reverse();
    }
    // QUAY TRAI
    void turn_left()
    {
    motor_left_forward();
    
    }
    // QUAY PHAI
    void turn_right()
    {
    motor_right_forward();
    }
    /* CHUONG TRINH CHINH */
    void main ()
    {
    TRISD=0x00; // PORTD là ngõ ra ( DC)
    TRISA=0x00; // PORTA là ngõ vào (PHIM BAM)
    PORTD=0x00; // KHOI TAO GIA TRI BAN DAU 0x00 cho PORTD
    while(1)
    {
    switch (PHIM_BAM)
    {
    case 0b10000000: forward(); break;
    case 0b01000000: reverse(); break;
    case 0b11000000: turn_left(); break;
    case 0b00100000: turn_right(); break;
    }
    }
    }
    }}

  • #2
    ai có biết giúp em với em đang cần gấp

    Comment


    • #3
      mình cũng mới tìm hiểu pic. ko hiểu rõ lắm, nhưng bạn khai báo #fuses như trên với pic 18f4520 ko chạy dk
      thử cái này xem sa0
      #FUSES NOWDT //No Watch Dog Timer
      #FUSES WDT128 //Watch Dog Timer uses 1:128 Postscale
      #FUSES HS //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
      #FUSES NOPROTECT //Code not protected from reading
      #FUSES NOBROWNOUT //No brownout reset
      #FUSES BORV20 //Brownout reset at 2.0V
      #FUSES NOPUT //Power Up Timer
      #FUSES NOCPD //No EE protection
      #FUSES NOSTVREN //Stack full/underflow will not cause reset
      #FUSES NODEBUG //No Debug mode for ICD
      #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
      #FUSES NOWRT //Program memory not write protected
      #FUSES NOWRTD //Data EEPROM not write protected
      #FUSES NOIESO //Internal External Switch Over mode disabled
      #FUSES NOFCMEN //Fail-safe clock monitor disabled
      #FUSES NOPBADEN //PORTB pins are configured as digital I/O on RESET
      #FUSES NOWRTC //configuration not registers write protected
      #FUSES NOWRTB //Boot block not write protected
      #FUSES NOEBTR //Memory not protected from table reads
      #FUSES NOEBTRB //Boot block not protected from table reads
      #FUSES NOCPB //No Boot Block code protection
      #FUSES NOMCLR //Master Clear pin used for I/O
      #FUSES NOLPT1OSC //Timer1 configured for low-power operation
      #FUSES NOXINST //Extended set extension and Indexed Addressing mode disabled (Legacy mode)

      Comment

      Về tác giả

      Collapse

      thanvankien Tìm hiểu thêm về thanvankien

      Bài viết mới nhất

      Collapse

      Đang tải...
      X