You are on page 1of 7

Lập trình vi điều khiển AVR với ngôn ngữ C WWW.EEELABS.

ORG

CHƯƠNG 3: TRÌNH BIÊN DỊCH MIKROC


DÀNH CHO AVR

NGÔN NGỮ C CƠ BẢN
Bài 1 : GIỚI THIỆU TRÌNH BIÊN DỊCH MIKROC
I. Giới thiệu.
MikroC là trình biên dịch do hãng Mikroelektronika phát triển, đây là
trình biên dịch khá mạnh và có các ưu điểm sau :
+Giao diện thân thiện, dễ sử dụng.
+Thư viện hỗ trợ phong phú, đa dạng.
+File hướng dẫn khá đầy đủ và ví dụ trực quan.
+Kèm theo các công cụ như : Tạo mã cho LCD, Graphic LCD, mã led 7
đoạn, tra cứu mã ASCII…
Tuy nhiên chương trình cũng còn 1 số khuyết điểm như hay bị lỗi giao
diện (phiên bản hiện tại là MikroC for AVR 2.10), không hỗ trợ cấu hình trực
quan qua giao diện người dùng, không có chức năng nạp chip, fuse bit bằng các
mạch nạp thông dụng (chức năng nạp chip chỉ dùng cho mạch nạp của hãng).
II. Giao diện của MikroC
Hình 1. Giao diện của MikroC for AVR phiên bản 2.10.

Trần Thừa – 2010 29


Lập trình vi điều khiển AVR với ngôn ngữ C WWW.EEELABS.ORG

Các thành phần cơ bản của MikroC :


+Code Editor : vùng soạn thảo, đây là nơi ta viết chương trình.
+Project settings : 1 cấu hình phần mềm cho vi điều khiển bao gồm lại vi điều
khiển và tần số xung nhịp của vi điều khiển.
+Library manager : quản lý các thư viện của MikroC, các thư viện được chọn
(check) ở đây sẽ không cần phải khai báo lại trong lúc viết code.
+Project manager : quản lý các dữ liệu thành phần của dự án đang thực hiện
như mã nguồn (*.c), mã máy (*.hex)…
+Các công cụ quản cơ bản như File (quản lý tập tin), Edit (quản lý soạn thảo),
View(quản lý các thành phần giao diện), Project(quản lý dự án và biên dịch).
+Công cụ gỡ rối và theo dõi - Run: trong mục này chứa công cụ gỡ rối, giúp
chúng ta chạy từng lệnh để kiểm tra lỗi, đồng thời cho phép quan sát các thanh
ghi, biến…Đây có thể xem là trình mô phỏng hoạt động của vi điều khiển.
+Tools : chứa các công cụ tiện ích như biên tập mã cho các module hiển thị…
+Help : phần trợ giúp rất hữu ích, nơi đây ta có thể tìm thông tin các hàm, các
thư viện, các ví dụ về sử dụng tài nguyên của chương trình.
III. Sử dụng chương trình.
1. Tạo dự án mới :
Từ menu chính chọn Project => New Project hoặc nhấn tổ hợp phím
Shift+Ctr+N để kích hoạt trình thuật sĩ dự án mới (New Project Wizard) như
hình 2.

Hình 2. Gọi trình thuật sĩ tạo dự án mới.

Trần Thừa – 2010 30


Lập trình vi điều khiển AVR với ngôn ngữ C WWW.EEELABS.ORG

Bấm Next để bắt đầu bước thứ nhất trong quá trình tạo dự án mới, chọn
vi điều khiển. Lựa chọn vi điều khiển thích hợp sau đó bấm Next để đến bước
tiếp theo. Ví dụ chọn Atmega8

Hình 3. Chọn vi điều khiển và tần số xung nhịp


Tiếp theo, ta chọn tần số xung nhịp cấp cho vi điều khiển(thường là thạch anh),
đơn vị tính là Mhz. Ví dụ chọn 16 Mhz. Chọn xong bấm next để tiếp tục.
Thông số được chọn trong hai bước trên có thể thay đổi trong lúc soạn thảo
chương trình thông qua công cụ Project Settings.

Hình 4. Chọn thư mục lưu trữ và file có sẵn


