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:
+ PIC10
+ PIC12
+ PIC16
+ PIC18
 16 bit:
+ PIC24F
+ PIC24H
+ dsPIC30
+ dsPIC33
                
              
                                            
                                
            
                       
            
                 21 trang
21 trang | 
Chia sẻ: hoang10 | Lượt xem: 1158 | Lượt tải: 0 
              
            Bạn đang xem trước 20 trang tài liệu Điện - Điện Tử - Giới thiệu về pic microcontrollers (mcus), để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
 1
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: 
+ PIC10 
+ PIC12 
+ PIC16 
+ PIC18 
 16 bit: 
+ 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 ). 
 2
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. 
 3
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 
 4
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 
 5
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  
Sau đây là hướng dẫn cài đặt CCS C version 3.249 ( có crack sẵn) 
 6
ấ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 
 7
 8
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 đó: 
 9
Click chọn Project Wizard 
 10
Đầ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 
 11
Đ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 
 12
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. 
 13
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 ) 
 14
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 
 15
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 
 16
Click chọn add file 
Click chọn file text đã lưu 
 17
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. 
 18
Chọn dòng CCS C conpliler for PIC.( Dòng này chỉ hiện ra khi đã cài CCS C và CCS-
mplab-plugin ). 
Chọn NEXT để tiếp tụcCác bước sau làm tương tự như đối với project viết trên 
ASM. 
 19
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 1) header file 
 org 0x000000 
 goto MAIN 
 org 0x000008 
 goto ISR_HIGH 
 org 0x000018 
 goto ISR_LOW 
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. 
 org 0x000030 
MAIN 3) Bắt đầu chương trình chính 
 . .. 
 “chương trình con 1” 
 “chương trình con 2” 
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 
END 
 20
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 
org 0x000000 
goto MAIN 
MAIN 
clrf TRISD ; set port D as OUTPUT 
movlw 0XFF ; move 0xFF value => W (Working register) 
movwf PORTD ; move value in W => port D 
goto $ 
END 
4.2) Cấu trúc của 1 chương trình viết trên CCS: 
#include 1) header file 
#use delay. 
#fuses  
#use rs232 . 
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 
 Khai báo biến toàn cục 
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 
 Chương trình ngắt 
4) Chương trình ngắt 
 “chương trình con 1” 
 “chương trình con 2” 
5) Chương trình con 
MAIN () 
{ . 
 .. 
 Gọi các chương trình con 
 .. 
 .. 
} 
6) Chương trình chính 
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 
#byte PORTD=0XF83 
#byte TRISD =0xF95 
void main() 
{ 
 While(1) 
 { 
 21
 TRISD=0X00; 
 PORTD=0XFF; 
 } 
}