1. THÔNG BÁO TUYỂN ADMIN DIỄN ĐÀN 2013
    Tìm kiếm nhà trọ - Ở ghép
    THÔNG BÁO BÁN ÁO SPKT.NET CHO THÀNH VIÊN DIỄN ĐÀN


    HÃY TÌM KIẾM Ở ĐÂY TRƯỚC KHI ĐẶT CÂU HỎI
    {xen:phrase loading}

Các trình biên dịch cho vi điều khiển pic

Thảo luận trong 'Hướng dẫn học Vi Điều Khiển' bắt đầu bởi xuanvn, 5 Tháng mười hai 2012.

  1. xuanvn New Member

    Số bài viết: 14
    Đã được thích: 0
    Điểm thành tích: 0
    KHÁI NIỆM CƠ BẢN VỀ NGÔN NGỮ LẬP TRÌNH – TRÌNH BIÊN DICH

    Có lẽ điều đầu tiên các bạn cần biết để có thể hiểu được bài viết này đó là các khái niệm về NGÔN NGỮ LẬP TRÌNH, TRÌNH BIÊN DỊCH.

    - NGÔN NGỮ: là một hệ thống những cú pháp và ngữ nghĩa dùng để giao tiếp giữa 2 đối tượng với nhau. Theo nghĩa đó NGÔN NGỮ LẬP TRÌNH cũng là một hệ thống những cú pháp, mỗi cú pháp mang một ý nghĩa riêng biệt dùng để giao tiếp giữa người và máy tính số.

    - TRÌNH BIÊN DỊCH: là một chương trình mang cơ chế dịch từ loại ngôn ngữ này sang ngôn ngữ khác. Đối với một máy tính số, ngôn ngữ của nó là các mức logic (mức điện áp cao, mức điện áp thấp) được thể hiện về mặt toán học là các bit nhị phân. Như vậy việc một chuỗi nhị phân nào đó được thực thi trên máy tính để đưa ra ngõ ra là các mức kích cao, thấp thì đã phải qua một trình biên dịch. Tuy nhiên, do trình biên dịch này được thực hiện bởi cơ chế phần cứng (mạch tích hợp) bên trong chip mà không phải lập trình nên người ta chấp nhận rằng mã nhị phân là NGÔN NGỮ MÁY.

    - Ngôn ngữ của con người chúng ta là hệ thống các ký tự (được mã hóa theo bảng mã ASCI). Việc lập trình cho máy tính trên NGÔN NGỮ MÁY lại vô cùng khó khăn nên người ta đã phát triển những ngôn ngữ khác, gần gũi hơn với con người như: HỢP NGỮ (ASM), NGÔN NGỮ LẬP TRÌNH C… Trong đó ngôn ngữ C được xếp vào loại NGÔN NGỮ CẤP CAO.

    - Hầu hết các ngôn ngữ cấp cao dành cho các vi điều khiển hiện nay đều dừng lại ở ngôn ngữ C. Tuy nhiên ở mỗi cấp độ khác nhau ngôn ngữ C cũng chia ra nhiều dạng khác nhau. Và ứng với mỗi dạng đó lại có những TRÌNH BIÊN DỊCH để thực hiện việc dịch từ NGÔN NGỮ CẤP CAO này sang ngôn ngữ máy.

    CÁC TRÌNH BIÊN DỊCH NGÔN NGỮ C CHO PIC

    Phần này sẽ khái quát các TRÌNH BIÊN DỊCH dịch từ ngôn ngữ lập trình C cho vi điều khiển PIC. Ứng với mỗi loại trình biên dịch khác nhau, bài viết cũng sẽ phân tích ưu điểm, nhược điểm và khả năng ứng dụng của TRÌNH BIÊN DỊCH đó.
    Có thể nói với vi điều khiển PIC, các trình biên dịch phát triển theo 2 hướng sau: Hướng tiện dụng, nhanh chóng và hướng chuyên sâu

    HƯỚNG TIỆN DỤNG – NHANH CHÓNG

    CCSC HAY PICC và MIKRO C

    - Nếu bạn nào đã làm quen với PIC chắc hẳn bạn biết CCSC là gì. Vì sao tôi lại đề cập đến CCSC đầu tiên. Đơn giản bởi vì nó là loại trình biên dịch cho PIC phổ biến nhất hiện nay. Với ưu điểm dễ sử dụng (người lập trình hầu như không quan tâm tới phần cứng của vi điều khiển ngoại trừ sơ đồ kết nối chân), và ra đời sớm CCSC trở nên quen thuộc đối với những ai đã dùng dòng PIC16F kể từ 2003. Và cho đến ngày nay đây vẫn là một loại trình biên dịch được ưa chuộng.
    [IMG]

    - Mikro C cũng có những tính chất tương tự CCSC – cùng là hướng tiện dụng và nhanh chóng nhất cho người dùng. Cái mạnh nhất của MikroC là mảng thư viện, hỗ trợ từ nhà sản xuất (tutorial, tài liệu,ứng dụng).

    Có thể khái quát một số ưu, nhược điểm của mảng này như sau:
    - Ưu điểm:
    + Dễ sử dụng (chỉ cần có kiến thức về C cơ bản);
    + Bản thân nhiều thư viện hỗ trợ –> Rút ngắn thời gian lập trình;
    + Hỗ trợ nhiều công cụ đi kèm
    + Phổ biến nên nhiều tài liệu học tập, diễn đàn trao đổi –> Rút ngắn thời gian học.
    - Nhược điểm:
    + Tính bao đóng của thư viện và các hàm trong thư viện, không thể sửa đổi và phát triển, không thể kết hợp với những cú pháp của trình biên dịch khác
    + Không tối ưu về code: do ảnh hưởng của nhược điểm đầu tiên nên trong chương trình được dịch sẽ có rất nhiều đoạn mã không cần thiết
    + Không tối ưu về biên dịch: đặc biệt là bản Free hay bản Crack
    + Khó có thể lập trình theo hướng realtime hoặc những ứng dụng yêu cầu khắc khe về thời gian tính toán
    - Ứng dụng:
    Với những ưu điểm, nhược điểm trên có lẽ ta cũng dễ dàng nhận ra được nên dùng CCSC trong trường hợp nào. Ý kiến của bản thân tôi thì CCSC sẽ rất có ích trong những trường hợp sau:
    + Chưa vững về ngôn ngữ lập trình C
    + Mới tiếp xúc với vi điều khiển lần đầu
    + Muốn thực hiện nhanh một dự án, dĩ nhiên là những dự án, công việc không yêu cầu khắc khe về thời gian tính toán

    (CÒN TIẾP…)

    Nguồn: xuanvn - HỌC LẬP TRÌNH PIC - BIGLAB GROUP
  2. xuanvn New Member

    Số bài viết: 14
    Đã được thích: 0
    Điểm thành tích: 0
    HƯỚNG CHUYÊN SÂU

    HITECH C – C18,30,32

    HITECH bản thân từ đầu là một nhóm phát triển độc lập với Microchip. Phương pháp tương tác thanh ghi, bit trên thanh ghi được HITECH phát triển trong trình biên dịch HITECH C là một phương pháp hay. Điều đó cho phép người lập trình có khả năng tương tác ở cấp độ từng BIT trong thanh ghi để cài đặt những tính năng cần thiết cho vi điều khiển. Nhưng để làm được việc này người lập trình không những có kiến thức về kỹ thuật lập trình C mà còn phải hiểu rõ về kiến trúc phần cứng của vi điều khiển. Tuy nhiên, làm được việc đó thật tuyệt vời vì người lập trình sẽ hiểu tường tận hoạt động của vi điều khiển thế nào, dễ dàng tối ưu code của họ. Đó chính là lý do vì sao tôi xếp trình biên dịch nào vào HƯỚNG CHUYÊN SÂU.

    Bạn có thể tự hỏi, tại sao một hướng hay như vậy lại chỉ dừng lại ở PIC16F? Câu trả lời là thế này. Nhận thấy được ưu điểm tuyệt vời đó, Microchip đã mua lại HITECH C từ nhóm HITECH. Họ thậm chí còn thuê cả nhóm này để phát triển các trình biên dịch tiếp theo cho riêng mình. Đó là sự ra đời của C18, C30, C32. Nếu bạn tìm hiểu đồng thời cả HITECH C và seri: C18 (viết cho PIC18; C30 (viết cho dsPIC); C32 (viết cho PIC32) thì bạn sẽ thấy đây thật ra chính là một chuỗi liên tiếp. Cấu trúc chương trình, phương pháp tương tác hoàn toàn giống nhau. Điều khác nhau duy nhất là phương pháp CONFIG (tạm hiểu là khai báo phần cứng ban đầu). Cũng dễ hiểu, mỗi dòng PIC có một kiến trúc phần cứng khác nhau nên việc khai báo cũng khác nhau thôi.
    [IMG]

    VẬY CÒN XC8, XC16, XC32?

    Cấu trúc hoàn toàn giống nhau, PIC16F và PIC18F đều là dòng 8bit, thế nên quá bất tiện khi sử dụng 2 trình biên dịch khác nhau: HITECH C và C18. Điều đó làm cho người dùng cảm thấy hoang mang và khó chịu, đặc biệt là những người bắt đầu học. Nhận thấy điều đó, tháng 9/2012 Microchip cho ra đời 3 phiên bản nâng cấp của HITECH C và C18, C30, C32 là: XC8 (viết cho dòng 8bit, bao gồm PIC16, PIC18), XC16 (viết cho dòng 16 bit dsPIC30F, 33F), XC32 (viết cho dòng 32 bit PIC32). Đây thực sự có thể gọi là một bước hợp nhất của Microchip. Cùng với việc tương thích với bản MPLAB IDE X, Microchip đã nâng người lập trình PIC lên thành chuyên nghiệp.
    Về mặt lý thuyết, lập trình trên XC8 không khác gì với HITECH C và C18. Tuy nhiên, có nhiều thứ đã đổi thay. Dĩ nhiên là theo hướng tiến bộ, ít nhất là theo quan điểm của Microchip. Chính vì thế việc tìm hiểu XC8 cũng sẽ vừa dễ dàng nhưng cần thận trọng. Đặc biệt là với những người đã biết đến HITECH C và C18.

    [IMG]
    ƯU ĐIỂM
    + Tương tác cấp độ phần cứng –> buộc người lập trình phải hiểu rõ kiến trúc phần cứng –> dễ dàng tìm hiểu các dòng vi điều khiển cao hơn như MSP hay ARM…
    + Tính open trong phương pháp lập trình, source code –> Dễ dàng phát triển, kết nối với các phương pháp lập trình khác
    + Cho phép người lập trình tối ưu hóa về code
    + Người lập trình có thể tính toán được thời gian hoạt thực thi chương trình một cách chính xác
    + Rất tương thích với môi trường lập trình MPLAB và vi điều khiển PIC (vì cùng một cha đẻ Microchip)
    NHƯỢC ĐIỂM
    + Khó học: Không những có kiến thức về C, người lập trình còn phải hiểu rõ về cấu trúc máy tính, bộ nhớ…
    + Mới ra đời nên thư viện hỗ trợ còn nghèo nàn, người sử dụng hầu như phải code toàn bộ
    + Tài liệu học tập còn hạn chế (ngoại trừ HITECH C)
    ỨNG DỤNG
    + Muốn tìm hiểu chuyên sâu về vi điều khiển để phát triển tiếp các dòng vi điều khiển khó hơn
    + Muốn tối ưu hóa code, thời gian thực thi, biên dịch chương trình…
    + Muốn thực hiện một dự án mà yêu cầu khắc khe về thời gian tính toán của chip xử lý

    Nguôn: xuanvn - CHUYÊN MỤC: HỌC VI ĐIỀU KHIỂN PIC - BIGLAB
  3. croket_2512 Moderator

    Số bài viết: 2,190
    Đã được thích: 17
    Điểm thành tích: 38
    Giới tính: Nam
  4. xuanvn New Member

    Số bài viết: 14
    Đã được thích: 0
    Điểm thành tích: 0
    Diễn đàn ta là một diễn đàn lớn,của một trường kỹ thuật lớn. Tuy nhiên, mình thấy những chủ đề về kỹ thuật lại ít được các bạn quan tâm. Mình tham gia diễn đàn vì một lời mời của một bạn trong ban quản trị diễn đàn và mình đã hứa sẽ đóng góp cho mảng kỹ thuật của diễn đàn. Mình hy vọng những bài viết của mình sẽ thu hút được sự quan tâm của các bạn và góp phần làm cho phong trào kỹ thuật của diễn đàn mình mạnh lên.
    Thiết nghĩ, như thế thì mới đúng là diễn đàn của sinh viên SPKT - Sư Phạm Kỹ Thuật được.
    Mảng chính của mình là Vi điều khiển và Hệ thống nhúng cho nên mình sẽ đóng góp chính ở mảng này.
    Rất mong Moderator quan tâm và ủng hộ :)
  5. croket_2512 Moderator

    Số bài viết: 2,190
    Đã được thích: 17
    Điểm thành tích: 38
    Giới tính: Nam
    Rất vui vì diễn đàn có thêm một người xây dựng vững chắc nữa! Rất hi vọng bạn và diễn đàn hợp tác được nhiều hơn nữa! Cám ơn bạn nhiều lắm! :)

Chia sẻ trang này