Pages: [1]   Go Down
Print
Author Topic: ช่วยดู Code ให้ด้วยครับ  (Read 6739 times)
0 Members and 1 Guest are viewing this topic.
sittisak
Guest
« on: February 08, 2009, 09:29:50 PM »

เป็น Code ที่ต้องการใช้ควบคุม Servo Motor โดยการรับค่าจาก Rs232 ถ้า 1 ให้หมุนซ้าย 2 กลับมาที่ 0 และ 3 หมุนขวา
complie ผ่านนะครับ พอ Burn แล้ว ไม่มีอะไรเกิดขึ้นเลยครับ รบกวนขอคำแนะนำด้วยนะครับ

#include <16F877A.h>              // header file for PIC16F877A

#fuses HS,NOWDT,NOPROTECT,NOLVP   // Configuration word
#use delay(clock=10000000)        // Change OSC here (default 10MHz)
#use rs232(baud=19200, xmit=PIN_C6, rcv=PIN_C7)

#include <stdlib.h>                   
#include "input.c"

#define SERVO_PIN          PIN_C0      // pin servo control 
#define PULSE_LEFT         2           // 2.0   ms
#define PULSE_RIGHT        1           // 1.0 ms
#define PULSE_STOP         1500        // 1.5 ms (1500us)
#define PULSE_LOW          20          // 20.0 ms



/** Clockwise */
void servo_left(void)              //                                        (2)
{
    output_high(SERVO_PIN);
    delay_ms(PULSE_LEFT);
    output_low(SERVO_PIN);
    delay_ms(PULSE_LOW);
}
/** Counterclockwise */
void servo_right(void)             //                                        (3)
{
    output_high(SERVO_PIN);
    delay_ms(PULSE_RIGHT);
    output_low(SERVO_PIN);
    delay_ms(PULSE_LOW);
}
/** Center */
void servo_stop(void)              //                                        (4)
{
    output_high(SERVO_PIN);
    delay_us(PULSE_STOP);
    output_low(SERVO_PIN);
    delay_ms(PULSE_LOW);
}

/************************************************************** Main Function */
void main()
{
      int i;
      char a;
      set_tris_c(0x00);             // port c all output
      set_tris_a(0xFE);
 
   
  while (TRUE) {
       printf("\r\nEnter the first number: ");
        a = getc();           //                                         (5)
   switch(a)
       {
        case '1':
         for (i=0;i<100;i++)       //                                         (5)
            servo_left();
        break;
        case '2':
         for (i=0;i<100;i++)
            servo_stop();
        break;
        case '3':
         for (i=0;i<100;i++)
            servo_right();
        break;
       }
  }
}
Logged
Pages: [1]   Go Up
Print
 
Jump to: