Thông báo

Collapse
No announcement yet.

Hướng dẫn lập trình H8 từ A->X

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Hướng dẫn lập trình H8 từ A->X

    Hôm nay tôi xin giới thiệu với các bạn về cách thức lập trình đối với H8 theo kiểu "mì ăn liền", còn bạn nào muốn nắm rõ và hiểu sâu thì phải có thời gian thì mới nắm được toàn bộ về cấu trúc và tính năng của H8/300H.
    Trước tin tôi xin giới thiệu về ngôn ngữ lập trình cho H8:
    Đây là loại VXL tiên tiến có nhiều tính năng mở rộng làm việc với ngôn ngữ Assembly và ngôn ngữ C. Tuy nhiên chúng ta cần quan tâm nhiều hơn cả là ngôn ngữ C, bởi vì khi làm việc chúng ta hầu hết chỉ cần viết chương trình trên môi trường C thuần túy.
    Do vậy yêu cầu tối thiểu là bạn phải thành thạo ngôn ngữ lập trình C.
    Cấu trúc của một chương trình cho H8 như sau:
    Có 2 công cụ có thể dịch file từ C ra S record đó là bạn dùng môi trường Cygwin và bạn dùng trực tiếp file c38h. Ở đây tôi xin giới thiệu với các bạn về cách dịch 1 file từ C và Assembly sang dạng S record.
    Trước tiên bạn phải tạo 1 thư mục bao gồm các file cơ bản như sau:
    các file *.exe dùng cho trình dịch:A38H.exe,CC38H.exe,.....là những file dùng để dịch các file C và file Assembly.
    File *.MAR-> đây là file lập trình bằng Assembly, chỉ cần duy nhất 1 file, file này người ta gọi nó là startup routine, dùng cho việc tạo và chỉ dẫn chương tình chạy như thế nào, khai báo loại VXL, các dịa chỉ của ROM,RAM,thanh ghi, thiết lập tạo ngắt của các timer..
    Các file C: là những file mà người lập trình có thể viết và tạo thư viện cho riêng mình, thiết lập các cấu trúc hoặc các điều khiển.
    File *.bat-> file này dùng cho việc gọi và tích hợp các chương trình dịch và file chuyển đình dạng. khi dịch chương trình bạn chỉ cần chạy file Bat là tự động các chương trình tích hợp trong thư mục đó chạy theo và xuất ra file *.MOT-> đây chình là định dạng S record dung để nạp vào XVL.

  • #2
    Tool cho lập trình H8

    Để có thể làm việc được một cách dễ dàng tôi xin up lên tool cho việc lập trình cái này, mời các bạn load về và giải nén vào ổ D trong máy tính.
    http://www.esnips.com/web/H8documents
    các bạn down ở trang này về
    Password:toiyeuh8
    Last edited by h8_300H; 28-12-2007, 21:11.

    Comment


    • #3
      Hay ! mời bạn cho ít mẫu đơn giản , khai báo, định nghĩa ... nhấp nháy vài con led .
      Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

      Comment


      • #4
        Phần 2: cách tích hợp file để dịch ra *.MOT file

        Nguyên văn bởi queduong Xem bài viết
        Hay ! mời bạn cho ít mẫu đơn giản , khai báo, định nghĩa ... nhấp nháy vài con led .
        Như đã giới thiệu ở phần đầu, bạn đã có tool cho lập trình H8, công việc tiếp theo là bãn sẽ phải rích hợp tất cả những gì mình làm để dịch ra file *.mot
        Bạn cần có các file sau:
        1->*.MAR là file viết dưới dạng ASSEMBLY(xem file C0ROM.MAR)
        2->*.SUB là file tích hợp các tiêu đề các file C và Assembly, chỉ ra file output và địa chỉ của con VXL(làm việc trong ROM hay RAM)
        3->*.BAT là file để dịch và chạy chương trình, file này gọi toàn bộ thư viện có liên quan đen việc chuyển các file và liên kết dịch ra file *.MOT

        Comment


        • #5
          Phần 3. Cách tạo file *.BAT

          Ví dụ mẫu:
          ---------------File test.bat--------------------
          d:
          cd d:\h8b\bndram
          del c0rom.obj
          \h8b\asm\a38h c0rom
          del err.txt
          \h8b\c8\cc38h -CPU=300HA -INCLUDE=d:\h8b\c8 "&dram" >> err.txt
          \h8b\c8\cc38h -CPU=300HA -INCLUDE=d:\h8b\c8 "&ctrol" >> err.txt
          \h8b\c8\cc38h -CPU=300HA -INCLUDE=d:\h8b\c8 "&pidfun" >> err.txt
          \h8b\c8\cc38h -CPU=300HA -INCLUDE=d:\h8b\c8 "&lcd" >> err.txt
          \h8b\c8\cc38h -CPU=300HA -INCLUDE=d:\h8b\c8 "&ciolib" >> err.txt
          \h8b\c8\cc38h -CPU=300HA -INCLUDE=d:\h8b\c8 "&cinoutlib" >> err.txt
          \h8b\c8\cc38h -CPU=300HA -INCLUDE=d:\h8b\c8 "&mathlib" >> err.txt
          \h8b\c8\cc38h -CPU=300HA -INCLUDE=d:\h8b\c8 "&rcdlib" >> err.txt
          \h8b\c8\cc38h -CPU=300HA -INCLUDE=d:\h8b\c8 "&clklib" >> err.txt
          type err.txt
          \h8b\asm\l38h -SUBCOMMAND=%"&test.sub"
          \h8b\asm\c38h "&test"
          \h8b\asm\MotChange DSP=OFF FILE1="&test.mot" FILE2="&test.mot"
          pause
          ------------------------------------------
          Giải thích các lệnh:
          5 dòng đầu là các lệnh của DOS dùng để chỉ đường dẫn chương trình và xóa các file rác.
          Các dòng tiếp theo là chỉ dẫn gội trình dịch C cho H8 và "include" file C vào để dịch, bạn dùng bao nhiêu file thì phải include bấy nhiêu file vào, chú ý là tên file để trong dấu nháy kép và không có phần mở rộng.
          Lệnh:"\h8b\asm\l38h -SUBCOMMAND=%"&test.sub""-> gọi các link mà đã được tạo ra từ file test.sub(đọc phần trên), phần này gọi trình liên kết l38h
          sau đó dịch và liên kết các link
          cuối cùng là:"\h8b\asm\MotChange DSP=OFF FILE1="&test.mot" FILE2="&test.mot""-> lệnh này dùng để chuyển đổi các file đã được link thành S record-> dạng file *.MOT.
          Nếu muốn biết định dạng *.MOT bạn vào Google và search từ khóa "S record".

          Comment


          • #6
            Còn đây là khai báo địa chỉ phần cứng

            Nguyên văn bởi queduong Xem bài viết
            Hay ! mời bạn cho ít mẫu đơn giản , khai báo, định nghĩa ... nhấp nháy vài con led .
            ---------------------Một số địa chỉ ---------------------------------
            #include <&stdrom.h>
            #include <3067f.h>
            #include "&define.h"
            #include "&stdext.h"
            /**/
            #define RAMINI 0
            #define LCDLMX 4
            /**/
            #define ADCMAX 6
            #define DACMAX 2
            /**/
            #define CHLMAX 2
            #define RNGMAX 3
            #define WGTSCL 10
            /**/
            #define adcsr (volatile unsigned char *)0xffffe8
            #define adccr (volatile unsigned char *)0xffffe9
            #define addrah (volatile unsigned char *)0xffffe0
            #define addral (volatile unsigned char *)0xffffe1
            #define dacsr (volatile unsigned char *)0xfee01a
            #define daccr (volatile unsigned char *)0xffff9e
            #define dacdr0 (volatile unsigned char *)0xffff9c
            #define dacdr1 (volatile unsigned char *)0xffff9d
            /*các cổng vào ra của con VXL*/
            #define PA (volatile unsigned char *)0x440000
            #define PB (volatile unsigned char *)0x440001
            #define PC (volatile unsigned char *)0x440002
            #define PD (volatile unsigned char *)0x440003
            #define PE (volatile unsigned char *)0x440004
            #define PF (volatile unsigned char *)0x440005
            #define PG (volatile unsigned char *)0x440006
            #define PW (volatile unsigned char *)0x440007
            /*các thanh ghi AD và DA*/
            #define ADL (volatile unsigned char *)0x440080
            #define ADH (volatile unsigned char *)0x440081
            #define DAL (volatile unsigned char *)0x4400A0
            #define DAH (volatile unsigned char *)0x4400A1
            #define DALTC (volatile unsigned char *)0x4400C0
            /*Một cấu trúc để tạo bàn phím*/
            volatile struct bitdat {
            int pinflg[6],cntflg[6],pinctr[6],pinmax[6];
            int pinfl2[6],cntfl2[6],pinct2[6],pinma2[6];
            } bitdat,*bit;

            Comment


            • #7
              Tài liệu dùng cho H8

              Một số tài liệu dùng cho H8

              Comment


              • #8
                Nguyên văn bởi h8_300H Xem bài viết
                Để có thể làm việc được một cách dễ dàng tôi xin up lên tool cho việc lập trình cái này, mời các bạn load về và giải nén vào ổ D trong máy tính.
                http://www.esnips.com/web/H8documents
                các bạn down ở trang này về
                Password:toiyeuh8
                Cám ơn anh rất nhiều,Nhưng em không down được too anh ạ anh hướng dẫn em với?
                |

                Comment


                • #9
                  Vẫn Download bình thường

                  Nguyên văn bởi hoang78 Xem bài viết
                  Cám ơn anh rất nhiều,Nhưng em không down được too anh ạ anh hướng dẫn em với?
                  Em chỉ càn Click vào link và download về máy và giải nén là Ok.

                  Comment


                  • #10
                    H8 có board hỗ trợ linux, các bác tham khảo trang này http://strawberry-linux.com/h8/h8max.html

                    Comment


                    • #11
                      bác ơi em đang nghiến cứu con H8/3048F vậy bác có biết download toolkit của nó ở đâu không ạ...??

                      Comment


                      • #12
                        Về chương trình soạn thảo và biên dịch code của H8

                        Hiện tại tôi cũng vừa chuyển qua làm việc liên quan đến H8. Trước đến giờ chỉ sử dụng những họ VDK thông dụng của Atmel, PIC,... nên qua con này phải tìm hiểu lại thiệt là mệt. Lúc đầu search ra chủ đề này, nói thực là cũng tham khảo được nhiều thứ, định hướng tìm tài liệu để đọc tiếp. Vì vậy nhân bài viết này, tôi xin cảm ơn các thành viên đã post bài trong chủ đề này nói riêng và trong diển đàn nói chung. Tôi đã tham khảo được rất nhiều kiến thức trong diển đàn, và mong rằng các bạn hãy tiếp tục cống hiến những hiểu biết của mình cho diển đàn ngày càng phong phú hơn.
                        Tôi tham gia diển đàn này cũng khá lâu, nhưng hầu như chỉ lên đọc là chính, vì kiến thức còn rất hạn chế nên không dám post bài. Tôi rất xem trọng việc post bài ở một diển đàn, vì có thể bài viết sẽ được nhiều người đọc. Nếu bài viết không chính xác, sẽ rất không hay.
                        Về bài viết này, tôi xin giới thiệu về bộ compiler cho VDK của Renesas ( trong đó có H8). Renesas có trình compiler High-performance Embedded Workshop, hỗ trợ viết code (cả C và Assembly) cho những họ VDK của hãng.
                        Các bạn quan tâm có thể download bản evaluation (với đầy đủ chức năng) sử dụng trong thời gian 60 ngày.
                        link:
                        http://eu.renesas.com/fmwk.jsp?cnt=/...s&layerId=2296
                        Các bạn có thể down về bộ compiler tương ứng cho VDK mà bạn đang làm việc.
                        Về chương trình, viết bằng C hoặc Assembly đều được. Nếu quen viết bằng Assembly, các bạn tham khảo tập lệnh trong manual của VDK ( đối với H8 có tất cả 62 lệnh). Nếu rành về C, các bạn nên viết C thì chương trình và giải thuật tính toán dễ quản lý hơn (theo kinh nghiệm của tôi). Làm việc với nhiều loại VDK khác nhau, việc bạn biết C sẽ rất có lợi. Bởi vì không cần nắm rõ tập lệnh của mổi họ, một việc tốn rất nhiều thời gian.
                        Các hãng khác nhau cung cấp trình biên dịch khác nhau, tuy nhiên phần lớn vẫn hỗ trợ biên dịch cho ngôn ngữ C chuẩn. Cái khác biệt là mổi trình biên dịch có thể sẽ khác nhau ở phần khai báo thư viện, các dẫn suất biên dịch (thư viện mô tả VDK, các dẫn suất biên dịch cho mã code sẽ được lưu vào vùng nào trong ROM,...). Và khi bạn làm việc với một VDK mới, bạn chỉ cần tìm hiểu về điểm khác biệt nhỏ này (sẽ không tốn nhiều thời gian như học tập lệnh và viết assembly).
                        Tôi đang tìm hiểu về trình compiler này, viết chương trình và mô phỏng ok rồi. Chỉ còn vấn đề khi biên dịch ra mã máy, tôi chưa quản lý được chương trình sẽ biên dịch ra như thế nào, được ghi vào vùng nào trong bộ nhớ chương trình. Vấn đề này cũng không quan trọng lắm nhưng tôi luôn chú trọng khi làm việc với bất kỳ họ VDK nào. Nếu chỉ dừng lại ở chương trình thực thi ok thì vẫn chưa an tâm. Vì nếu bạn quản lý tốt được bộ nhớ chương trình, thì bạn sẽ sử dụng hiệu quả tài nguyên của con VDK cung cấp cho bạn.
                        Mong rằng các bạn quan tâm (đặc biệt là H8-300H) cùng nhau trao đổi thêm về vấn đề này.
                        Trong chủ đề này, các bạn cũng tranh luận về các họ VDK, xem loại nào "ngon" hơn. Theo tôi, việc này không cần thiết. Vì mổi hãng, mổi VDK có chức năng, lợi điểm riêng. Tùy theo mổi ứng dụng, chúng ta cần một VDK nhất định. Ví dụ nếu chỉ điều khiển vài con led, thì đâu cần thiết phải dùng H8, hay thậm chí những con 8051 với ít chức năng nhất. Do đó, cái chúng ta nên tranh luận là, ví dụ, với một ứng dụng cụ thể, tôi (hoặc các bạn) sử dụng con VDK này là hợp lý hay không? Và nếu được các bạn có nhiều kinh nghiệm về VDK trên diễn đàn hãy thảo luận về các ưu điểm, nhược điểm của VDK trong từng ứng dụng cụ thể. Như vậy thì các thành viên mới, các bạn mới bắt đầu với VDK cũng được tham khảo nhiều.
                        Về con H8, nếu bạn nào quan tâm và muốn có phần cứng để test, có thể liên lạc với tôi. Tôi đang làm việc ở Nhật và nếu điều kiện cho phép, tôi sẽ mua và gửi dùm cho các bạn.
                        Cuối củng, một lời khuyên đối với các bạn mới học VDK. Hãy học và nắm vững kiến thức nền tảng về VDK (8051), cụ thể là CPU, ngoại vi, ROM, RAM...
                        Nếu muốn thực hành, hãy bắt đầu với những con thuộc họ 8051 vì giá thành bình dân, có bị cháy cũng ko tiếc lắm. Nếu có điều kiện hơn thì cũng nên tìm hiểu làm thử những họ khác. Một điều có thể khẳng định với các bạn là không ai có điều kiện làm việc với tất cả các họ VDK. Bạn có thể làm về 8051 hay PIC, nhưng công việc sau này buộc bạn phải làm với VDK khác thì sao? Do đó, vấn đề là bạn hãy nắm những kiến thức cơ bản, nền tảng, bạn sẽ làm việc được với tất cả họ VDK. Đương nhiên gặp con nào mới thì trước hết hãy vô diễn đàn này, các bậc cao thủ sẽ chỉ đường cho chúng ta.
                        Hôm nay, viết code xong nên lên đây ba hoa tí xíu, mong các bạn đừng chửi già mồm. Có gì thắc mắc về trình compiler này, chúng ta cùng tìm hiểu. Chúc các bạn có nhiều kinh nghiệm thú vị với VDK....

                        Comment


                        • #13
                          H8- Còn ai quan tâm không?

                          Hi member!
                          Hình như họ H8 không còn được chú ý, chủ đề về H8 không có bài viết mới nào?!
                          Bạn H8/300 không còn nhiệt huyết hướng dẫn về lập trình H8 nữa sao?!
                          Tôi vừa hoàn thành xong project với H8, lập trình bằng C, dùng trình Compiler của Renesas luôn. Làm xong thật nhẹ nhỏm, đặc biệt họ H8 này tài liệu tiếng Anh rất khó hiểu, tiếng Nhật thì hoa cả mắt... hix.
                          Qua project này tôi cũng nắm được một số kinh nghiệm nhỏ, có thể chia sẻ với các bạn nào cần. Kinh nghiệm về dùng trình Compiler HEW của Renesas, Flash Programming cho H8.
                          Project vừa qua, tôi sử dụng H8 3664, Development board có giá khoảng 1800yen (trên dưới 300k tính tỷ giá hiện tại (04/2008)). Bao gồm MCU, Program block (RS232), đĩa phần mềm (HEW, Flash Programming Tool), Tài liệu hướng dẫn.
                          Giá như vậy tôi thấy quá rẻ đối với một MCU.
                          Về sự khác biệt của H8 với các họ khác tôi chưa nhận thấy rõ, vì project vừa làm cũng bình thường, có thể thay thế bằng họ khác.
                          Tuy nhiên, người Nhật thường chỉ dùng đồ Nhật, nên H8 rất thông dụng bên này. Và đồ Nhật thì nổi tiếng về độ bền, điều này khỏi phải bàn (Trừ đồ Nhật... Tảo).
                          Cho nên, những ứng dụng đòi hỏi độ bền, độ ổn định cao thì nên dùng họ này.
                          Xog project cũng hơi rảnh rỗi, nếu bạn nào quan tâm đến H8, chúng ta có thể trao đổi....

                          Comment


                          • #14
                            chào các bác!
                            em đang tìm hiểu con H8S/2600 nhưng loai hoay mãi mà không biết làm mạch như thế nào để nạp được. các bác có sơ đồ nạp và phát triển thì cho em tham khảo với. ^_^

                            Comment


                            • #15
                              Tool cho H8

                              Sorry các đồng chí.
                              Hiện nay tôi chuyển sang làm mảng điều khiển DCS nên có ít thời gian không lên diễn đàn.
                              Tôi xin up lên một số Tool mà các bạn có thể xem và tham khảo.

                              Comment

                              Về tác giả

                              Collapse

                              h8_300H Like music, sport,computer Tìm hiểu thêm về h8_300H

                              Bài viết mới nhất

                              Collapse

                              Đang tải...
                              X