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

                                Đang tải...
                                X