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

  • Mình mới upload lại tài liệu C51 Primer - sách hướng dẫn lập trình Keil C cho 8051:

    http://picvietnam.com/ngohaibac/8051...1%20Primer.pdf

    Xin mời các bạn down load về và thông báo cho các bạn xa gần về tài liệu này để các bạn có tài liệu để học nhé. Tí mình sẽ upload chương trình và keygen của Keil C bản 8.05 cho các bạn nhé. Coi như là sẽ không còn những câu hỏi xin phần mềm và ***** nữa.

    Chúc các bạn thành công.
    Technical sale at WT Microelectronics S'pore
    Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
    Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com

    Comment


    • Đây là bản Keil C 8.05:
      http://picvietnam.com/ngohaibac/8051/c51v805.exe

      Còn đây là keygen: cách ***** mình đã nói rùi thì phải nhưng sẽ nói ngay sau đây để mọi người không phải mò mẫm và kết thúc luôn việc hỏi về phần mềm này:
      http://picvietnam.com/ngohaibac/8051...lic-v3.2_2.exe

      Đầu tiên bạn mở file Keil_lic ra để lấy key của lic:

      Hình 1: Lấy licience


      Sau đó, thực hiện như sau:

      Hình 2: Mở Licience managment




      Hình 3: Thêm key lic vào
      Cuối cùng ấn vào nút debug nếu không thấy có cửa sổ thông báo giới hạn 2K tức là ok rùi.

      chúc các bạn thành công.
      Last edited by ngohaibac; 31-08-2006, 22:01.
      Technical sale at WT Microelectronics S'pore
      Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
      Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com

      Comment


      • //day la chuong trinh tao tre 1s
        unsigned int temp;
        temp=1000;
        while(temp--)
        {
        //day la doan chuong trinh tao tre 1 ms
        TMOD=0x01; //su dung timer0,che do 16 bit

        TH0=0xFC;
        TL0=0x18 ;
        TR0=1;
        while(!TF0);
        TR0=0;
        TF0=0;
        }
        }
        }

        Ban typhn cho minh hoi cai nay nhe: Ban giai thich cho minh chuong trinh tao tre 1s di, cu the la o cho: TH0=0xFC;
        TL0=0x18;
        Minh chua ro cac lenh nay chay se ton bao nhieu chu ky may? Neu ben VDK thi FC18H= 64536 => tg tre gan bang 1000x64536us thi ko the la 1s duoc!?
        |

        Comment


        • Nguyên văn bởi lmthang Xem bài viết
          //day la chuong trinh tao tre 1s
          unsigned int temp;
          temp=1000;
          while(temp--)
          {
          //day la doan chuong trinh tao tre 1 ms
          TMOD=0x01; //su dung timer0,che do 16 bit

          TH0=0xFC;
          TL0=0x18 ;
          TR0=1;
          while(!TF0);
          TR0=0;
          TF0=0;
          }
          }
          }

          Ban typhn cho minh hoi cai nay nhe: Ban giai thich cho minh chuong trinh tao tre 1s di, cu the la o cho: TH0=0xFC;
          TL0=0x18;
          Minh chua ro cac lenh nay chay se ton bao nhieu chu ky may? Neu ben VDK thi FC18H= 64536 => tg tre gan bang 1000x64536us thi ko the la 1s duoc!?
          Bạn nghĩ nhầm rồi!
          Khi nạp giá trị FC18H = 64536 thì timer 16 bit sẽ bắt đầu đếm từ giá trị FC18H rồi đến FC19 -> FC1A -> ......->FFFF = 65515, như lần đếm cuối cùng timer sẽ bị tràn về 0000 lúc này cờ TI được set -> xảy ra ngắt.
          như vậy chu kỳ ngắt của timer 65536 - 64536 = 1000 -> đã đúng chưa.
          CUNG CẤP PSOC, MẠCH NẠP
          CHUYỂN ĐỔI USB <-> RS485 AutoBaud
          RS232 <-> RS485 MultiBaud
          MẠCH NẠP USBPPI S7-200
          Mobile: 0906076116
          Email:

          Comment


          • Nguyên văn bởi kien_tran Xem bài viết
            Chào ban N_H_B! mình đã thực hiện các bước bạn hướng dẫn và copy cả bài của bạn vào chạy thử nữa nhưng khi dịch nó cứ báo lỗi. Mình đã kiểm tra lại quá trình thực hiện và cú pháp khi lập trình thậm chí còn cài lại nữa (KeilC v 7.08) bản cracked. Lỗi cụ thể như sau:

            Build target 'Target 1'
            Compiling leddon.C...
            ***WARNING C318 IN LINK 1 OF LEDDON.C: CAN'T OPEN FILE 'REGX51.H'
            leddon.C(14):error C202 : 'P1_0' : undefined identifier
            leddon.C(15):error C202 : 'P1_0' : undefined identifier
            Target not create

            Chỉ giúp nhé.
            Cậu chỉ cần nhấn phải chuột vào phần soạn thaỏ chương trình chọn insert '#include <AT89x51.H>' là OK!

            Comment


            • ban NGO HAI BAC oi, ban co vi du keilc nao viet de quet 8 led7 doan ko?
              vi du ve dong ho so chan han.
              minh moi lam quen voi keilc nen co mot so giai thuat minh chua biet.
              neu co ban co the post len de minh tham khao duoc ko.
              can on nhieu nha.Nho luon nay ma minh da co the viet mot so chtrinh keilc don gian roi, luon nay rat hay do.

              Comment


              • http://picvietnam.com/ngohaibac/8051...1%20Primer.pdf

                Mình gửi bạn link down quyển sách đó đây.

                Còn ví dụ quyet led 7 đoạn bạn có thể xem ở bên box Pic phần "tutorial bằng HTPIC" ấy.

                Chúc các bạn thành công.
                Technical sale at WT Microelectronics S'pore
                Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
                Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com

                Comment


                • Các bạn cho minh hoi chut, minh moi tap viet Keil C, ve cach truyen tham so cho cac ham`, minh muon truyen chuoi lam tham so thi sao nhi
                  Minh lam the nay
                  void Str_To_LCD (char MSG) {
                  unsigned char i;
                  while ((i<=16) && (MSG[i] != 0)) {
                  i++;
                  Char_To_LCD(MSG[i]);
                  }
                  }
                  nhưng nó báo lỗi là
                  MCT.C(184): warning C280: 'MSG': unreferenced local variable
                  **************************
                  them dau ngoac vuong [] sau bien MSG
                  void Str_To_LCD (char MSG[]) {
                  unsigned char i;
                  while ((i<=16) && (MSG[i] != 0)) {
                  i++;
                  Char_To_LCD(MSG[i]);
                  }
                  }
                  thi no van bao loi nhu vay!

                  2) Con mot thac mac nua la cach su dung cac ham ve xu ly chuoi nhu ham minh da thu la strlen()
                  #include <string.h>
                  #include <stdio.h> /* for printf */

                  void tst_strlen (void) {
                  char buf [] = "Find the length of this string";
                  int len;

                  len = strlen (buf); /* len = 30 */

                  printf ("string length is %d\n", len);

                  }
                  y nhu vi du cua Keil nhung no bao Warning

                  *** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
                  SYMBOL: ?C?COPY

                  *** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
                  SYMBOL: _STRLEN

                  Phai vao cac Option nhu the nao de khac phuc cac loi nay nhi!

                  Comment


                  • Nguyên văn bởi natra2k2 Xem bài viết
                    Các bạn cho minh hoi chut, minh moi tap viet Keil C, ve cach truyen tham so cho cac ham`, minh muon truyen chuoi lam tham so thi sao nhi
                    Minh lam the nay
                    void Str_To_LCD (char MSG) {
                    unsigned char i;
                    while ((i<=16) && (MSG[i] != 0)) {
                    i++;
                    Char_To_LCD(MSG[i]);
                    }
                    }
                    nhưng nó báo lỗi là
                    MCT.C(184): warning C280: 'MSG': unreferenced local variable
                    **************************
                    them dau ngoac vuong [] sau bien MSG
                    void Str_To_LCD (char MSG[]) {
                    unsigned char i;
                    while ((i<=16) && (MSG[i] != 0)) {
                    i++;
                    Char_To_LCD(MSG[i]);
                    }
                    }
                    thi no van bao loi nhu vay!
                    Bạn dùng thế là không ổn rùi, bạn nên xem lại các cách truyền tham số cho hàm: giá trị, tham trị, con trỏ, tham chiếu trong C nhé (tham chiếu chỉ dùng với C++ và cao hơn thôi).

                    Do đó ở đây bạn dùng con trỏ thì hoàn toàn có thể dùng cách truy nhập mảng theo chỉ số như thế. Do đó hàm của bạn phải viết lại như sau:
                    Code:
                    void Str_To_LCD (char *MSG) {
                    // do something
                    }
                    2) Con mot thac mac nua la cach su dung cac ham ve xu ly chuoi nhu ham minh da thu la strlen()

                    #include <string.h>
                    #include <stdio.h> /* for printf */

                    void tst_strlen (void) {
                    char buf [] = "Find the length of this string";
                    int len;

                    len = strlen (buf); /* len = 30 */

                    printf ("string length is %d\n", len);

                    }
                    y nhu vi du cua Keil nhung no bao Warning

                    *** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
                    SYMBOL: ?C?COPY

                    *** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
                    SYMBOL: _STRLEN

                    Phai vao cac Option nhu the nao de khac phuc cac loi nay nhi!
                    Bạn phải viết cả chương trình của bạn xem thế nào nhé? Nên xem lại hàm strlen() có tham số như thế nào và nằm trong header file nào nhé?

                    Chúc bạn thành công.
                    Technical sale at WT Microelectronics S'pore
                    Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
                    Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com

                    Comment


                    • nhung ma thu vien cua no lay o dau toi viet chung trinh lam nhu cac buoc tren nhung no bao loi la ko tim thay thu vien cua 8051 lam sao day

                      Comment


                      • Bạn phải thêm dòng
                        #include <AT89X51.H> ở đầu chương trình, nếu vẫn không có thì bạn vào thư mục C:\Keil\C51\INC\Atmel mà tìm nhé!

                        Comment


                        • Mình khai báo 1 biến temp nằm trong vùng định địa chỉ bit được
                          unsigned char bdata temp;

                          muốn truy nhập đến từng bit của nó thì làm sao nhỉ!
                          Mình đã làm thử
                          temp^0 = 1;
                          nhưng không được!

                          Comment


                          • Nguyên văn bởi natra2k2 Xem bài viết
                            Mình khai báo 1 biến temp nằm trong vùng định địa chỉ bit được
                            unsigned char bdata temp;

                            muốn truy nhập đến từng bit của nó thì làm sao nhỉ!
                            Mình đã làm thử
                            temp^0 = 1;
                            nhưng không được!
                            Đã tìm ra:
                            Muốn truy nhập từng bit thì phải định nghĩa như sau
                            ví dụ:
                            Code:
                            	bdata char test;
                            	sbit test_0 = test^0;
                            	sbit test_1 = test^1;
                            	sbit test_2 = test^2;
                            	sbit test_3 = test^3;
                            	sbit test_4 = test^4;
                            	sbit test_5 = test^5;
                            	sbit test_6 = test^6;
                            	sbit test_7 = test^7;
                            Biến char phải nằm trong vùng định địa chỉ được, tức vùng bdata.
                            Lưu ý là định nghĩa cục bộ nó không chịu, phải là khai báo toàn cục (tức đặt ngay đầu module).
                            Ta có thể truy nhập nó bình thường
                            Code:
                            if (test_0) {
                            _nop_();
                            }

                            Comment


                            • Một câu nữa:
                              Có cách nào, hoặc macro nào để giúp nhập giá trị bằng nhị phân không?
                              ví dụ bên ASM ta hay làm
                              Code:
                              mov P0, #10001000B  // gán cho P0 giá trị #11H
                              bên Keil C không thấy nhập giá trị bằng kiểu nhị phân, chỉ có thể nhập bằng giá trị thập phân hoặc hexa thôi
                              ví dụ
                              Code:
                              P0 = 0x11;

                              Comment


                              • Chào bạn đây là chương trình đảo các bit của một byte mà bạn đã hỏi mình.
                                Code:
                                unsigned char SwapBitInByte(unsigned char byteIn){
                                	unsigned char temp, i, byteOut = 0;
                                	for(i = 0; i<8; i++){
                                		temp = byteIn & (1<<i);              //; lấy bit thứ i
                                		if(i<4) temp = temp<<(7 - 2*i);    //; đảo bít
                                		else temp = temp>> (2*i - 7);    
                                		byteOut |= temp;                       //; 
                                	};
                                	return byteOut;
                                }
                                Chúc bạn thành công.
                                Last edited by ngohaibac; 19-10-2006, 15:37.
                                Technical sale at WT Microelectronics S'pore
                                Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
                                Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com

                                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