You are on page 1of 25

Chapter 1: Công cụ cơ bản ñể làm việc với PIC/dsPIC

C h ư ơ n g 1 : C ô n g c ụ cơ b ả n
ñể làm việc với PIC/dsPIC
“Nếu người Việt Nam không có ý thức tự làm chủ
thì người nước ngoài sẽ làm chủ chúng ta” – Falleaf.

Nội dung cơ bản:

 Mạch học vi ñiều khiển BOOK1 của [RP]


 Môi trường soạn thảo và các trình biên dịch
 Các mạch nạp và mạch gỡ rối, mô phỏng
 Sử dụng MPLAB IDE

Tại sao lại cần công cụ? Cần các công cụ gì?

Hàng nghìn năm trước, ñể nấu ăn, người ta cần phải ñi lượm củi về ñốt thành một ñống, rồi
làm các cây chống hoặc ñặt các hòn gạch lên, rồi người ta phải tự ñắp ñất làm nồi, hoặc
thậm chí không có nồi ñể nấu. Các món ăn hồi ñó ñơn giản như là… nướng mọi! Còn ñể ăn
thì người ta dùng… tay!

Nhưng ngày nay, người ta có thể nấu tới hàng chục nghìn món, nấu những bữa ăn cho
hàng nghìn người ăn, làm ra những món ăn từ khổng lồ tới vài chục mét hay thậm chí
những món ăn chỉ có vài mili mét. Ngay cả việc ăn cũng vậy, người ta có thể ăn bằng tay,
bằng muỗng, bằng nĩa, bằng dao,… Một bữa ăn trong nhà hàng năm sao có thể có ñến một
cái thúng ñồ dùng ăn uống ñặt trên bàn. Những kết quả ñạt ñược hôm nay của một bữa
ăn, chính là nhờ các công cụ nấu nướng, các loại gia vị ñược bào chế mới, các món ñồ dùng
ñược chau chuốt bằng ñủ loại vật liệu, nó giúp cho bữa ăn của chúng ta có thể ñược làm
nhanh hơn, ngon hơn, ñẹp hơn, phong phú hơn, tuyệt vời hơn. Đó chính là nhờ các công
cụ, dành cho việc “Nấu và Ăn”.

Cũng tương tự như vậy, khi làm việc với vi ñiều khiển, nếu chúng ta muốn làm ra sản phẩm
nhanh hơn, chính xác hơn, tối ưu hơn, chi phí thấp hơn, chúng ta sẽ cần các công cụ hỗ trợ
chúng ta ngày càng hiệu quả hơn và mạnh mẽ hơn.

Vậy “Nấu và Ăn” thì các công cụ tương ñối rõ ràng, và nếu ai chưa thấy rõ thì có thể ñeo
kính vào rồi ñi vào nhà bếp ñể thấy cho rõ. Vậy các công cụ làm việc với PIC?

Trang 1
http://books.rpc.vn – Tự học PIC
Vi ñiều khiển PIC – Nấu và Ăn
Giờ chúng ta cùng khảo sát và tưởng tượng nhé, một sản phẩm ñiện tử sử dụng vi ñiều
khiển, trên cơ bản sẽ là một cái bo mạch in, người ta có trên ñó các phần mạch ứng dụng,
người ta có trên ñó con vi ñiều khiển, người ta bật ñiện… và nó chạy. Như vậy, trên cơ bản,
vi ñiều khiển cần có những phần sau ñể chạy:

 Phần MẠCH NGOẠI VI: ñây là phần mạch dùng cho ứng dụng của các bạn. Ví dụ
như các bạn muốn ứng dụng ñiều khiển ñộng cơ, thì các bạn sẽ có các mạch lái,
mạch kích, mạch ñọc encoder,… và nó ñược nối trực tiếp ñến vi ñiều khiển.
 Phần NGUỒN: nếu không có nguồn ñiện thì không có cái gì gọi là ñiện cả. Nguồn
ñiện có thể ñược cung cấp và ñược lấy từ nhiều nguồn và nhiều cách khác nhau.
Nhưng nói chung, với vi ñiều khiển PIC, nguồn ñiện cơ bản nằm từ 2.5VDC ñến
5.5VDC. Không cần biết các bạn dùng cách nào, nhưng ñể PIC16F887 chạy ñược, thì
các bạn phải cấp nguồn cho nó từ 4.5VDC ñến 5.5VDC.
 Phần DAO ĐỘNG: phần này là phần có thể nằm bên trong PIC, hoặc có thể nằm
ngoài PIC, nhưng mục ñích cơ bản của nó là gõ trống nhịp cho PIC hoạt ñộng. Hãy
tưởng tượng rằng, PIC hay bất kỳ vi ñiều khiển nào cũng chỉ là một ñống các con
transistor ñược ghép lại với nhau, chúng hoạt ñộng ñơn giản bằng cách ñóng mở
các con transistor này. Thế nhưng câu hỏi là khi nào ñóng, khi nào mở? Phần DAO
ĐỘNG giúp vi ñiều khiển thực hiện việc này bằng cách “gõ” những nhịp ñiều ñều
ñặn, gần với việc tạo ra một “thời gian tham chiếu” cho vi ñiều khiển vậy.
 Phần CHƯƠNG TRÌNH: tất nhiên rồi! Nhưng ở ñây, các bạn cần phải hiểu là
chương trình ñã ñược ñưa vào bên trong PIC. Để phân biệt các thuật ngữ, chúng ta
dùng từ tiếng anh là FIRMWARE.

Hình sau ñây giúp các bạn dễ nhớ hơn về các thành phần của một sản phẩm sử dụng vi
ñiều khiển:

Hình 1: Những thành phần cơ bản của một bo mạch vi ñiều khiển PIC

