PDA

View Full Version : giúp em chương trình bị lỗi này với


ngosythuat
30-09-2011, 09:55 PM
#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

chairman_t
30-09-2011, 11:07 PM
vào trong file def_16f877a định nghĩa lại trisc,......

ngosythuat
30-09-2011, 11:37 PM
vào trong file def_16f877a định nghĩa lại trisc,......

định nghĩa thế nào hả anh. anh có thế hướng dẫn cụ thể hơn dc ko ạ

chairman_t
01-10-2011, 11:10 AM
#byte TRISC =0x87
#byte PORTC =0x07
#bit rC0 =0x07.0
chịu khó đọc datasheet mà cày đi chú

ngosythuat
01-10-2011, 01:34 PM
#byte TRISC =0x87
#byte PORTC =0x07
#bit rC0 =0x07.0
chịu khó đọc datasheet mà cày đi chú

em mới tìm hiểu về con này. với lại em cũng không biết tra datasheet. em đang cần gấp nên lên đây hỏi các anh cho nhanh. anh có thể giả thích ý nghĩa của các số mà anh khai báo cho các chân và port đó giúp em đc ko

chairman_t
01-10-2011, 04:46 PM
đó là địa các thanh ghi quy định trong datasheet của loại pic đang sử dụng, thế thôi