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

                                Đang tải...
                                X