Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.55 MB, 79 trang )
bắt nhanh được vi điều khiển PIC và sử dụng PIC trong các dự án. Các chương trình điều
khiển sẽ được thực hiện nhanh chóng và đạt hiệu quả cao thông qua việc sử dụng ngôn
ngữ lạp trình cấp cao – Ngôn ngữ C
Tài liệu hướng dẫn sử dụng có rất nhiều, nhưng chi tiết nhất chính là bản Help đi kèm
theo phần mềm (tài liệu Tiếng Anh). Trong bản trợ giúp nhà sản xuất đã mô tả rất nhiều
về hằng, biến, chỉ thị tiền xủa lý, cấu trúc các câu lệnh trong chương trình, các hàm tạo
sẵn cho người sử dụng… Ngoài ra về Tiếng Việt cũng có bản dịch của tác giả Trần Xuân
Trường, SV K2001 DH BK HCM. Tài liệu này dịch trên cơ sở bản Help của CCS, tuy
rằng chưa đầy đủ nhưng đây là một tài liệu hay, nếu bạn tìm hiểu về PIC và CCS thì nên
tìm tài liệu này về đọc tại địa chỉ web www.picvietnam.com . đây là đàn học, trao đổi về
PIC
Để lập trình và biên dịch CCS C, dùng chương trình PIC C Complier,sau khi soạn thảo
các bạn ấn F9, để dịch,nếu thành công sẽ có thông báo như sau :
Hình 76: Giao diện phần mềm CCS
Ngoài ra, để xem code ASM như thế nào,sau khi dịch bạn chọn mục C/ASM List như
hình dưới đây:
Hình 77: Xem chương trình dạng asembly
Ví dụ về cấu trúc 1 chương trình CCS
#include < 16F877 .h >
#device PIC6f877 *=16 ADC=10
#use delay(clock=20000000)
....
Int16 a,b;
....
Void xu_ly_ADC ( )
{...
...
}
#INT_TIMER1
Void xu_ly_ngat_timer ( )
{...
...
}
Main ( )
{...}
2. Các hàm cơ bản trong CCS C
a. Khai báo các thư viện,phần cứng
- #include <16f877a.h > : khai báo về thư viện pic sử dụng dùng cho việc cấu hình
cho PIC , ví dụ pic16f877a
-
#include def_877a.h: Files do người lập trình tạo ra, chứa khai báo về các thanh
ghi . trong PIC giúp cho viêc lập trình được dễ dang hơn ví dụ ta co thể gán
PORTB = 0xff; sử dụng tên các thanh ghi trong pic
-
#device *=16 ADC = 10: Khai báo dùng con trỏ 8 hay 16 bit, bộ ADC là 8 hay 10
bit
-
#FUSES NOWDT, HS,NOPROTECT ,…: Khai báo về cấu hình cho PIC
HS: sử dụng thạch anh tần số cao >4MHz
NOWDT: không sử dụng watch dog timer
NOPROTECT: không bảo vệ code
-
#use delay(clock=20000000): Tần số thạch anh sử dụng
-
#use rs232 (baud=9600,…): Khai báo cho giao tiếp nối tiếp RS232
-
#use i2c(master, SDA=PIN_C4,…): Khai báo dùng I2C, chế độ hoạt động
-
#include
ví dụ LCD_lib_4bit.c
b. Các hàm xuất nhập I/O input/output
- set_tris_x (value) : hàm thiết lập port x là input hay output. Value có thể là số
hexa hoặc bit. Mỗi bit tương ứng với mỗi pin của port là bit 1 là pin input và là 0
tương ứng với pin output
-
output_high (pinx) : thiết lập pin x ở múc cao 1 vd: output_high(PIN_A1);
-
output_low (pinx) : thiết lập pin x ở múc thấp 0 vd: output_low(PIN_A1);
-
output_a (value): xuất ra port a , value là hexa 0x23 or bit 0b00001111, tương
ứng mỗi bit là 0 hay 1thì
mỗi pin của port a là low hay high vd:
OUTPUT_B(0xf0);
c. các hàm ngắt
-
enable_interrupts (level) : cho phép ngắt level hoạt động
vd: enable_interrupts(GLOBAL);
enable_interrupts(INT_TIMER0);
// cho phép ngắt toàn cục
// cho phép ngắt timer0
enable_interrupts(INT_TIMER1);
-
ext_int_edge (source, edge) : chọn cạnh xung tín hiệu ngắt là từ thấp lên cao
(L_TO_H) hay từ cao xuống thấp (H_TO_L) vd: ext_int_edge( 2, L_TO_H); //
Set up PIC18 EXT2
-
disable_interrupts (level) : không cho phép ngắt hoạt dộng
vd: disable_interrupts(INT_RDA); // RS232 OFF
d. các hàm sử dụng bộ định thời timer
-
setup_timer_0 (mode) : thiết lập lựa chọn xung clock đưa vào bộ timer 0
mode: RTCC_INTERNAL, RTCC_EXT_L_TO_H or RTCC_EXT_H_TO_L ,
RTCC_DIV_2, RTCC_DIV_4, RTCC_DIV_8, RTCC_DIV_16, RTCC_DIV_32,
RTCC_DIV_64, RTCC_DIV_128, RTCC_DIV_256
vd: setup_timer_0 (RTCC_DIV_2|RTCC_EXT_L_TO_H);
-
set_timer0( ) : thiết lập giá trị cho bộ timer 0