lap trinh avr voi c www.eeelabs.org chuong3 bai1

7

Click here to load reader

Upload: spy004

Post on 23-Jun-2015

1.029 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Lap Trinh Avr Voi c Www.eeelabs.org Chuong3 Bai1

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

Trần Thừa – 2010 29

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.

Page 2: Lap Trinh Avr Voi c Www.eeelabs.org Chuong3 Bai1

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

Trần Thừa – 2010 30

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.

Page 3: Lap Trinh Avr Voi c Www.eeelabs.org Chuong3 Bai1

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

Trần Thừa – 2010 31

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ả.

Page 4: Lap Trinh Avr Voi c Www.eeelabs.org Chuong3 Bai1

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

Trần Thừa – 2010 32

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.

Page 5: Lap Trinh Avr Voi c Www.eeelabs.org Chuong3 Bai1

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

Trần Thừa – 2010 33

+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…

Page 6: Lap Trinh Avr Voi c Www.eeelabs.org Chuong3 Bai1

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

Trần Thừa – 2010 34

Để 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).

Page 7: Lap Trinh Avr Voi c Www.eeelabs.org Chuong3 Bai1

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

Trần Thừa – 2010 35

- 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.