Sau khi chọn tần số xung nhịp, ta chọn tiếp nơi lưu trữ toàn bộ dữ liệu của dự
án và tên dự án. Bạn nên tạo 1 thư mục mới để dễ dàng quản lý. Sau khi chọn
xong, bấm next để sang bước tiếp theo.
Bước tiếp theo là bước chọn các file mã lệnh (*.c) đã có sẵn, có thể là các file
nguồn của dự án khác. Nếu không cần chọn file có sẵn, ta có thể bỏ qua bước
này và bấm next để sang bước tiếp theo.
Bước 5/6 là bước chọn các thư viện có sẵn cho dự án mới, bạn có 2 lựa chọn:
+Include All: sẽ chọn tất cả thư viện mà chương trình hỗ trợ.
+Include None: Không chọn thư viện nào cả.

Trần Thừa – 2010 31


Lập trình vi điều khiển AVR với ngôn ngữ C WWW.EEELABS.ORG

Bạn có thể chọn Include All và có thể dễ dàng thêm bớt thư viện trong
lúc làm việc sau này bằng công cụ Library manager. Chọn xong bấm next để
chuyển sang bước cuối cùng. Ở bước cuối cùng bạn chỉ việc bấm Finish để
hoàn thành thủ tục tạo dự án mới, hoặc bấm Back để trở lại bất kỳ bước nào
trước đó.

Hình 5. Chọn thư viện và kết thúc trình thuật sĩ.

2. Quản lý, soạn thảo, biên dịch và gỡ rối chương trình.


a/. Quản lý dự án

Hình 6. Quản lý dự án
Để quản lý các tập tin của dự án, từ menu chính ta vào View =>Project
manager. Thanh công cụ quản lý dự án hiện ra ở vùng làm việc, đây thực chất
là 1 cây thư mục, các thư mục cần chú lý là:
+Sources: chính là file chương trình sẽ được dịch ra mã máy, nếu muốn
thay đổi file chương trình này, ta bấm phải chuột vào thư mục Sources chọn
Add File To Project sau đó chọn file nguồn cần thêm vào, sau đó ta bấm phải
chuột vào file nguồn cũ và chọn Remove File From Project nếu chương trình
của bạn chỉ có 1 file nguồn duy nhất. Nếu có nhiều file nguồn thì chương trình
khi biên dịch sẽ gộp tất cả lại làm một. Do đó việc đặt tên của các đối tượng
trong các file nguồn phải thích hợp với các file nguồn khác.

Trần Thừa – 2010 32


Lập trình vi điều khiển AVR với ngôn ngữ C WWW.EEELABS.ORG

+Header Files: Chứa các đoạn mã hay hàm định nghĩa sẵn và có thể
được gọi ra trong chương trình. Phần này ít sử dụng nếu chương trình không
quá lớn.
+Output File: là sản phẩm sau khi biên dịch chương trình, gồm 2 file, 1
file là hợp ngữ (*.asm) và 1 file là mã máy(*.hex).
Các thành phần còn lại không mấy quan trọng trong khuôn khổ tài liệu
này.
b/. Soạn thảo chương trình.
Sau các bước tạo dự án mới, MikroC tự động phát sinh 1 tập tin nguồn
với phần mở rông. Là *.c và trùng tên với Project. Tập tin này chứa cú pháp
của hàm main – là hàm bắt buộc phải có của 1 chương trình C. Ta bắt đầu soạn
thảo các hàm bổ trợ và thực hiện gọi các hàm này trong chương trình chính.
Chi tiết lập trình sẽ được nhắc đến kỹ hơn ở chương sau.
c/. Biên dịch chương trình.
Để biên dịch chương ra file hex, từ menu chính ta chọn Project => Build
hoặc nhấn tổ hợp phím Ctr + F9. Lưu ý, một số menu ta có thể bắt gặp nút
Build tức là tại menu đó ta có thể biên dịch chương trình bình thường.
Sau khi ấn nút biên dịch (build), nếu không báo lỗi ở mục Messages thì
ta có thể dùng file hex vừa dịch xong nạp xuống chip hoặc mô phỏng với ISIS
Proteus.

Hình 7. Biên dịch chương trình hoàn tất và không có lỗi.


