thanvankien
17-01-2012, 04:11 PM
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 :
#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;
}
}
}
}}
Chương Trình :
#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;
}
}
}
}}