Thông báo

Collapse
No announcement yet.

lập trình C nút bấm

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

  • lập trình C nút bấm



    Hỏi: nhấn nút lần 1 led sáng nhấn lần 2 led tắt
    Last edited by vuthai; 04-03-2013, 18:37.
    Câu Lạc Bộ Sáng Tạo

  • #2
    Nguyên văn bởi vuthai Xem bài viết
    Đây là ảnh minh họa:


    nhất nút lần 1 led sáng nhấn lần 2 led tắt
    không biết bạn này đưa lên để hỏi hay là để làm gì đây nữa.

    Comment


    • #3
      Nguyên văn bởi voiviqua Xem bài viết
      không biết bạn này đưa lên để hỏi hay là để làm gì đây nữa.
      lên để hỏi chứ làm gì minh họa cho các b dễ hiểu mà
      Câu Lạc Bộ Sáng Tạo

      Comment


      • #4
        if(nut) P1_0=0
        else p1_0=1

        Comment


        • #5
          count=0;
          for(
          {
          if(!nut)
          {
          count++;
          if(count>2) count=0;
          }

          switch(count)
          {
          case 1: P1_0=1;
          break;
          case 2: P1_0=0;
          break;
          }

          }

          Comment


          • #6
            Nguyên văn bởi thanhnha220 Xem bài viết
            if(nut) P1_0=0
            else p1_0=1
            Không đúng mong muốn của người ta, phải viết lại thế này:
            Code:
            while (true) {
            if (nut) {
             if (P1_0==0) P1_0=1;
             else P1_0=0;
            }
            }
            Last edited by nauda; 05-03-2013, 00:40. Lý do: highlighted code
            Bạn SV nào có nhu cầu thưc tập thì pm mình nhé. Thông tin liên hệ xem của mình nhé!

            Comment


            • #7
              Nguyên văn bởi nauda Xem bài viết
              Không đúng mong muốn của người ta, phải viết lại thế này:
              Code:
              while (true) {
              if (nut) {
               if (P1_0==0) P1_0=1;
               else P1_0=0;
              
              }
              }
              tui viết chính xác 100% đấy ngắn gọn bấm cái led nó sáng bấm cái led nó tắt hông tin cứ thử xem

              Comment


              • #8
                mấy bạn viết rắc rối vậy,cần có trễ để chống nhiễu cho nút nhấn còn việc đảo trạng thái thì chỉ cần thế này if(!nut) p1_0=!p1_0;

                Comment


                • #9
                  cái này dùng ngắt ngoài cho nhanh.

                  Comment


                  • #10
                    Đang test code xem code nào tối ưu nhất , cảm ơn tất cả mọi người đã trả lời
                    Câu Lạc Bộ Sáng Tạo

                    Comment


                    • #11
                      #include <REG2051.H>
                      void main(void)
                      {
                      while(1)
                      {
                      if(P3_2==0){
                      P1_0=!P1_0;
                      }
                      }
                      }

                      Code này chạy dc nhưng bị rung phím giữ phím là nó nháy, có ai bít khắc phục lỗi giúp m với
                      Last edited by vuthai; 05-03-2013, 15:08.
                      Câu Lạc Bộ Sáng Tạo

                      Comment


                      • #12
                        Nguyên văn bởi chjpchjp1991
                        Chip viết lại code cho bạn nào làm cho dễ hiểu nè..Chip làm vội nên nhấn nút chưa mượt lắm..bạn chỉnh lại tí nhé..^^
                        #include <REG2051.H>
                        unsigned char count=0;
                        void delay(unsigned char t){
                        unsigned char i;
                        for(i=0;i<t;i++){
                        TMOD=0x01;
                        TH0=0x61; //-50000us
                        TL0=0xa8;
                        TR0=1;
                        while(!TF0); //cho timer0 tran
                        TF0=TR0=0;
                        }
                        }
                        void button(void)
                        {
                        if(!P3_2)
                        {
                        while(!P3_2)
                        {delay(1);}
                        count++;
                        if(count>2) count=0;
                        }

                        switch(count)
                        {
                        case 1: P1_0=1;delay(1);
                        break;
                        case 2: P1_0=0;delay(1);
                        break;
                        }
                        }

                        void main(void)
                        { P1_0=0;
                        while(1)
                        {
                        button();
                        delay(1);
                        }
                        }

                        Code này m sửa lại thì chạy OK nhưng sao mà nhấn lần đầu đèn bật sau đó nhấn lần 2 thì tắt ok nhưng khi vào lượt nhấn thứ 3 thì led vẫn tắt phải để lượt thứ 4 thì led mới sáng.
                        không theo kiểu:
                        lần nhấn: 0-1-2-3-4-5
                        Led : 0-1-0-1-0-1
                        Câu Lạc Bộ Sáng Tạo

                        Comment


                        • #13
                          Nguyên văn bởi chjpchjp1991
                          Chip viết lại code cho bạn nào làm cho dễ hiểu nè..Chip làm vội nên nhấn nút chưa mượt lắm..bạn chỉnh lại tí nhé..^^
                          #include <REG2051.H>
                          unsigned char count=0;
                          void delay(unsigned char t){
                          unsigned char i;
                          for(i=0;i<t;i++){
                          TMOD=0x01;
                          TH0=0x61; //-50000us
                          TL0=0xa8;
                          TR0=1;
                          while(!TF0); //cho timer0 tran
                          TF0=TR0=0;
                          }
                          }
                          void button(void)
                          {
                          if(!P3_2)
                          {
                          while(!P3_2)
                          {delay(1);}
                          count++;
                          if(count>2) count=0;
                          }

                          switch(count)
                          {
                          case 1: P1_0=1;delay(1);
                          break;
                          case 2: P1_0=0;delay(1);
                          break;
                          }
                          }

                          void main(void)
                          { P1_0=0;
                          while(1)
                          {
                          button();
                          delay(1);
                          }
                          }

                          Code này m sửa lại thì chạy OK nhưng sao mà nhấn lần đầu đèn bật sau đó nhấn lần 2 thì tắt ok nhưng khi vào lượt nhấn thứ 3 thì led vẫn tắt phải để lượt thứ 4 thì led mới sáng.
                          không theo kiểu:
                          lần nhấn: 0-1-2-3-4-5...
                          Led : 0-1-0-1-0-1...
                          Câu Lạc Bộ Sáng Tạo

                          Comment


                          • #14
                            toàn code dễ không tự sửa được hay sao ?
                            |

                            Comment


                            • #15
                              Nguyên văn bởi vuthai Xem bài viết


                              Hỏi: nhấn nút lần 1 led sáng nhấn lần 2 led tắt
                              Dùng ngắt ngoài đáp ứng nhanh với thời gian thực, có thể bổ sung thêm chống rung phím bằng phần cứng:
                              Code:
                              #include<reg2051.h>
                              sbit led = P1^0;
                              void main(void)
                              {
                              	EA = 1;	//Cho phep ngat toan cuc
                              	EX0 = 1; 	//Cho phep ngat ngoai 0
                              	IT0 = 1;	//Cho phep ngat ngoai 0 suon am
                              	while(1);
                              }
                              void ngatngoai1()interrupt 0
                              {
                              	led = ~led;
                              }
                              VNATR Forum:

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              • 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
                              • afrendly
                                Trả lời cho Đấu tắt điện cho máy tính bảng
                                bởi afrendly
                                Có vẻ ngoài hiểu biết của mình rồi. Cuối cùng mình quyết định tìm mua 2 pin trên Shopee, giá 200K thay vào. Tuy nhận pin được 1%, sạc mãi không vào nhưng cũng mở được máy lên. Vậy cũng tạm. Cảm ơn bạn đã hỗ trợ nhé....
                                04-12-2025, 01:27
                              • nick22
                                Trả lời cho Máy điện châm ?
                                bởi nick22
                                Đúng như bạn nói, máy điện châm hiện nay trên thị trường đã khá đa dạng về mẫu mã, chức năng và giá thành.
                                01-12-2025, 13:23
                              Đang tải...
                              X