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

                              • tuyennhan
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi tuyennhan
                                Cái thư sai ngay câu chào Dear sir mới đúng Hi chỉ dùng cho người quen , các vấn đề về kỹ thuật nó không trả lời hoặc nói loanh quanh tránh ảnh hưởng đến công ty .
                                Giup1 người cần không giúp người không cần với lại văn mình vợ người nha đừng quên .
                                Hôm qua, 07:44
                              • vi van pham
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi vi van pham
                                Cám ơn những lời chúc tốt đẹp của em.

                                Việc em làm giống như chê sếp dốt, chẳng những không có miếng xôi nào để ăn mà còn chịu nhiều trù dập lên bờ , xuống ruộng.

                                Hãy tránh vết xe đổ của tui đi. Dành thời gian lo cho gia đình....
                                Hôm qua, 02:00
                              • nhathung1101
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi nhathung1101
                                Ngoại ngữ là không thể thiếu, nhất là làm việc với công nghệ.

                                Nhưng học để tán gái hay để đọc datasheet, manual là chuyện cần quan tâm.

                                Và đọc ở nguồn nào đáng tin cậy, chứ cứ lên tictok hay facebook học lỏm thì...
                                22-02-2025, 22:18
                              • dinhthuong80
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi dinhthuong80
                                Bác nói rất khách quan và chính xác. Ngoại ngữ là chìa khóa thăng tiến dù làm gì. Chả thế mà nay nước mình dạy tiếng Anh từ tiểu học.

                                Nhớ hồi năm 2006 em ra Hải Phòng, Hải Dương tìm việc, thời đó ở Bình Dương lương công...
                                22-02-2025, 14:51
                              • dinhthuong80
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi dinhthuong80
                                Cảm ơn bạn, ĐT cũng có ý nghĩ như vậy.

                                Thực ra, lỗi của hãng đó ( gọi là hãng vì không chỉ một model sản phẩm) là về phần cứng, ĐT tuy không biết về lập trình phần mềm nhưng cũng thấy rằng sẽ chẳng khó khăn gì đáng...
                                22-02-2025, 14:39
                              • dinhthuong80
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi dinhthuong80
                                Dạ, bác bảy mấy tuổi đời rồi cũng không kém bố cháu bao nhiêu. Tuổi nghề thì bác cũng đáng tuổi cha chú.

                                Nhưng 2 điều trên thì chưa hẳn đã đáng quí và đáng tôn trọng bằng việc bác rất nhiệt tình chia sẻ kinh nghiệm chuyên...
                                22-02-2025, 14:28
                              • bqviet
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi bqviet
                                Đúng, nếu chú tâm thì chỉ cần mỗi tiếng Việt là đã khá đủ để làm đa số công việc thông thường, ở thời đại ngày nay khi tài liệu sách vở phương tiện thông tin liên lạc đã nhiều. Nhưng cũng chính ở thời nay giao lưu các nước nhiều...
                                21-02-2025, 20:26
                              • mèomướp
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi mèomướp
                                Dạ cháu nghĩ chú dinh... cứ mạnh dạn gửi thư đi ạ, chú có thể gửi bằng văn bản in chuyển phát nhanh sẽ có giá trị hơn. Vấn đề chưa hẳn là cần hãng làm gì đó, mà chỉ đơn giản là mình cảm thấy nhẹ lòng vì đã làm những việc bản...
                                21-02-2025, 12:32
                              • vi van pham
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi vi van pham
                                Những lần hắt hơi sổ mũi làm tôi mệt lã, phải dùng rượu uống để ngũ. Tôi cũng đang uống rượu 1 mình, viết vài dòng này cho em ( có lẽ dt chỉ bằng tuổi em tôi).

                                Dinh thuong dang đi vào vết xe đổ của tôi. Càng chứng minh, có...
                                20-02-2025, 21:31
                              • bqviet
                                Trả lời cho Hỏi về cách hàn linh kiện ( giúp tớ với )
                                bởi bqviet
                                Thiết nghĩ thi thoảng bác lên đây chia xẻ ít kinh nghiệm cũng vui rồi. Còn chuyện con người sinh lão bệnh tử là thường, sống cùng với quy luật đó thôi. Bqv nhớ trước đây bác từng kể về chuyện rang chì ô-xít bằng chảo để phục hồi bình điện, đấy cũng là thành quả đáng nể phục ở thời kỳ thiếu thốn đó.
                                20-02-2025, 17:22
                              Đang tải...
                              X