Thông báo

Collapse
No announcement yet.

Sửa lỗi chuơng trình C trong 8051

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

  • Sửa lỗi chuơng trình C trong 8051

    chào các anh chị, hiện đang em viết chuơng trình C điều khiển 1 rơle để bật tắt, mong muốn của em là khi có tín hiệu tác động thì rơ le đóng, và khi không còn tín hiệu tác động thì sau khoảng 10s thì rơ le mới tắt,( tính từ thời điểm tín hiệu tác động ko còn). tuy nhiên em viết chương trình và mô phỏng thì để rơ le đóng, em lại phải giữ tín hiệu đó trong khoảng 10s thì rơ le mới chịu đóng, mong các anh chị giải thích giúp em, xem xin cảm ơn.

    chuơng trình như sau:

    #include <REGX52.H>
    #define vao P1_2
    #define led P2
    #define relay P3
    void khoitao(void);
    void delay(unsigned char time);
    void delay1(unsigned int ms);
    void delay2(int time);
    void main(void)
    {
    khoitao();
    while(1)
    {
    if(vao==0)
    {
    led=0x00;
    relay=0x00;
    }
    else
    {
    delay1(10000);
    led=0xff;
    relay=0xff;
    }

    }
    }
    void khoitao(void)
    {
    vao=1;
    led=0xff;
    relay=0xff;
    }
    void delay(unsigned char time)
    {
    while(time--)
    {
    TMOD=0x01;
    TH0=0xfc;
    TL0=0x66;
    TR0=1;
    while(!TF0);
    TR0=0;
    TF0=0;
    };
    }
    void delay1(unsigned int ms) //tao tre 1ms
    {
    unsigned int i,j;
    for (i=0;i<ms;i++)
    for (j=0;j<120;j++)
    {}
    }
    void delay2(int time)
    {
    while(time--)
    {
    unsigned char j = 122;
    while(j--);
    };
    }

  • #2
    cái này là do lúc mới khởi tạo thì bạn để biến 'vao' =1. nên lúc hoạt động, chương trình sẽ chạy ở đk thứ 2, và hầu hết thời gian của chương trình đều nằm trong delay. vì vậy khi bạn đưa tín hiệu vào phải chờ cho chương trình chạy hết delay thoát ra rồi nó mới kiểm tra lại biến 'vao'.
    để khắc phục mình có 2 cách sau:
    - sử dụng ngắt ngoài, đưa toàn bộ vòng lặp while vào ngắt.
    -đưa phần kiểm tra tín hiều vào trong chương trình con delay. nếu 'vao' = 0 thì break khỏi delay.

    Comment

    Về tác giả

    Collapse

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

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

    Collapse

    Đang tải...
    X