Hướng dẫn lập trình cho PIC bằng CCS ver3.242
Hướng dẫn lập trình cho PIC bằng CCS ver3.242
1. Tổng quan về CCS
1.1. Vì sao ta sử dụng CCS?
!việc lập trình cho con vi điều
khiển đó. Vi điều khiển chỉ hiểu và làm việc với hai con số 0 và 1. Ban đầu để việc lập trình cho VĐK là làm việc với dãy các con số
0 và 1. Sau này khi kiến trúc của Vi điều khiển ngày càng phức tạp, số luợng thanh ghi lệnh nhiều lên, việc lậptrình với dãy các số 0
và 1 không còn phù hợp nữa, đòi hỏi ra đời một ngôn ngữ mới thay thế. Và ngôn ngữ lập trình Assembly. Ở đây ta không nói nhiều
đến Assmebly. Sau này khi lập trình cho Vi điều khiển một cách ngắn gọn và dễ hiểu hơn đã dẫn đến sự ra đời của"#$
% &"#$'()"*nhiều chương trình soạn thảo và biên dịch C
cho Vi điều khiển : Keil C, HT+PIC, MikroC,CCS…
,"-$$.//'0$$/"!10$2điều khiển PIC. Những ưu và nhược
điểm của CCS sẽ được đề cập đến trong các phần dưới đây.
1.2. Giới thiệu về CCS
$$/0.3 410"#$256$7)8
Chương trình là sự tích hợp của 3 trình biên dich riêng biết cho 3 dòng PIC khác nhau đó là:
+ PCB cho dòng PIC 12+bit opcodes
+ PCM cho dòng PIC 14+bit opcodes
+ PCH cho dòng PIC 16 và 18+bit
,9*:0.3 /';<;/=>0.?*trình soạn thảo và biên dịch là
CCS, phiên bản mới nhất là PCWH Compiler Ver 3.227.
@A=0.3 $56$%$$B=CD !E.E=;56$
/CD !56$ 8$=>0 CF=;G/H*
"HCD !"#09IJ"#$8,/= KCD !G9%=
L9</.*MNNO/,L(P8,.*;B/C*Q97"*9
R%.L%S4QT%9BU=>0%/CV=CD
!W
2. Tạo PROJECT đầu tiên trong CCS
X5YN$$G%G &5YNZ[ %)$N%'>*/
\NC/3/G..L/].E.^8
_=U'CF0./'YN;N*:=>8)BT5YN
-L1LfL8
Giao tiếp RS232
)i256$i;g'"vq:qx8,./'n-UvQ%,Q%
Ah %_.%h5'W
Giao tiếp I2C
XCD !6q$</B-yCN6q$%GG-`$U_(%$p%,A'O\C+ Slow),
chế độ Master hay Slave, địa chỉ chN8
Tab Communications
2.1.3. Tab SPI and LCD
,./'3= &-ALAL56%xLA/56$i;
8$BT &6q$0" &56/=;8XGCD !*L/'
&B0.qL*10.RO?= &6q$
(,suzl%"Gi;5P8
590p$_ /< {ls\/:u\8
Tab SPI and LCD
2.1.4. Tab Timer
p3.đếm/định thời/56$ {) +range có: Timer0, timer1, timer2, WDT…
,-90.L|4G`-?Q??O|/P%*
Q*'/W
Tab Timer
2.1.5. Tab Analog
p3-.'g=>|CAO(_$P56$8,&'/f6$!/G-
%.?`
+ Lựa chọn cổng vào tương tự
+ Chọn chân điện áp lấy mẫu (Vref)
+ Chọn độ phân giải: 8+bit = 0 ~ 255 hay 10+bit = 0~1023
+ Nguồn xung đồng hồ cho bộ ADC (trong hay ngoài), từ đó mà ta có được tốc độ lấy mẫu, thường ta chọn làinternal 2‐6 us.
+ Khi không sử dụng bộ ADC ta chọnnone
Tab Analog
Sau đây là ví dụ về cấu trúc 1 chương trình trong CCS :
• N‚lr\stt8ƒ
• NN56$r„stt…†lr(_$†lu
•CN N'O†quuuuuuuP
8888
6lr%.‡
8888
2 Qˆ'ˆ(_$OP
‰888
888
Š
•6J,ˆ,6)~vl
2 Qˆ'ˆˆNOP
‰888
888
Š
)OP
‰888
888
Š
+ Đầu tiên là các chỉ thị tiền xử lý : •888 có nhiệm vụ báo cho CCS cần sử dụng những gì trong chương trình C như dùng VXL gì ,
có dùng giao tiếp PC qua cổng COM không , có dùng ADC không , có dùng DELAY không , có biên dịch kèm các file hay
không . . .
+ Các khai báo biến .
+ Các hàm con do ta viết : Qˆ'ˆ(_$OP%888
+ Các hàm phục vụ ngắt theo sau bởi 1 chỉ thị tiền xử lý cho biết dùng ngắt nào.
+ Chương trình chính .
+ Một chương trình C có thể được viết luôn tuồn trong hàm main () , nếu chúng rất ngắn và đơn giản. Nhưng khi chương trình bắt
đầu dài ra , phức tạp lên 1 chút thì phải phân chia trong các hàm con .
Các hàm này có thể là :
tái sử dụng mã , thay vì phải viết lại chuyên biệt cho từng project . Đây là cách làm chuyên nghiệp cho những project lớn .
(Nguồn: =)