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

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • vuxuanloi
    Thành viên tích cực
    • Apr 2009
    • 185

    #1066
    Hi hi, giờ đang bận chút xíu, để lát nữa mình rảnh rồi viết cụ thể cho bạn xem nhé?
    Vũ xuân Lợi
    YM!:

    Comment

    • vuxuanloi
      Thành viên tích cực
      • Apr 2009
      • 185

      #1067
      Nguyên văn bởi vukhuong73 Xem bài viết
      bạn có thể nói rõ hơn ko???
      thân!
      Hi hi, như đã hứa, của bạn đây.
      [/CODE]
      #include <REGX51.H>
      #include <rtx51tny.h>

      void nhay(void) _task_ 1
      {
      unsigned char i,j,f;
      P2=0;

      while(1)
      {
      for(i=0;i<8;i++)
      {
      P2|=1<<i;
      os_wait2(K_TMO,30); //tre 300ms.
      }
      for (i=0;i<8;i++)
      {
      P2=1<<i;os_wait2(K_TMO,30);
      P2=0;os_wait2(K_TMO,30);
      }

      for (j=8;j>0;j--)
      { for(i=0;i<j;i++)
      {
      P2=1<<i|f; os_wait2(K_TMO,30);
      }
      f=P2;
      }
      for(i=0;i<=8;i++)
      {
      P2=0xff<<i;os_wait2(K_TMO,30);
      }
      for(i=0;i<=8;i++)
      {
      P2=0xff>>i;os_wait2(K_TMO,30);
      }
      for(i=0;i<=8;i++)
      {
      P2=(0xff<<i)&(0xff>>i);os_wait2(K_TMO,30);
      }
      for(i=0;i<=8;i++)
      {
      P2=(0xff<<i)^(0xff>>i);os_wait2(K_TMO,30);
      }
      for(i=0;i<=8;i++)
      {
      P2=(0xff<<i)|(0xff>>i);os_wait2(K_TMO,30);
      }
      for(i=2;i<=8;i++)
      {
      P2=1<<i;os_wait2(K_TMO,30);};
      for(i=2;i<=8;i++)
      {
      P2=0x80>>i;os_wait2(K_TMO,30);
      }
      }
      }
      void vien() _task_ 2
      {
      unsigned char m;
      P1=0;
      while (1)
      {
      for(m=0;m<3;m++)
      {
      P1=1<<m; os_wait2(K_TMO,50);
      }
      for(m=0;m<3;m++)
      {
      P1=0x04>>m; os_wait2(K_TMO,50);
      }
      for(m=0;m<3;m++)
      {
      P1=1<<m; os_wait2(K_TMO,50);
      P1=0; os_wait2(K_TMO,50);
      }
      for(m=0;m<3;m++)
      {
      P1=0x04>>m; os_wait2(K_TMO,50);
      P1=0; os_wait2(K_TMO,50);
      }
      for(m=0;m<3;m++)
      {
      P1|=0x04>>m; os_wait2(K_TMO,50);
      }
      for(m=0;m<3;m++)
      {
      P1=7&(6<<m); os_wait2(K_TMO,50);
      }
      }
      }
      void chay() _task_ 0
      {
      os_create_task(1);
      os_create_task(2);
      os_delete_task(0);
      }
      [/CODE]

      Ở đây mình viết cho Thạch Anh 12M. Nếu bạn dùng thạch anh khác thì thời gian trễ sẽ không chính xác là 200ms hoặc 500ms như mình đã gọi.
      Vì mình dùng real time os nên để dịch được ra file hex thì bạn vui lòng vào Project/ Options for Target 'Target 1' tìm List box có tên là Operating system mặc định là None Bạn đổi thành RTX-51 Tiny là biên dịch được.
      Chúc vui!
      Vũ xuân Lợi
      YM!:

      Comment

      • thi tran
        Thành viên tích cực
        • Oct 2010
        • 210

        #1068
        hì , thanks quynh nhìu lắm , quynh đã đề cập tới vấn đề mình đang tìm hỉu , quynh có thể trình bày típ về 4 phần
        -led 7 thanh, quét led 7 thanh
        -giao tiếp phím,ma trận phím
        -ma trận led
        -LCD
        còn lại nỳ đc ko? bạn trình bày rất hay , rất dễ hiểu . mail mình là ngoccuong240987@gmail.com . mong nhận đc sự giúp đỡ of bạn !
        ................. Pleiku .................... GIA LAI ...................

        Comment

        • thi tran
          Thành viên tích cực
          • Oct 2010
          • 210

          #1069
          hì , thanks quynh nhìu lắm , quynh đã đề cập tới vấn đề mình đang tìm hỉu , quynh có thể trình bày típ về 4 phần
          -led 7 thanh, quét led 7 thanh
          -giao tiếp phím,ma trận phím
          -ma trận led
          -LCD
          còn lại nỳ đc ko? bạn trình bày rất hay , rất dễ hiểu . mail mình là ngoccuong240987@gmail.com . mong nhận đc sự giúp đỡ of bạn ! mong sớm nhận đc hồi âm of bạn ! chúc vui !
          ................. Pleiku .................... GIA LAI ...................

          Comment

          • thi tran
            Thành viên tích cực
            • Oct 2010
            • 210

            #1070
            hì , thanks quynh nhìu lắm , quynh đã đề cập tới vấn đề mình đang tìm hỉu , quynh có thể trình bày típ về 4 phần
            -led 7 thanh, quét led 7 thanh
            -giao tiếp phím,ma trận phím
            -ma trận led
            -LCD
            còn lại nỳ đc ko? bạn trình bày rất hay , rất dễ hiểu . mail mình là ngoccuong240987@gmail.com . mong nhận đc sự giúp đỡ of bạn ! mong sớm nhận đc hồi âm of bạn ! chúc vui !
            ................. Pleiku .................... GIA LAI ...................

            Comment

            • phuong197
              Thành viên chính thức
              • May 2010
              • 64

              #1071
              EmDưới đây là 2 đoạn code trong Keil C viết cho 8051
              unsigned long t1,t2;

              CODE 1:
              t1=3000000;
              t2=t1/10000;
              nếu viết như trên thì t2 ra đúng 300

              CODE2:
              t1=300*10000;
              t2=t1/10000;
              nếu viết như thế này thi t2 lại ra sai (cụ thể t2=495)

              em không hiểu tại sao lại như vậy, nhờ các pro chỉ giáo giùm

              Comment

              • dang_spkt
                Thành viên mới
                • May 2010
                • 6

                #1072
                thế có bác nào viết chương trình bằng Mikrobasic pro for 8051 chỉ em với. em dang lam chương trình ứng dụng mở rộng port.

                Comment

                • cancel
                  Thành viên mới
                  • Dec 2010
                  • 8

                  #1073
                  bài của Quỳnh hay ghê.mình thích đọc hơn vì mình cũng mới làm quen với vdk
                  Khi ta cảm nhận đc vị ngọt của cafe,vị nhạt của rượu thì ta đã mất đi rất nhiều thứ . . .
                  •--»((¯`·°»†»—ஐღ♂_ ™¤Hạt Çát ¤™_♀ღஐ—«†«°·´¯))«--•
                  ๑۩۞۩๑♥๑۩۞۩๑ (¯`•♥Untill You♥•´¯) ๑۩۞۩๑♥๑۩۞۩๑

                  Comment

                  • nhquangdt3k5
                    Thành viên tích cực
                    • Nov 2010
                    • 433

                    #1074
                    ai giải thích giúp mình đoạn code này với . mình mới học vi diều khiển
                    void dichvitri(int n) //2 led cung chay tu tren xuong
                    {int m;
                    for(m=1;m<=n;m++)
                    { int j;
                    x=0xfc;
                    for(j=1;j<=10;j++)
                    {
                    P0=P1=x;
                    delay(2000);
                    x=_crol_(x,1);
                    delay(2000);
                    }
                    P0=P1=0xff;
                    x=0xfc;
                    for(j=1;j<=7;j++)
                    {
                    P2=x;
                    P3=x;
                    delay(2000);
                    x=_crol_(x,1);
                    delay(2000);
                    }
                    }
                    }
                    Never forget who you are!

                    Comment

                    • chumanh
                      Thành viên tích cực
                      • Nov 2009
                      • 256

                      #1075
                      PHP Code:
                      void dichvitri(int n) //2 led cung chay tu tren xuong
                      {
                          int m,j;
                          for(m=1;m<=n;m++)
                          {
                              
                              x=0xfc;
                              for(j=1;j<=10;j++)
                              {
                                  P0=P1=x;
                                  delay(2000);
                                  x=_crol_(x,1);
                                  delay(2000);
                              }
                              P0=P1=0xff;
                              x=0xfc;
                              for(j=1;j<=7;j++)
                              {
                                  P2=x;
                                  P3=x;
                                  delay(2000);
                                  x=_crol_(x,1);
                                  delay(2000);
                              }
                          }
                      } 
                      
                      Tạm hiểu đây là một chương trình con dịch LED hay làm cho LED sáng đuổi.
                      PHP Code:
                      x 
                      
                      là giá trị trạng thái đầu tiên của LED, sau đó chúng ta đưa ra Port có LED, tạo trễ một thời gian bằng hàm
                      PHP Code:
                      delay(2000) 
                      
                      , tiếp đến là gọi hàm dịch vị trí LED đi một đơn vị với hàm
                      PHP Code:
                      _crol_(x,1)//với x là giá trị cần dịch, 1 là số lần dịch 
                      
                      , cứ thế tiếp tục cho đến khi hết vòng lặp.

                      Comment

                      • xuantruong04
                        Thành viên mới
                        • Mar 2011
                        • 3

                        #1076
                        ui!!thế ct quét led đâu?mình với vào nhưng đọc cũng hay hay.bạn up tiếp nha.thank

                        Comment

                        • nhquangdt3k5
                          Thành viên tích cực
                          • Nov 2010
                          • 433

                          #1077
                          mình dịch bít để cho led sáng tuần tự từ 1-8 nhưng không hiểu tại sao nó không bắt đầu sàng từ led đầu tiên mà nó lại bắt đầu sáng từ led thứ 2 trở đi mong các bác giúp e cái cảm ơn nhiều!!!!!!!!!!

                          #include <REGX51.H>
                          void delay(long int time);
                          void main(void)
                          {
                          unsigned n;
                          while(1)
                          {
                          P1=0x01;
                          for(n=0;n<8;n++)
                          {
                          P1=P1<<1;
                          delay(5000);
                          }
                          }
                          }

                          void delay(long int time)
                          {
                          int n;
                          for(n=0;n<=time;n++)
                          {;
                          }
                          }
                          Never forget who you are!

                          Comment

                          • hahai
                            Thành viên tích cực
                            • Mar 2010
                            • 189

                            #1078
                            Chào tất cả các bác trong diễn đàn, e là dân điện tự động hóa nhưng có liềm đam mê điện tử lên tự học về vi điều khiển, e đang làm cái đồng số hiển thị ra led 7 đoạn nhưng hiện tại ko hiểu sao sau khi viết code cho AT89C52 dùng chương trình KeilC dịch ra file hex thì nó lỗi hàng loạt ko hiểu tại do cú pháp của e viết sai hay là chương trình e viết đúng e nhờ bác admin giúp e và tất cả các bạn trong diễn đàn giúp đỡ và chỉ bảo mình, kiến thức là vô hạn rất mong mọi người giúp đỡ.
                            Attached Files

                            Comment

                            • doãn đức
                              Thành viên chính thức
                              • Jan 2010
                              • 47

                              #1079
                              ai giúp mình mạch này với

                              mình không biết dùng nhue thế nào để 1 ic 89s52 có thể mở rộng port điều khiển hơn 200 LED

                              Comment

                              • thelaxong
                                Thành viên tích cực
                                • May 2009
                                • 198

                                #1080
                                Nguyên văn bởi nhquangdt3k5 Xem bài viết
                                mình dịch bít để cho led sáng tuần tự từ 1-8 nhưng không hiểu tại sao nó không bắt đầu sàng từ led đầu tiên mà nó lại bắt đầu sáng từ led thứ 2 trở đi mong các bác giúp e cái cảm ơn nhiều!!!!!!!!!!

                                #include <REGX51.H>
                                void delay(long int time);
                                void main(void)
                                {
                                unsigned n;
                                while(1)
                                {
                                P1=0x01;
                                for(n=0;n<8;n++)
                                {
                                P1=P1<<1; // bạn sai chỗ này
                                delay(5000);
                                }
                                }
                                }

                                void delay(long int time)
                                {
                                int n;
                                for(n=0;n<=time;n++)
                                {;
                                }
                                }
                                chương trình của bạn có thực hiện ở led đầu tiên nhưng chỉ dc 1 lần và rất nhanh nên bẹn ko thấy được, code của bạn chỉ cần sửa lại như sau:
                                #include <REGX51.H>
                                void delay(long int time);
                                void main(void)
                                {
                                unsigned n,a;
                                while(1)
                                {
                                a=0x01;
                                for(n=0;n<8;n++)
                                {
                                P1=a;
                                delay(5000);
                                a=a<<1;
                                }
                                }
                                }

                                void delay(long int time)
                                {
                                int n;
                                for(n=0;n<=time;n++)
                                {;
                                }

                                chúc bạn thành công !!!

                                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...