RP Store Tìm linh kiện theo mã, gửi BOM nhận báo giá Gửi BOM

hỏi về pwm trong ccs

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • motngayno10
    Nhập môn đệ tử
    • Jul 2008
    • 4

    #1

    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.
    Last edited by namqn; 26-04-2009, 02:59 PM. Lý do: định dạng code
  • namqn
    Trưởng lão PIC bang
    • Feb 2006
    • 3020

    #2
    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

    Comment

    • vietanh
      Đệ tử 1 túi
      • Dec 2005
      • 20

      #3
      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
      Last edited by vietanh; 27-04-2009, 03:31 AM.

      Comment

      • motngayno10
        Nhập môn đệ tử
        • Jul 2008
        • 4

        #4
        cam on cac bac nhat la bac namqn .day la cai mach cua e.nho bac xem giup voi.cam on nhieu
        Attached Files

        Comment

        • motngayno10
          Nhập môn đệ tử
          • Jul 2008
          • 4

          #5
          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);
          }


          }
          }
          Last edited by motngayno10; 11-05-2009, 06:57 PM.

          Comment

          Working...