1. Từ việc lập trình trên máy tính, đến hoạt động của một con vi điều khiển
Sơ đồ của toàn bộ quá trình được mô tả trong hình vẽ sau :
Giao diện soạn thảo >> Trình biên dịch >> File .HEX >> Chương trình nạp >> Mạch
nạp >> PIC (vẽ sơ đồ này ra)
Nhưng mà thế này, hiện nay việc lập trình các giao diện phần mềm đã trở nên quá
đơn giản, cho nên giao diện soạn thảo, trình biên dịch, và ngay cả chương trình nạp
cũng được tích hợp vào trong chung một phần mềm, phần mềm đó được gọi là môi
trường làm việc. MPLAB IDE là một thí dụ.
Do vậy, để hiểu rõ hơn các khái niệm, chúng tôi trình bày thao tác từ việc lập trình
trên giao diện soạn thảo, đến việc nạp chương trình cho PIC mà không dùng MPLAB
IDE. Chúng ta sẽ dùng Notepad làm giao diện soạn thảo, MPASM là chương trình
dịch, dùng mạch nạp PG2C và chương trình nạp IC PROG.
Phần này các bạn không cần làm theo, chỉ cần xem thôi, vì chúng tôi chỉ minh họa về
các khái niệm để các bạn hiểu. Các bạn cũng chưa cần biết chương trình ở đâu ra, chỉ
cần thấy giao diện khác nhau là biết chương trình khác nhau rồi.
Trước tiên, chúng ta sẽ soạn thảo trên màn hình Notepad một chương trình bằng ngôn
ngữ lập trình MPASM như hình sau :
17 trang |
Chia sẻ: tlsuongmuoi | Lượt xem: 4008 | Lượt tải: 1
Bạn đang xem nội dung tài liệu Giáo trình học lập trình PIC, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
nguyenvanbientbd47@gmail.com
I. Bạn cần những gì để học tài liệu này ?
1. Từ việc lập trình trên máy tính, đến hoạt động của một con vi điều khiển
Sơ đồ của toàn bộ quá trình được mô tả trong hình vẽ sau :
Giao diện soạn thảo >> Trình biên dịch >> File .HEX >> Chương trình nạp >> Mạch
nạp >> PIC (vẽ sơ đồ này ra)
Nhưng mà thế này, hiện nay việc lập trình các giao diện phần mềm đã trở nên quá
đơn giản, cho nên giao diện soạn thảo, trình biên dịch, và ngay cả chương trình nạp
cũng được tích hợp vào trong chung một phần mềm, phần mềm đó được gọi là môi
trường làm việc. MPLAB IDE là một thí dụ.
Do vậy, để hiểu rõ hơn các khái niệm, chúng tôi trình bày thao tác từ việc lập trình
trên giao diện soạn thảo, đến việc nạp chương trình cho PIC mà không dùng MPLAB
IDE. Chúng ta sẽ dùng Notepad làm giao diện soạn thảo, MPASM là chương trình
dịch, dùng mạch nạp PG2C và chương trình nạp IC PROG.
Phần này các bạn không cần làm theo, chỉ cần xem thôi, vì chúng tôi chỉ minh họa về
các khái niệm để các bạn hiểu. Các bạn cũng chưa cần biết chương trình ở đâu ra, chỉ
cần thấy giao diện khác nhau là biết chương trình khác nhau rồi.
Trước tiên, chúng ta sẽ soạn thảo trên màn hình Notepad một chương trình bằng ngôn
ngữ lập trình MPASM như hình sau :
Hình 2.1 : Giao diện soạn thảo đơn giản nhất là Notepad
nguyenvanbientbd47@gmail.com
Chúng ta sẽ lưu lại file trên là PICtutorial_intro.asm
Sau đó, chúng ta sẽ dùng chương trình biên dịch MPASM để dịch những gì chúng ta
đã viết trong PICtutorial_intro.asm thành PICtutorial_intro.HEX để chuẩn bị nạp vào
PIC.
Hình 2.2 : Trình dịch MPASM trên Windows
Sau khi dịch xong, sẽ có một bảng thông báo xuất hiện như sau:
nguyenvanbientbd47@gmail.com
Hình 2.3: Bảng thông báo sau khi dịch xong
Các bạn sẽ thấy trên thông báo có những nội dung sau:
Errors: 0, đó là số lỗi cú pháp hoặc những lỗi quy định của trình dịch MPASM.
Chúng ta sẽ phân tích về các lỗi xảy ra trong quá trình thực hiện những bài tập thực
hành ở phần sau. Còn phần này, tất nhiên chương trình này tôi viết đã làm luận văn,
vậy thì không sai được, cho nên số lỗi sẽ là 0.
Warnings: là các thông báo cần chú ý, ở đây cũng là 0, có nghĩa là không có các
thông báo nào. Các thông báo này là những thông báo rằng có một số thanh ghi đặc
biệt cần phải quan tâm, có thể khi viết chương trình không sai về lỗi cú pháp, nhưng
có thể sai về lỗi vị trí thanh ghi… Các thông báo này không có.
Message: là các thông báo cho người dùng chú ý, có một số thanh ghi nằm ở các
BANK khác nhau, cần phải chú ý khi lập trình. Khái niệm này các bạn sẽ làm quen
sau. Nhưng ở đây có 10 thông báo. Khi gặp các thông báo này, các bạn phải xem lại
trong chương trình và chắc rằng mình làm đúng. Nhưng cho dù bạn làm đúng rồi, thì
các thông báo này vẫn có như thường. Đó là điều hạn chế của trình dịch, các bạn phải
thông cảm.
Lines Assembled: 810 là số dòng được viết trong chương trình, kể cả những dòng các
bạn bỏ trống, hoặc những dòng không dịch. Nó thống kê độ dài chương trình của các
bạn. Cứ 1024 dòng lệnh là 1K Flash, và 16F628(A) có tới 2K Flash, như vậy, chương
trình này vẫn đảm bảo hoạt động tốt.
Sau khi dịch xong, nó sẽ tạo ra một loạt các file khác ngoài file PICtutorial_intro.asm
ban đầu như hình sau:
nguyenvanbientbd47@gmail.com
Hình 2.4: Các file được tạo ra sau khi dịch
File ERR lưu các thông báo lỗi. Nhưng ở đây số lỗi không có, thì cũng chả có gì để
xem. File .LST là file LIST. Nó trình bày lại file .asm ban đầu của các bạn, nhưng nó
thể hiện thành dạng cột, và hàng rõ ràng hơn. Đồng thời, nó cũng ghi rõ vị trí của một
lệnh trong bộ nhớ khi nạp vào PIC như hình sau:
nguyenvanbientbd47@gmail.com
Hình 2.5: File LIST được tạo ra
Những file khác các bạn không cần phải quan tâm. Mà thực ra các bạn cũng không
cần phải quan tâm đến file nào khác ngoại trừ file .HEX được tạo ra.
Vậy nội dung của file .HEX là gì? Là những thứ chúng ta không đọc được và không
hiểu được. Vậy không cần đọc và không cần hiểu làm gì, chỉ cần xem cho vui thôi.
Nó như sau :
nguyenvanbientbd47@gmail.com
Bây giờ các bạn gắn mạch nạp PG2C vào cổng COM của máy tính, trên đó có gắn
một con PIC16F628 như hình sau :
Chúng ta sẽ gắn con PIC16F628 như sau:
nguyenvanbientbd47@gmail.com
Sau đó, chúng ta sẽ mở chương trình ICPROG lên, chọn đúng loại PIC16F628 và
chọn file .HEX để nạp cho PIC. Việc cuối cùng là ấn nút Program trên chương trình
nạp ICPROG:
Kết quả, các bạn sẽ có một con PIC được nạp chương trình, và bây giờ chỉ cần cắm
nó vào mạch chạy. Bật điện, và mọi chuyện không còn gì để nói.
nguyenvanbientbd47@gmail.com
Sau phần này, các bạn đã hình dung được thế nào là một giao diện soạn thảo, một
chương trình dịch, mạch nạp và chương trình nạp. Quan trọng hơn, thực chất đây là
một quy trình đầy đủ để các bạn có thể làm việc với một con PIC bằng ngôn ngữ
MPASM.
Chúng tôi chưa đề cập đến vấn đề thực hiện những công việc phức tạp, và phương
thức tạo ra một thư viện để sử dụng sau này, vì không thể đặt mục tiêu biến một
người chưa biết vi điều khiển thành một chuyên gia lập trình. Hơn nữa, chúng tôi
chưa là chuyên gia, thì không thể biến các bạn thành chuyên gia được. Trên kia là
những gì mà chúng tôi tin chắc là các bạn có thể thực hiện cho suốt các đề tài sinh
viên của các bạn. Vậy các bạn cần học gì?
2. Những gì bạn cần học
Ở phần trên, các bạn đã thấy rằng để có một con PIC hoạt động được, bạn phải lập
trình trên máy tính, dùng chương trình dịch để dịch ra file .HEX, rồi dùng chương
trình nạp và mạch nạp để nạp file .HEX vào PIC. Sau cùng, bạn gắn PIC vào mạch và
bật điện cho nó hoạt động.
Chúng tôi cứ hay nhắc lại rằng bạn đang là người mới bắt đầu học để nhắc bạn rằng
bạn chỉ cần quan tâm đến những gì cần quan tâm. Vậy nên, bạn không thể ngồi viết ra
chương trình dịch, cũng không thể sáng tạo ra một mạch nạp cùng với chương trình
nạp dựa vào những tài liệu không phải bằng tiếng mẹ đẻ của bạn. Kết quả, những thứ
đó bạn chỉ có thể lựa chọn từ những cái có sẵn. Để thuận tiện cho việc lựa chọn của
bạn, chúng tôi liệt kê ra đây những chương trình dịch, chương trình nạp và mạch nạp
mà chúng tôi đã biết, đã sử dụng, kèm theo một số lời khuyên cho việc lựa chọn của
bạn. Như vậy, nội dung mà chúng tôi sẽ đề cập chủ yếu trong tài liệu này, đó là
hướng dẫn các bạn viết chương trình trên máy tính, và hiểu được những gì bạn viết
trên máy tính, vi điều khiển sẽ thực thi như thế nào, để từ đó các bạn có thể tạo cho
mình những ứng dụng riêng.
Nhưng như đã nói trước đây, hiện nay việc lập trình giao diện soạn thảo trở nên đơn
giản, và người ta tích hợp giao diện soạn thảo với chương trình dịch để thuận tiện cho
người dùng. Do vậy, từ đây, khi chúng ta nói đến lập trình trên một ngôn ngữ nào đó,
đồng nghĩa nó đi kèm với môi trường làm việc của ngôn ngữ đó là giao diện soạn
thảo và trình dịch từ ngôn ngữ đó ra file .HEX.
Trong tài liệu này, chúng tôi chỉ chọn ngôn ngữ MPASM, CCS C và HT PIC để
hướng dẫn các bạn. Vì vậy, chúng tôi tạm thời gác lại các ngôn ngữ khác là C17, C18
(dùng cho PIC18F), C30 (dùng cho dsPIC), cũng như một số ngôn ngữ PICBasic,
hoặc các ngôn ngữ C khác.
nguyenvanbientbd47@gmail.com
Ngoài ra, trong 3 ngôn ngữ trên, HT PIC chỉ cung cấp chương trình dịch đi kèm, và
nó cho phép nhúng vào môi trường làm việc MPLAB IDE, do vậy, giao diện làm việc
của HT PIC sẽ cũng chính là giao diện làm việc của MPASM, và chính là môi trường
MPLAB.
nguyenvanbientbd47@gmail.com
Giao diện môi trường MPLAB IDE
Giao diện môi trường CCS C
nguyenvanbientbd47@gmail.com
Các bạn muốn học theo tài liệu hướng dẫn này, chắc chắn các bạn phải sử dụng cả ba
môi trường làm việc này. Môi trường MPLAB IDE có thể nhúng CCS C, HT PIC,
C17, C18, C30… và rất nhiều ngôn ngữ lập trình khác vào trong môi trường của nó.
Tuy nhiên, chúng tôi khuyên rằng, khi các bạn làm việc với hệ thống của CCS C, các
bạn cứ làm việc trên môi trường của chính nó. Bởi vì mỗi môi trường được thiết lập
ra cho một ngôn ngữ, người lập trình đã làm cho nó đơn giản nhất và dễ dàng nhất
cho người dùng. Trong khi đó, MPLAB IDE phải thiết kế một giao diện phù hợp với
tất cả các ngôn ngữ, cho nên sẽ phức tạp hơn.
MPLAB IDE được cung cấp miễn phí tại www.microchip.com
CCS C được bán tại www.ccsinfo.com, chương trình demo dùng trong 30 ngày
HT PIC có thể sử dụng 30 ngày miễn phí tại www.hitech.com
Chúng tôi đã download sẵn các chương trình này trong đĩa CD và có hướng dẫn cài
đặt cho các bạn. (C:// Chuong trinh dich).
Mạch nạp và chương trình nạp
nguyenvanbientbd47@gmail.com
Mạch nạp Kết nối
máy
tính
Chương trình nạp Ghi chú
JDM COM IC Prog Mạch điển hình, dễ làm
JDM
modified
COM IC Prog Thay đổi của JDM cho chế độ nạp tốt
hơn, dễ làm
PG1D COM IC Prog Giống JDM, nhưng dùng để nạp
ICSP, kích thước nhỏ, cực kỳ đơn
giản.
PG2C COM IC Prog Giống JDM, nhưng sử dụng các linh
kiện dễ kiếm ở Việt Nam (*****)
PG3B Cổng
máy in
LPT
ICProg, ProPIC2 Nạp rất nhanh (*****)
PG4B ICProg
PG5V2 COM ICProg Chính là mạch JDM modified (****)
MCP-PIC COM Tương thích PICStart
Plus, dùng MPLAB
để nạp
Nạp rất chậm, đắt tiền
MCP-USB USB Tương thích PICStart
Plus
Thêm FT232 để tạo ra cổng COM ảo
bằng USB. Thuận tiện khi di chuyển,
không dùng nguồn ngoài. Giá cao.
Nạp chậm.
ICD1 COM MPLAB Giá cao, chỉ dùng cho một số loại
thông dụng. Chức năng In Circuit
Debugger
ICD 2 COM MPLAB Rất mạnh, nạp được nhiều loại. Chức
năng In circuit debugger
Warp13A COM Tương thích PICStart
Plus
Nạp nhanh, giá cao hơn MCP
PIC16Pro40 LPT WinPICProg Mạch nạp điển hình của Nigel
Goodwin, được dùng để giảng dạy ở
nhiều trường đại học trên thế giới
ProPIC2 COM ICPROG, Propic2 Có hai phần, phần thông thường có
thể tự làm, phần có debugger phải
mua, giá rất cao.
Labtools LPT Labtools Giá rất cao, nạp đa dụng, không phù
hợp với việc chuyên nạp PIC
Start Kit 1 USB MPLAB Nạp được một số loại, có thể tự làm
PM2, PM3 COM,
USB
MPLAB Giá rất cao, không nên quan tâm nếu
chưa có nhu cầu
ICD1 –
Mirochip
COM MPLAB Giá cao, không phù hợp. Chức năng
ICD
nguyenvanbientbd47@gmail.com
ICD2 –
Microchip
USB MPLAB Giá cao, không phù hợp. Chức năng
ICD
Tất cả các mạch nguyên lý và chương trình nạp đều có trong CD, ngoài ra, trong CD
cũng có những chương trình và mạch nạp chúng tôi không liệt kê ra đây. Một số
mạch nạp không có sơ đồ nguyên lý vì không được cho miễn phí.
Riêng mạch MCP-USB, chúng tôi đã làm được và dự kiến sẽ bán trong thời gian sắp
tới. Tuy nhiên, mạch này giá linh kiện khá cao, thiết nghĩ không phù hợp lắm với sinh
viên, tốc độ nạp lại chậm. Chỉ phù hợp với các bạn muốn làm thực nghiệm với nhiều
loại vi điều khiển khác nhau để thực hiện sản phẩm thương mại.
Ngoài cách nạp chương trình thông thường bằng mạch nạp (programmer), các bạn
còn có một cách nạp khác, tận dụng chức năng self-programming của PIC, là
bootloader. Tuy nhiên, vì chưa trình bày cho các bạn về cấu trúc bộ nhớ của PIC, do
đó, chúng tôi tạm gác phần giới thiệu về bootloader lại cho phần sau.
3. Dụng cụ học tập của bạn đâu ?
Điều đầu tiên các bạn cần có là 2 con PIC16F628A và 16F877A. Các bạn có thể tìm thấy
các con PIC này ở các chợ điện tử như Hàng Trống – Hà Nội hoặc Nhật Tảo – TPHCM.
Tuy nhiên, các bạn vẫn có thể mua được PIC thông qua một số người bán lẻ trên
www.diendandientu.com, theo tham khảo thì giá PIC trên diễn đàn tương đối rẻ hơn so
với giá PIC ở các chợ điện tử.
Công việc thứ hai, đó là các bạn cần phải cài đặt các phần mềm cần thiết để bắt đầu các
bài học lập trình. Các chương trình MPLAB IDE, CCS C và HT PIC đều có sẵn trong đĩa
CD, các bạn nên xem hướng dẫn trong đĩa CD và cài đặt theo hướng dẫn.
Tiếp theo, các bạn cần có một mạch nạp để nạp cho PIC. Chúng tôi lựa chọn mạch nạp
PG2C như một ví dụ điển hình để hướng dẫn các bạn cách làm mạch và thao tác với
chương trình nạp ICProg. Lý do chúng tôi lựa chọn mạch nạp này là vì nó tương đối dễ
làm, và giá linh kiện để thực hiện mạch nạp cũng tương đối rẻ. Trong CD, có cung cấp sơ
đồ nguyên lý, mạch in và cả các file ORCAD của mạch nạp này. Cuối cùng, các bạn cần
chép các file trong thư mục ICProg vào ổ đĩa cứng để chạy, chương trình này không cần
cài đặt.
Do có rất nhiều vấn đề đã được hỏi xung quanh ICProg, chúng tôi trình bày phần cài đặt
chương trình một cách cụ thể trong tài liệu hướng dẫn luôn.
Khi chép vào đĩa cứng, cần phải chép đầy đủ cả thư mục vào đĩa cứng và tạo một
shortcut ngoài desktop để tiện việc sử dụng sau này.
nguyenvanbientbd47@gmail.com
Chạy chương trình ICProg.exe
Bỏ qua tất cả các thông báo lỗi để mở được chương trình ra.
Chọn Settings >> Clear Settings
nguyenvanbientbd47@gmail.com
Sau khi nhấn Yes liên tục, một màn hình Hardware settings sẽ hiện ra. Do chúng ta chọn
dùng bộ nạp PG2C là một bộ nạp được phát triển của JDM, cho nên phần Programmer
chúng ta sẽ chọn JDM Programmer. Phần Ports, chúng ta sẽ chọn COM 2 hoặc COM 3
tùy theo máy tính của bạn. Tuy nhiên, thường thì chúng ta nên chọn COM 2, vì COM 3
chính là COM 1 và COM 1 thường hay dùng cho các công việc khác. Phần Interface, các
bạn chọn Windows API và phần Communication các bạn không đánh dấu gì cả. Các bạn
nhấn OK. Khi sử dụng Windows API, các bạn không cần quan tâm đến phần I/O Delay.
nguyenvanbientbd47@gmail.com
Màn hình ban đầu sau khi khởi động lại IC-Prog hiện ra như hình trên. Chúng ta sẽ chọn
Settings >> Options để tiếp tục cài đặt cho IC-Prog.
Màn hình Options sẽ hiện ra. Các bạn sẽ chỉ quan tâm tới phần Misc, còn các phần khác
không cần quan tâm. Cứ để mặc định như chương trình ban đầu đã có.
nguyenvanbientbd47@gmail.com
Các bạn chọn Enable Vcc control for JDM, sau đó mới chọn tiếp Enable NT/2000/XP
Driver. Khi bạn chọn Enable Driver xong, ngay lập tức sẽ có một màn hình Confirm hiện
lên như trong hình trên. Các bạn nhấn Yes để cài đặt.
Lưu ý rằng, driver đã nằm sẵn trong thư mục ICProg mà các bạn chép sang. Do vậy,
ICProg sẽ tự động nhận ra và khởi động lại ICProg.
Một màn hình Confirm khác sẽ hiện ra để yêu cầu bạn xác nhận việc cài đặt driver cho
Windows NT/2000/XP. Các bạn chọn Yes.
Như vậy, công việc cài đặt đã hoàn tất.
Chúng tôi hướng dẫn các bạn cài đặt theo các bước trên là vì hiện nay, đa số các bạn đều
chọn Windows XP để sử dụng. Windows 98se đã không còn phổ biến nữa. Nếu các bạn
vẫn dùng Windows 98se thì các bạn chọn Interface Direct I/O thay vì chọn Windows
API, và các bạn để nguyên I/O Delay (10) là mặc định. Tốc độ nạp sẽ nhanh hơn, tuy
nhiên chúng ta tạm gác lại chuyện này ở đây.
Sau khi cài đặt các chương trình MPLAB IDE, CCS C, HT PIC và IC-Prog, các bạn đã
hoàn tất bài học thứ nhất cho việc chuẩn bị các dụng cụ học tập trên máy tính.
Bài học thứ hai, hoàn toàn không liên quan đến vi điều khiển, nhưng thiết nghĩ nó lại rất
cần thiết cho các bạn trong việc làm mạch chạy cho vi điều khiển sau này, đó là việc làm
mạch in. Trong bài học này, chúng ta sẽ lấy việc làm mạch nạp PG2C làm thí dụ. Như
vậy, chúng ta vừa có thể làm ra một dụng cụ học tập nữa, lại vừa tiết kiệm thời gian.
4. Điện tử cơ bản dùng cho vi điều khiển
Đã có nhiều bạn đặt câu hỏi về những điều vô cùng đơn giản là nên chọn điện trở như
thế nào, tại sao lại mắc chân linh kiện như thế… ? Những điều này thật là khó trả lời
vì nó quá đơn giản với các bạn học điện tử, và lại dường như là mơ hồ với các bạn
mới học, nhất là khi các bạn chưa tận mắt thấy cái điện trở, transistor, hay cái diode
thực tế nó ra làm sao.
Hướng dẫn làm mạch in
Các file đính kèm theo tài liệu này:
- Giáo trình học lập trình PIC.pdf