PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 07-10-2009, 03:05 PM   #1
JumboT
Đệ tử 1 túi
 
Tham gia ngày: Feb 2009
Bài gửi: 21
:
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

thay đổi nội dung bởi: phamminhtuan, 09-10-2009 lúc 09:36 AM. Lý do: định dạng code
JumboT vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


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


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam