PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT 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

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 26-04-2009, 02:57 PM   #1
motngayno10
Nhập môn đệ tử
 
Tham gia ngày: Jul 2008
Bài gửi: 4
:
hỏi về pwm trong ccs

các bác ơi cho em hỏi e dùng pwm cho 2 động cơ với thiết lập như sau
SETUP_CCP1(CCP_PWM); //THIEP LAP CHE DO PWM
SETUP_CCP2(CCP_PWM); //THIEP LAP CHE DO PWM
SETUP_TIMER_2(T2_DIV_BY_4,255,1);//THIET LAP TIMER2 DUNG CHO PWM

nhưng khi cài đặt
SET_PWM2_DUTY(0);
SET_PWM1_DUTY(0);
thì động cơ lại quay nhanh hết mức .thế là sai phải không.tại sao thế nhỉ

đây là đoạn ct của e
Code:
#include <16f877.h>
#fuses  XT,NOWDT,NOPROTECT,NOPUT,NOBROWNOUT,NODEBUG
#DEVICE  *=16,ADC=8
#USE DELAY(CLOCK=4000000)
#USE FAST_IO(B)
INT8 TIEN,LUI,AD0,AD1,AD2,AD3,QUAYTRAI,THEM,
QUAYPHAI,RETRAI1,RETRAI2,REPHAI1,REPHAI2,LUIREPHAI1,LUIREPHAI2,LUIRETRAI1,LUIRETRAI2;
INT8 TANG;

VOID DUNG()
{ SETUP_CCP1(CCP_OFF);          //TAT CHE DO PWM
  SETUP_CCP2(CCP_OFF);          //TAT CHE DO PWM
  OUTPUT_HIGH(PIN_D3);                 //TAT CHAN ROLE CHIEU DONG CO
  OUTPUT_HIGH(PIN_D5);
}

