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

  • Nguyên văn bởi ngohaibac Xem bài viết
    bạn phải dịch ra file .hex trước thì mới có thể Debug được.

    Bạn nên tạo ra một project.Vào Project -> New project . Nó sẽ hướng dẫn cụ thể bạn làm thế nào. Chọn con vi điều khiển để làm việc ví dụ AT89C51 của Atmel.

    Sau đó bạn vào file-> new bạn lưu tên file. Chú ý là phải có phần mở rộng ví dụ file C thì đuôi là .c rồi save vào. Viết chương trình trong file đó.

    Khi đó chưa chạy được, chưa dịch được vì nó không trong Project của bạn. Bạn phải kích chuột phải vào tên Project ở cửa sổ bên trái chọn Add file to project( đại loại thế không nhớ rõ).

    Tiếp đến bạn dịch ra file .hex bằng cách lựa chọn trong Option ỏ tab Output là to Hex file.

    Sau đó bạn dịch ra file .hex. Rồi debug.

    Chỉ đơn giản có thế thôi.

    Để mai tôi viết một bài hướng dẫn cơ bản cho các bạn mới học về vấn đề này.
    vậy cho mình hỏi làm sao máy tính nhận dạng được kit nap 8951 vậy?

    Comment


    • hic hic , chán quá, em chạy translate thì 0 lỗi, 0 warning , vậy mà build target lại ko được, báo lỗi như sau :

      Build target 'Target 1'
      linking...
      *** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
      SYMBOL: W
      MODULE: led_matrix_chu_chay_222.obj (LED_MATRIX_CHU_CHAY_222)
      *** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
      SYMBOL: M
      MODULE: led_matrix_chu_chay_222.obj (LED_MATRIX_CHU_CHAY_222)
      *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
      SEGMENT: ?PR?_TRE_MS?LED_MATRIX_CHU_CHAY_222
      *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
      SEGMENT: ?PR?Y?LED_MATRIX_CHU_CHAY_222
      *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
      SEGMENT: ?PR?S?LED_MATRIX_CHU_CHAY_222
      *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
      SEGMENT: ?PR?D?LED_MATRIX_CHU_CHAY_222
      Program Size: data=65.0 xdata=0 code=900
      Target not created
      Cung cấp Oscilocope , Inverter , Switching , DC power supply , AC millivolt meter ....

      Comment


      • Nguyên văn bởi chieng Xem bài viết
        Ngõ Thông Phong là ở đâu cơ, Nỉ chỉ dẫn tận tình đi. Tìm hoài không thấy. xìe xie (cảm ơn)
        Bro đến từ Trung Hoa Dân Quốc à? Thế thì không biết ngõ Thông Phong là phải roài.
        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 hiodong Xem bài viết
          hic hic , chán quá, em chạy translate thì 0 lỗi, 0 warning , vậy mà build target lại ko được, báo lỗi như sau :

          Build target 'Target 1'
          linking...
          *** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
          SYMBOL: W
          MODULE: led_matrix_chu_chay_222.obj (LED_MATRIX_CHU_CHAY_222)
          *** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
          SYMBOL: M
          MODULE: led_matrix_chu_chay_222.obj (LED_MATRIX_CHU_CHAY_222)
          *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
          SEGMENT: ?PR?_TRE_MS?LED_MATRIX_CHU_CHAY_222
          *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
          SEGMENT: ?PR?Y?LED_MATRIX_CHU_CHAY_222
          *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
          SEGMENT: ?PR?S?LED_MATRIX_CHU_CHAY_222
          *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
          SEGMENT: ?PR?D?LED_MATRIX_CHU_CHAY_222
          Program Size: data=65.0 xdata=0 code=900
          Target not created
          Mấy cái Warning thì chỉ là bạn có viết hàm nhưng không dùng thôi. Còn cái Error có thể là do bạn viết lại một hàm đã có trong thư viện rồi. Nếu là lỗi này thì dùng từ khóa extern có thể giải quyết được.
          Để có thể trả lời rõ hơn thì bạn có thể post toàn bộ code lên thì mới biết được.
          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


          • Cám ơn bác , chạy ngọt rồi, em đổi tên cái W, M đi là xong !
            Cung cấp Oscilocope , Inverter , Switching , DC power supply , AC millivolt meter ....

            Comment


            • Nguyên văn bởi chieng Xem bài viết
              Ngõ Thông Phong là ở đâu cơ, Nỉ chỉ dẫn tận tình đi. Tìm hoài không thấy. xìe xie (cảm ơn)
              Làm mạch bằng tay : nhà số 9, ngách 30, ngõ Thông Phong, đường Tôn Đức Thắng. HN.
              Làm mạch bằng máy : ngõ 726, đường Láng.
              Have fun .
              học tập, lao động và làm việc theo gương chủ tịch Hồ Chí Minh vĩ đại .

              Comment


              • có bác nào down được cái App note của Keil rùi làm ơn up lên lại cho em đi, cái link mới của bác NgoHaiBac hết đát rùi.
                Cám ơn các bác

                Comment


                • Nguyên văn bởi hiodong Xem bài viết
                  hic hic , chán quá, em chạy translate thì 0 lỗi, 0 warning , vậy mà build target lại ko được, báo lỗi như sau :

                  Build target 'Target 1'
                  linking...
                  *** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
                  SYMBOL: W
                  MODULE: led_matrix_chu_chay_222.obj (LED_MATRIX_CHU_CHAY_222)
                  *** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
                  SYMBOL: M
                  MODULE: led_matrix_chu_chay_222.obj (LED_MATRIX_CHU_CHAY_222)
                  *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
                  SEGMENT: ?PR?_TRE_MS?LED_MATRIX_CHU_CHAY_222
                  *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
                  SEGMENT: ?PR?Y?LED_MATRIX_CHU_CHAY_222
                  *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
                  SEGMENT: ?PR?S?LED_MATRIX_CHU_CHAY_222
                  *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
                  SEGMENT: ?PR?D?LED_MATRIX_CHU_CHAY_222
                  Program Size: data=65.0 xdata=0 code=900
                  Target not created
                  Lỗi: "ERROR L104: MULTIPLE PUBLIC DEFINITIONS" Là lỗi mà bạn khai bái public một hàm trong 2 module khác nhau. bạn dùng chức năng "Search te xt in file" của keil để tìm hàm hoặc biến co tên là W và M. Nếu trong ám thì tìm chữ M: và W:

                  Comment


                  • Tài liệu Keil C Appnote mình đã upload lại tại đây:
                    http://www.esnips.com/web/8051Bac/

                    Các ban download bí kíp này về nhé.
                    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


                    • Bác NgoHaiBac viết tut về giao tiếp I2C cho EEPROM 24Cxx dùng 8951 bằng Keil-C nhé. Em có tham khảo trên diễn đàn rồi, một số đoạn code chưa hiểu nhưng vẫn copy nguyên vào biên dịch và thử nghiệm (code của bác QueDuong), test bằng Proteus cũng như mạch thật thì chạy k như mong muốn.

                      Test đơn giản là fill 24C02 ở address (i) bằng i (i=0-255) đó rồi đọc tuần tự ra lại, nó đều báo 255 cả.
                      --------
                      void delay1(unsigned char x)
                      {
                      unsigned int i;
                      for(i=0;i<x;i++);
                      }

                      void x24c02_init()
                      {
                      SCL=1;
                      SDA=1;
                      }
                      void start()
                      {
                      SDA=1;
                      SCL=1;
                      SDA=0;
                      SCL=0;
                      }
                      void stop()
                      {
                      SDA=0;
                      SCL=1;
                      SDA=1;
                      }
                      void writex(unsigned char j)
                      {
                      unsigned char i,temp;
                      temp=j;
                      for (i=0;i<8;i++){
                      temp=temp<<1;
                      SCL=0;
                      SDA=CY;
                      SCL=1;
                      }
                      SCL=0;
                      SDA=1;
                      }
                      unsigned char readx()
                      {
                      unsigned char i,j,k=0;
                      SCL=0;
                      SDA=1;
                      for (i=0;i<8;i++){
                      SCL=1;
                      if (SDA==1) j=1;
                      else j=0;
                      k=(k<<1)|j; SCL=0;
                      }
                      return(k);
                      }
                      void clock()
                      {
                      unsigned char i=0;
                      SCL=1;
                      while ((SDA==1)&&(i<255))i++;
                      SCL=0;
                      }
                      unsigned char x24c02_read(unsigned char address)
                      {
                      unsigned char i;
                      start(); writex(0xae); //oxae = write, chân A0 A1 A2 treo lên nguồn
                      clock(); writex(address);
                      clock(); start();
                      writex(0xaf); clock(); //oxaf = read
                      i=readx(); stop();
                      delay1(10);
                      return(i);
                      }
                      void x24c02_write(unsigned char address,unsigned char info)
                      {
                      EA=0;
                      start(); writex(0xae);
                      clock(); writex(address);
                      clock(); writex(info);
                      clock(); stop();
                      EA=1;
                      delay1(50);
                      }
                      //--------------------------------
                      //------ CHUONG TRINH CHINH ------
                      //--------------------------------

                      void main(void)
                      {
                      unsigned char i;
                      x24c02_init();
                      for(i=0; i<255; i++)
                      {x24c02_write(i,i);}

                      while(1)
                      {
                      for(i=0; i<255; i++)
                      {HienThi(x24c02_read(i));
                      Delay(1000);
                      }
                      }
                      }

                      Comment


                      • Mình đang học lập trình Keil C cho 8051, nhưng do máy tính laptop của mình ko có cổng COM. Làm thế nào bây giờ, mình dùng mạch nạp bằng cổng USB thì khi muốn lập trình giao tiếp Cổng COM thì cũng chịu (RS232). Các bạn tư vấn cho mình với!

                        Comment


                        • Nguyên văn bởi chieng Xem bài viết
                          Mình đang học lập trình Keil C cho 8051, nhưng do máy tính laptop của mình ko có cổng COM. Làm thế nào bây giờ, mình dùng mạch nạp bằng cổng USB thì khi muốn lập trình giao tiếp Cổng COM thì cũng chịu (RS232). Các bạn tư vấn cho mình với!
                          Ra chợ giời mua cái USB-2-COM.
                          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


                          • Nên mua cái SP180 của Tme hoặc của PNLad là hay nhất đấy bạn.

                            Comment


                            • anh que dung oi cứu em vơi,em đang làm mạch đo tốc động cơ bằng phương pháp đo chu kỳ xung ở ngoài.Cụ thể là khi co xảy ra một ngắt thi minh cho timer chạy,nếu có sự tran thì tăng một biến, tớ nhờ các cậu chỉ giúp mình lấy giá trị của timer đếm được, giá tri của thanh ghi đếm số tràn,mụch đích là lấy 60 000 000/(giá trị của timer đếm được của một chu kỳ) chính là số vòng /phút.Minh đang viết băng C.mong anh giup đở.

                              Comment


                              • [chào tất cả nhé,cho minh các bạn giup mình với.Minh đang làm mạch đo tốc động cơ bằng phương pháp đo chu kỳ xung ở ngoài.Cụ thể là khi co xảy ra một ngắt thi minh cho timer chạy,nếu có sự tran thì tăng một biến, tớ nhờ các cậu chỉ giúp mình lấy giá trị của timer đếm được, giá tri của thanh ghi đếm số tràn,mụch đích là lấy 60 000 000/(giá trị của timer đếm được của một chu kỳ) chính là số vòng /phút.Minh đang viết băng C.mong các cao thủ chỉ giáo.

                                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