PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   Chương trình sai (http://www.picvietnam.com/forum/showthread.php?t=5028)

JumboT 07-10-2009 03:05 PM

Chương trình sai
 
chào các bác !!! chương trình sau của em ko biết sai ở chỗ nào mà khi mô phỏng thì ko thể thay đổi độ rộng xung được.
ý em là khi vặn biến trở thì độ rộng xung cũng theo đó mà thay đổi. các phím dùng để thay đổi chiều của động cơ.
Code:

//chuong trinh:
...........
#define stop  RB1               
#define start RB2
#define left  RB3
#define right  RB4
int8 value;          //khai bao bien luu tru ket qua ADC
void quay_trai(){
      SET_PWM1_DUTY(0);
      DELAY_MS(100);
      value = read_adc();
      SET_PWM2_DUTY(VALUE);
 }
 void quay_phai(){
      set_pwm2_duty(0);
      DELAY_MS(100);
      value = read_adc();
      set_pwm1_duty(value);
}
void stop_DC(){
      set_pwm1_duty(0);
      set_pwm2_duty(0);
 }

//====================CHUONG TRINH CHINH========================//
void main(void)
{
//=================== KHOI TAO CHO ADC=========================//
  setup_adc(adc_clock_internal);      //chon xung xung clock cho bo ADC
  setup_adc_ports(sAN0|VSS_VDD);      //thiet lap cong AN0 la dau vao ADC
  set_adc_channel(0);                //chon chan AN0 cho lenh doc ADC tiep
  delay_us(10);
 
//====================KHOI TAO CHO PWM=========================//

  setup_ccp1(CCP_PWM);                //cau hinh cho ccp1 lam dau ra PWM
  setup_ccp2(CCP_PWM);                //-------------ccp2---------------
  setup_timer_2(T2_DIV_BY_1,255,1);  //chon tan so dau ra cho bo PWM
 

  set_tris_B(0x1E);                  //thiet lap cac chan RB1-RB4 la input (00011110b = 1Eh)
  set_pwm1_duty(0);                  //tat dong co
  set_pwm2_duty(0);                  //-----------
  delay_ms(50);
START:
  while(1){               
      IF(stop == 0){
        stop_DC();
        }
      ELSE IF(left == 0){
        quay_trai();
        }
      ELSE IF(right==0){
        quay_phai();
        }
  }
}

Em có gửi cả sơ đồ nguyên lý bên dưới:
http://www.mediafire.com/?sharekey=0...4e75f6e8ebb871
mong các bác chỉ giùm

JumboT 07-10-2009 03:24 PM

ah xin lỗi các bác. Cái nhãn START ko có tác dụng gì cả. em quên chưa xoa nó đi

JumboT 08-10-2009 02:39 PM

Bác falleaf và các bác khác có thể chỉ cho em chỗ chưa đúng được ko vậy.
Hoặc viết hộ em một chương trình nhw ý tưởng của em cũng được.
Em sốt ruột wa !!!

phamminhtuan 09-10-2009 09:39 AM

Bạn cho biết là bạn đã dịch chương trình được chưa, vì hình như bạn viết bằng CCS nhưng các định nghĩa như #define stop RB1 rồi sau đó if(stop) .. sẽ báo lỗi ngay -> thay bằng #define stop input(PIN_B1)

JumboT 09-10-2009 01:24 PM

em đã dịch OK. ko có lỗi gì cả. v4.078 thì phải. trong phần help của nó cũng dùng như vậy mà. nói chung là mấy phần định nghĩa ko có lỗi gì cả.

JumboT 10-10-2009 01:05 AM

cảm ơn các bác. Em đã tìm ra đường đi rồi. Tận hai con đường cơ. một đường chuột chạy và một đường chim bay. hjhj.


Múi giờ GMT. Hiện tại là 02:50 AM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam