Ðăng Nhập

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


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;
}
}
}
}}

ailatoi147
21-01-2012, 02:58 PM
chào các anh chị!
em mới bắt đầu học pic, và bắt đầu với pic 16f877a và dang thử làm một vài ví dụ về lcd điều khiển 4 bit.
em đã tham khảo rất nhiều nhưng chưa hiểu bao nhiêu. nên mong được các anh chị giúp đỡ.
chả là em có cái màn hình lcd 16*2, em đã viết chương trinh mô phỏng ngon lành thế nhưng khi làm mạch thỳ nó lại không chạy. em gửi luôn bài lên đây, mong được mọi người chỉ bảo.


http://www.mediafire.com/?it9fkkwpiwp7ysc