Thông báo

Collapse
No announcement yet.

Mọi người giúp mình kiểm tra code này với !

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Mọi người giúp mình kiểm tra code này với !

    Mình đã nạp vào pic nhưng ko điều khiển portB dc, cũng ko thấy xung pwm trên chân ccp1, ccp2 lun. Mình đã kiểm tra nhiều lần rồi, ko bik là trình dịch bị lỗi hay pic bị hư hay tại code mình nữa. Mọi ng xem giúp mình cái nha, thanks.

    Click image for larger version

Name:	untitled.JPG
Views:	1
Size:	128.7 KB
ID:	1410466
    Code:
    #include <16F877A.h>
    #FUSES HS,NOWDT,NOPUT,NODEBUG,NOPROTECT,NOBROWNOUT,NOLVP, NOCPD,NOWRT
    #use  delay(clock=20000000)
    #use  fast_io(b)
    #use  fast_io(d)
    #byte portb=0x06
    #byte portd=0x08
    #bit RB4=portb.4
    #bit RB5=portb.5
    #bit RB6=portb.6
    #bit RB7=portb.7
    #bit RD0=portd.0
    #bit RD1=portd.1
    #bit RD2=portd.2
    #bit RD3=portd.3
    
    void forward()
    {
    RB4=1;
    RB5=0;
    RB6=0;
    RB7=1;
    }
    
    void backward()
    {
    RB4=0;
    RB5=1;
    RB6=1;
    RB7=0;
    }
    
    void right()
    {
    RB4=1;
    RB5=0;
    RB6=1;
    RB7=0;
    }
    
    void left()
    {
    RB4=0;
    RB5=1;
    RB6=0;
    RB7=1;
    }
    
    
    
    void stop()
    {
    RB4=0;
    RB5=0;
    RB6=0;
    RB7=0;
    }
    
    int16 duty;
    int p;
    
    void main()
    {duty=75;
    set_tris_b(0x0F);
    set_tris_d(0x00); 
    portb=0;
    portd=0;
    setup_ccp1(CCP_PWM);     
    setup_ccp2(CCP_PWM);  
    setup_timer_2(T2_div_by_4,124,1);
    set_pwm1_duty(duty);   
    set_pwm2_duty(duty); 
      
    while(1)
     {
    if((RD0==0)&(RD1==0)&(RD2==1)&(RD3==1))p=1;
    else if((RD0==0)&(RD1==1)&(RD2==0)&(RD3==0))p=2;      
    else if((RD0==0)&(RD1==1)&(RD2==0)&(RD3==1))p=3;      
    else if((RD0==0)&(RD1==1)&(RD2==1)&(RD3==0))p=4;
    else if((RD0==0)&(RD1==1)&(RD2==1)&(RD3==1))p=5;      
       
    else if((RD0==0)&(RD1==0)&(RD2==0)&(RD3==1)&(duty<125))
    {duty+=25;
    while((RD0==0)&(RD1==0)&(RD2==0)&(RD3==1));
    }
       
    else if((RD0==0)&(RD1==0)&(RD2==1)&(RD3==0)&(duty>0))
    {duty-=25;
    while((RD0==0)&(RD1==0)&(RD2==1)&(RD3==0));
    }
       
     switch(p)
     {
    case 1:forward();break;        
    case 2:backward();break;         
    case 3:right();break;   
    case 4:left();break;
    case 5:stop();break;
     }
     }                                                                                                                                                                                
    }

  • #2
    portD rd0 -> rd3 mình kết nối với điều khiển từ xa.

    Comment


    • #3
      mọi ng xem wa giúp mik ca'i, sai chỗ nào vậy ta

      Comment


      • #4
        hic hic mình bi' rồi, test cả rồi, kỉu này chắc hư pic rùi . Mai mua pic khác thử coi sao. Dù gì cũng thanks các bạn đã ghé wa xem

        Comment


        • #5
          Bạn phải coi cái trình dịch nữa đôi lúc nó dịch sai.
          , , ,

          Comment


          • #6
            mua pic làm gì cũng thế thôi. bạn gửi file mô phỏng lên đây.
            |

            Comment


            • #7
              bạn thử mô phong bằng protues coi nó chạy không,tớ cũng đang gặp một vấn đề tương tự,buid được nhưng nạp vào không chạy,khi cho protues chạy từng bước thì thấy nó không đọc các khai báo lệnh khởi tạo của mình mà chạy tùm lum,đến khi thêm 1 chương trình ngắt cho nó vào thì ok ,mặc dù chương trình ngắt đó không làm gì hết,cậu thử làm coi

              Comment

              Về tác giả

              Collapse

              benoit Tìm hiểu thêm về benoit

              Bài viết mới nhất

              Collapse

              Đang tải...
              X