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 |
Chia sẻ: hoang10 | Lượt xem: 886 | 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;
}
}