Trang 2
Công ty TNHH Thương Mại và Giao Nhận R&P – www.rpc.vn
Chapter 1: Công cụ cơ bản ñể làm việc với PIC/dsPIC
Vậy thiết kế một sản phẩm, có nghĩa là thiết kế và phối hợp các phần này với nhau ñể thực
hiện tính năng (giá trị sử dụng) của sản phẩm ñó. Hiểu một cách ñơn giản như vậy, chúng
ta cần có các công cụ ñể thực hiện từng phần trên. Tuy nhiên, trong giới hạn của cuốn sách
này, chúng tôi không thể trình bày tất cả, ñặc biệt là phần MẠCH NGOẠI VI, vì nó liên quan
trực tiếp tới ứng dụng của các bạn. Phần NGUỒN, có lẽ chúng tôi sẽ không ñề cập sâu,
nhưng chúng tôi sẽ ñưa ra một vài ý tưởng thiết kế cho các bạn. Phần DAO ĐỘNG, liên
quan trực tiếp tới PIC, chúng tôi sẽ trình bày nó chi tiết hơn ở các chương sau. Vậy, các bạn
thấy rõ ràng rằng, ñể làm chủ ñược PIC, chúng ta cần học ñể làm chủ chương trình
(firmware) nằm trong PIC. Câu chuyện của chúng ta trở thành, các công cụ nào ñể làm ñược
FIRMWARE cho PIC?

Để có thể ñưa FIRMWARE vào PIC, chúng ta sẽ trải qua các công ñoạn sau:

Hình 2: Khái quát quy trình phát triển ứng dụng với PIC

Trong cuốn sách này, chúng tôi sẽ không ñề cập về Bootloader, ñây là một vấn ñề nâng cao
và khá ñặc thù, tuy nhiên chúng tôi sẽ chỉ giới thiệu sơ qua khái niệm về bootloader ở Phụ
lục: Tiny Bootloader

Trang 3
http://books.rpc.vn – Tự học PIC
Vi ñiều khiển PIC – Nấu và Ăn
Mạch học vi ñiều khiển BOOK1 của R&P

Hình 3: Mạch học PIC16F887 của R&P

Bo mạch học PIC không thể tách rời khỏi cuốn sách, do vậy, chúng tôi muốn các bạn nắm
thật rõ các thông tin về bo mạch này.

Tên của bo mạch học là BOOK1. Tên BOOK1 thực ra là mã dự án của R&P, ñánh dấu dự án
viết sách ñầu tiên của R&P.

Các chức năng của bo BOOK1:

 Phần mạch cấp nguồn sử dụng 7805. Vì ñây là ổn áp tuyến tính, do vậy, các bạn
không cấp nguồn vào quá 12VDC.

Trang 4
Công ty TNHH Thương Mại và Giao Nhận R&P – www.rpc.vn
Chapter 1: Công cụ cơ bản ñể làm việc với PIC/dsPIC
 Phần mạch PICKit 2 ñược “cải lùi” bởi anh TS. Nguyễn Quang Nam, tuy nhiên nó rất
hiệu quả trong quá trình học tập và thực hành. Chúng tôi gọi mạch nạp này là
PK2FUN (PICKit 2 Fun), mang ý nghĩa là làm ra cho vui.
 Module ñầu tiên là I/O, và Ngắt ngoài
 Module Mux I/O thực chất là một kiểu thiết kế tiết kiệm chân, sử dụng 4 chân I/O
ñể ñiều khiển 6 LED và 4 nút bấm.
 Module ADC, cho phép người dùng biến trở ñể ñiều chỉnh giá trị ADC, hoặc dùng 1
kênh ADC ñể nhận biết 2 nút bấm một cách ñộc lập. Thiết kế này chỉ là thiết kế gợi
ý, trong thực tế ít người sử dụng giải pháp này.
 Module LCD 16x02, thực chất mà nói chỉ là một sự biến ñổi của chức năng I/O. Tuy
nhiên, do nhu cầu ứng dụng module này khá cao, chúng tôi ñưa nó vào bài giảng,
nhưng nếu các bạn cảm thấy không cần thiết lắm, các bạn có thể bỏ qua.
 Module Motor Control, chủ yếu module này chúng tôi muốn người học sử dụng
chức năng PWM.
 Module SFR05, người học sẽ học chức năng Capture
 Module RS232, người học sẽ thực hành về chức năng UART của PIC
 Module EEPROM, ñây EEPROM 25LC256-I/P của Microchip, giao tiếp SPI. Với
module này, các bạn sẽ làm việc cả với EEPROM và cả với SPI
 Module cảm biến nhiệt ñộ, tương tự module EEPROM, chúng ta sẽ làm việc với cảm
biến nhiệt ñộ của Microcihp thông qua giao tiếp I2C.
 Cuối cùng module mTouch, chúng ta sẽ dùng chức năng Analog Comparator.

Sơ ñồ khối nguyên lý của bo mạch BOOK1

Do sơ ñồ nguyên lý chi tiết của bo mạch tương ñối phức tạp, cho vậy, nếu trình bày toàn bộ
hình ảnh của sơ ñồ nguyên lý trên trang giấy này, sơ ñồ sẽ rất nhỏ ñến ñộ không thể nhìn
thấy ñược.

Chúng tôi sẽ trình bày ở ñây sơ ñồ khối ñể các bạn có cái nhìn tổng quát trước, sau ñó
chúng tôi sẽ trình bày sơ ñồ nguyên lý trong một chương riêng.

Các bạn cũng có thể download và sử dụng sơ ñồ nguyên lý chi tiết tại http://books.rpc.vn
(Trang web tự học PIC).

Trang 5
http://books.rpc.vn – Tự học PIC
Vi ñiều khiển PIC – Nấu và Ăn

Hình 4: Sơ ñồ khối bo học PIC BOOK1 của R&P

Môi trường soạn thảo và các trình biên dịch

Để tạo ra ñược file mã máy ñể nạp vào PIC, chúng ta cần lập trình bằng ngôn ngữ “thân
thiện” với con người, sau ñó biên dịch ra ngôn ngữ “máy” và nạp vào PIC.

Chúng ta không chỉ có một môi trường soạn thảo duy nhất, và không phải chỉ có một trình
biên dịch duy nhất dành cho PIC. Chúng ta có rất rất nhiều các công cụ khác nhau, chúng
tôi sẽ giới thiệu với các bạn theo hai hệ thống: Một hệ thống dành cho người dùng
Windows, một hệ thống khác dành cho người dùng Linux.

