Thông báo

Collapse
No announcement yet.

[code C] hàm con và hàm chính

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

  • [code C] hàm con và hàm chính

    mọi người có thể giải thích cho em hiểu hàm con và hàm chính nó khác nhau như thế nào dc không ạ. em đọc giáo trình mà chưa hiểu lắm. em có viết 1 đoạn code như thế này mà nó ko chạy hàm con mà tọt luôn vào hàm chính. chắc em viết sai hàm con phải. mọi người giúp em với ạ.
    Code:
    #include <REGX52.H>	  // khai bao chip AT89C52
    unsigned char x;
    void delay(long time) //chuong trinh taoj thoi gian tre
    {
    while(time--);
    }
    void hoa(void)
    {
    for(x=0;x<8;x++)
    {
    P2=0x00;
    delay(100);
    P2=0x01;
    delay(100);
    P2=0x02;
    delay(100);
    }
    }
    void main()
    {
    while(1)
    {
    P2=0xfe;
    delay(10000);
    P2=0xfc;
    delay(10000);
    }
    }

  • #2
    cái hàm hoa nó cũng giống như hàm delay, phải được gọi lại trong main() thì mới chạy được

    Comment


    • #3
      thế thì phải bỏ hàm "hoa" đó sau hàm main ạ

      Comment


      • #4
        mục đích của việc viết chuơng trình con chỉ là việc làm cho chương trình chính gọn hơn, và người lập trình thao tác thuận tiện hơn trong việc lập trình, hạn chế việc viết code nhiều lần. cách sử dụng chương trình con cũng rất đơn giản, đặt nó vào trong chương trình chính, khi VĐK thực hiện đến đó sẽ thực thi các câu lệnh có trong chương trình con.và nếu như đoạn chương trình có nhiều lần thao tác 1 công việc thì chỉ cần gọi lại chương trình con mà không cần viết lại nguyên toàn bộ code.

        Comment


        • #5
          lee_nguyen: anh lấy ví dụ được không ạ

          Comment


          • #6
            VD:
            // thư viện
            // hàm trễ
            void chuongtrinhcon1 (void)
            {
            abdcef....
            }
            void chuongtrinhcon2 (void)
            {
            ghik....
            }
            // chương trình chính
            void main (void)
            {
            while (1)
            {
            if (nutnhan1==0)
            {
            chuongtrinhcon1();
            delay();
            }
            if (nutnhan2==0)
            {
            chuongtrinhcon2();
            delay();
            }
            }
            }

            Comment


            • #7
              Đại khái là thế này :
              Hàm chính là hàm (hay đoạn chương trình ) thực hiện công việc chính và được đặt tên là "main". MCU sẽ thực thi hàm này trước.
              Hàm con hay chương trình con là đoạn chương trình nhỏ thực hiện một chức năng nhỏ nào đó và được thực thi nếu được gọi từ các hàm khác.

              Comment


              • #8
                Nguyên văn bởi lee_nguyen Xem bài viết
                VD:
                // thư viện
                // hàm trễ
                void chuongtrinhcon1 (void)
                {
                abdcef....
                }
                void chuongtrinhcon2 (void)
                {
                ghik....
                }
                // chương trình chính
                void main (void)
                {
                while (1)
                {
                if (nutnhan1==0)
                {
                chuongtrinhcon1();
                delay();
                }
                if (nutnhan2==0)
                {
                chuongtrinhcon2();
                delay();
                }
                }
                }
                tức là mình phải viết chương trình con ở trên trước rồi trong hàm chính gọi chương trình con nào thì chương trình đó chạy! phải thế ko ạ

                Comment


                • #9
                  uh đúng rồi

                  Comment


                  • #10
                    Nguyên văn bởi william Xem bài viết
                    tức là mình phải viết chương trình con ở trên trước rồi trong hàm chính gọi chương trình con nào thì chương trình đó chạy! phải thế ko ạ
                    Chương trình con có thể viết trước hoặc sau chương trình chính mà
                    vanduc0211@gmail.com

                    Comment


                    • #11
                      Nguyên văn bởi william Xem bài viết
                      tức là mình phải viết chương trình con ở trên trước rồi trong hàm chính gọi chương trình con nào thì chương trình đó chạy! phải thế ko ạ
                      bạn có thể viết hàm con ở cuối chương trình ... lúc đó cần phải " báo cáo " có những hàm con này .
                      cụ thể
                      Code:
                      #include <REGX52.H>	  // khai bao chip AT89C52
                      unsigned char x;
                      void delay(long time) //chuong trinh taoj thoi gian tre
                      {
                      while(time--);
                      }
                      void hoa(void)
                      {
                      for(x=0;x<8;x++)
                      {
                      P2=0x00;
                      delay(100);
                      P2=0x01;
                      delay(100);
                      P2=0x02;
                      delay(100);
                      }
                      }
                      void main()
                      {
                      while(1)
                      {
                      P2=0xfe;
                      delay(10000);
                      P2=0xfc;
                      delay(10000);
                      }
                      }
                      viết cuối chương trình :
                      Code:
                      #include <REGX52.H>	  // khai bao chip AT89C52
                      unsigned char x;
                      
                      // khai báo :
                       void delay(long time);
                       void hoa(void);
                      
                      void main()
                      {
                      while(1)
                      {
                      P2=0xfe;
                      delay(10000);
                      P2=0xfc;
                      delay(10000);
                      }
                      }
                      
                      /// cuối chương trình
                      
                      void delay(long time) //chuong trinh taoj thoi gian tre
                      {
                      while(time--);
                      }
                      void hoa(void)
                      {
                      for(x=0;x<8;x++)
                      {
                      P2=0x00;
                      delay(100);
                      P2=0x01;
                      delay(100);
                      P2=0x02;
                      delay(100);
                      }
                      }
                      Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

                      Comment


                      • #12
                        à, sẵn tiện cho em hỏi, tại sao dùng nhiều hàm con lại ko bị báo full ROM bằng viết trực tiếp lên void main()???
                        TamPhieuLuuKy@yahoo.com
                        092 2838 712 --->>

                        Comment


                        • #13
                          Nguyên văn bởi superhieu1 Xem bài viết
                          à, sẵn tiện cho em hỏi, tại sao dùng nhiều hàm con lại ko bị báo full ROM bằng viết trực tiếp lên void main()???
                          chương trình nó sẽ nhảy về đoạn chứa và thực thi cái hàm đó .... thực thi xong nó lại chạy lệnh tiếp theo ... nếu trong 1 chương trình nhiều " mã " giống nhau thì viết hàm con sẽ tiết kiệm ROM.
                          tức là trong 1 chương trình có các hàm, chức năng ... ta chỉ viết 1 lần ... mà dùng được nhiều chỗ ( thay vì nhiều chỗ mà cứ viết giống nhau thì tốn ROM )
                          Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

                          Comment


                          • #14
                            Chuong trinh con nhu mot van ban(text) khi can thiet thi ma ra xem.Chuong trinh chinh voi muc dich nham bat dau cua tat ca lich trinh lam viec.Tuc ham main la bat buoc co'.Thuc ra no' chi la dia chi bat dau khoi dong tat ca cac qua trinh.ban co' the viet tat ca vao cai ham main ma ko can chuong trinh con.Chuong trinh con co' the bien thanh chuong trinh chinh khi no' duoc goi mot lan trong ham main va quan ly toan bo qua' trinh con lai cua hoat dong.
                            , , ,

                            Comment


                            • #15
                              Nguyên văn bởi rptdnmqs Xem bài viết
                              Chuong trinh con nhu mot van ban(text) khi can thiet thi ma ra xem.Chuong trinh chinh voi muc dich nham bat dau cua tat ca lich trinh lam viec.Tuc ham main la bat buoc co'.Thuc ra no' chi la dia chi bat dau khoi dong tat ca cac qua trinh.ban co' the viet tat ca vao cai ham main ma ko can chuong trinh con.Chuong trinh con co' the bien thanh chuong trinh chinh khi no' duoc goi mot lan trong ham main va quan ly toan bo qua' trinh con lai cua hoat dong.
                              Đề nghị viết bài có dấu ... đọc bài không dấu thế này nhức mắt ... tức bỏ mẹ !
                              Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X