Ngoài ra, sau khi biên dịch, ta còn có thể xem 1 số hạng mục khác như
file ASM(hợp ngữ)- View Asembly hoặc xem báo cáo sử dụng tài nguyên –
View Statistics trong menu chính mục Project.
d/. Gỡ rối chương trình.
Nếu sau khi biên dịch không có lỗi liên quan đến cú pháp hay phần cứng
(thiếu bộ nhớ chẳng hạn) mà chương trình chạy không đúng ý lập trình viên,
khi đó ta cần sử dụng chương trình gỡ lỗi để vừa chạy từng dòng lệnh vừa xem
từng thanh ghi, từng biến để tìm ra sai sót. Hoặc đơn giản chỉ là kiểm nghiệm
lại chương trình.
Lưu ý: Trình gỡ rối chỉ có thể mô phỏng giải thuật chương trình, thực thi
từng dòng lệnh nhưng không thể hoàn toàn giống thực tế. Ví dụ như nó không
thể cập nhật thời gian hay cờ ngắt…

Trần Thừa – 2010 33


Lập trình vi điều khiển AVR với ngôn ngữ C WWW.EEELABS.ORG

Để thực hiện việc gỡ rối, từ menu chính ta chọn Run => Start Debugger
hoặc bấm phím F9. Sẽ có cửa sổ mới hiện ra như hình 8.

Hình 8. Cửa sổ gỡ rối và theo dõi trạng thái hoạt động.


+Đầu tiên ta chọn thanh ghi hoặc biến muốn theo dõi giá trị bằng cách bấm vào
menu sổ xuống Select variable from list, khi bấm vào, ta có thể gõ tên của biến
để tìm nhanh hơn. Sau đó bấm nút để chọn. Khi đó tên biến hoặc
thanh ghi sẽ nằm ở ô theo dõi. Chỉ nên chọn các biến cần thiết để dễ theo dõi.
+ Ô theo dõi bao gồm tên, giá trị hiện tại và địa chỉ. Trong đó, mục giá trị ta có
thể thay đổi hệ đếm bằng cách bấm đôi chuột vào giá trị của biến đó.
Lưu ý: Nếu cần nhận giá trị bên ngoài, ví dụ như phím nhấn tác động, ta
có thể mô phỏng bằng cách đặt luôn giá trị tác động vào giá trị biến hoặc thanh
ghi, khi đó khi thực hiện đến lệnh truy xuất thanh ghi, vi điều khiển sẽ lấy giá
trị mà ta đặt trước để xử lý.

+Tiến hành gỡ rối bằng các nút:

- Nút step into : chạy 1 dòng lệnh. Nếu dòng lệnh có chứa hàm thì
chương trình debug sẽ vào chạy từng dòng cho đến hết hàm mới trở
ra (đúng trình tự xử lý của vi điều khiển).

- Nút step over : nhảy qua 1 dòng lệnh, nếu dòng lệnh đó có gọi
hàm thì chương trình debug sẽ tự động chạy hết hàm chứ không vào
chạy từng lệnh trong hàm( vẫn đúng trình tự xử lý của vi điều khiển
nhưng ta không thấy được tiến trình mà chỉ có kết quả sau khi thực
hiện hàm).

Trần Thừa – 2010 34


Lập trình vi điều khiển AVR với ngôn ngữ C WWW.EEELABS.ORG

- Nút step out : khi đang ở trong 1 hàm và muốn trở lại hàm main
thì bấm nút này, khi đó nó sẽ nhảy ra khỏi hàm hiện tại sau khi đã
thực hiện đúng trình tự xử lý (mà ta không muốn tiếp tục theo dõi).

- Nút step to cursor : Chạy từ lệnh hiện tại đến chỗ đặt con trỏ
trong vùng soạn thảo.
Thời gian thực hiện chương trình sẽ được hiển thị gần chỗ hiển thị giá trị
bộ đếm chương trình.

Nếu bạn muốn theo dõi RAM thì có thể thực hiện như sau:
View > Debug Windows > View RAM.
Trên đây là các thao tác gỡ rối cơ bản.

Trình biên dịch MikroC còn rất nhiều tiện ích và chức năng, một số sẽ được
giới thiệu trong các bài thực hành ở các chương sau, phần còn lại thì tùy mục
đích sử dụng mà các bạn có thể tự nghiên cứu thêm.

Trần Thừa – 2010 35

You might also like