Chú ý: Các thông tin mà chúng tôi cung cấp ở ñây chỉ có thể là thông tin mới nhất vào thời
ñiểm viết sách (năm 2010), hãy cập nhật các thông tin mới nhất nếu có thể.

Trang 6
Công ty TNHH Thương Mại và Giao Nhận R&P – www.rpc.vn
Chapter 1: Công cụ cơ bản ñể làm việc với PIC/dsPIC
Dành cho người dùng sử dụng Windows

Trình biên dịch ASM (hợp ngữ)


Microchip cung cấp trình biên dịch MPASM miễn phí, và ñi kèm trong bộ cài MPLAB IDE.
Tuy nhiên, các bạn ñừng lầm lẫn giữa việc cài ñặt MPLAB IDE (một môi trường soạn thảo),
với việc cài ñặt MPASM. Sau khi cài ñặt MPLAB, các bạn có thể vào thư mục cài ñặt
Microchip >> MPASM Suite ñể có thể sử dụng trực tiếp MPASM.

Khi không cần sử dụng trình soạn thảo chuyên dụng cho PIC, chúng ta hoàn toàn có thể sử
dụng Notepad, hoặc Notepad Plus,… ñể soạn thảo chương trình, và sau ñó trực tiếp chạy
MPASMWIN.exe ñể biên dịch.

Hình 5: Trình biên dịch MPASM trên Windows

Trình biên dịch các ngôn ngữ cấp cao


Nội dung này sẽ rất phức tạp, do vậy, chúng tôi muốn các bạn hiểu rõ cách phát triển của
các doanh nghiệp phát triển phần mềm. Giai ñoạn ñầu, các doanh nghiệp chỉ tập trung
phát triển trình dịch. Về sau, các doanh nghiệp tiếp tục phát triển các môi trường soạn thảo
cho riêng mình. Nhưng khi càng phát triển, thì các doanh nghiệp sẽ mở ra các công cụ cho
phép người dùng tích hợp các trình dịch khác vào môi trường soạn thảo của họ. Đây là một
xu hướng tất yếu, bởi vì một thực tế là các lập trình viên không muốn cứ khi làm việc với
một trình dịch mới, họ lại phải thay ñổi môi trường làm việc. Một xu hướng tất yếu ñang
xuất hiện, ñó là những nhà phát triển trình dịch, sẽ tập trung vào việc phát triển trình dịch,
và chọn một môi trường phát triển chung.

Trang 7
http://books.rpc.vn – Tự học PIC
Vi ñiều khiển PIC – Nấu và Ăn
Đối với dòng PIC10/12/16, Microchip không có trình biên dịch cấp cao. Tuy nhiên,
Microchip ñã mua lại công ty HiTech Soft và chúng tôi sử dụng HiTech PICC trong giáo
trình này.

Hi-Tech Soft: (www.htsoft.com)


Trình soạn thảo: HI-TIDE (HiTech IDE)
Trình biên dịch: HTPIC C (ngôn ngữ C)
Bình luận: Có lẽ ñây là hệ thống trình biên dịch chuyên nghiệp nhất dành cho PIC, chúng tôi
chọn trình biên dịch này ñể sử dụng trong giáo trình này.

Microchip MPLAB C (www.microchip.com)


Trình soạn thảo: MPLAB IDE
Trình biên dịch: C18 (chỉ dành cho PIC18), C30 (chỉ dành cho PIC24, dsPIC), C32 (chỉ dành
cho PIC32).
Bình luận: Do không hỗ trợ PIC10/12/16, chúng tôi không sử dụng MPLAB C trong cuốn
sách này. Tuy nhiên, MPLAB C sẽ là một lựa chọn tốt trong những dòng PIC cao hơn.

CCSInfo: (www.ccsinfo.com)
Trình soạn thảo: CCS IDE
Trình biên dịch: CCS C (ngôn ngữ C)
Bình luận: Đây là một trình biên dịch rất dễ dàng cho người dùng. Thậm chí tài liệu hướng
dẫn chi tiết tới ñộ chỉ cần biết ñọc tiếng Anh là có thể sử dụng PIC, thậm chí không cần
hiểu gì về PIC!? Chính ñiều này gây ra hai khó khăn cơ bản. Một là ñể tạo ra sự dễ dàng cho
người dùng, CCS phải tốn nhiều thời gian phát triển hơn, do vậy, các phiên bản CCS C hỗ
trợ các dòng chip mới thường rất chậm. Hai là ñối với người dùng việc sử dụng quá dễ
dàng, mà không hiểu gì về PIC sẽ khiến cho người học có ngày càng chủ quan ñối với việc
thiết kế. Chính vì vậy, ñối với mức ñộ sản xuất vừa và nhỏ, chúng tôi khuyên dùng CCS C, vì
giá thành phần mềm thấp, không tốn nhiều thời gian ñể tìm hiểu, ñặc biệt ñối với những
người ñang sử dụng các họ vi ñiều khiển khác, muốn chuyển qua sử dụng PIC. Đây là một
cơ hội tuyệt vời ñể thử nghiệm.

Mikro Elektronika: (www.mikroe.com)


Trình soạn thảo: MikroE IDE
Trình biên dịch: MikroC (ngôn ngữ C), MikroBasic (ngôn ngữ Basic), MikroPascal (ngôn ngữ
Pascal)
Bình luận: Chúng tôi ñánh giá ñây là một công ty phát triển cực nhanh trong “làng PIC”, chỉ
mất vài năm, ñi từ việc thiết kế những bo học PIC ñơn giản, giờ ñây họ ñã là một ñơn vị
phát triển cả trình biên dịch cho Microchip. Đặc biệt, họ hỗ trợ cả C, Basic và Pascal. Giá
trình dịch của họ cực kỳ thấp, và ñược nâng cấp suốt ñời. Đối với những doanh nghiệp vừa
và nhỏ, việc trang bị MikroE thực sự không phải là vấn ñề, vì so với việc trang bị HTPIC quả
là một sự chênh lệch lớn.

