Hướng dẫn lập trình cho vi điều khiển PIC
Thời gian trong PIC rất đa dạng, với ba khối chính là TIMER0 (8bit) và
TIMER1, TIMER2 (16bit) với bộ chia đầu vào lập trình được cho phép mềm dẻo
trong hoạt động đếm cũng như định khoảng thời gian cho các hệ thống khác nhau.
Ngoài các chế độ đếm và định thời thì TIMER trong PIC còn có một số chức
năng khác như PWM, WDT,
Các khối thời gian ở PIC không có cờ tràn độc lập mà được tích hợp luôn
vào cờ ngắt (sử dụng nguyên tắc phát ngắt).
8 trang |
Chia sẻ: phanlang | Lượt xem: 2705 | Lượt tải: 5
Bạn đang xem nội dung tài liệu Hướng dẫn lập trình cho vi điều khiển PIC, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
HƯỚNG DẪN LẬP TRÌNH CHO VI ĐIỀU KHIỂN PIC
Sự phát triển của các công nghệ và kỹ thuật thiết kế chế tạo đã cho ra đời
ngày càng nhiều linh kiện điện tử đa năng với giá thành rẽ và có sự ổn định cao.
Trong xu thế phát triển các hệ thống tích hợp với trung tâm là các vi điều khiển cho
phép sử dụng phần mềm thay đổi linh hoạt các hoạt động của hệ thống. Trong rất
nhiều vi điều khiển hiện tại, với dòng MSC51 đơn giản cho các chương trình điều
khiển và giá rẻ, dòng vi điều khiển AVR cho các hệ thống có nhiều ứng dụng phức
tạp. Trong các dòng vi điều khiển, các vi điều khiển của hãng Mircochip với ký
hiệu PIC đã và đang chứng tỏ được các khả năng linh hoạt và sự ổn định cho phép
người dùng tạo nên các hệ thống tích hợp phù hợp.
I. Giới thiệu chung
Vi điều khiển là sự kết hợp của vi xử lý thu gọn với các chức năng vào ra
cho mục đích đo lường và điều khiển trên một vi mạch tích hợp. Dòng vi điều khiển
PIC là sự tích hợp của vi xử lý 8bit và nhiều chức năng kết hợp như: vào ra
8bit×4port, PWM, ADC, thời gian, …
Sơ đồ chức năng của một vi điểu khiển PIC được mình họa như trong (Hình
1). Trong đó cho thấy với một khối xử lý 8bit, vi điều khiển có điểm khác biệt với
vi xử lý là giao tiếp với bên ngoài bằng các giao tiếp hai trạng thái mà không phải là
BUS 3 trạng thái như vi xử lý. Ngoài ra trong các dòng PIC khác nhau cũng có
nhưng thay đổi chức năng khác nhau cho phép người sử dụng lựa cho linh hoạt cho
các ứng dụng phù hợp. Các chức năng chính của vi điều khiển PIC18F4550 được
thể hiện như sau:
- Giao tiếp logic hai trạng thái
- Giao tiếp tín hiệu tương tự: đọc vào tín hiệu tương tự để thực hiện chuyển
đổi tín hiệu, hoặc đầu vào các khối so sánh.
- Tín hiệu điều khiển lập trình được
- Khối chuyển đội tín hiệu ADC 10bit
- Khối giao tiếp nối tiếp EUSART
- Khối so sánh
- Các khối định thời
- Giao tiếp BUS nối tiếp – USB 2.0
- EEPROM cho mục đích lưu lại trạng thái trước khi ngắt hệ thống
- Khối tạo xung nhịp linh hoạt
- Các khối thanh ghi chức năng cho phép lập trình điều khiển các thành
phần của hệ thống một cách đơn giản và thuận lợi nhất.
Hình 1: Sơ đồ chi tiết các thành phần của PIC18F4550
A. Lập trình cho PIC
Vi điều khiển PIC có thể sử dụng nhiều phần mềm lập trình chuyên dụng với
các dạng ngôn ngữ lập trình khác nhau: ASM – hợp ngữ, ngôn ngữ C, ngô ngữ
PASCAL,… Mỗi phần mềm và mỗi dạng ngôn ngữ lập trình đều có những thuận lợi
và khó khăn riêng, phù thuộc vào khả năng và sở thích của người dùng để lựa chọn
một công cụ phù hợp.
Hiện nay có hai phần mềm hỗ trợ lập trình PIC với ngôn ngữ C linh hoạt là
CCS và MikroC, và trong tài liệu này hướng dẫn sử dụng ngôn ngữ MikroC để lập
trình điều khiển cho PIC18F4550.
Bộ phần mềm MikroC có thể tham khảo tại trang web:
B. Nạp chương trình vào vi mạch
Với dòng vi điều khiển PIC, việc nạp chương trình đã lập sẵn vào vi mạch
được thực hiện qua chuẩn ICSP (In-Circult Serial Programming) thông qua giao
tiếp 5 dường dẫn từ khối mạch nạp đến vi mạch PIC
Hình 2: Giao diện phần mềm WINPIC v3.61
Hiện có nhiều loại mạch nạp được chế tạo cho dòng vi điều khiển PIC,
nhưng hiện tại phòng thí nghiệm sử dụng mạch nạp chuẩn của PIC kết hợp với phần
mềm WINPIC phiên bản 3.61 trên trang web:
Quá trình nạp chương trình vào vi mạch được thực hiện như sau
1. Kết nối mạch thực hành với mạch nạp thông qua cáp 5 đường dây
(chú ý đến thứ tự của cáp phù hợp).
2. Khởi động phần mềm WINPIC, sẽ có phần mềm với giao diện như
trong (Hình 2).
3. Kiểm tra sự tương thích giữa phần mềm và hệ thống bằng cách dò
loại mạch PIC bằng cách kích biểu tượng dò tìm trên thanh công cụ
, hoặc bằng Device/Detect Device
4. Tải file chứa chương trình đã biên dịch (file dạng hex) vào phần mềm
WINPIC
5. Nạp chương trình vào vi mạch bằng cách kích vào biểu tượng nạp
chương trình hoặc bằng menu Device/Program All
6. Ngắt kết nối giữa mạch nạp và mạch thực hành.
II. Lập trình PIC bằng MikroC
A. Các bước khởi tạo project trong MikroC
1. Khởi động phần mềm MikroC
Hình 3: Giao diện phần mềm MikroC
Hình 4: Cửa số New Project
1. Tạo dự án (Project): Chọn Project/New Project, phần
mềm sẽ hiện cửa sổ con như sau (Hình 4).
Sau đó sẽ điền tên dự án
Trỏ đến thư mục chứa dự án (mã nguồn chương trình)
Lựa chọn cấu hình cho vi mạch: loại vi mạch, cấu hình thông số
Sao đó nhấn OK để hoàn thành quá trình tạo lập một Project mới, phần mềm
sẽ tạo nên một file chứa code có cùng tên với tên Project
Lưu file chức mã chương trình ở dạng file *.c. Sau đó nạp file vào Project
bằng thao tác Project/Add to Project, phần mềm sẽ hiện cửa số con (Hình 5). Từ đó
sẽ trỏ đến file chứa mã nguồn.
Hình 5: Cửa sổ nạp file vào project
B. Một số ví dụ
1. Điều khiển cổng vào ra
Vào ra với PIC sẽ được thực hiện qua 5 cổng là A, B, C, D và E.
Mỗi cổng được truy xuất qua một thanh ghi tương ứng là PORTx, và được
xác định hướng bởi TRISx
Với các chân có kết hợp với đầu vào tương tự sẽ có thêm thanh ghi lựa chọn
chế độ vào ra số hay tương tự là ANSEL và ANSELH.
Các thanh ghi cổng có thể truy xuất trực tiếp các bit theo định nghĩa
PORTX.Fn
Chú ý
- Trước khi truy xuất các cổng, phải thiết lập hướng vào ra tương ứng.
- Với các chân ở cổng A và B phải thiết lập thanh ghi lựa chọn chế độ vào ra.
- Nên định nghĩa trước các bit nếu truy xuất các bit của các cổng một cách độc
lập.
Chương trình điều khiển vào ra
void main()
{
char data;
ANSELH = 0; //Thiet lap che do cho PORTB
TRISB = 0x0F; //Thiet lap huong cho PORTB
while (1)
{
data = PORTB; //Doc 4bit o PORTB
data = ~data; //Dao bit
data = data*16; //Dich tu 4bit thap len 4bit cao
PORTB = data; //Xuat gia tri
}
}
2. Lập trình thời gian
Thời gian trong PIC rất đa dạng, với ba khối chính là TIMER0 (8bit) và
TIMER1, TIMER2 (16bit) với bộ chia đầu vào lập trình được cho phép mềm dẻo
trong hoạt động đếm cũng như định khoảng thời gian cho các hệ thống khác nhau.
Ngoài các chế độ đếm và định thời thì TIMER trong PIC còn có một số chức
năng khác như PWM, WDT, …
Các khối thời gian ở PIC không có cờ tràn độc lập mà được tích hợp luôn
vào cờ ngắt (sử dụng nguyên tắc phát ngắt).
Khối TIMER0
Hình 6: Khối timer 0
Chế độ định thời 8bit, lúc này TIMER0 sẽ đếm lên liên tục xung nhịp hệ
thống không qua bộ chia. Chế độ này được chọn bằng các đặc bit T0CS =0
(OPTION_REG)
Chế độ đếm 8bit, lúc này TIMER0 sẽ luôn tăng theo sườn trước (hoặc sau)
của chân đầu vào T0CKI. Chế độ này được chọn bằng cách thiết lập bit T0CS=1.
Lập trình bộ chia cho TIMER0, khối chia xung nhịp đầu vào của TIMER0
ở chế định thời được thiết lập qua thanh ghi OPTION_REG. Và thanh ghi này cũng
cho phép chuyển đổi giữa hai chế độ TIMER hay WDT
Ngắt TIMER0 sẽ tạo một ngắt khi xảy ra sự tràn khi đếm đến giá trị 0FFh về
giá trị 00h. Lúc đó giá trị bit cờ T0IF sẽ được thiết lập lên 1 bất chấp ngắt T0 có
được thiết lập hay không (bit T0EN).
Bit cờ tràn T0IF được xác lập 1 trong phần cứng nhưng phải được xóa bởi
phần mềm.
Chú ý: Có thể không sử dụng ngắt vẫn có thể điều khiển được TIMER0
thông qua việc kiểm tra cờ tràn T0IF và xóa cờ khi xảy ra tràn.
Các file đính kèm theo tài liệu này:
- huong_dan_lap_trinh_cho_vi_dieu_khien_8881.pdf