VOID MAIN()
{ TANG=0;    
THEM=0;
SET_TRIS_B(11111111);                     //THIET LAP CAC CHAN RB0,1,2 LA CAC NGO VAO 
OUTPUT_HIGH(PIN_C1);                      //TAT 2 DONG CO
OUTPUT_HIGH(PIN_C2);
SETUP_ADC(ADC_CLOCK_INTERNAL);            //THIET LAP CHE DO ADC VOI THOI GIAN LAY MAU BANG XUNG IC
SETUP_ADC_PORTS(AN0_AN1_AN3);             //THET LAP 3 NGO VAO ADC
 SETUP_CCP1(CCP_PWM);          //THIEP LAP CHE DO PWM
              SETUP_CCP2(CCP_PWM);          //THIEP LAP CHE DO PWM
               SETUP_TIMER_2(T2_DIV_BY_4,255,1);//THIET LAP TIMER2 DUNG CHO PWM
WHILE (1)
 {   
      IF (INPUT(PIN_B1)) DELAY_MS(50);     //CO HAI NUT NHAN TANG GIAM MODE TOC DO ,5 DEN CHO 5 MODE 
      ELSE  {   // DUNG();                   //NEU NUT TANG DUOC NHAN
                  DELAY_MS(100);
                  IF (TANG<5)
               {  TANG++;
                  SWITCH(TANG)
                     {  CASE 1 : {OUTPUT_HIGH(PIN_D6);       //CAC DEN CHON MODE SANG   
                                                                  }      
                                 BREAK;
                        CASE 2 : {OUTPUT_HIGH(PIN_A5);
                                                                   }      
                                 BREAK;
                        CASE 3 : {OUTPUT_HIGH(PIN_E0);                               
                                  }     
                                 BREAK;
                        CASE 4 : {OUTPUT_HIGH(PIN_E1);                                                  }     
                                 BREAK; 
                        CASE 5 : {OUTPUT_HIGH(PIN_E2);
                                 
                                 }     
                                 BREAK;
                     }
                }    
               }
         IF (INPUT(PIN_B0)) DELAY_MS(50);                      //NEU NUT GIAM DUOC NHAN
            ELSE   {     DELAY_MS(100);
                        IF (TANG>0)
                  {     SWITCH(TANG)
                     {     CASE 1 : {OUTPUT_LOW(PIN_D6);        //CAC DEN MODE TAT  
                                    
                                    }
                           BREAK;
                           CASE 2 : {OUTPUT_LOW(PIN_A5);
                                    
                 
                                    }
                           BREAK;
                           CASE 3 : {OUTPUT_LOW(PIN_E0);
                                    
                     
                                    }//DEN MODE SANG
                           BREAK;
                           CASE 4 : {OUTPUT_LOW(PIN_E1); 
                                    // DUNG();
                                    }//DEN MODE SANG
                           BREAK; 
                           CASE 5 : {OUTPUT_LOW(PIN_E2);
                                    
                                    }
                           BREAK;
                      }
                        TANG--;
                     }   
      }
//CO 1 CAI JOYSITCK DIEU KHIEN XE,VOI 2 BIEN TRO,CO 2 DONG CO CHO HAI BANH   
   SET_ADC_CHANNEL(1);                    //CHON KENH AN1 DE DOC GIA TRI ADC TU BIEN TRO 1 CUA JOYSTICK
   DELAY_US(10);
   AD0=READ_ADC();                        //DOC GIA TRI ADC
   SET_ADC_CHANNEL(0);                    //CHON KENH AN0 DE DOC GIA TRI ADC
   DELAY_US(10);
   AD1=READ_ADC();

  IF ((AD0>=0)&&(AD0<=100)&&(AD1>100)&&(AD1<=145) )  // CHAY TOI
            {  TIEN=(ABS(AD0-127));          //GIA TRI ADC KHI KEO JOYSTICK DE XE CHAY TOI
               OUTPUT_HIGH(PIN_D3);          //TAT CHAN ROLE DOI CHIEU DONG CO
               OUTPUT_HIGH(PIN_D5);
               SET_PWM2_DUTY(TIEN);            
               SET_PWM1_DUTY(TIEN);
               DELAY_MS(50);
             }
               
                    
      
   IF ((AD0>100)&&(AD0<=145)&&(AD1>100)&&(AD1<=145))             //DUNG LAI
            {      SET_PWM2_DUTY(0);            
                  SET_PWM1_DUTY(0);                  
                  OUTPUT_HIGH(PIN_D3);                 //TAT CHAN ROLE CHIEU DONG CO
                  OUTPUT_HIGH(PIN_D5);
            }
      
   IF ((AD0>145)&&(AD1>100)&&(AD1<=145))             //CHAY LUI
            {                   
                LUI=ABS(127-AD0);
                OUTPUT_LOW(PIN_D3);                   //SET CHAN ROLE CHIEU DONG CO
                OUTPUT_LOW(PIN_D5);
                SET_PWM2_DUTY(LUI);
                SET_PWM1_DUTY(LUI);
                DELAY_MS(50);
               
                            
                SET_ADC_CHANNEL(1);         //CHON KENH AN1 DE DOC GIA TRI ADC
                DELAY_US(10);
                AD2=READ_ADC();             //DOC GIA TRI ADC
                SET_ADC_CHANNEL(0);        //CHON KENH AN0 DE DOC GIA TRI ADC
                DELAY_US(10);
                AD3=READ_ADC();
                IF ((AD0>AD2)&&((AD2-127)<30)&&(ABS(AD3-AD1)<50)&&INPUT(PIN_B1)&&INPUT(PIN_B0))      //CHONG BI GIAT KHI CHAY LUI SAU DO DUNG LAI 
                  {   SET_PWM2_DUTY(0);            
                  SET_PWM1_DUTY(0);   
                     DELAY_MS(2000);
                     OUTPUT_HIGH(PIN_D3);                 //TAT CHAN ROLE CHIEU DONG CO
                     OUTPUT_HIGH(PIN_D5);
                  }
                
           }
    IF  ((AD0>100)&&(AD0<=145)&&(AD1>0)&&(AD1<=100)&&INPUT(PIN_B1)&&INPUT(PIN_B0))       //QUAY PHAI
         {     QUAYPHAI=(ABS(AD1-127));
               OUTPUT_LOW(PIN_D3);                   //SET CHAN ROLE CHIEU DONG CO
               OUTPUT_HIGH(PIN_D5);
               SET_PWM2_DUTY(QUAYPHAI);
               SET_PWM1_DUTY(QUAYPHAI);
               DELAY_MS(50);   
               
               SET_ADC_CHANNEL(1);         //CHON KENH AN1 DE DOC GIA TRI ADC
                DELAY_US(10);
                AD2=READ_ADC();             //DOC GIA TRI ADC
                SET_ADC_CHANNEL(0);        //CHON KENH AN0 DE DOC GIA TRI ADC
                DELAY_US(10);
                AD3=READ_ADC();
                IF ((AD3>AD1)&&(ABS(AD2-AD0)<50)&&INPUT(PIN_B1)&&INPUT(PIN_B0))         //CHONG BI GIAT KHI QUAY PHAI
                  {  SET_PWM2_DUTY(0);
               SET_PWM1_DUTY(0);
                     DELAY_MS(1000);
                     OUTPUT_HIGH(PIN_D3);                 //TAT CHAN ROLE CHIEU DONG CO
                     OUTPUT_HIGH(PIN_D5);
                  }
               
         }
    IF ((AD0>100)&&(AD0<=145)&&(AD1>145)&&INPUT(PIN_B1)&&INPUT(PIN_B0))      //QUAY TRAI
         {     QUAYTRAI=(ABS(127-AD1));
               OUTPUT_HIGH(PIN_D3);                   //SET CHAN ROLE CHIEU DONG CO
               OUTPUT_LOW(PIN_D5);
               SET_PWM2_DUTY(QUAYTRAI);
               SET_PWM1_DUTY(QUAYTRAI);
               DELAY_MS(50);  
          
                SET_ADC_CHANNEL(1);         //CHON KENH AN1 DE DOC GIA TRI ADC
                DELAY_US(10);
                AD2=READ_ADC();             //DOC GIA TRI ADC
                SET_ADC_CHANNEL(0);        //CHON KENH AN0 DE DOC GIA TRI ADC
                DELAY_US(10);
                AD3=READ_ADC();
                IF ((AD3<AD1)&&(ABS(AD2-AD0)<50)&&INPUT(PIN_B1)&&INPUT(PIN_B0))   //CHONG BI GIAT KHI QUAY TRAI 
                  {  SET_PWM2_DUTY(0);
                    SET_PWM1_DUTY(0);
                     DELAY_MS(1000);
                     OUTPUT_HIGH(PIN_D3);                 //TAT CHAN ROLE CHIEU DONG CO
                     OUTPUT_HIGH(PIN_D5);
                  }
         }
           
      IF ((100>AD0)&&(AD1<100)&&INPUT(PIN_B1)&&INPUT(PIN_B0))          //CHAY TOI RE PHAI
                  {   REPHAI1=(ABS(AD0-127)+ABS(AD1-127));
                      REPHAI2=ABS(ABS(AD0-127)-ABS(AD1-127));
                      SET_PWM2_DUTY(REPHAI1);
                      SET_PWM1_DUTY(REPHAI2);
                  }
       
      IF ((AD0<100)&&(AD1>145)&&INPUT(PIN_B1)&&INPUT(PIN_B0))     //CHAY TOI RE TRAI
                  {   RETRAI1=ABS(AD0-127)+AD1-127;
                      RETRAI2=ABS(ABS(AD0-127)-(AD1-127));
                      SET_PWM2_DUTY(RETRAI1);
                      SET_PWM1_DUTY(RETRAI2);  
                  }
   
   
       IF ((AD0>145)&&(AD1<100)&&INPUT(PIN_B1)&&INPUT(PIN_B0))          //CHAY LUI RE PHAI 
                  {   LUIREPHAI1=(AD0-127+ABS(AD1-127));
                      LUIREPHAI2=ABS(AD0-127-ABS(AD3-117));
                      SET_PWM2_DUTY(LUIREPHAI1);
                      SET_PWM1_DUTY(LUIREPHAI2);
                  }
       IF ((AD0>145)&&(AD1>145)&&INPUT(PIN_B1)&&INPUT(PIN_B0))     //CHAY LUI RE TRAI 
                  {   LUIRETRAI2=(AD0-127+AD3-127);
                      LUIRETRAI1=ABS(AD0-127-(AD3-127));
                      SET_PWM2_DUTY(LUIRETRAI2);
                      SET_PWM1_DUTY(LUIRETRAI1);  
                  }                    
   
 
}
}
các bác xem giúp e chút.