Trang 8
Công ty TNHH Thương Mại và Giao Nhận R&P – www.rpc.vn
Chapter 1: Công cụ cơ bản ñể làm việc với PIC/dsPIC
SourceBoost: (www.sourceboost.com)
Trình soạn thảo: SourceBoost IDE
Trình biên dịch: Boost C (ngôn ngữ C), Boost C++ (ngôn ngữ C++), BoostBasic (ngôn ngữ
Basic), Novo RTOS (hệ ñiều hành), Flowcode (ngôn ngữ flowchart).
Bình luận: Chúng tôi tiếp cận SourceBoost từ những năm 2004, 2005, khi ñó, SourceBoost
chưa phát triển mạnh, nhưng dường như là công ty ñầu tiên phát triển trình biên dịch cho
PIC trên nền tảng hướng ñối tượng C++. Chính từ ñịnh hướng từ ban ñầu này, SourceBoost
ñã phát triển thành công Flowcode, việc lập trình trở nên cực kỳ ñơn giản, khi mà người lập
trình chỉ cần có ý tưởng, vẽ lên flowchart, thì chỉ cần biên dịch ra C và nạp vào PIC.

BKND (www.bknd.com)
Trình soạn thảo: không có
Trình biên dịch: CC5X (ngôn ngữ C), CC8E (ngôn ngữ C)
Bình luận: Chúng tôi không thử nghiệm nhiều với hai trình biên dịch này, vì hai trình dịch
này hỗ trợ tương ñối giới hạn. CC5X và CC8E ñã ñược phát triển từ rất lâu, nhưng BKND
dường như vẫn không phát triển gì trong suốt 5 năm qua, do vậy, chúng tôi không khuyên
những người dùng mới tiếp cận trình biên dịch này.

ooPIC (www.oopic.com)
Trình soạn thảo: ooPIC
Trình biên dịch: Bản thân ooPIC là một kiểu làm việc hướng ñối tượng khá riêng biệt.
Bình luận: Người ta không xây dựng một môi trường ñể viết các ñoạn code, và thậm chí
không bị phụ thuộc vào một loại ngôn ngữ nào, ooPIC tạo ra các ñối tượng có sẵn, dùng
cho các ứng dụng cơ bản thường gặp. Chúng tôi không khuyên các bạn sử dụng trình dịch
loại này nếu muốn phát triển chuyên nghiệp, tuy nhiên, nếu các bạn muốn hướng dẫn cho
các cấp học sinh phổ thông, cách phát triển này là một cách phát triển lý thú.

SDCC – Small Device C Compiler (sdcc.sourceforge.net)


Trình soạn thảo: không có
Trình biên dịch: SDCC (ngôn ngữ C)
Bình luận: Đây là một trình biên dịch hoàn toàn miễn phí, ñược phát triển bởi cộng ñồng
mã nguồn mở. Hiện nay, SDCC ñang hướng tới việc phát triển cho Microchip PIC, và ñã
chấm dứt việc hỗ trợ cho AVR và Z80.

Còn rất nhiều trình biên dịch khác nữa, nhưng chúng tôi e rằng không có ñiều kiện trình
bày hết, chúng tôi hy vọng các bạn sẽ tiếp tục cập nhật thông tin và bình luận về các trình
biên dịch trên PIC Việt Nam. Quan ñiểm của chúng tôi là không phải lúc nào trình biên dịch
ngôn ngữ cấp cao cũng tuyệt ñối tốt, trong quá trình phát triển, sẽ có nhiều vấn ñề. Đặc
biệt, ñối với dòng PIC10/12/16, khi muốn ñưa ra sản xuất hàng loạt thì các bạn nên kiểm tra
kỹ mã nguồn ASM (sau khi ñã biên dịch từ ngôn ngữ cấp cao).

Trang 9
http://books.rpc.vn – Tự học PIC
Vi ñiều khiển PIC – Nấu và Ăn
Dành cho người dùng Linux

Ngoại trừ việc sử dụng WINE hoặc các môi trường mô phỏng Windows, chúng ta có thể
ñiểm qua một số trình biên dịch ñiển hình phục vụ trực tiếp trên Linux.

Trình biên dịch ASM (hợp ngữ)


Chúng tôi biết rằng nếu các bạn ñã dùng Linux, chúng tôi sẽ không cần phải viết hay ñánh
giá nhiều, bởi bản thân các bạn ñã hiểu rất rõ thế mạnh của việc dùng Linux.

GPUTILS là một bộ công cụ tổng hợp, bao gồm GPASM, GPLINK, GPLIB, ñược phát triển từ
năm 2001, phiên bản ñầu tiên chỉ có thể vượt qua chương trình test 53 file trên tổng số 500
file cần kiểm tra. Quả là một kết quả… rất tồi. Tuy nhiên, cho tới nay, GPULTILS ñã hầu như
phát triển và hỗ trợ rất nhiều.

Các bạn có thể download tại: gputils.sourceforge.net

Trình biên dịch ngôn ngữ cấp cao


Trình biên dịch ngôn ngữ cấp cao mã nguồn mở cho PIC là SDCC và GCC. Bên cạnh các
phần mềm mã nguồn mở, hai công ty CCSInfo và HI-TECH Soft cũng cung cấp các phần
mềm trên nền Linux.

Môi trường soạn thảo


PIKLab (piklab.sourceforge.net) là môi trường soạn thảo mã nguồn mở tốt nhất dành cho
PIC, ñược hỗ trợ tương ñối mạnh mẽ.

Các bạn có thể trao ñổi về việc sử dụng Linux và PIC trong diễn ñàn PIC Việt Nam và Điện
Tử Việt Nam. Chúng tôi không trao ñổi nhiều về PIC và Linux trong giáo trình này.

Các mạch nạp và mạch gỡ rối, mô phỏng

