#include <16f877A.h>
#include <def_877A.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
/* ĐỊNH NGHĨA CÁC CHÂN VÀ PORT */
#define DIR_LEFT RC0
#define EN_LEFT RC1
#define DIR_RIGHT RC3
#define EN_RIGHT RC2
#define SENSOR PORTD
/* KHAI BÁO CÁC CHƯƠNG TRÌNH CON */
void motor_left_forward();
void motor_left_reverse();
void motor_left_stop();
void motor_right_forward();
void motor_right_reverse();
void motor_right_stop();
void forward();
void reverse();
void stop();
void turn_left();
void turn_right();
/* CÁC CHƯƠNG TRÌNH CON */
// Động cơ trái chạy thuận
void motor_left_forward()
{
DIR_LEFT=1; // chiều thuận
EN_LEFT=1; // cho phép chạy
} // Động cơ trái chạy ngược
void motor_left_reverse()
{
DIR_LEFT=0; // chiều ngược
EN_LEFT=1; // cho phép chạy
} // Động cơ trái dừng
void motor_left_stop()
{
EN_LEFT=0; // không cho phép chạy
} // Động cơ phải chạy thuận
void motor_right_forward()
{
DIR_RIGHT=1;// chiều thuận
EN_RIGHT=1; // cho phép chạy
} // Động cơ phải chạy ngược
void motor_right_reverse()
{
DIR_RIGHT=0;// chiều ngược
EN_RIGHT=1; // cho phép chạy
} // Động cơ phải dừng
void motor_right_stop()
{
EN_RIGHT=0; // không cho phép chạy
} // Chạy thẳng
void forward()
{
motor_left_forward();
motor_right_forward();
}
// Chạy lùi
void reverse()
{
motor_left_reverse();
motor_right_reverse();
} // Dừng
void stop()
{
motor_left_stop();
motor_right_stop();
} // Quay trái
void turn_left()
{
motor_left_forward();
motor_right_reverse(); // hoặc motor_right_stop();
} // Quay phải
void turn_right()
{
motor_left_reverse(); // hoặc motor_left_stop();
motor_right_forward();
}
/* CHƯƠNG TRÌNH CHÍNH */
void main ()
{
TRISC=0x00; // PORTC là ngõ ra ( động cơ)
TRISD=0x00; // PORTD là ngõ vào (cảm biến quang)
PORTC=0x00; // Khởi tạo giá trị ban đầu 0x00 cho PORTC
while(1)
{
switch (SENSOR)
{
case 0b00011000: forward(); break;
case 0b00001100: turn_left(); break;
case 0b00000110: turn_left(); break;
case 0b00000011: turn_left(); break;
case 0b00000001: turn_left(); break;
case 0b00110000: turn_right(); break;
case 0b01100000: turn_right(); break;
case 0b11000000: turn_right(); break;
case 0b10000000: turn_right(); break;
}}
}
chương trình dịch báo lỗi:
Error 12 Undefined identifier RC0
Error 12 Undefined identifier TRISC
Error 12 Undefined identifier PORTC
#include <def_877A.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
/* ĐỊNH NGHĨA CÁC CHÂN VÀ PORT */
#define DIR_LEFT RC0
#define EN_LEFT RC1
#define DIR_RIGHT RC3
#define EN_RIGHT RC2
#define SENSOR PORTD
/* KHAI BÁO CÁC CHƯƠNG TRÌNH CON */
void motor_left_forward();
void motor_left_reverse();
void motor_left_stop();
void motor_right_forward();
void motor_right_reverse();
void motor_right_stop();
void forward();
void reverse();
void stop();
void turn_left();
void turn_right();
/* CÁC CHƯƠNG TRÌNH CON */
// Động cơ trái chạy thuận
void motor_left_forward()
{
DIR_LEFT=1; // chiều thuận
EN_LEFT=1; // cho phép chạy
} // Động cơ trái chạy ngược
void motor_left_reverse()
{
DIR_LEFT=0; // chiều ngược
EN_LEFT=1; // cho phép chạy
} // Động cơ trái dừng
void motor_left_stop()
{
EN_LEFT=0; // không cho phép chạy
} // Động cơ phải chạy thuận
void motor_right_forward()
{
DIR_RIGHT=1;// chiều thuận
EN_RIGHT=1; // cho phép chạy
} // Động cơ phải chạy ngược
void motor_right_reverse()
{
DIR_RIGHT=0;// chiều ngược
EN_RIGHT=1; // cho phép chạy
} // Động cơ phải dừng
void motor_right_stop()
{
EN_RIGHT=0; // không cho phép chạy
} // Chạy thẳng
void forward()
{
motor_left_forward();
motor_right_forward();
}
// Chạy lùi
void reverse()
{
motor_left_reverse();
motor_right_reverse();
} // Dừng
void stop()
{
motor_left_stop();
motor_right_stop();
} // Quay trái
void turn_left()
{
motor_left_forward();
motor_right_reverse(); // hoặc motor_right_stop();
} // Quay phải
void turn_right()
{
motor_left_reverse(); // hoặc motor_left_stop();
motor_right_forward();
}
/* CHƯƠNG TRÌNH CHÍNH */
void main ()
{
TRISC=0x00; // PORTC là ngõ ra ( động cơ)
TRISD=0x00; // PORTD là ngõ vào (cảm biến quang)
PORTC=0x00; // Khởi tạo giá trị ban đầu 0x00 cho PORTC
while(1)
{
switch (SENSOR)
{
case 0b00011000: forward(); break;
case 0b00001100: turn_left(); break;
case 0b00000110: turn_left(); break;
case 0b00000011: turn_left(); break;
case 0b00000001: turn_left(); break;
case 0b00110000: turn_right(); break;
case 0b01100000: turn_right(); break;
case 0b11000000: turn_right(); break;
case 0b10000000: turn_right(); break;
}}
}
chương trình dịch báo lỗi:
Error 12 Undefined identifier RC0
Error 12 Undefined identifier TRISC
Error 12 Undefined identifier PORTC