Thông báo

Collapse
No announcement yet.

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

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

  • 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


    • 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


      • 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


        • 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


          • 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


            • 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


              • 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


                • 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


                  • 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


                    • 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:

                      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


                      • 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


                        • 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


                          • 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


                            • ai giúp mình mạch này với
                              http://www.youtube.com/watch?v=_WR-r...layer_embedded
                              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


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