Như chúng ta ñã khẳng ñịnh, một vi ñiều khiển mà không có chương trình nằm bên trong
nó (firmware), thì nó chẳng khác nào một cục ñá. Do ñó, mạch nạp là một phần không thể
thiếu. Không có mạch nạp cũng giống như việc các bạn “nấu” mà không có bếp vậy.

Có rất nhiều mạch nạp trên thị trường thế giới, cũng như Việt Nam. Tuy nhiên, tựu chung
lại, tất cả các mạch nạp ñều tập trung phục vụ 3 thị trường chủ yếu:

 Mạch nạp và gỡ rối dành cho sinh viên: Loại này chủ yếu là giá rẻ, chức năng tương
ñối hạn chế, và chủ yếu chỉ ñảm nhiệm chức năng nạp chương trình (firmware).

Trang 10
Công ty TNHH Thương Mại và Giao Nhận R&P – www.rpc.vn
Chapter 1: Công cụ cơ bản ñể làm việc với PIC/dsPIC
 Mạch nạp và gỡ rối dành cho các nhà thiết kế: Loại này trang bị nhiều tính năng
hơn, chủ yếu tập trung vào tính năng gỡ rối và mô phỏng. Giá cả không phải là vấn
ñề lớn. Tuy nhiên, ñối với thị trường Việt Nam, giá thành luôn là vấn ñề, vì vậy, hầu
hết các nhà thiết kế ở Việt Nam chấp nhận bỏ qua tính năng mô phỏng (emulator)
mà chỉ dừng ở tính năng gỡ rối (debugger) nhằm giảm chi phí trang thiết bị.
 Mạch nạp dành cho sản xuất: Chỉ tập trung vào tính năng duy nhất là tính năng nạp,
ñiều quan trọng nhất là phải nạp nhanh, thao tác ñơn giản, bền vững, ñảm bảo cho
công nhân kỹ thuật có thể sử dụng.

Mạch nạp và gỡ rối dành cho sinh viên (Programmer, Debugger)

Hiện nay mạch nạp dành cho sinh viên rất phong phú, ñặc biệt với mục tiêu hạ giá sản
phẩm tới tối ña, các sản phẩm mạch nạp “tự chế” (DIY – Do It Yourself) trở nên hấp dẫn
trong thị trường này.

Mạch nạp PICKit 2, PICKit 3 của Microchip

Hình 6: Mạch nạp PICKit 2 và PICKit 3

Tính năng: nạp hầu hết các dòng sản phẩm Microchip PIC/dsPIC, hỗ trợ Programmer To
Go (không cần sử dụng máy tính, nạp chương trình vào PICKit, sau ñó cấp nguồn và bấm
nút ñể nạp vào PIC), Logic Analyser, cấp nguồn từ USB qua PICKit 2,3 ñể cấp cho PIC.
Giá thành: khoảng 30$ ñến 50$
Tham khảo: www.microchip.com/pickit2, www.microchip.com/pickit3
Bình luận: Cho tới nay PICKit 3 ñã có giá rẻ ở thị trường VN, vì vậy, chúng tôi khuyên các
bạn nên quan tâm tới những sản phẩm mới nhất, sản phẩm càng mới thì giá sẽ càng rẻ.

Trang 11
http://books.rpc.vn – Tự học PIC
Vi ñiều khiển PIC – Nấu và Ăn
Mạch gỡ rối ICD2 LE (phiên bản giới hạn)
Tính năng: nạp và debug hầu hết các dòng Microchip PIC/dsPIC, không hỗ trợ cấp nguồn
từ ICD2 LE. Tính năng giống hệt ICD2, tuy nhiên ñược thiết kế nhỏ gọn hơn ñể làm quà
tặng cho các kỳ hội thảo. Bề ngoài nhìn giống PICKit 2, nhưng có màu xanh dương. Do là
phiên bản giới hạn (Limited Edition), cho nên sản phẩm không ñược phổ biến lắm.
Giá thành: khoảng 60$ ñến 80$
Tham khảo: Chỉ có thể mua tại R&P
Bình luận: Chúng tôi ñánh giá ICD2 LE và PICKit 2 là ngang nhau, nếu một nhà thiết kế
chuyên nghiệp muốn có các công cụ giá rẻ, có thể sử dụng ICD2 kèm với PICKit 2, thì hầu
như mọi tính năng cần thiết ñều có trong tay.

Mạch nạp PK2FUN của R&P


Khi các bạn mua cuốn sách này, mạch PK2FUN ñã sẵn sàng cho các bạn sử dụng.

Tính năng: giống PICKit 2, nhưng bỏ ñi 2 tính năng chính là tính năng Programmer To Go
và tính năng cấp nguồn từ USB. Do vậy, khi sử dụng PK2FUN, các bạn phải cấp nguồn cho
PIC thì mới sử dụng ñược.
Giá thành: khoảng 10$
Tham khảo: www.dientu.rpc.vn
Bình luận: Chúng tôi sẽ phát triển chương trình mã nguồn mở cho PK2FUN, khi ñó các bạn
sinh viên có thể tự làm PK2FUN. Mạch PK2FUN ñã ñi kèm với bo mạch BOOK1 (có ñường
V-Cut), các bạn có thể bẻ mạch này ra ñể sử dụng sau khi ñã học xong với bo BOOK1.

Mạch nạp gUSB của PDuyTech


Tính năng: ñây là một mạch phát triển từ mạch GTP-USB, sử dụng với chương trình nạp
WinPIC800. Tuy nhiên, sau ñó PDuyTech ñã phát triển lại phần mềm và phát triển khá tốt.
Giá thành: khoảng 10$
Tham khảo: www.pduytech.com
Bình luận: Chúng tôi cùng PDuyTech hợp tác ñưa sản phẩm này ra thị trường, bởi vì
PDuyTech ñã thực sự làm chủ cả firmware và software của mạch nạp và chương trình nạp.
Đây là một sản phẩm có sự ñầu tư chất xám thực sự. Nó ñược phát triển khi GTP-USB còn là
một dự án mã nguồn mở, có thể coi ñây là một sản phẩm ñược phát triển hoàn toàn tại
Việt Nam.

