Thông báo

Collapse
No announcement yet.

HƯỚNG DẪN LẬP TRÌNH KEIL C CHO 8051-[Chỉ dành post bài hướng dẫn]

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

  • còn một vấn đề nữa mấy bác giải thích giùm em nha

    em có đoạn chương trình như sau:

    Code:
    void main()
    {
        char i = 5;
        P1 = 0xFF;
        delay(50);
        P1 = 0x1;
        while(i--)        //chỗ khó hiểu là ở đây nè mấy bác
        {
            delay(10);    //delay khoảng 0,3 giây
            P1 = 0xF0;;
            delay(10);
            P1 = 0x0F;
        }
    while(1){}
    }//main
    nhưng ko hiểu sao đoạn vòng lặp
    Code:
    while(i--)        //kieu 2
        {
            delay(10);
            P1 = 0xF0;;
            delay(10);
            P1 = 0x0F;
        }
    lại là vòng lặp vô tận, tức là 4 đèn thay phiên nhau chớp liên tục. đủng ra là khi i = 0 thì đèn sẽ ko chớp nữa và 4 led mắc ở P4-P7 phải sáng.
    8 led mắc vào 8 chân của P1 89C51.

    em chạy mô phỏng bằng Protues.

    bác pro nào chỉ bảo em được ko ạ
    Last edited by ttyanhtu; 14-04-2009, 23:25. Lý do: sửa code

    Comment


    • em mới làm quen với kiel, nên bị tắc ngay từ đâu, các bác làm ơn cho em hỏi, em xài con vi điều khiển P89V51RB2FN em lục mãi trong INCLUDE mà cung ko thấy file header nào của nó cả, em có thể add file nào khác được ạ

      Comment


      • Mình mới tập tọe với keil C, mà khi gõ chạy xong rùi, báo không có lỗi, nhưng khi debug thì nó báo lỗi: EVALUATION VERSION running with code size limit : 2k, khi nhấp vào lỗi đó thì nó hiện ra cái bảng thông báo sau: Error:this old version of "S8051.DLL" is incompatible with uVision (UV3.exe) , bác nào biết sửa thì chỉ mình nha, thanks nhiều. 1 bác nói là software của mình chỉ hỗ trợ dưới 2k nhưng cái mình mới có mấy dòng, chương trình led nháy đơn giản sao nó đã báo lỗi vậy rùi

        Comment


        • Nguyên văn bởi ttyanhtu Xem bài viết
          còn một vấn đề nữa mấy bác giải thích giùm em nha

          em có đoạn chương trình như sau:

          Code:
          void main()
          {
              char i = 5;
              P1 = 0xFF;
              delay(50);
              P1 = 0x1;
              while(i--)        //chỗ khó hiểu là ở đây nè mấy bác
              {
                  delay(10);    //delay khoảng 0,3 giây
                  P1 = 0xF0;;
                  delay(10);
                  P1 = 0x0F;
              }
          while(1){}
          }//main
          nhưng ko hiểu sao đoạn vòng lặp
          Code:
          while(i--)        //kieu 2
              {
                  delay(10);
                  P1 = 0xF0;;
                  delay(10);
                  P1 = 0x0F;
              }
          lại là vòng lặp vô tận, tức là 4 đèn thay phiên nhau chớp liên tục. đủng ra là khi i = 0 thì đèn sẽ ko chớp nữa và 4 led mắc ở P4-P7 phải sáng.
          8 led mắc vào 8 chân của P1 89C51.

          em chạy mô phỏng bằng Protues.

          bác pro nào chỉ bảo em được ko ạ
          bộ u tửong khi i = 0 thì i ko giảm dc nữa hả ?
          do đó , ct trên có thể viết lại

          Code:
          void main()
          {
              
              P1 = 0xFF; // tat het led luc RST
              while(1)       
              {
                  delay(10);  
                  P1 = 0xF0;
                  delay(10);
                  P1 = 0x0F;
              }
          }
          Last edited by Zz_Bi_zZ; 16-04-2009, 14:18.

          Comment


          • Nguyên văn bởi ttyanhtu Xem bài viết
            còn một vấn đề nữa mấy bác giải thích giùm em nha

            em có đoạn chương trình như sau:

            Code:
            void main()
            {
                char i = 5;
                P1 = 0xFF;
                delay(50);
                P1 = 0x1;
                while(i--)        //chỗ khó hiểu là ở đây nè mấy bác
                {
                    delay(10);    //delay khoảng 0,3 giây
                    P1 = 0xF0;;
                    delay(10);
                    P1 = 0x0F;
                }
            while(1){}
            }//main
            nhưng ko hiểu sao đoạn vòng lặp
            Code:
            while(i--)        //kieu 2
                {
                    delay(10);
                    P1 = 0xF0;;
                    delay(10);
                    P1 = 0x0F;
                }
            lại là vòng lặp vô tận, tức là 4 đèn thay phiên nhau chớp liên tục. đủng ra là khi i = 0 thì đèn sẽ ko chớp nữa và 4 led mắc ở P4-P7 phải sáng.
            8 led mắc vào 8 chân của P1 89C51.

            em chạy mô phỏng bằng Protues.

            bác pro nào chỉ bảo em được ko ạ
            Chắc tại thằng proteus nó hơi ngu chứ đoạn đó lặp vô tận làm sao đc. Chắc chắn dừng khi i=0. Bạn thử tương vào mạch thật xem sao. Đừng chơi mô phỏng mô phẻo làm giề.
            AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
            Xem thêm tại Online Store ---> Click here
            Mob: 0982.083.106

            Comment


            • Nguyên văn bởi rsbe Xem bài viết
              em mới làm quen với kiel, nên bị tắc ngay từ đâu, các bác làm ơn cho em hỏi, em xài con vi điều khiển P89V51RB2FN em lục mãi trong INCLUDE mà cung ko thấy file header nào của nó cả, em có thể add file nào khác được ạ
              địa chỉ chân họ Philip cung giống như họ ATMEL thui , lấy đại <AT89S53.h> đi , sai chỗ nào , đọc datasheet P89V51RB2FN bổ cung chỗ đó

              Comment


              • Nguyên văn bởi Zz_Bi_zZ Xem bài viết
                bộ u tửong khi i = 0 thì i ko giảm dc nữa hả ?
                đố u , sau khi i về 0 , thì giá trị sau đó của nó là bao nhiu ? đừng nói là -1 nghe ...hehehe ....

                do đó , ct trên có thể viết lại

                Code:
                void main()
                {
                    
                    P1 = 0xFF; // tat het led luc RST
                    while(1)       
                    {
                        delay(10);  
                        P1 = 0xF0;
                        delay(10);
                        P1 = 0x0F;
                    }
                }
                chết ,tui quên là vòng lặp while , khi i=0 thì nó thoát , hix ,sr vì chưa đọc kỹ...

                Comment


                • Giúp mình

                  code mình như sau:
                  #include <REGX51.H>
                  #define bat 1
                  #define tat 0
                  sbit led1=P1^0;
                  sbit led2=P1^1;
                  sbit led3=P1^2;
                  sbit led4=P1^3;
                  sbit led5=P1^4;
                  sbit led6=P1^5;
                  sbit led7=P1^6;
                  sbit led8=P1^7;
                  sbit led9=P2^0;
                  sbit led10=P2^1;
                  sbit led11=P2^2;
                  sbit led12=P2^3;
                  sbit led13=P2^4;
                  sbit led14=P2^5;
                  sbit led15=P2^6;
                  sbit led16=P2^7;
                  void tre(long time);
                  void tre(long time)
                  {
                  long n;
                  for(n=0;n<time;n++)
                  {
                  // thoi ngoi cho` vay
                  }
                  }
                  void main ()
                  {
                  long n;
                  while (1)
                  {
                  P1=0x01;
                  tre(5000);
                  P2=0x01;
                  tre(5000);
                  for (n=0;n<8;n++)
                  {
                  P1=P1>>1;
                  tre(5000);
                  P2=P2<<1;
                  tre(5000);
                  }
                  P1=0x80;
                  tre(5000);
                  P2=0x80;
                  tre(5000);
                  for (n=0;n<8;n++)
                  {
                  P1=P1<<1;
                  tre(5000);
                  P2=P2>>1;
                  tre(5000);
                  }
                  }
                  }
                  làm sao cho 2 port P1 và P2 cùng chạy (đồng thời) được nhỉ, bác nào giúp mình với, mỉnh chỉ xài được P1 chạy và sau đó là P2 àh. thanks

                  Comment


                  • Nếu bạn muốn 2 port chạy đồng thời thì bạn cho 2 đoạn chường trình vào chường trình ngắt timer 0 và timer 1. Thời gian xảy ra ngắt timer 1 là -50 còn timer 0 là -100, bạn có thể chọn tùy ý, mới vào chương trình bạn cho xảy ra ngắt timer 1 trước.

                    Comment


                    • p89v51rd2

                      Nguyên văn bởi rsbe Xem bài viết
                      em mới làm quen với kiel, nên bị tắc ngay từ đâu, các bác làm ơn cho em hỏi, em xài con vi điều khiển P89V51RB2FN em lục mãi trong INCLUDE mà cung ko thấy file header nào của nó cả, em có thể add file nào khác được ạ
                      Hi!
                      U có thể tạo thư viện cho nó bằng cách chép file này <#include ''p89v51rx2.h>vào thư mục //keilC/Phillip/INC//.U có thể tải file đó về tại đây.
                      http://www.dientuvietnam.net/forums/showthread.php?t=1163&page=31[/URL]

                      Comment


                      • các bạn ơi cho mình hỏi. theo mình biết thì trong keilC thì có một số hàm hỗ trợ còn 1 số hàm thì không được hỗ trợ trong thư viện.vậy làm sao mình biết thư viện đã hỗ trợ hàm nào để dùng còn hàm nào không hỗ trợ phải tự viết.ví dụ như trong file "stdio.h" thì mình thấy có nhiều hàm mình ko biết hàm nào mình phải tự viết hàm nào dùng.ví như hàm putchar() phải tự viết trong khi puts() lại dùng mà ko phải viết lại.

                        Comment


                        • Theo mình thì bạn nên viết lại các hàm đó.Vì hàm địa phương (hàm mà mình tự viết) thì dùng thuận tiện hơn nhiều.Khi bạn viết xong bạn có thể lưu nó vào thư viện luc nào cần thì lấy ra dùng.
                          Chúc zui ze.

                          Comment


                          • đúng như bạn nói.nhưng với những hàm đơn giản thì mình có thể tự viết được nhưng với những hàm phức tạp thì mính pó tay.dù sao cũng ghi nhận ý kiến của bạn.

                            Comment


                            • Nguyên văn bởi VNarmy Xem bài viết
                              Chắc tại thằng proteus nó hơi ngu chứ đoạn đó lặp vô tận làm sao đc. Chắc chắn dừng khi i=0. Bạn thử tương vào mạch thật xem sao. Đừng chơi mô phỏng mô phẻo làm giề.
                              Mình nghĩ hay là tại Keil nó dịch file hex sai chứ, mô phỏng có lẽ ko sai đâu bạn, mình thấy có những cái rất là hiển nhiên đúng nhưng mà khi dịch ra file hex thì chạy lung tung ko à, debug cũng vậy, ko biết có nên tin tưởng Keil c ko nữa

                              Comment


                              • Nguyên văn bởi ttyanhtu Xem bài viết
                                Mấy bác cho em hỏi trong C mình viết

                                A = A << 1;

                                có giống với lệnh RL A trong hợp ngữ không.

                                Sao em viết thề này
                                P1 = 0x1; // P1 là Port1 8bit
                                P1 = P1 << 1 thì một vài vòng lặp thì P1 = 0 là sao ạ.

                                mấy bác giải thích giùm em nha, thanks
                                mấy bác giúp em vấn đề trên được ko ạ, xin cảm ơn

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                • mèomướp
                                  Trả lời cho Công thức điện tử
                                  bởi mèomướp
                                  Dạ thời thế giờ thay đổi theo hướng tích cực hơn rồi chú trung sĩ ạ. Kiến thức được chia sẻ ngày càng nhìu nên làm ăn gian dối ko còn dễ dàng như trước đâu ạ. Những thợ nhỏ rồi sẽ thành công nhân sản xuất đồ mới hết thay vì sửa chữa lặt vặt...
                                  Hôm qua, 21:21
                                • mèomướp
                                  Trả lời cho Xin hỏi về màn hình laptop
                                  bởi mèomướp
                                  Dạ cùng chuẩn tín hiệu thì chắc chắn là nhận ạ. Vì bản chất oled hay lcd thì đều phải có mạch chuyển đổi trên thanh gỗ rồi chuyển sang những chip xử lý hàng nghìn chân gắn trên những tab mỏng dính rồi mới ra các điểm ảnh theo hàng...
                                  Hôm qua, 20:31
                                • yname11
                                  Trả lời cho Xin hỏi về màn hình laptop
                                  bởi yname11
                                  Ok , thanks bác đã chỉ...
                                  Hôm qua, 15:06
                                • nguyendinhvan
                                  Công thức điện tử
                                  bởi nguyendinhvan
                                  Sau bao năm nghiên cứu cái dtvn. Tôi phát hiện công thức này. Các anh em xem đúng bao nhiêu phần trăm nhé !

                                  Chập thì thay. Cháy thì tháo
                                  Làm thì láo. Báo thì hay
                                  May thì khoe. Rủi thì bỏ
                                  Thành tích nhỏ. Báo thành to
                                  Làm cho có. Báo chi li
                                  Sai cả li. Báo
                                  ...
                                  Hôm qua, 00:35
                                • yname11
                                  Trả lời cho Xin hỏi về màn hình laptop
                                  bởi yname11
                                  có chắc ko b, màn lcd phải có cao áp mới sáng, màn led thì ko có, ko có cáp chuyển đổi thì lắp thế nào đc ??...
                                  25-11-2024, 22:31
                                • mèomướp
                                  Trả lời cho Xin hỏi về màn hình laptop
                                  bởi mèomướp
                                  Dạ ý chú là màn oled ấy ạ. Cùng chuẩn lvds cùng độ phân giải thì cắm được ạ. Còn nó mà khác thì hơi khó vì oled các điểm ảnh nó tự phát sáng chứ ko dùng đèn nền như lcd. Cháu chỉ biết đến vậy thôi ạ. Chú muốn nghịch phải tự tìm hiểu kỹ trước khi mua thôi, khó mà ông thợ nào tư vấn vụ này...
                                  25-11-2024, 22:14
                                • bactho
                                  Trả lời cho Tự làm máy đo Cuộn cảm
                                  bởi bactho
                                  Hay đấy bạn ạ. Đây có thể hiểu là máy đo cuộn dây. Tiện đây xin cho hỏi bạn có hiểu rõ về máy nạp rôm pcb 45 của hãng thiên minh không giúp mình cách cài fw của nó với vì mình vừa được anh bạn cho nhưng lại không biết cài fw nên chưa dùng được. Nếu có thể thì bạn giúp mình với...
                                  25-11-2024, 21:48
                                • yname11
                                  Trả lời cho Xin hỏi về màn hình laptop
                                  bởi yname11
                                  màn của mình là LCD , giờ m muốn mua màn LED để thay thế (ko muốn dùng màn LCD nữa) , lên muốn hỏi xem có cáp chuyển đổi nào có thể cắm đc màn LED vào ko , tất nhiên phải có cùng số chân pin với màn cũ rồi . VD: màn cũ là lcd mỏng , 40 pin...
                                  25-11-2024, 21:43
                                • bactho
                                  Trả lời cho các bạn giúp mình về file HEX với!!!
                                  bởi bactho
                                  Bạn vào trang phuclanshop.com ,tìm đến góc kỹ thuật. Tác giả vương khánh hưng nói rất rõ về điều bạn tìm...
                                  25-11-2024, 21:21
                                • mèomướp
                                  Trả lời cho Xin hỏi về màn hình laptop
                                  bởi mèomướp
                                  Dạ màn hình lcd đều có thể lai cấy cho nhau được hết ạ. Các loại cáp, bo mạch chuyển đổi lvds rất nhìu, với dòng sony còn phải nhổ cả chip nhớ của main cũ đưa lên gỗ thì mới lắp sang máy khác đc, chưa kể các bệnh về màu... ngay cả...
                                  25-11-2024, 20:43
                                Đang tải...
                                X