You are on page 1of 21

GIỚI THIỆU VỀ PIC® Microcontrollers (MCUs

)
1>TỔNG QUAN:

Họ vi điều khiển PIC và dsPIC do hãng chế tạo và sản xuất với công nghệ hiện đại, phù hợp cho các ứng dụng đơn giản cho đến phức tạp. Đặc biệt ngoài ngôn ngữ lập trình assembler như các MCU khác, người dùng có thể lập trình PIC trên ngôn ngữ C quen thuộc thông qua các phần mềm hỗ trợ ( PIC18C ; CCS C ; …….) Gồm các họ cơ bản như sau: 8 bit: + + + + 16 bit: + + + + PIC10 PIC12 PIC16 PIC18 PIC24F PIC24H dsPIC30 dsPIC33

Tùy theo các ứng dụng cụ thể mà người dùng có thể chọn ra Chip phù hợp ( theo hướng dẫn của nhà sản xuất tại trang chủ của microchip: www.microchip.com ). 1

Trong đó PIC18F4431 là IC chuyên dùng để điều khiển động cơ 3 pha theo đề nghị của của Microchip

2> NHỮNG BƯỚC CHUẨN BỊ KHI LÀM VIỆC VỚI PIC: Sau khi các bạn đã lựa chọn được chip phù hợp với mục đích sử dụng thì công việc tiếp theo là chuẩn bị: • Mạch nạp • Phần mềm để biên dịch => debug/ program • Datasheet => thiết kế phần cứng cho MCU và tham khảo trong quá trình lập trình 2.1) Mạch nạp Mạch nạp (programmer) có hỗ trợ chức năng real time debug cho PIC và sdPIC hiện nay thông dụng nhất là ICD2. Sau đây là hình ảnh mạch một số mạch ICD2 trên thị trường.

2

Sản phẩm thương mại của Microchip

Sản phẩm trên thị trường việt nam (HCM)

Đối với mạch ICD2 của microchip, đây là sản phẩm thương mại do đó vận hành rất ổn định. Tuy nhiên giá cả khá cao so với mạch nạp “thiết kế” tại VN. Đối với các bạn ở HCM thì có thể liên hệ với Bùi Ngọc Thắng để mua mạch nạp và mạch thí nghiệm PIC, dsPIC hoặc AVR với giá cả phải chăng. Đối với các bạn ở nơi khác thì tham khảo trên website www.picvietnam.com mục “mạch nạp”, ngoài ra picvietnam.com cũng là diễn đàn chính thức của người dùng PIC và dsPIC tại VN. Các bạn có thể tham khảo khá nhiều tài liệu, kiến thức và kinh nghiệm về PIC của các user tại trang này. 2.1) PHẦN MỀM BIÊN DỊCH MPLAB: Dùng để complie và chuyến file lập trình dạng text sang file *.HEX sau đó nạp vào PIC. Các bạn vào trang chủ microchip( www.microchip.com) Home Products Development Tools :để dowload MPLAB IDE phiên bản mới nhất. Sau khi download xong, các bạn giải nén và cài đặt bình thường

3

Quá trình cài đặt hoàn tất, các bạn restart lại PC. Sau khi cài đặt xong MPLAB IDE thì chỉ có thể lập trình trên ngôn ngữ assembler (ASM). Nếu mốn lập trình thêm ngôn ngữ C thì phải cài đặt thêm phần mềm hỗ trợ. Có nhiều phần mềm hỗ trợ lập trình cho PIC trên C ( tham khảo thêm trên picvietnam.com ở mục ngôn ngữ lập trình). Ở đây chỉ giới thiệu phần mềm hỗ trợ CCS C 4

2.2) Hướng dẫn cài đặt CCS C: Tương tự như MPLAB các bạn download CCS C và mplab-ccs-plugin-install tại www.ccsinfo.com .Ngoài ra các bạn có thểm tham khảo source code viết trên CCS do USER chia sẻ trên forum của trang web này http://www.ccsinfo.com/forum/ Sau đây là hướng dẫn cài đặt CCS C version 3.249 ( có crack sẵn)

5

……ấn finish để hoàn tất. Tiếp theo cài mplab-ccs-plugin-install tích hợp phần mềm CCS vào MPLAB IDE

6

7

Tiếp theo ấn finished để hoàn tất việc cài đặt. Cài đặt xong CCS bạn đã có thể lập trình bằng ngôn ngữ C quen thuộc trên nền MPLAB Khi các bạn đã có trong tay đầy đủ mục đề cập ở trên : 1) Mạch nạp; 2) KIT thí nghiệm; 3) Phần mềm biên dịch - debug – program: ( MPLAB – CCS) 4) Datasheet =>thì mới có thể bắt tay vào viết chương trình đầu tiên 3> CÁCH TẠO MỘT PROJECT Đầu tiên bạn phải xác định trước là viết code trên ngôn ngữ nào assembler hay CCS. Với assembler bạn phải hiểu rất rõ cấu trúc phần cứng bên trong của chip mà bạn sử dụng. Đối với CCS thì ko hiểu lắm cấu trúc bên trong vẫn có thể viết được. Đồng thời có thể chèn đoạn code ASM ( assembler) vào trong chương trình viết trên CCS . Đây là điểm khá hay của CCS, do đó các bạn muốn lập trình các project phức tạp thì phải sử dụng được thuần thục cả hai ngôn ngữ , cũng như hiểu rõ cấu trúc bên trong của chip mình sử dụng. 3.1) Cách tạo project viết trên ngôn ngữ ASM: Double click vào biểu tượng MPLAB trên destop, sau đó:

8

Click chọn Project Wizard

9

Đầu tiên click vào dấu mũi tên để lựa chọn chip .vd ở đây chọn PIC18F4431 , sau đó click Next để tiếp tục

Chọn Mircochip MPASM Toolsuite, click next để tiếp tục

10

Điền tên và ấn nút Browse để tạo đường dẫn đến thư mục bạn muốn chứa project, sau đó click NEXT

11

Click finish để thoát khỏi Project wizard

Một project đơn giản nhất phải gồm có 2 thành phần Source files và Hearder Files. Thư mục Source files chứa file text dạng *.txt chứa code lập trình. Thư mục Hearder Files chứa file *.h hoặc *.INC: file có sãn của microchip; user khai báo dùng loại chip gì => add vao thư mục này. 12

1) add Header files: Các bạn nên copy hearder file vào thư mục chứa project để tiện cho việc sử dụng sau này . ( vd ở đây: nếu bạn dùng chip 18F4431 -> chép 18F4431.INC từ C:\Program Files\Microchip\MPASM Suite vào thư mục D/Project_1 )

13

Tiếp theo chúng ta add file và thư mục Source Files 2) add Source Files

Click chọn biểu tượng NEW trên toolbar 14

Màn hình sẽ hiện ra 1 ô soạn thảo text tương tự notepad với tên Untiled => chon File / Save as để lưu lại

Đặt tên cho file text và chọn Save để lưu lại

15

Click chọn add file

Click chọn file text đã lưu

16

Chúng ta đã hoàn tất việc add file vào các thư mục Source files và header files. Công việc tiếp theo là viết code ( ở cửa sổ text editor : D:\project_1\baitap_1.asm ). Đây chỉ là vd điển hình việc tạo 1 project, có thể có nhiều cách khác hay hơn ! Đối với project mà sử dụng cùng 1 loại chip, cùng loại ngôn ngữ lập trình ( ASM hay C) thì chỉ cần tạo 1 lần. Những lần sau, chỉ cần add/ remove file text (*.asm hoặc *.c) vào thư mục Source files 3.2) Cách tạo project viết trên ngôn ngữ CCS C: Tương tự như tạo project viết bằng ASM, chỉ khác nhau ở bước chọn ngôn ngữ lập trình. Đầu tiên: từ menu => project / project wizard…….

17

Chọn dòng CCS C conpliler for PIC.( Dòng này chỉ hiện ra khi đã cài CCS C và CCSmplab-plugin ).

Chọn NEXT để tiếp tục…Các bước sau làm tương tự như đối với project viết trên ASM. 18

Copy file 18F4431.h từ C:\Program Files\PICC\Devices vào thư mục chứa project, sau đó add vào Header Files . Sau khi hoàn tất việc tạo project, bạn có thể bắt tay vào viết chương trình đầu tiên cho PIC. 4> VIẾT CHƯƠNG TRÌNH ĐẦU TIÊN: 4.1) Cấu trúc của 1 chương trình viết trên ASM: #include <P18F4431.inc> org 0x000000 goto MAIN org 0x000008 goto ISR_HIGH org 0x000018 goto ISR_LOW org 0x000030 MAIN ………………… ………………… . ……………….. “chương trình con 1” “chương trình con 2” END 19 1) header file 2) Địa chỉ vector ngắt : Khi có ngắt xảy ra thì pointer sẽ nhảy đến nhãn ISR_HIGH hoặc ISR_LOW . ISR: viết tắt của Interrupt Service Rountine . Địa chỉ ngắt cụ thể của từng loại chip, loại ngắt cao hay thấp do datasheet cung cấp.

3) Bắt đầu chương trình chính

Chương trình con bắt đầu bằng TÊN ( lable) của chương trình đó và kết thúc bằng bằng chữ RETURN. Chương trình ngắt được xem là chương trình con, kết thúc bằng RETFIE

VD1: Chương trình xuất tín hiệu 0xFF ra port D của P18F4431 (PIN D0 -> D7) => led sáng #include <P18F4431.INC> org 0x000000 goto MAIN MAIN clrf TRISD movlw 0XFF movwf PORTD goto $ END

; set port D as OUTPUT ; move 0xFF value => W (Working register) ; move value in W => port D

4.2) Cấu trúc của 1 chương trình viết trên CCS: #include <18F4431.h> #use delay…. #fuses …… #use rs232 ……. 1) header file 2) Các lệnh tiền khai báo : #use delay(clock=20000000) => khai báo tần số thạch anh (Hz) để sử dụng hàm delay #use rs232 => khai báo sử dụng cổng thu phát nối tiếp 3) Khai báo tên và kiểu biến sử dụng, có thể khai báo biến cục bộ bên trong chương trình con và bên trong hàm MAIN 4) Chương trình ngắt 5) Chương trình con 6) Chương trình chính MAIN () { ……………. …………….. Gọi các chương trình con …………….. …………….. }

Khai báo biến toàn cục

Chương trình ngắt “chương trình con 1” “chương trình con 2”

VD: Chương trình xuất tín hiệu 0xFF ra port D của P18F4431 (PIN D0 -> D7) => led sáng #include <18f4431.h> #byte PORTD=0XF83 #byte TRISD =0xF95 void main() { While(1) { 20

TRISD=0X00; PORTD=0XFF; } }

21