Mạch nạp và gỡ rối dành cho các nhà thiết kế (Debugger, Emulator)

Đối với các nhà thiết kế, những người sẽ kiếm ñược tiền từ việc phát triển các sản phẩm với
Microchip PIC/dsPIC, chúng tôi khuyên các bạn nên sử dụng các mạch nạp và gỡ rối của
Microchip với những lý do như sau:

Trang 12
Công ty TNHH Thương Mại và Giao Nhận R&P – www.rpc.vn
Chapter 1: Công cụ cơ bản ñể làm việc với PIC/dsPIC
 Microchip muốn bán ñược dòng sản phẩm PIC/dsPIC của mình, họ phải tăng cường
hỗ trợ các nhà thiết kế từ khâu thiết kế sản phẩm.
 Các dòng sản phẩm của Microchip hầu hết sẽ ñược thiết kế cho việc sản xuất hàng
loạt, nó cần qua nhiều khâu kiểm tra, ñánh giá. Chất lượng ñược kiểm soát sẽ ñảm
bảo cho việc phát triển sản phẩm ổn ñịnh
 Khi làm thiết kế, các bạn cần làm việc với những dòng chip mới nhất của Microchip,
các mạch nạp và gỡ rối của Microchip sẽ hỗ trợ nhanh nhất cho các bạn

Chúng tôi khuyên các bạn sử dụng các sản phẩm sau:

ICD3 – In Circuit Debugger 3

Hình 7: MPLAB ICD3 - công cụ nạp và gỡ rối

Tính năng: Là một phiên bản cải tiến từ ICD2, tuy nhiên hiện nay ICD2 không còn sản xuất
nữa. ICD3 tăng tốc ñộ nạp chip ñáng kể, khả năng gỡ rối ñược tăng cường nhiều ñiểm
breakpoint.
Giá thành: khoảng 200$
Tham khảo: www.microchip.com/icd3
Bình luận: Chúng tôi khuyên các nhà thiết kế nên chọn sử dụng ICD3. R&P ñã sử dụng
ICD3 ngay từ khi sản phẩm này ra mắt, và chúng tôi thấy việc lựa chọn ICD3 là một giải
pháp rất tối ưu về giá/tính năng. Đồng thời, tính năng ñủ ñể ñảm bảo cho các nhà thiết kế
phát triển sản phẩm hiệu quả.

Trang 13
http://books.rpc.vn – Tự học PIC
Vi ñiều khiển PIC – Nấu và Ăn
REAL ICE – In Circuit Emulator

Hình 8: MPLAB REAL ICE - In Circuit Emulator

Tính năng: Mô phỏng trực tiếp trên mạch. Chủ yếu sử dụng cho các mạch phức tạp, thuật
toán phức tạp.
Giá thành: khoảng 550$
Tham khảo: www.microchip.com/realice
Bình luận: Những người làm việc với PIC32, hoặc dsPIC cần xử lý các thuật toán phức tạp,
chúng tôi khuyên dùng REAL ICE. Tuy nhiên, về mặt giá thành REAL ICE còn có giá tương
ñối cao so với mức sống ở Việt Nam, do vậy, có thể vào lúc này, nó chỉ phù hợp dùng trong
các phòng thí nghiệm, trung tâm nghiên cứu. Dù vậy, với khả năng mô phỏng trên mạch,
chắc chắn nó là một công cụ ñắc lực nhất hiện nay cho việc phát triển sản phẩm trên nền
Microchip PIC/dsPIC.

Mạch nạp dành cho sản xuất (Gang Programmer)

Vấn ñề chính của các nhà sản xuất chính là tỉ số giữa tốc ñộ nạp chip và số lượng nhân
công. Một bài toán rất rõ ràng như sau, khi nhà sản xuất sản xuất lên tới khoảng 100.000
sản phẩm mỗi năm, việc nạp chip trở thành một vấn ñề rất lớn.

Giải pháp bắt buộc là phải nạp cùng lúc nhiều sản phẩm, vì thời gian ñể nạp cho chip gần
như là khó có thể giảm, tùy theo dung lượng của chip và kích thước firmware.

Các loại Gang Programmer trên thị trường hiện nay cho phép nạp cùng lúc từ 4 chip ñến 32
chip cùng lúc. Chúng tôi giới thiệu 2 loại mạch nạp Gang Programmer dành cho Microchip
PIC/dsPIC sau ñây:

Trang 14
Công ty TNHH Thương Mại và Giao Nhận R&P – www.rpc.vn
Chapter 1: Công cụ cơ bản ñể làm việc với PIC/dsPIC
softLog ICP2GANG
Tính năng: Mỗi lần nạp 4 chip, có thể ghép nối với 16 mạch ICP2GANG với nhau ñể nạp tới
64 chip cùng lúc.
Giá thành: khoảng 1600$
Tham khảo: www.softlog.com
Bình luận: SoftLog là ñơn vị thứ ba (third party ) từ năm 1998. Các sản phẩm của SoftLog
hiện nay cũng ñang ñược bán tại www.microchipdirect.com. Sản phẩm này phù hợp cho các
dây chuyền sản xuất lớn và cực lớn (vì có thể nạp lên tới 64 sản phẩm cùng lúc).

CCSInfo PRIME8
Tính năng: Mỗi lần nạp ñược 8 chip, không cần sử dụng máy tính, chỉ cần nạp firmware vào
PRIME8, sau ñó chỉ cần cấp nguồn ñể nạp.
Giá thành: khoảng 900$
Tham khảo: www.ccsinfo.com
Bình luận: Chúng tôi ñã cung cấp một số mạch nạp này cho các nhà sản xuất ở Việt Nam.
Chúng tôi cho rằng sản phẩm này tương ñối phù hợp với thị trường Việt Nam, khi mà nền
sản xuất ở Việt Nam chưa ñến mức quá lớn, nhân công Việt Nam giá rẻ. Với giá chỉ bằng
một nửa so với SoftLog ICP2GANG, sản phẩm của CCSInfo có ưu thế về giá. Việc không sử
dụng máy tính ñể nạp chương trình có một ưu thế rõ rệt về việc bảo mật firmware cho sản
phẩm.

