Thông báo

Collapse
No announcement yet.

help me!!

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

  • help me!!

    các pro xem giúp em đoan code này lỗi ở đâu với em viết mà nó không chạy. Khi biên dịch thì nó không báo lỗi nào cả
    // Chuong trinh dieu khien dong co Mot chieu
    // Giao tiep voi may tinh qua cong noi tiep
    // AT89s52, Thach Anh 11.0592

    #include "at89x52.h"

    sbit PWM = P2^0;
    sbit nguoc = P2^5;
    sbit thuan = P2^3;

    void caicongcom() // cai dat cong com
    {

    TMOD=0x20; //Timer1, mode 2, baud rate 9600 bps
    TH1=0XFD;
    SCON=0x50;
    TR1=1;
    }
    void nhan() // chuong trinh con nhan ki tu tu may tinh
    {
    char x;
    if(RI==1)
    x=SBUF;
    RI=0;
    }
    void truyen(char y) // chuong trinh con gui ki tu len may tinh
    {
    SBUF=y;
    if(TI==1)
    TI=0;
    }
    void pwm(unsigned char duty) // chuong trinh con dieu che do rong xung
    {
    TH0=-100*duty/256;
    TL0=-100*duty%256;
    TR0=1;
    PWM=1;
    while(!TF0)
    {
    TF0=0;
    TR0=0;
    TH0=-100*(100-duty)/256;
    TL0=-100*(100-duty)%256;
    TR0=1;
    PWM=0;
    }
    while(!TF0)
    {
    TF0=0;
    TR0=0;
    }
    }
    void chay() // chuong trinh con chay dong co
    {
    thuan=1;
    nguoc=0;
    pwm(10);
    }
    void tangtoc() // chuong trinh con tang toc dong co
    {
    int t;
    t+=5;
    if (t>100) t=100;
    pwm(t);
    }
    void giamtoc() // chuong trinh con giam toc dong co
    {
    int t;
    t-=5;
    if (t<0) t=0;
    pwm(t);
    }
    void daochieu() // chuong trinh con dao chieu
    {
    int tg;
    thuan=tg;
    thuan=nguoc;
    nguoc=tg;
    }
    void dung()
    {
    thuan=0;
    nguoc=0;
    pwm(0);
    }
    void main() // chuong trinh chinh
    {
    char x;
    while(1)
    {
    caicongcom();
    nhan();
    switch (x)
    {
    case 67:{chay(); truyen(65);break;}
    case 84:{tangtoc(); truyen(66);break;}
    case 71:{giamtoc(); truyen(67);break;}
    case 68:{daochieu(); truyen(68);break;}
    case 81:{dung(); truyen(69);break;}
    }
    }
    }

  • #2
    suy nghĩ kiểu nông dân = "nghĩ sao làm vậy" .

    VDK có thực hiện đúng ct đó chứ , nhưng chỉ là lên mức 1 , roy xuống mức 0 . tắt . Vì sao vậy ?
    - là vì hàm pwm() lúc đầu đưa chân PWM =1 , sau đó chạy tràn bộ đếm timer thì về lại PWM=0 , thoát hàm . May ra cho cái vòng lặp for đếm 1==> 10000 lần thì mới thấy đc dộng cơ nhích chút đỉnh . ^^
    - Dùng ngắt tràn timer để tạo xung thì may ra đúng ý khổ chủ

    Comment

    Về tác giả

    Collapse

    Đức_CDT Tìm hiểu thêm về Đức_CDT

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

    Collapse

    Đang tải...
    X