Dành cho người mới tìm hiểu 8051

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • hiodong
    Thành viên tích cực
    • Sep 2005
    • 433

    #61
    bác nào lập trình cho em con này , chạy theo vạch trắng nền đen , 2 sonser ở giữa ở trong vạch, 2 sensor hai bên ở ngoài vạch
    มุ่งพัฒนาประเทศด้วยวิทยาศาสตร์และเทคโนโลยี การสร้างสรรค์งานวิจัย และนวัตกรรมสู่สังคมโลก The World Master of Innovation

    cái lập trình sẵn của nó ko dùng được, và em cũng chẳng hiểu gì?
    thanks các bác trước!
    Cung cấp Oscilocope , Inverter , Switching , DC power supply , AC millivolt meter ....

    Comment

    • hiodong
      Thành viên tích cực
      • Sep 2005
      • 433

      #62
      em mới bập bẹ học lập trình viết ra cái này cho con robot mini ở trên nhưng báo lỗi :

      //chuong trinh di thang theo vach
      #include <REGX51.H>
      #include<intrins.h>
      #define EN12 P1^0;
      #define EN34 P1^1;
      #define IN1 P1^2;
      #define IN2 P1^3;
      #define IN3 P1^4;
      #define IN4 P1^5;
      #define S_phai P3^3;
      #define S_trai P3^0;
      #define S_truoc P3^2;
      #define S_sau P3^1;
      #define nen 0;
      #define vach 1;
      void kiem_tra_vach(void)
      {
      if ((S_phai&S_trai=nen)&(S_truoc&S_sau=vach)) {di_thang();} // báo lỗi ở dòng này
      else if ((S_phai=vach)&(S_trai=nen)) {re_phai();}
      else if ((S_phai=nen)&(S_trai=vach)) {re_trai();}
      else if ((S_phai=S_trai=S_truoc=S_sau=nen)) {stop();};
      }
      void di_thang(void)
      {EN12=1;EN34=1;IN1=1;IN2=0;IN3=1;IN4=0; }

      void re_phai(void)
      {EN12=1;IN1=1;IN2=0;EN34=0;}

      void re_trai(void)
      {EN12==0;EN34==1;IN3==1;IN4==0;}

      void stop(void)
      {EN12=0;EN34=0;}

      void main(void)
      {
      while (1)
      {
      kiem_tra_vach;
      }
      }

      nó báo:
      DIEU_KHIEN_DONG_CO_CON_MINI.C(17): error C141: syntax error near ';'
      DIEU_KHIEN_DONG_CO_CON_MINI.C(17): error C141: syntax error near ';'
      DIEU_KHIEN_DONG_CO_CON_MINI.C(17): error C189: '&' on bit/sfr illegal
      DIEU_KHIEN_DONG_CO_CON_MINI.C(17): error C141: syntax error near '='
      DIEU_KHIEN_DONG_CO_CON_MINI.C(17): error C141: syntax error near ')'
      dieu_khien_dong_co_con_mini.c - 5 Error(s), 0 Warning(s).
      vậy phải sửa thế nào các bác ?
      Cung cấp Oscilocope , Inverter , Switching , DC power supply , AC millivolt meter ....

      Comment

      • giaosucan
        Thành viên tích cực
        • Jul 2005
        • 496

        #63
        troài ạ trong C thì == mới là bằng nhau đồng chí ạ ,để 1 dấu là toi roài
        SHARE KHO PHIM LỚN

        Comment

        • dotheanh
          Thành viên mới
          • Jul 2005
          • 25

          #64
          Bác cận nhầm hay sao chứ == là so sánh chứ
          còn = là gán chứ
          Regards
          nguoi thong thai di thuong cui dau L
          -)

          Comment

          • lestylo
            Thành viên mới
            • Jun 2006
            • 5

            #65
            Nguyên văn bởi quynh
            Đây là quyển sách khá hay về lạp trinh C cho 8051.
            Tui up mãi lên đây ko được.Bạn nào cần thì liên hệ với mình nhé.Quyển này viết bằng tiếng anh, khá cơ bản.Dung lượng gần 5MB
            lien lac voi ban qua email nao ??? cho minh nick yahoo cua cau nhe !

            Comment

            • hiodong
              Thành viên tích cực
              • Sep 2005
              • 433

              #66
              hic hic, không bác nào giúp em cả !!!!!!!!!!!!
              Cung cấp Oscilocope , Inverter , Switching , DC power supply , AC millivolt meter ....

              Comment

              • haquang
                Thành viên chính thức
                • Aug 2006
                • 37

                #67
                các anh chị có thể giới thiệu cho em vài cuốn sách (tiếng việt càng tốt) để học lập trình vi điều khiển bằng ngôn ngữ C không?
                cho em hỏi luôn: có phần mềm nào cho phép mình test chuơng trình mình viết trên 8051 không?không lẽ mỗi lần viết 1 chuơng trình lại phải nạp vào VDK để thử ạ?
                cho em cảm ơn chị Quỳnh (vì không biết tuổi nên cho phép em gọi như vậy), những bài viết của chị rất bổ ích

                Comment

                • natra2k2
                  Thành viên tích cực
                  • Oct 2005
                  • 481

                  #68
                  Nguyên văn bởi haquang
                  các anh chị có thể giới thiệu cho em vài cuốn sách (tiếng việt càng tốt) để học lập trình vi điều khiển bằng ngôn ngữ C không?
                  cho em hỏi luôn: có phần mềm nào cho phép mình test chuơng trình mình viết trên 8051 không?không lẽ mỗi lần viết 1 chuơng trình lại phải nạp vào VDK để thử ạ?
                  cho em cảm ơn chị Quỳnh (vì không biết tuổi nên cho phép em gọi như vậy), những bài viết của chị rất bổ ích
                  Những câu hỏi của bạn đã thảo luận nhiều trên diễn đàn rồi
                  Sách: Search với từ khóa "Sách mới TVO hay Tống Văn On"
                  Phần mềm: Search "Giả lập 8051"

                  Comment

                  • hicd
                    Thành viên mới
                    • Aug 2006
                    • 10

                    #69
                    theo em thi nhung nguoi moi hoc len viet bang hop ngu thi hay hon
                    vi qua do minh lam luon ca phan cung cua vdk

                    Comment

                    • svngheo
                      Thành viên tích cực
                      • Oct 2005
                      • 126

                      #70
                      Chao` moi nghuoi`!

                      Nguyên văn bởi hicd
                      theo em thi nhung nguoi moi hoc len viet bang hop ngu thi hay hon
                      vi qua do minh lam luon ca phan cung cua vdk
                      Theo mình thì viết gì mà chả được ,viết bằng C hay hơn chứ (mình nghĩ là vậy)học hợp ngữ có vẻ phức tạp trong C có nhiều hàm hay đỡ cho mình !
                      Khó nhất trên đời làm trang nam tử
                      Ý chí vững vàng mà tình cảm lại mênh mang

                      Comment

                      • nguyen_kirk
                        Thành viên mới
                        • Jul 2006
                        • 18

                        #71
                        Học cả 2 là tốt nhất!!
                        Viết Asm nhiều khi còn đơn giản hơn C!
                        Nhưng C thi` bát buộc phải học vì còn phải dùng nhiều việc khác, ít nhất ở trường nó dạy kekeke!!
                        In Metal ... all trust !!
                        THRASH TILL DIE !!!

                        Comment

                        • giaosucan
                          Thành viên tích cực
                          • Jul 2005
                          • 496

                          #72
                          Nguyên văn bởi hiodong
                          hic hic, không bác nào giúp em cả !!!!!!!!!!!!
                          giúp rồi còn gì nữa cái cậu là lỗi ở cái ==
                          == là so sánh
                          = là gán
                          SHARE KHO PHIM LỚN

                          Comment

                          • hiodong
                            Thành viên tích cực
                            • Sep 2005
                            • 433

                            #73
                            vẫn báo lỗi bác ạ! hic hic

                            //chuong trinh di thang theo vach
                            #include <REGX51.H>
                            #include<intrins.h>
                            #define EN12 P1_0;
                            #define EN34 P1_1;
                            #define IN1 P1_2;
                            #define IN2 P1_3;
                            #define IN3 P1_4;
                            #define IN4 P1_5;
                            #define S_phai P3_3;
                            #define S_trai P3_0;
                            #define S_truoc P3_2;
                            #define S_sau P3_1;
                            #define nen 0;
                            #define vach 1;
                            void kiem_tra_vach(void)
                            {
                            if ((S_phai==S_trai==nen)) {dithang();} // vẫn cái dòng quái quỷ này!
                            else if (S_phai==vach&&S_trai==nen) {re_phai();}
                            else if (S_phai==nen&&S_trai==vach) {re_trai();}
                            else if (S_truoc==S_sau==nen) {stop();};
                            }
                            void dithang(void)
                            {EN12=1;EN34=1;IN1=1;IN2=0;IN3=1;IN4=0; }
                            void re_phai(void)
                            {EN12=1;IN1=1;IN2=0;EN34=0;}
                            void re_trai(void)
                            {EN12=0;EN34=1;IN3=1;IN4=0;}
                            void stop(void)
                            {EN12=0;EN34=0;}
                            void main(void)
                            {
                            while (1)
                            {
                            kiem_tra_vach;
                            }
                            }

                            báo lỗi :
                            DIEU_KHIEN_DONG_CO_CON_MINI.C(21): error C141: syntax error near ';'
                            DIEU_KHIEN_DONG_CO_CON_MINI.C(21): error C141: syntax error near ')'
                            dieu_khien_dong_co_con_mini.c - 2 Error(s), 0 Warning(s).
                            Cung cấp Oscilocope , Inverter , Switching , DC power supply , AC millivolt meter ....

                            Comment

                            • natra2k2
                              Thành viên tích cực
                              • Oct 2005
                              • 481

                              #74
                              Nguyên văn bởi hiodong
                              vẫn báo lỗi bác ạ! hic hic

                              //chuong trinh di thang theo vach
                              #include <REGX51.H>
                              #include<intrins.h>
                              #define EN12 P1_0;
                              #define EN34 P1_1;
                              #define IN1 P1_2;
                              #define IN2 P1_3;
                              #define IN3 P1_4;
                              #define IN4 P1_5;
                              #define S_phai P3_3;
                              #define S_trai P3_0;
                              #define S_truoc P3_2;
                              #define S_sau P3_1;
                              #define nen 0;
                              #define vach 1;
                              void kiem_tra_vach(void)
                              {
                              if ((S_phai==S_trai==nen)) {dithang();} // vẫn cái dòng quái quỷ này!
                              else if (S_phai==vach&&S_trai==nen) {re_phai();}
                              else if (S_phai==nen&&S_trai==vach) {re_trai();}
                              else if (S_truoc==S_sau==nen) {stop();};
                              }
                              void dithang(void)
                              {EN12=1;EN34=1;IN1=1;IN2=0;IN3=1;IN4=0; }
                              void re_phai(void)
                              {EN12=1;IN1=1;IN2=0;EN34=0;}
                              void re_trai(void)
                              {EN12=0;EN34=1;IN3=1;IN4=0;}
                              void stop(void)
                              {EN12=0;EN34=0;}
                              void main(void)
                              {
                              while (1)
                              {
                              kiem_tra_vach;
                              }
                              }

                              báo lỗi :
                              DIEU_KHIEN_DONG_CO_CON_MINI.C(21): error C141: syntax error near ';'
                              DIEU_KHIEN_DONG_CO_CON_MINI.C(21): error C141: syntax error near ')'
                              dieu_khien_dong_co_con_mini.c - 2 Error(s), 0 Warning(s).
                              Bỏ dấu ; ở dòng quỷ đó đi xem thử!

                              Comment

                              • bocodai
                                Thành viên chính thức
                                • May 2006
                                • 35

                                #75
                                Hi hiodong,

                                Tôi nghĩ bạn chịu khó tí là chương trình chạy ngon lành thôi.
                                Một số góp ý cho bạn thế này:

                                1.Một hàm, cho dễ coi, bạn nên viết theo block rõ ràng:

                                [ret type] func_name(param1,...)
                                {
                                //content here
                                }

                                thay vì
                                [ret type] func_name(param1,...)
                                {...}
                                hoặc
                                [ret type] func_name(param1,...){...}

                                2.Các phép gán và so sánh nên cách ra một space, theo từng ngoặc() rõ ràng:
                                a = 5;
                                tốt hơn là:
                                a=5;

                                hoặc :

                                if((a == 5) && (b == 7))
                                tốt hơn so với
                                if(a == 5&&b==7)

                                3.Hàm gọi thường nằm phía dưới hàm được gọi, hoặc phải khai báo prototype cho hàm được gọi trước.

                                Như vậy bạn hãy sửa lại chương trình:
                                1.Đặt các hàm dithang()... lên trên hay khai báo prototype
                                2.Sửa lại

                                if((S_phai == S_trai) && (S_trai == nen))
                                {
                                dithang(); // chẳng có gì quái quỷ cả!
                                }
                                else
                                {
                                if(...)
                                {
                                }
                                else
                                {
                                }
                                }

                                3.
                                while (1)
                                {
                                kiem_tra_vach();
                                }
                                thay vì (gọi hàm mà không có() ):

                                while (1)
                                {
                                kiem_tra_vach;
                                }

                                Thân !

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...