PICKit 2 và PICKit 3
Tính năng: Sử dụng tính năng Programmer To Go, chỉ nạp ñược 1 chip một lần.
Giá thành: khoảng 30$ ñến 50$
Tham khảo: www.microchip.com/pickit2, www.microchip.com/pickit3
Bình luận: Đây là một “mẹo” nhỏ dành cho các nhà sản xuất vừa và nhỏ, khi không cần sản
xuất với tốc ñộ cao, nhân công rẻ, việc sử dụng PICKit 2 và PICKit 3 xem như một mô hình
“giảm tốc” 8 tới 10 lần so với PRIME8 của CCS Info, và chi phí ñầu tư ban ñầu giảm ñi từ 10
ñến 20 lần.

Sử dụng MPLAB IDE

Chúng tôi thích nói chuyện theo kiểu “nấu và ăn”, không phải vì chúng tôi… có vợ rồi, mà
bởi vì chúng tôi muốn tìm ra mối liên hệ giữa những gì thường ngày nhất với những gì sẽ
phải trở nên cực kỳ bình thường ñối với những nhà thiết kế trong tương lai.

Việc sử dụng MPLAB IDE sẽ phải ñược hình dung giống như việc bạn rửa xoong nồi, ñặt lên
bếp, và cất chúng vào chạn bếp vậy. Bất kỳ món ăn nào, dù ngon ñến mấy, thì cũng không
thể bỏ qua những bước cơ bản này. Mỗi người ñầu bếp với các thói quen khác nhau, sẽ có
sự chuẩn bị khác nhau.

Trang 15
http://books.rpc.vn – Tự học PIC
Vi ñiều khiển PIC – Nấu và Ăn
Bây giờ hãy xem nhé, chúng ta sẽ bắt ñầu từ việc mở MPLAB IDE lần ñầu tiên, và tạo một
project cơ bản nhất.

Tùy chọn MPLAB IDE

Mặc dù MPLAB IDE khá mạnh mẽ và thân thiện, nhưng một nhược ñiểm trong cách trình
bày, mà có thể ñội ngũ phát triển MPLAB IDE lại cho là hiệu quả, ñó là việc ñặt các chế ñộ
mặc ñịnh cho môi trường soạn thảo.

Những tính năng hầu như rất quen thuộc với các lập trình viên như mở nhiều file mã
nguồn, người ta thường tổ chức theo dạng Tab ñể dễ chuyển từ file này sang file khác, hoặc
như việc sử dụng auto indent (tự canh lề),… hay như các tính năng Dockable ñể sắp xếp các
cửa sổ làm việc một cách ngăn nắp.

Dẫu sao thì chỉ mất công một lần thôi, các bạn có thể tự trình bày giao diện của MPLAB
theo ý muốn của mình. Chúng tôi chỉ giới thiệu ở ñây một vài tùy chọn mà hầu hết mọi
người ñều dùng, còn các tùy chọn khác, các bạn có thể tự thiết kế theo ý mình.

Tùy chọn Dockable


Ban ñầu, khi mới cài ñặt, cửa sổ làm việc sẽ ñơn giản như hình dưới ñây

Hình 9: MPLAB IDE khi mới khởi ñộng

Trang 16
Công ty TNHH Thương Mại và Giao Nhận R&P – www.rpc.vn
Chapter 1: Công cụ cơ bản ñể làm việc với PIC/dsPIC

Chúng ta thấy các cửa sổ làm việc ñều nằm khá “chơi vơi”, và tốn không gian. Chúng ta có
thể ñưa nó sát vào các khung workspace bằng cách bấm chuột lên góc trái phía trên của
cửa sổ, và chọn Dockable.

Sau khi chọn Dockable, chúng ta có thể giữ chuột trái, và rê cửa sổ này sát vào các mép
không gian làm việc (workspace). Nó sẽ tự ñộng “dính” vào các lề của workspace như hình
dưới ñây.

Figure 10: Chuyển các khối cửa sổ vào vị trí

Trang 17
http://books.rpc.vn – Tự học PIC
Vi ñiều khiển PIC – Nấu và Ăn
Tùy chọn Auto Indent và Tabbed Windows

Figure 11: Cần có tính năng Tabbed Window và Auto Indent

Tuy nhiên, chúng ta lại thấy, nếu ñể các cửa sổ soạn thảo cũng “chơi vơi”, nhất là khi mở
nhiều cửa sổ file, chúng ta có thể chọn các chế ñộ cho nó bằng cách chọn Edit >>
Properties

Chúng ta chọn các tùy chọn sau:

Figure 12: Tùy chọn cho MPLAB IDE

Trang 18
Công ty TNHH Thương Mại và Giao Nhận R&P – www.rpc.vn
Chapter 1: Công cụ cơ bản ñể làm việc với PIC/dsPIC

Phóng lớn màn hình làm việc lên, chúng ta ñã có Tab ñể mở nhiều file, và có auto indent ñể
viết code.

Kết quả, sau khi khởi ñộng lại, màn hình sẽ như thế này:

Hình 13: Giao diện làm việc MPLAB IDE do người dùng tùy chọn

Để lưu lại màn hình làm việc này, chúng ta sẽ chọn Window >> Create Window Set…

Trang 19
http://books.rpc.vn – Tự học PIC
Vi ñiều khiển PIC – Nấu và Ăn
Đặt tên cho giao diện, và lưu lại. Từ sau, khi các bạn mở một Project mới, chỉ cần chọn
Window >> Window Sets > Bạn sẽ có ngay giao diện thân thiện mà bạn quen làm việc.

Còn rất nhiều tiện ích khác, nhưng chúng tôi sẽ ñể các bạn tự khám phá thêm trong quá
trình làm việc và tìm hiểu. Điều này cũng sẽ giúp ích hơn, bởi vì các phiên bản MPLAB IDE
sẽ ñược nâng cấp liên tục, các bạn hãy làm quen với những thay ñổi nhỏ của mỗi phiên bản
mới, và các bạn sẽ thấy nó ngày càng thân thiện hơn với mình.

