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

  • #76
    Nguyên văn bởi tuan11
    bác ngô hải bắc cho em hỏi chút tại sao chỗ cửa sổ projech của bá lại co file
    status.a51 của em không thấy cái phai đó nên khi dịch ra phai hex nó đôc báo nỗi.mong bác giúp đỡ
    File đó là file khi bạn tạo Project nó hỏi có cần thêm vào không ấy mà. Trong file này nó thiết lập các thông số cho bộ nhớ mà bạn dùng. Ví dụ: chiều dài theo Byte của bộ nhớ IDATA, điạ chỉ tuyệt đối của bộ nhớ XDATA, PDATA,...

    Các bạn có thể mở file đó lên đê xem.Bằng Notepad hoặc ngay trong Keil C cũng được.

    Chi tiết về cách thiết lập các tham số này, xin mời các bạn đọc quyển C51 Primer. Mình k nhớ trang số bao nhiêu 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


    • #77
      Gửi bạn NHH và snngheo. Thực tế việc khai báo mảng thế này trong KeilC là không được. Bạn PhạmThaiHoa đã trả lời rùi. Mình xin nói lại.

      Code:
      const unsigned char Font[]={ 0b00000011, 0b10011111, 0b00100101, 0b00001101, 0b10011001,	0b01001001, 0b01000001, 0b00011111, 0b00000001, 0b00001001};
      Khai báo mảng thế này chỉ là gợi ý của mình cho bạn SVNgheo. Đây là code mình copy từ chương trình viết bằng HTPIC.

      Các bạn khi muốn dùng thì phải chuyển như sau: 0b00000011 = 0x03; ... sau đó viết lại vào mảng:

      Code:
      const unsigned char Font[] = {0x02,.. };
      Đề nghị bạn Tuan11 đọc kĩ các định nghĩa các Port, thanh ghi của Chip mà bạn dùng trong file .h để biết chính xác tên nó định nghĩa ra sao để tránh trường hợp viết sai tên port như trên. Nhiều khi không phải tên thanh ghi định nghĩa trong file này đã trùng với tên thanh ghi trong datasheet đâu. Bạn xem lại nha.Trong HTPIC mình thấy là nhiều thanh ghi k giống.

      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


      • #78
        Nguyên văn bởi ngohaibac
        Gửi bạn NHH và snngheo. Thực tế việc khai báo mảng thế này trong KeilC là không được. Bạn PhạmThaiHoa đã trả lời rùi. Mình xin nói lại.

        Code:
        const unsigned char Font[]={ 0b00000011, 0b10011111, 0b00100101, 0b00001101, 0b10011001,	0b01001001, 0b01000001, 0b00011111, 0b00000001, 0b00001001};
        Khai báo mảng thế này chỉ là gợi ý của mình cho bạn SVNgheo. Đây là code mình copy từ chương trình viết bằng HTPIC.

        Các bạn khi muốn dùng thì phải chuyển như sau: 0b00000011 = 0x03; ... sau đó viết lại vào mảng:

        Code:
        const unsigned char Font[] = {0x02,.. };
        Đề nghị bạn Tuan11 đọc kĩ các định nghĩa các Port, thanh ghi của Chip mà bạn dùng trong file .h để biết chính xác tên nó định nghĩa ra sao để tránh trường hợp viết sai tên port như trên. Nhiều khi không phải tên thanh ghi định nghĩa trong file này đã trùng với tên thanh ghi trong datasheet đâu. Bạn xem lại nha.Trong HTPIC mình thấy là nhiều thanh ghi k giống.

        Chúc các bạn thành công.

        Mới phát hiện ra thằng Uvision Keil C khai báo số binary khác người, nó là như sau:

        Thêm y hoặc Y sau số binary, VD: 10010y hoặc 10010Y đều được !

        Comment


        • #79
          mấy anh cho em hỏi chút
          trong Keil C khi debug nếu muốn xem nội dung RAM thay đổi ra sao thì xem ở đâu
          em có thấy cái Memory Map nhưng mà cái đó hình như là ROM chứ không phải RAM??
          xin lỗi vì câu hỏi có vẻ hơi ngu vì tìm mãi không ra cách cho nên.......
          quền còn câu nữa em lập trình bằng ASM thế khi dùng ASM có thể dùng Watch Window theo dõi biến như C được không??? vì ASM hình như không có cấu trúc khai báo biến như lập trình cấp cao

          Comment


          • #80
            Các Bác cho mình hoi chút nhé, mình đang làm LCD 14x2 nhwng mà mình bị "kẹt" ở chổ giả sử như mình thực hiện x=100/3; khi này là số lẽ, như vậy thì làm sao cho hiển thị ra LCD, mình chỉ có thể hiện thị đến số 33 à, mà đúng ra phải hiển thị là 33.3333 mới đúng, các bác có cách nào không chỉ giúp nhé!
            hãy cố gắng dù vướn phải thất bại!!!!!!!!

            Comment


            • #81
              Nguyên văn bởi chipmickey
              Các Bác cho mình hoi chút nhé, mình đang làm LCD 14x2 nhwng mà mình bị "kẹt" ở chổ giả sử như mình thực hiện x=100/3; khi này là số lẽ, như vậy thì làm sao cho hiển thị ra LCD, mình chỉ có thể hiện thị đến số 33 à, mà đúng ra phải hiển thị là 33.3333 mới đúng, các bác có cách nào không chỉ giúp nhé!
              Bạn chỉ hiển thị được số 33 là do bạn khai báo biến x là kiểu số nguyên hoặc biến hình thức của hàm ghi vào LCD là kiểu số nguyên.

              Khi đó, cả 2 trường hợp sẽ tự ép kiểu vào thành kiểu số nguyên nên sẽ là số 33.
              Vậy thì có cách như sau k biết có được không. Bạn thử truyền một xâu ra đó với cách định dạng khác kiểu như hàm printf đó. Mình nghĩ là cái này có thể được.

              Cách 2 là bạn truyền số thực ra và biến hình thức là kiểu số thực.

              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


              • #82
                Nguyên văn bởi chipmickey
                Các Bác cho mình hoi chút nhé, mình đang làm LCD 14x2 nhwng mà mình bị "kẹt" ở chổ giả sử như mình thực hiện x=100/3; khi này là số lẽ, như vậy thì làm sao cho hiển thị ra LCD, mình chỉ có thể hiện thị đến số 33 à, mà đúng ra phải hiển thị là 33.3333 mới đúng, các bác có cách nào không chỉ giúp nhé!
                Giải quyết vấn đề trên không khó, nếu bạn đã hiển thị được số 33 rồi, tui làm như sau:
                Chia 100/3 kết quả lấy phần nguyên, hiển thị lên LCD
                Hiển thị lấy chấm để phân cách phần nguyên và phần thập phân.
                Lấy phần dư 100-3x33=1
                Tùy thuộc vào số chữ số sau dấu phẩy mà bạn nhân phần dư với 10,100,1000. Bạn đem số này chia 3, lại hiển thị phần nguyên. Nếu bạn nhân với 10 thì bạn có 1 số sau dấu phảy, 100 là 2 số....

                Còn cách chuyển đổi số -->ASCII thì bạn sang box PIC phần tutorial cho HTPIC tôi có nói cách chuyển.

                Comment


                • #83
                  mình đã khai báo kiểu long rồi mà vẫn không được. còn cách của bác phamthaihoa thì mình đã làm nhưng thấy không được, vì mình làm công việc này: mình làm thiết bị đo giá trị của cuộn cảm L =1/2*pi*f*f*C. như vậy thì mình không biết kết quả có lẽ hay không? nên mình định chuyển nó về String vì mình có chương trình hiển thị cả chuổi ra màn hình. thật sự thì chiương trình in ra số 33 là mình đã thực hiện chuyển đổi ra ASCII rồi đó. mình định hỏi có cách nào khác có thể làm cho nó tốt hơn không? cám ơn các bác đã góp ý cho mình.
                  hãy cố gắng dù vướn phải thất bại!!!!!!!!

                  Comment


                  • #84
                    a` quên! bác ngohaibac đưa mấy cái link sao mà tôi down không được gì hết, bác coi lại dùm nhé. máy cái đó hay quá nên bác có thể cho link trực tiếp của server để dể dàng down hơn.
                    hãy cố gắng dù vướn phải thất bại!!!!!!!!

                    Comment


                    • #85
                      Nguyên văn bởi chipmickey
                      a` quên! bác ngohaibac đưa mấy cái link sao mà tôi down không được gì hết, bác coi lại dùm nhé. máy cái đó hay quá nên bác có thể cho link trực tiếp của server để dể dàng down hơn.
                      Mình xin lỗi tất cả các bạn. Cái host đó bị lão Công Công xóa hết tất cả tài liệu, sách vở. Tài liệu hay, phần mềm lên đến vài GB đã bị xóa hết rùi.

                      Thật là chán cho lão ấy quá. Toàn làm những trò chán đời. Mình đang đợi anh F mua host mới để upload tài liệu lên. Hiện giờ mình cũng chẳng có chỗ nào upload đây nè. Trong thời gian ngắn nữa sẽ có ngay. có lẽ mình phải edit lại hết mấy cái bài viết mất. Khổ quá. Host vớ vẩn cũng sợ, cái host luckytoki.com mua bằng tiên chùa đó chứ . Mà k phải mình mua mà dc cho .

                      Các bạn cứ chờ nhé. Bạn có thể liên lạc trực tiếp vớii mình để có đĩa nà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


                      • #86
                        Tôi viết một chương trình đơn giản để xóa 20 ô nhớ có địa chỉ đầu là 20h trong vùng bộ nhớ dữ liệu :
                        #include"regx51.h"
                        #include"absacc.h"
                        void main() {
                        unsigned char dc,n;
                        dc=0x20;
                        for(n=0;n<20;n++){
                        DBYTE[dc]=0;
                        dc++;
                        }
                        }
                        Chương trình đã được dịch ra file hex nhưng khi chạy thì bị báo lỗi như sau :
                        *** error 65: access violation at C:0x3414 : no 'execute/read' permission
                        Tôi mới bắt đầu học Keil nên không biết , lỗi này là như thế nào vậy ?

                        Comment


                        • #87
                          Nguyên văn bởi nphdbk
                          Chương trình đã được dịch ra file hex nhưng khi chạy thì bị báo lỗi như sau :
                          *** error 65: access violation at C:0x3414 : no 'execute/read' permission
                          Tôi mới bắt đầu học Keil nên không biết , lỗi này là như thế nào vậy ?
                          Lõi này nghĩa là: không thể truy nhập vào địa chỉ C:0x3414, không có quyền thực thi/đọc.

                          Thông thường lỗi này xảy ra khi chúng ta truy nhập vào vùng nhớ mà không được phép đọc ghi. Bạn cần xem lại thành phàn trong header file absacc.h để biết về các mảng truy nhập vào vùng nhớ dữ liệu, dùng mảng DBYTE.

                          Ổ cứng mình bị xoá hết dữ liệu, nên mình không có Keil C để kiểm tra lại chương trình cho bạn. thông cảm nhé.Lúc khác mình sẽ xem lại cho bạn.

                          Chúc 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


                          • #88
                            The Philips LPC2138 is an ARM7TDMI-S based high-performance 32-bit RISC Microcontroller with Thumb extensions 512KB on-chip Flash ROM with In-System Programming (ISP) and In-Application Programming (IAP), Two 8-ch 10bit ADC 32KB RAM, Vectored Interrupt Controller, Two UARTs, one with full modem interface. Two I2C serial interfaces, Two SPI serial interfaces Three 32-bit timers, Watchdog Timer, Real Time Clock with optional battery backup, Brown out detect circuit General purpose I/O pins. CPU clock up to 60 MHz, On-chip crystal oscillator and On-chip PLL.
                            Thông tin về con chip đó của bạn như trên. Mạnh thật đấy .
                            http://www.keil.com/dd/chip/3734.htm

                            Bạn thử mở thư mục Inc/Philips ra xem sao, và thử lục tung những header file đó lên xem. Mình tin là bạn sẽ tìm được đúng cho mình. vì đoạn đầu tiên trong header file bao giờ cũng liệt kê các chip sử dụng header file đó.

                            Còn tệp lệnh của Keil C thì mình nghĩ là không cần. Đơn giản thì đầu tiên bạn xem tất cả các header file của nó. việc sử dụng các câu lệnh hoàn toàn giống ngôn ngữ C đơn thuần, bạn kết hợp việc định nghĩa các Port và thanh ghi theo địa chỉ trong header file và thư viện mở rộng (stdlib.h, string.h, stdio.h,...).

                            Chúc bạn thanh 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


                            • #89
                              Do thư viện chưa hoàn thành nên mình đành gửi link cho các bạn bao gồm phần mềm và lic của nó.

                              Phần mềm bản Keil C 8.02 và 8.04a: các bạn điền đầy đủ tên, .. vào những ô in đậm để down bản demo về:
                              https://www.keil.com/demo/eval/c51.htm

                              Lic: http://www.mcubbs.net/bbs/uploadfile...1057467280.rar

                              Cách *****:

                              Cài chương trình Keil C 8.02 ở trên
                              Bạn chạy chương trình trong file nến ở trên. Chọn V2 và ấn Generate để có số Serial Number.
                              Sau đó, chạy phần mềm Keil C mới cài đặt, vào menu File chọn Licience Management (tôi nhớ k rõ nữa, đại loại liên quan đến Lic), sau đó bạn Paste số serial đó vào chỗ Serial và ấn nút Install. Khi đó bạn sẽ có bản 8.02 Full.
                              Muốn nâng cấp lên bản 8.04a thì copy file tool.ini trong thư mục cài đặt Keil C vào chỗ khác, rùi cài bản đó, sau đó paste lại file đó vào thư mục cài đặt. Thế là ok, chạy thử debug nếu k thấy có thông báo giới hạn 2K là ok.

                              Bài viết này vi phạm về vấn đề có lẽ sẽ bị xóa trong thời gian tới. Nên các bạn down nhanh lên nhé .

                              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


                              • #90
                                Ở đây có Keil 3.03 ftp://picvietnam.com/hpecom/Keil_V303/
                                Us, Pass thì nằm ở chữ ký của PIC Bang chủ.
                                Bạn vào đấy lấy về dùng.
                                Chúc thành công.
                                Một bông hồng cho những ai đang còn mẹ,
                                Đang còn mẹ để lòng vui sướng hơ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

                                Đang tải...
                                X