thay đổi nội dung bởi: namqn, 26-04-2009 lúc 03:59 PM. Lý do: định dạng code
motngayno10 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 26-04-2009, 04:01 PM   #2
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Bạn nên cho biết sơ đồ mạch thử nghiệm, code chỉ có ý nghĩa khi đi kèm với một mạch phần cứng cụ thể. Bạn cũng không nên dùng toàn chữ hoa trong chương trình, sẽ rất khó đọc.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 27-04-2009, 04:21 AM   #3
vietanh
Đệ tử 1 túi
 
Tham gia ngày: Dec 2005
Bài gửi: 20
:
sai o hai dong nay nay
Code:
VOID MAIN()
{ TANG=0;
THEM=0;
SET_TRIS_B(11111111); 
OUTPUT_HIGH(PIN_C1); //=========== sai o day
OUTPUT_HIGH(PIN_C2);
SETUP_ADC(ADC_CLOCK_INTERNAL); 
SETUP_ADC_PORTS(AN0_AN1_AN3); 
SETUP_CCP2(CCP_PWM); 
SETUP_TIMER_2(T2_DIV_BY_4,255,1;
}
neu ban dung 293 hay 298 ma set en1 en2 o muc cao chay nhu ma duoi .
nen viet lai la >>>> cung luu y luon co de ban dinh viet cho xe di theo vach ,cac chan lien quan toi thang dieu khien dong co phai set ca ve muc khong ======0 .VA CO DE CUA BAN KHONG KHA THI ,VD bien tang giam cua ban khong tac dung ji ngoai bat may cai led , toc do toi da ban dat duoc cung chi nam o khoang 25% 'ly do thi tu tim hieu.
Code:
  output_low(pin_c1);
           output_low(pin_c2);
HOAC TAT CA CAC CHAN LIEN QUAN DEN PHAN DK DONGCO O MUC CAO ******** ban cung nen cho cai sodo len moi nguoi de hieu hon

>>>>>> xin loi vi khong co uni dd khong go duoc vn .>>> minh se chuyen lai vn

thay đổi nội dung bởi: vietanh, 27-04-2009 lúc 04:31 AM.
vietanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-05-2009, 07:41 PM   #4
motngayno10
Nhập môn đệ tử
 
Tham gia ngày: Jul 2008
Bài gửi: 4
:
cam on cac bac nhat la bac namqn .day la cai mach cua e.nho bac xem giup voi.cam on nhieu
File Kèm Theo
File Type: pdf do an.pdf (45.7 KB, 251 lần tải)
motngayno10 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-05-2009, 07:48 PM   #5
motngayno10
Nhập môn đệ tử
 
Tham gia ngày: Jul 2008
Bài gửi: 4
:
a quen.e up lai doan code cho phu hop voi cai mach


#include <16f877.h>
#fuses XT,NOWDT,NOPROTECT,NOPUT,NOBROWNOUT,NODEBUG
#DEVICE *=16,ADC=8
#USE DELAY(CLOCK=4000000)
#USE FAST_IO(B)
#use fast_io(c)
INT8 TIEN,LUI,AD0,AD1,AD2,AD3,QUAYTRAI,them,
QUAYPHAI,RETRAI1,RETRAI2,REPHAI1,REPHAI2,LUIREPHAI 1,LUIREPHAI2,LUIRETRAI1,LUIRETRAI2;
INT8 TANG;



VOID MAIN()
{ TANG=0;
them=255;
SET_TRIS_B(11111111); //THIET LAP CAC CHAN RB0,1,2 LA CAC NGO VAO
set_tris_c(00101001); //thiet lap cac chan rc0,3,5 la cac ngo vao
OUTPUT_HIGH(PIN_C1); //TAT 2 DONG CO
OUTPUT_HIGH(PIN_C2);
SETUP_ADC(ADC_CLOCK_INTERNAL); //THIET LAP CHE DO ADC VOI THOI GIAN LAY MAU BANG XUNG IC
SETUP_ADC_PORTS(AN0_AN1_AN3); //THET LAP 3 NGO VAO ADC
SETUP_CCP1(CCP_PWM); //THIEP LAP CHE DO PWM
SETUP_CCP2(CCP_PWM); //THIEP LAP CHE DO PWM
sETUP_TIMER_2(T2_DIV_BY_4,255,1);//THIET LAP TIMER2 DUNG CHO PWM
output_high(pin_c6);
WHILE (1)
{
IF (!INPUT(PIN_B1)) //CO HAI NUT NHAN TANG GIAM MODE TOC DO ,5 DEN CHO 5 MODE
{ //NEU NUT TANG DUOC NHAN
DELAY_MS(250);
IF (TANG<5)
{ TANG++;
SWITCH(TANG)
{ CASE 1 : {OUTPUT_HIGH(PIN_D6);them=180; //CAC DEN CHON MODE SANG
}
BREAK;
CASE 2 : {OUTPUT_HIGH(PIN_A5);them=150;
}
BREAK;
CASE 3 : {OUTPUT_HIGH(PIN_E0);them=100;
}
BREAK;
CASE 4 : {OUTPUT_HIGH(PIN_E1);them=50; }
BREAK;
CASE 5 : {OUTPUT_HIGH(PIN_E2);them=0;

}
BREAK;
}
}
}
IF (!INPUT(PIN_B0)) //NEU NUT GIAM DUOC NHAN
{ DELAY_MS(250);
IF (TANG>0)
{ SWITCH(TANG)
{ CASE 1 : {OUTPUT_LOW(PIN_D6);them=255; //CAC DEN MODE TAT

}
BREAK;
CASE 2 : {OUTPUT_LOW(PIN_A5);them=180;


}
BREAK;
CASE 3 : {OUTPUT_LOW(PIN_E0);them=150;


}
BREAK;
CASE 4 : {OUTPUT_LOW(PIN_E1);them=100;

}
BREAK;
CASE 5 : {OUTPUT_LOW(PIN_E2);them=50;

}
BREAK;
}
TANG--;
}
}
//CO 1 CAI JOYSITCK DIEU KHIEN XE,VOI 2 BIEN TRO,CO 2 DONG CO CHO HAI BANH
SET_ADC_CHANNEL(0); //CHON KENH AN1 DE DOC GIA TRI ADC TU BIEN TRO 1 CUA JOYSTICK
DELAY_US(10);
AD0=READ_ADC(); //DOC GIA TRI ADC
SET_ADC_CHANNEL(1); //CHON KENH AN0 DE DOC GIA TRI ADC
DELAY_US(10);
AD1=READ_ADC();

IF ((AD0>=0)&&(AD0<=100)&&(AD1>100)&&(AD1<=145) ) // CHAY lui
{ TIEN=(ABS(AD0-127)); //GIA TRI ADC KHI KEO JOYSTICK DE XE CHAY TOI
OUTPUT_low(pin_D3); //TAT CHAN ROLE DOI CHIEU DONG CO
OUTPUT_low(PIN_D7);
if ((them<=100)&&(tien<90))
{ SET_PWM2_DUTY(180);
SET_PWM1_DUTY(180);
}
if ((them<=100)&&(tien>=90))
{SET_PWM2_DUTY(them);
SET_PWM1_DUTY(them);
}
if (them>100)
{SET_PWM2_DUTY(them);
SET_PWM1_DUTY(them);
}
DELAY_MS(50);
}



IF ((AD0>100)&&(AD0<=145)&&(AD1>100)&&(AD1<=145)) //DUNG LAI
{ SET_PWM2_DUTY(255);
SET_PWM1_DUTY(255);
OUTPUT_HIGH(PIN_D3); //TAT CHAN ROLE CHIEU DONG CO
OUTPUT_HIGH(PIN_D7);
}

IF ((AD0>145)&&(AD1>100)&&(AD1<=145)) //CHAY toi
{
LUI=ABS(127-AD0);
OUTPUT_high(PIN_D3); //SET CHAN ROLE CHIEU DONG CO
OUTPUT_high(PIN_D7);
if ((them<=100)&&(lui<90))
{ SET_PWM2_DUTY(180);
SET_PWM1_DUTY(180);
}
if ((them<=100)&&(lui>=90))
{SET_PWM2_DUTY(them);
SET_PWM1_DUTY(them);
}
if (them>100)
{SET_PWM2_DUTY(them);
SET_PWM1_DUTY(them);
}
DELAY_MS(200);


SET_ADC_CHANNEL(1); //CHON KENH AN1 DE DOC GIA TRI ADC
DELAY_US(10);
AD2=READ_ADC(); //DOC GIA TRI ADC
SET_ADC_CHANNEL(0); //CHON KENH AN0 DE DOC GIA TRI ADC
DELAY_US(10);
AD3=READ_ADC();
IF ((AD0>AD2)&&((AD2-127)<30)&&(ABS(AD3-AD1)<50)&&INPUT(PIN_B1)&&INPUT(PIN_B0)) //CHONG BI GIAT KHI CHAY LUI SAU DO DUNG LAI
{ SET_PWM2_DUTY(255);
SET_PWM1_DUTY(255);
DELAY_MS(2000);
OUTPUT_HIGH(PIN_D3); //TAT CHAN ROLE CHIEU DONG CO
OUTPUT_HIGH(PIN_D7);
}

}
IF ((AD0>100)&&(AD0<=145)&&(AD1>0)&&(AD1<=100)&&INPUT (PIN_B1)&&INPUT(PIN_B0)) //QUAY PHAI
{ QUAYPHAI=(ABS(AD1-127));
OUTPUT_LOW(PIN_D3); //SET CHAN ROLE CHIEU DONG CO
OUTPUT_HIGH(PIN_D7);
if ((them<=100)&&(tien<90))
{ SET_PWM2_DUTY(200);
SET_PWM1_DUTY(200);
}
if ((them<=100)&&(tien>=90))
{SET_PWM2_DUTY(them);
SET_PWM1_DUTY(them);
}
if (them>100)
{SET_PWM2_DUTY(them);
SET_PWM1_DUTY(them);
}
DELAY_MS(200);

SET_ADC_CHANNEL(1); //CHON KENH AN1 DE DOC GIA TRI ADC
DELAY_US(10);
AD2=READ_ADC(); //DOC GIA TRI ADC
SET_ADC_CHANNEL(0); //CHON KENH AN0 DE DOC GIA TRI ADC
DELAY_US(10);
AD3=READ_ADC();
IF ((AD3>AD1)&&(ABS(AD2-AD0)<50)&&INPUT(PIN_B1)&&INPUT(PIN_B0)) //CHONG BI GIAT KHI QUAY PHAI
{ SET_PWM2_DUTY(255);
SET_PWM1_DUTY(255);
DELAY_MS(1000);
OUTPUT_HIGH(PIN_D3); //TAT CHAN ROLE CHIEU DONG CO
OUTPUT_HIGH(PIN_D7);
}

}
IF ((AD0>100)&&(AD0<=145)&&(AD1>145)&&INPUT(PIN_B1)&& INPUT(PIN_B0)) //QUAY TRAI
{ QUAYTRAI=(ABS(127-AD1));
OUTPUT_HIGH(PIN_D3); //SET CHAN ROLE CHIEU DONG CO
OUTPUT_LOW(PIN_D7);
if ((them<=100)&&(quaytrai<90))
{ SET_PWM2_DUTY(200);
SET_PWM1_DUTY(200);
}
if ((them<=100)&&(quaytrai>=90))
{SET_PWM2_DUTY(them);
SET_PWM1_DUTY(them);
}
if (them>100)
{SET_PWM2_DUTY(them);
SET_PWM1_DUTY(them);
}
DELAY_MS(200);

SET_ADC_CHANNEL(1); //CHON KENH AN1 DE DOC GIA TRI ADC
DELAY_US(10);
AD2=READ_ADC(); //DOC GIA TRI ADC
SET_ADC_CHANNEL(0); //CHON KENH AN0 DE DOC GIA TRI ADC
DELAY_US(10);
AD3=READ_ADC();
IF ((AD3<AD1)&&(ABS(AD2-AD0)<50)&&INPUT(PIN_B1)&&INPUT(PIN_B0)) //CHONG BI GIAT KHI QUAY TRAI
{ SET_PWM2_DUTY(255);
SET_PWM1_DUTY(255);
DELAY_MS(1000);
OUTPUT_HIGH(PIN_D3); //TAT CHAN ROLE CHIEU DONG CO
OUTPUT_HIGH(PIN_D7);
}
}

IF ((100>AD0)&&(AD1<100)&&INPUT(PIN_B1)&&INPUT(PIN_B0 )) //CHAY lui RE PHAI
{ REPHAI1=(them+ABS(AD1-127));
REPHAI2=ABS(them-ABS(AD1-127));

SET_PWM2_DUTY(REPHAI1);
SET_PWM1_DUTY(REPHAI2);
}

IF ((AD0<100)&&(AD1>145)&&INPUT(PIN_B1)&&INPUT(PIN_B0 )) //CHAY lui RE TRAI
{ RETRAI1=them+AD1-127;
RETRAI2=ABS(them-(AD1-127));
SET_PWM2_DUTY(RETRAI1);
SET_PWM1_DUTY(RETRAI2);
}


IF ((AD0>145)&&(AD1<100)&&INPUT(PIN_B1)&&INPUT(PIN_B0 )) //CHAY toi RE PHAI
{ LUIREPHAI1=(them+ABS(AD1-127));
LUIREPHAI2=ABS(them-ABS(AD1-117));
SET_PWM2_DUTY(LUIREPHAI1);
SET_PWM1_DUTY(LUIREPHAI2);
}
IF ((AD0>145)&&(AD1>145)&&INPUT(PIN_B1)&&INPUT(PIN_B0 )) //CHAY LUI RE TRAI
{ LUIRETRAI2=(them+AD1-127);
LUIRETRAI1=ABS(them-(AD1-127));
SET_PWM2_DUTY(LUIRETRAI2);
SET_PWM1_DUTY(LUIRETRAI1);
}


}
}

thay đổi nội dung bởi: motngayno10, 11-05-2009 lúc 07:57 PM.
motngayno10 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


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:38 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