Các bạn có thể góp ý về các phiên bản MPLAB IDE bằng cách gửi email về:
sales.elctronics@rpc.vn, chúng tôi sẽ gửi các thông tin phản hồi này về cho Microchip và hỗ
trợ các bạn nhiều hơn.

Tạo dự án (Project) với MPLAB IDE

Chúng ta sẽ bắt ñầu bằng một project nhỏ, ñó là bật một ñèn LED trên chân RE1. Ở ñây các
bạn không cần chú ý ñến việc viết code như thế nào, chúng ta chỉ cần xem qua quy trình ñể
hoàn tất một dự án mà thôi.

Chúng ta bắt ñầu từ màn hình cơ bản nhất bằng cách vào Project >> Project Wizard…

Hình 14: Tạo dự án mới

Bước ñầu tiên, chúng ta sẽ phải chọn loại PIC mà chúng ta cần làm việc. Ở ñây, bo học PIC
BOOK1 sử dụng PIC16F887.

Trang 20
Công ty TNHH Thương Mại và Giao Nhận R&P – www.rpc.vn
Chapter 1: Công cụ cơ bản ñể làm việc với PIC/dsPIC

Hình 15: Bước 1 - Chọn dòng PIC sử dụng cho dự án

Bước thứ hai, chúng ta cần phải chọn ngôn ngữ lập trình. Ở ñây, khi ñã cài ñặt sẵn HTPIC C,
chúng ta sẽ thấy trong danh sách các ngôn ngữ có mục HI-TECH Universal Toolsuite. Nếu
chưa cài ñặt, hãy tắt MPLAB ñi và cài ñặt HTPIC C trước ñã.

Trang 21
http://books.rpc.vn – Tự học PIC
Vi ñiều khiển PIC – Nấu và Ăn

Hình 16: Bước 2 - Chọn trình biên dịch (ñồng nghĩa với chọn ngôn ngữ lập trình)

Bước thứ ba, các bạn ñặt tên cho dự án và tạo thư mục cho dự án.

Trang 22
Công ty TNHH Thương Mại và Giao Nhận R&P – www.rpc.vn
Chapter 1: Công cụ cơ bản ñể làm việc với PIC/dsPIC

Hình 17: Bước 3 - Đặt tên cho dự án bắt ñầu viết mã nguồn

Xem như mọi việc ñã xong xuôi rồi ñấy, các bạn ñã có thể bắt ñầu làm việc với PIC.

Sau khi tạo dự án xong, bạn ñã có thể tải lại giao diện Window Sets ñã lưu ñể có giao diện
quen thuộc khi làm việc.

Bây giờ, các bạn cần mở một file mới hoàn toàn và lưu lại ở dạng .c

Trang 23
http://books.rpc.vn – Tự học PIC
Vi ñiều khiển PIC – Nấu và Ăn

Hình 18: Lập trình

Bây giờ các bạn hãy thử ñoạn code với nội dung như sau:

#include <htc.h>

__CONFIG(INTIO & WDTDIS & PWRTEN & MCLREN & UNPROTECT &
DUNPROTECT & BORDIS & IESODIS & FCMDIS & LVPDIS);

void main()
{
ANSEL = 0;
ANSELH = 0;
TRISE = 0b11111001;
PORTE = 0b00000010;

while(1);
}

Sau cùng, các bạn bấm (1) F10 ñể biên dịch.

Cắm ñiện vào mạch học PIC BOOK1, cắm dây USB, cắm cáp nạp từ PICKit 2 sang phần mạch
phát triển.

Bấm vào (2) Programmer >> PICKit 2 ñể kết nối với PICKit 2 trên mạch học PIC

Trang 24
Công ty TNHH Thương Mại và Giao Nhận R&P – www.rpc.vn
Chapter 1: Công cụ cơ bản ñể làm việc với PIC/dsPIC
Bấm vào nút (3) Program ñể nạp chương trình ñã biên dịch vào PIC.

Như vậy, PIC ñã chạy rồi, bạn chỉ cần rút dây nối giữa PK2FUN và phần mạch chạy, bạn sẽ
thấy LED ở chân RE1 sẽ sáng. Quá trình này sẽ lặp ñi lặp lại ñối với mỗi dự án của các bạn.
Đó là công thức cơ bản nhất.

Những ñiểm cần lưu ý trong chương này

 Các công cụ làm việc với PIC bao gồm:


o Môi trường soạn thảo
o Trình biên dịch
o Công cụ mô phỏng MPLAB SIM
o Mạch nạp, Mạch gỡ rối, Mạch mô phỏng phần cứng
o Bo mạch ứng dụng, ở ñây chúng ta ñang học về PIC16F887 và sử dụng bo
mạch ứng dụng BOOK1 của R&P
 MPLAB IDE có những tính năng rất tốt, nhưng thường không ñược kích hoạt mặc
ñịnh, do vậy, khi làm việc với MPLAB IDE, các bạn cần tìm hiểu thêm và trao ñổi ñể
sử dụng các tùy chọn ñó theo thói quen sử dụng cá nhân
 Mạch học PIC BOOK1 ñã bao gồm mạch nạp PICKit 2 “cải lùi”, gọi là PK2FUN, các
bạn không cần thêm công cụ nạp nào khác. Khi ñã làm việc với PIC, và có nhiều kinh
nghiệm, chúng tôi khuyên các bạn nên trang bị ICD3 ñể thiết kế và phát triển sản
phẩm.
 Trình biên dịch ñược sử dụng trong cuốn sách này là trình biên dịch HTPIC C, ngôn
ngữ ñược sử dụng là ANSI C, các bạn cần biết lập trình C ñể làm việc với PIC, tuy
nhiên, các bạn có thể tham khảo Phụ lục: Ngôn ngữ ANSI C ñể tìm hiểu thêm nếu
bạn chưa biết lập trình C.

Trang 25
http://books.rpc.vn – Tự học PIC

You might also like