Thông báo

Collapse
No announcement yet.

Code C, 3 nút nhấn START, STOP và PAUSE?

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

  • Code C, 3 nút nhấn START, STOP và PAUSE?

    Em muốn viết 1 chương trình bằng code C gồm 3 nút nhấn: START, STOP và PAUSE:
    1/ Khi nhấn START thì chạy hiệu ứng led sáng dần từ p2.0 đến p2.7.
    2/ Khi led đang chạy hiệu ứng, nếu nhấn STOP thì tắt hiệu ứng, nhấn START sẽ chạy lại từ đầu.
    3/ Khi led đang chạy hiệu ứng, nếu nhấn PAUSE thì ngưng hiệu ứng lập tức ( ví dụ, led đang sáng dần đến p2.5 mà nhấn PAUSE thì dừng hiệu ứng led tạm thời chỉ có 6 con led từ p2.0 đến p2.5 sáng). Nếu nhấn START lại thì led tiếp tục chạy hiệu ứng ở vị trí mình nhấn PAUSE.
    Bước 1 em đã làm được, nhưng 2 bước sau làm hoài vẫn chưa được.
    Mong các bác giúp đỡ em ah!

  • #2
    Em đã làm được rồi ah. Code hơi dài. Bác nào có cách khác xin chỉ dùm em ah ...!
    Code:
    #include <REGX52.H>
    
    // khai bao led va nut nhan
    sfr led=0xa0;
    sbit nutSTART=P1^0;
    sbit nutSTOP=P1^1;
    sbit nutPAUSE=P1^2;
    sbit bell=P3^1;      // chuong, moi lan nhan 1 nut thi chuong se keu
    
    // chuong trinh tao delay
    void delay(long time)
        {
         while(time--);
        }
    
    // ma led
    unsigned char hieuung[]={0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};
    
    // chuong trinh chinh
    void main()
        {
         unsigned char x,y=0,z;
         if(nutSTART==0)
             {
             delay(200);
             if(nutSTART==0)              // nut START
                 {
                 while(nutSTART==0);
                 bell=0;delay(3000); bell=1;
                 while(1)
                     {
                     for(x=y;x<9;x++)
                         {
                         led=hieuung[x];
                         delay(3000);
                         y++;
                         if(y==9) y=0;
                         if(nutSTOP==0)    // nut STOP
                             {
                             delay(200);
                             if(nutSTOP==0)
                                 {
                                 while(nutSTOP==0);       bell=0;delay(3000);    bell=1;
                                 while(1)
                                     {
                                     led=hieuung[0];
                                     x=y=0;
                                     if(nutSTART==0)
                                         {
                                         delay(200);
                                         if(nutSTART==0)
                                             {
                                             while(nutSTART==0);      bell=0;delay(3000);       bell=1;
                                             break;
                                            }
                                        }
                                    }                                
                                }
                            }
                          if(nutPAUSE==0)    // nut PAUSE
                              {
                             delay(200);
                             if(nutPAUSE==0)
                                 {
                                 while(nutPAUSE==0);       bell=0;delay(3000);     bell=1;
                                 while(1)
                                     {
                                     led=hieuung[x];
                                     if(nutSTART==0)
                                         {
                                         delay(200);
                                         if(nutSTART==0)
                                             {
                                             while(nutSTART==0);        bell=0;delay(3000);     bell=1;
                                             break;
                                            }
                                         }
                                     if(nutSTOP==0)
                                         {
                                         delay(200);
                                         if(nutSTOP==0)
                                             {
                                             while(nutSTOP==0);      bell=0;delay(3000);      bell=1;
                                             while(1)
                                                 {
                                                 led=hieuung[0];
                                                 x=y=0;
                                                 if(nutSTART==0)
                                                     {
                                                     delay(200);
                                                     if(nutSTART==0)
                                                         {
                                                         while(nutSTART==0);           bell=0;delay(3000); bell=1;
                                                         break;
                                                        }
                                                    }
                                                }
                                             break;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }

    Comment


    • #3
      Cho mình xin code trên về nghiên cứu với nhé !
      Cám ơn bạn trước !

      Comment

      Về tác giả

      Collapse

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

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

      Collapse

      • nguyendinhvan
        Trả lời cho Vấn đề về tốc độ quay
        bởi nguyendinhvan
        Sử dụng động cơ servor, hoặc lắp thêm một cái encoder vào động cơ bước. Encoder sẽ kiểm soát động cơ có quay hoặc đứng im.
        Hôm qua, 19:50
      • Andrea14
        Vấn đề về tốc độ quay
        bởi Andrea14
        Chào mọi người,

        Tôi muốn mô phỏng sự thay đổi các mùa bằng cách từ từ nghiêng một quả địa cầu 16 inch bằng một động cơ bước nhỏ. Một động cơ bước khác sẽ quay quả địa cầu theo thời gian thực. Hệ thống truyền động...
        12-12-2025, 12:42
      • bqviet
        Trả lời cho Đấu tắt điện cho máy tính bảng
        bởi bqviet
        Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
        06-12-2025, 17:17
      • nguyendinhvan
        Trả lời cho Xin hỏi về mạch thu FM/AM trong catsette
        bởi nguyendinhvan
        Theo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
        05-12-2025, 19:59
      Đang tải...
      X