Thông báo

Collapse
No announcement yet.

Giúp đỡ biên dịch code C cho robot dò đường

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

  • Giúp đỡ biên dịch code C cho robot dò đường

    Em tìm kiếm được bài toán cho robot dò đường em đã sửa và biên dịch thử nhưng vẫn có một lỗi. Mong các anh em biên dịch giúp em ạ. Em chân thành cảm ơn

    Đây là code:


    Code:
    #include <reg51.h>
    #include <stdio.h>
    
    
    
    unsigned char speedleft,speedright;
    unsigned char high,low,flag,time;
    
    main()
        {
               P1=0x40;
               P3=0xff;
               high = 80;
               low = 30;
               flag = 0;
               time = 50;
               Start();
               while(1) {
               P3|= 0x0f;
               Run();
               }
               }
    
    Start()
               {
               char exit,key;
               exit =1;
               while(exit)
               {
               key = P1;
               if((key & 0x40)==0) exit=0;
               }
               } 
    
    Run()
               {
               char sensors;
               sensors = (P3 &=0x0f);
    
     if((sensors & 0x01)==0) {
               TurnRight();
               flag = 1; }
    
     else if((sensors & 0x08)==0) {
               TurnLeft();
               flag = 2; }
               else if(sensors == 0x09) {
               Forward(high);
               flag = 0; }
    
     else if(((sensors==0x0b)||(sensors==0x0d))&&(flag==0))
               Forward(low);
    
    }
    
    Forward(char speed)
               {
               P1=0x64;
               speedright = speed+10;
               speedleft = speed;
               delay(time);
               }
    
    TurnRight()
               {
               P1=0x68;
               speedright = low+5;
               speedleft = low;
               delay(time);
               }
    
    TurnLeft()
               {
               P1=0x54;
               speedright = low+5;
               speedleft = low;
               delay(time);
               }
    
    Reverse(char speed)
               {
               P1=0x58;
               speedright = speed;
               speedleft = speed+5;
               delay(time);
               }

    Đây là lỗi nó báo khi mình biên dịch:


    Code:
    D:\ROBOT_TEST.C(20): warning C206: 'Run': missing function-prototype
    D:\ROBOT_TEST.C(41): warning C206: 'TurnRight': missing function-prototype
    D:\ROBOT_TEST.C(45): warning C206: 'TurnLeft': missing function-prototype
    D:\ROBOT_TEST.C(48): warning C206: 'Forward': missing function-prototype
    D:\ROBOT_TEST.C(48): error C267: 'Forward': requires ANSI-style prototype

  • #2
    Bạn coppy ba chương trình con Run, TurnLeft và TurnRight lên trước các chương trình chính gọi nó, hoặc khai báo Funtion prototype là hết. MCU thực hiện các lệnh theo thứ tự từ trên xuống dưới, chương trình main bạn chưa khai báo hàm con nên nó không biết đường nào mà gọi. Bạn nên xem kĩ lại sách VDK, mình nghĩ bạn chưa hiểu bản chất của MCU.

    Comment


    • #3
      Bạn coppy ba chương trình con Run, TurnLeft và TurnRight lên trước các chương trình chính gọi nó, hoặc khai báo Funtion prototype trước chương trình main như sau:
      void Run();
      void TurnLeft();
      void TurnRight();
      là hết. MCU thực hiện các lệnh theo thứ tự từ trên xuống dưới, nó đọc chương trình main bạn chưa khai báo hàm con nên nó không biết đường nào mà gọi. Bạn nên xem kĩ lại sách VDK, mình nghĩ bạn chưa hiểu bản chất của MCU.

      Comment


      • #4
        nghĩ cũng lạ, hôm trước mình nhớ có đoạn code nào ngta viết ngược như thế vẫn chạy
        TamPhieuLuuKy@yahoo.com
        092 2838 712 --->>

        Comment


        • #5
          Vậy thì trước hàm main chắc chắn người ta đã khai báo prototype rồi bác ạ. Nếu như không khai báo mà chạy được thì em pó tay.

          Comment


          • #6
            Nguyên văn bởi Đức_CDT Xem bài viết
            mình nghĩ bạn chưa hiểu bản chất của MCU.
            Cảm ơn bạn, đúng là mình chưa hiểu bản chất vấn đề.. Mình mới tìm hiểu thôi
            Cho mình hỏi là nó báo lỗi thêm cái này

            Code:
            D:\ROBOT_TEST.C(14): warning C206: 'delay': missing function-prototype
            D:\ROBOT_TEST.C(14): error C267: 'delay': requires ANSI-style prototype
            cái hàm delay này mình ko thấy có trong chuơng trình bạn ạ. Vậy sửa lỗi này như thế nào?

            Comment


            • #7
              thức đêm post bài để mọi người giúp ạ

              Comment


              • #8
                up up up mọi người giúp mình với ạ

                Comment


                • #9
                  bạn nhấp đúp vào lỗi cho con trỏ nhảy đấn vị trí lõi xem, hoặc là bạn chưa khai báo thạch anh để dùng ham delay hoặc hàm delay của bạn sai cú pháp, nếu MOLAP thì __delay_ms(100); CCS thì delay_ms(100); HT hình như mình nhớ là delay_ms(100); lun
                  TamPhieuLuuKy@yahoo.com
                  092 2838 712 --->>

                  Comment


                  • #10
                    Code của mình ở phía trên bạn xem giúp mình với ạ. Mọi người biết giúp mình với

                    Comment


                    • #11
                      Cho mình hỏi sử dụng robot dò đường với 89c2051 và thạch anh 12Mhz (11,0592) thì sử dụng delay time là bao nhiêu thì hợp lý ạ

                      Comment

                      Về tác giả

                      Collapse

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

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

                      Collapse

                      Đang tải...
                      X