Thông báo

Collapse
No announcement yet.

Nhờ hướng dẫn về lập trình 8051

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

  • Nhờ hướng dẫn về lập trình 8051

    Tình hình là em có vấn đề này muốn nhờ các bác giúp qua chút
    Là thế này :có 16 LED ở P2 và P3 và 2 nút nhấn ở p1.0 và p1.1 ,yêu cầu bài toán là khi nhấn nút 1 thì 16LED sáng tắt với chu kì 1s, khi nhấn nút 2 thì 16 LED sáng đuổi nhau từ trên xuống dưới
    em viết 2 chương trình con cho 2 nút bấm được rồi, chạy thử dc rồi như khi lồng vào hàm main thì em ko biết lồng thế nào
    ý tưởng của em là nếu nhấn nút 1 thì thực hiên chương trình cv1(chương trình con để chạy khi nhấn nút 1), trong quá trình chạy cv1 luôn kiểm tra nút nhấn 2 , nếu nnuts nhấn 2 đc nhấn thì thực hiện chương trình cv2(chương trình con để chạy khi nhấn nút 2), và trong quá trình chạy cv2 luôn kiểm tra nút nhấn 1, khi nút nhấn 1 dc nhấn thì thực hiện cv1, và cứ như vậy thì tạo thành 1 vòng lặp vô hạn
    đấy là ý tưởng nhưng khi em viết ko thể nào theo đúng ý tưởng dc, nay mong các bác giúp em với, đây là chương trình của em , mong các bác giúp đỡ

    #include <REGx51.H>
    #include <stdio.h>
    sbit KEY1 = P1^0;
    sbit KEY2 = P1^1;

    unsigned int x,i;
    unsigned int b=0;
    unsigned int a=0;
    void delay_us(unsigned int t)
    {
    for(x=0;x<=t;x++);
    }

    void cv1()
    {
    P2=0xff;
    P3=0xff;
    delay_us(1000);
    P2=0x00;
    P3=0x00;
    delay_us(1000);
    }
    void cv2()
    {
    while(1)
    {
    P2=0x00;
    P3=0x00;
    delay_us(5000);
    P2=0x01;
    P3=0x00;
    delay_us(5000);
    P2=0x02;
    P3=0x00;
    delay_us(5000);
    P2=0x04;
    P3=0x00;
    delay_us(5000);
    P2=0x08;
    P3=0x00;
    delay_us(5000);
    P2=0x10;
    P3=0x00;
    delay_us(5000);
    P2=0x20;
    P3=0x00;
    delay_us(5000);
    P2=0x40;
    P3=0x00;
    delay_us(5000);
    P2=0x80;
    P3=0x00;
    delay_us(5000);
    P2=0x00;
    P3=0x01;
    delay_us(5000);
    P2=0x00;
    P3=0x02;
    delay_us(5000);
    P2=0x00;
    P3=0x04;
    delay_us(5000);
    P2=0x00;
    P3=0x08;
    delay_us(5000);
    P2=0x00;
    P3=0x10;
    delay_us(5000);
    P2=0x00;
    P3=0x20;
    delay_us(5000);
    P2=0x00;
    P3=0x40;
    delay_us(5000);
    P2=0x00;
    P3=0x80;
    delay_us(5000);
    }
    }
    void kiemtraphim()
    {
    if(KEY1==0)
    {
    a=2;
    }
    if(KEY2==0)
    {
    a=3;
    }
    }
    void main(void)

    {
    P2=0x00;
    P3=0x00;
    {
    if (a=2)
    {
    cv1();
    if (a=3)
    {
    cv2();
    }
    }
    }
    }

  • #2
    c thì mình chịu. asm thì ok

    Comment


    • #3
      code vậy khi dịch sẽ báo lỗi ngay chứ chạy sao được ?
      1) if (a=2) a=2 là phép gán ko phải phép so sánh
      2) khai báo a=0, trong chương trình có hàm kiểm tra phím dùng để thay đổi giá trị a nhưng hàm main không gọi hàm đó?
      sale of Gobal Automation Solution Company Limited

      Comment

      Về tác giả

      Collapse

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

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

      Collapse

      Đang tải...
      X