Thông báo

Collapse
No announcement yet.

hàm trong C

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

  • hàm trong C

    anh em cho em hỏi là em có 3 hàm con lần luot là :
    hamcon1();
    {...
    }
    hamcon2();
    {..
    }
    hamcon3();
    {..}
    main()
    {....
    }.


    em muốn gọi hàm con lần lươt theo các switch tác đong là khi ấn P1_0 thì hàm con 1 se dc gọi khi ấn P1_0 thì hàm con 2 se dc goi,va tuong tự cho hàm con 3, mỗi lần goi như thế chỉ dc 1 hàm chạy, muốn chay này khi thì phải trả 2 switch kia về trang thái off ,Moi nguoi giup em vơi , em xài câu truc if...else makhông dc ! hjc thankssssss Cho em hỏi lun là em xài 89c51 sử dung P0 thì phải treo trở lên phải không ? những Port có cầnn treo không?

  • #2
    Nguyên văn bởi handoidenbac Xem bài viết
    anh em cho em hỏi là em có 3 hàm con lần luot là :
    hamcon1();
    {...
    }
    hamcon2();
    {..
    }
    hamcon3();
    {..}
    main()
    {....
    }.


    em muốn gọi hàm con lần lươt theo các switch tác đong là khi ấn P1_0 thì hàm con 1 se dc gọi khi ấn P1_0 thì hàm con 2 se dc goi,va tuong tự cho hàm con 3, mỗi lần goi như thế chỉ dc 1 hàm chạy, muốn chay này khi thì phải trả 2 switch kia về trang thái off ,Moi nguoi giup em vơi , em xài câu truc if...else makhông dc ! hjc thankssssss Cho em hỏi lun là em xài 89c51 sử dung P0 thì phải treo trở lên phải không ? những Port có cầnn treo không?
    mình đọc bài của bạn ko hiểu ý bạn lắm
    mỗi lần goi như thế chỉ dc 1 hàm chạy, muốn chay này khi thì phải trả 2 switch kia về trang thái off
    ko hiểu
    bạn nói rõ hơn nhé

    Comment


    • #3
      hjc ý của em là có 3 công tác sẽ điều khiẻn 3 hàm ,mỗi lần chỉ gọi được 1 hàm ,và 1 công tắc sẽ điều khiẻn 1 hàm , khi công tác diều khiển hàm này chay thì 2 cái kia se bi khoá ,dù co bật nhưng chương trình vẫn không chạy, tức là tại 1 thời điểm chỉ duy I dc 1 công tắc chạy,

      Comment


      • #4
        hamcon1()
        {
        if(nut1) ...;
        while(nut1);
        }
        hamcon2()
        {
        if(nut2) ...;
        while(nut3);
        }
        hamcon3()
        {
        if(nut3) ...;
        while(nut3);
        }
        main()
        {
        while (1)
        {
        hamcon1();
        hamcon2();
        hamcon3();
        }
        }
        123...

        Comment


        • #5
          của em là ấn thằng này thì hàm này dc gọi, ấn thằng kia thì thăng kia dc goi, và khi hàm này gọi thì hàm kia 2 công tắc kia bia khoá chéo! túc là dù có ấn nhưng hàm vẫn không chay đươc, hjc giúp dệ với

          Comment


          • #6
            hamcon1()
            {
            if(nut1) ...;
            while(nut1);
            }
            hamcon2()
            {
            if(nut2) ...;
            while(nut3);
            }
            hamcon3()
            {
            if(nut3) ...;
            while(nut3);
            }
            main()
            {
            while (1)
            {
            hamcon1();
            hamcon2();
            hamcon3();
            }
            }
            __________________


            zi la minh chèn công tắc trong hàm luon hả anh?

            Comment


            • #7
              Cái này đơn giản mà, bạn làm như sau nhé:

              if(nut1 && !nut2 && !nut3)
              hamcon1();
              if(nut2 && !nut1 && !nut3)
              hamcon2();
              if(nut3 && !nut1 && !nut2)
              hamcon3();

              Comment


              • #8
                em co 3 hàm thế này nhé
                dktudong() ứng voi P1_0
                dktay() P1_1
                dkluanphien() P1_3

                mấy anh chỉ hộ e code nay với , ấn nut P1_0 thì hàm P1_0 se dc gọi,tai một thời điểm chỉ 1 hàm dc gọi ...dù có ấn mấy cái kia thi cung bi khoá ! help me , em moi tiem hiểu vdk = code C

                Comment


                • #9
                  Theo mình nghĩ là VDK tại 1 thời diểm chỉ thực hiện dược 1 công việc, nên tại 1 thời diểm chỉ gọi dược 1 hàm thôi. Nếu bạn muốn ấn P1_0 hàm P1_0 dược gọi, ấn P1_1 hàm P1_1 lai dược gọi nữa thì phải dùng ngắt ngoài hoặc có câu lệnh gì dó trong hàm P1_0 dể chuyển sang hàm P1_1, lúc chuyển sang hàm P1_1 thì hàm P1_0 tạm thời dừng chạy.

                  Comment


                  • #10
                    uhm, mà minh mới hoc vdk mấy cái ngắt còn mơ hồ quá hjc, mây a chỉ e code viết bằng C đi

                    Comment


                    • #11
                      Bạn hunterX nói sai rồi: thông thường ta sẽ gọi hàm kiểm tra nút nhấn trong timer. Nếu giả sử chương trình đang ở trong hàm con thứ nhất mà nút thứ hai được nhấn thì chương trình sẽ chuyển hướng xang ham con thứ hai để thực hiện. => không thỏa đk một thời điểm chỉ có một hàm được gọi.
                      handoidenbac: bạn làm theo cách gltd hướng dẫn sẽ giải quyết được: mỗi hàm bạn khai báo một biến is_valid. Một hàm được chạy khi và chỉ khi hai biến is_valid của hai hàm kia không được set.(Trong các hàm con phải set lại giá trị của các biến is_valid cho thích hợp).

                      Comment


                      • #12
                        hjc dệ cũng chua hiễu rõ nữa ! anh manhkha chỉ em rõ ti di, cho đệ xin 1 code vd lun ngen

                        Comment


                        • #13
                          void hamcon1(){
                          is_valid1 = 1;
                          if(is_valid2 == 0 && is_valid3 == 0){
                          //Add your code here.
                          dktudong();
                          }
                          is_valid1 = 0;
                          }
                          void hamcon2(){
                          is_valid2 = 1;
                          if(is_valid1 == 0 && is_valid3 == 0){
                          //Add your code here.
                          dktay();
                          }
                          is_valid2 = 0;
                          }
                          void hamcon3(){
                          is_valid3 = 1;
                          if(is_valid1 == 0 && is_valid2 == 0){
                          //Add your code here.
                          dkluanphien() ;
                          }
                          is_valid3 = 0;
                          }
                          /*--------------------------------------------*/
                          void main(){

                          }

                          Hàm test nút nhấn bạn nên gọi trong timer (100ms). Không biết bạn có thêm yêu cầu chống rung hay không ?. Mình nghĩ là cần.
                          Port 0 bạn nên có điện trở kéo 10k. Các port khác không cần.
                          Hi vọng giúp được bạn.

                          Comment


                          • #14
                            Zị là mình chèn 3 hàm dktay,dktudongva dkluanphien trong 3 hàm con hả bạn.Zi là ham main mình chỉ cần gọi:
                            main()
                            {
                            hamcon1();
                            hamcon2();
                            hamcon3();
                            }l


                            Uhm` sao mình không thấy các p1_0 p1_1 P1_2 dể dk dâu ? hjc
                            la xong rui phai kg bạn.ban co nick yahoo kg ? cho minh xin nhé co gi giúp dễ pm hihi
                            Last edited by handoidenbac; 20-04-2010, 12:01.

                            Comment


                            • #15
                              Nguyên văn bởi handoidenbac Xem bài viết
                              anh em cho em hỏi là em có 3 hàm con lần luot là :
                              hamcon1();
                              {...
                              }
                              hamcon2();
                              {..
                              }
                              hamcon3();
                              {..}
                              main()
                              {....
                              }.


                              em muốn gọi hàm con lần lươt theo các switch tác đong là khi ấn P1_0 thì hàm con 1 se dc gọi khi ấn P1_0 thì hàm con 2 se dc goi,va tuong tự cho hàm con 3, mỗi lần goi như thế chỉ dc 1 hàm chạy, muốn chay này khi thì phải trả 2 switch kia về trang thái off ,Moi nguoi giup em vơi , em xài câu truc if...else makhông dc ! hjc thankssssss Cho em hỏi lun là em xài 89c51 sử dung P0 thì phải treo trở lên phải không ? những Port có cầnn treo không?
                              Theo tôi thì tôi sẽ dùng state machine để mô tả:

                              Code:
                              int main()
                              {
                                enum st_type {H1, H2, H3};
                                st_type st = H1;
                                int count = 0;
                              
                                while (true)
                                {
                                  switch (st)
                                  {
                                    case H1 : 
                                        if (p1_0)
                                        {
                                           hamcon1();
                                           st = H2;
                                        }
                                        break;
                                    case H2 : 
                                        if (p1_0)
                                        {
                                           hamcon2();
                                           st = H3;
                                        }
                                        break;
                                    default : 
                                        if (p1_0)
                                        {
                                           hamcon3();
                                           st = H1;
                                        }
                                        break;
                                  }
                                  if (count < 2)
                                     count++;
                                  else
                                     break;
                                }
                              }
                              Chúc một ngày vui vẻ
                              Tony
                              email : dientu_vip@yahoo.com

                              Comment

                              Về tác giả

                              Collapse

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

                              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