P DEBUG WKT1 WRT0 PD LVP BOREN PWRTEN WDTEN FOS1 FOSO

Một phần của tài liệu Nghiên cứu ứng dụng vi điều khiển Microchip pic trong đo lường và điều khiển thời gian thực (Trang 40)

Ý nehĩa các bit tron2 từ cấu hình C P Bảo vệ bộ nhớ chương trình.

1 = cho phép đọc chương trình trong bộ nhớ ra. 0 = cấm đọc chương trình.

DEBUG Cho phép debug trên hệ thống.

1 = Không s ử dụng debug trên hệ thống: RB6, RB7 chân vào/ra.

0 = Sử dụ ne debug trên hệ thống: RB6, RB7 là chân nối đến mạch debug. YVRT1: YVRTO Cho phép ghi vào bộ nhớ chương trình.

Nghiên cứu ứng dụng vi điều khiến PIC trong đo lường & điều khiển

10 = OOOOh - OOFFh bị cấm ghi đè. 01 = OOOOh - ()3FFh bị cấm ghi đè. 00 = OOOOh - OFFFh bị cấm chi đè.

C P D Bảo vệ bộ nhớ dữ liệu.

1 = Cho phép đọc bộ nhớ dữ liệu ra. 0 = Cấm dọc ra.

LV P Cho phép ch ế độ nạp trình điện áp thấp. 1 = RB3/PGM có chức năng nạp trình.

0 = RB3 là chân vào/ra.

B O REN Cho phép khởi động lại khi nguồn cung cấp sụt quá ngưỡng. 1 = cho phép BOREN.

0 = cấm BOREN.

P W R T E N Cho phép bộ đếm timer khi bật nguồn. 1 = cấm PWRT.

0 = cho phép PWRT.

W D T E N Cho phép bộ giám sát watchdog. 1 = cho phép WDT.

0 = cấm WDT.

F O SC 1: FOSCO Lựa chọn nguồn dao động. 11 = dao động RC.

10 = dao động HS. 01 - dao động XT. 00 = dao độne LP.

NiỊhién cửu ímq dụng vi điểu khiển PIC trong áo lường & điều khiển

Chương 4 L Ậ P T R ÌN H C H O VI Đ IỂU K H IỂ N

Vi điều khiển không thể hoạt độna nếu không có chương trình điều khiển. Chương trình cho vi điều khiên là một tệp nhị phân. Các chương trình này được soạn thảo và biên dịch bằng máy tính PC, sau đó được nạp vào vi điều khiển. Nội dung chương này sẽ đề cập đến các trình biên dịch và bộ nạp trình cho vi điều khiển. 4.1 CHƯƠNG TRÌNH DỊCH ASSEMBLER MPASM

Chương trình dịch MPASMWIN.EXE chạy trên nền Windows là công cụ để phát triển mã nguồn Assembly cho vi điều khiển Microchip PIC. Đây là giải pháp tổng thể để phát triển mã thực thi cho tất cả các họ vi điều khiển 12 bit, 14 bit, 16 bit cua Microchip. Đây là bộ dịch miễn phí, có thể tải về từ trang chủ của Microchip. Các điểm đ án g lưu V của M PA SM

- Hồ trợ tất cà các lệnh của vi điều khiển PIC

- Giao diện dòng lệnh hoặc giao diện cửa sổ trong môi trường phát triển IDE trôn nén Windows.

- Ngôn ngữ chỉ dẫn biên dịch phong phú. - Sử dụng các macro rất linh hoạt.

- Tươm* thích với môi trường phát triển tích hợp MPLAB-IDE. Ch ươn u trình dịch MPASM có thế được dùng theo 2 cách

• Đê tạo ra mã thực thi, được nạp và chạy trên vi điều khiển

H ìn h 2 1 : MPASM dịch trực liếp chương trình thành mã máy.

• Để tạo ra mã đối tượng, sau đó được trình liên kết (linker) kết nối với các ch ươn 2 trình nguồn Assembly khác để tạo ra mã thực thi cuối cùng.

Nghiên cứu ứng dụng vi diên khiên PIC troníỊ do lường á diều khiển (adsbygoogle = window.adsbygoogle || []).push({});

I l ì n h 2 2 : M P A S M d ịc h c h ư ơ n g trìn h th à n h tệ p đố i tư ợ n g .

Dưới đây là một ví dụ mã nguồn viết bit chạy trôn vi điều khiển PIC 16C54. LIST P=16C54 # INCLUDE "P16C5X.INC" c b l o c k H ■020' m u lc n d ; 8 b i t m u l t i p l i c a n d m u l p l r ; 8 b i t m u l t i p l i e r H b y t e ; H ig h b y t e o f t h e 16 ; b i t r e s u l t L _ b y t e ; Low b y t e o f t h e 16 ; b i t r e s u l t c o u n t ; l o o p c o u n t e r en d c mpy c l r f H b y t e c l r f L _ b y t e movlw 8 movwf c o u n t movf m u l c n d ,w b c f STATUS,c ; C l e a r c a r r y ; b i t Loop r r f m u l p l r , F b t f s c STATUS,c addwf H _ b y t e , F r r f H _ b y t e , F r r f L _ b y t e , F

bằng Assembly thực hiện phép nhân hai số 8 Kết quả phép nhân đưa ra trên cổng B.

d e c f s z c o u n t , F g o t o l o o p r e t l w 0 T e s t P r o g ra m * * * * * * * * * * * * * * * * * * * * * * * * * * s t a r t c l r w o p t i o n m a in movf PORTB,w movwf m u l p l r ; m u l t i p l i e r ; ( i n m u l p l r ) = 05 movf PORTB,W movwf m u le n d c a l l _ m c a l l mpy ; The ; r e s u l t i s i n F12 Sc F13 ; H _ b y te & L _ b y t e g o t o m a in ORG OlFFh g o t o s t a r t END 43

Nghiên cứu ứng dụng w điều khiển PỈC trong do lường & điếu khiển

Soạn chương trình bằng ngôn ngữ Assembly nếu viết tốt sẽ chạy rất nhanh do việc tối ưu được các lệnh nhưng nhược điểm chương trình viết bằng ngôn ngữ Assembly nói chung rát dài, người viết phải có kiến thức sâu về hệ thông nên tương dôi khó học. Việc nâng cấp chương trình thườn a bị hạn chế vù mất nhiều thời gian.

4.2 C H Ư Ơ N G T R Ì N H D Ị C H N G Ô N N G Ữ B Ậ C C A O P C W - H

Việc lập trình cho vi điều khiển bằng ngôn ngữ Assembly thường gặp nhiều khó khàn trong thời gian đầu, và muốn đưa ra được một chương trình ứng dụng, niụíòĩ lập trình cán đầu tư nlìiểu thời gian. Để đễ dàng tiếp cận việc lập trình cho vi điều khiển PIC, hiện nay các hãng phần mềm đã làm ra các chương trình biên dịch sử dụng ngôn ngữ bậc cao và được thương mại hoá như PicBASIC Pro, CC5x, HITECH-C... Các chương trình biên dịch sứ dụnc neôn ngữ bậc cao kê trên có đặc điểm chune là dễ sử dụng, hổ trợ hầu hết các họ vi điểu khiến PIC và có nhiều thư viện mã neuồn viết sẩn để hỗ trợ lập trình kết nối vi điểu khiển PIC với các thiết bị ngoại vi như bộ nhớ EEPROM, màn hiển thị LCD, bàn phím kiểu ma trận, các cảm biến sô .v.v.

4.2.1 Trình biên dịch PCW-H

Chương trình dịch PCW-H của hãng CCS (Custom Computer Services) là một troniỉ các bộ chương trình dịch c nổi tiếng nhất hiện nay dùng cho vi xử lý Microchip PIC’. Trình biên dịch có giá bán khá hấp dẫn so với các bộ dịch tương tự: 105 USD cho bản rút gọn PGM chi cho họ VI điều khiển FIC cấp trung 14 bit, dịch ở chế độ dòng lệnh, không có ìnổi trường phát triển tích hợp IDE. Bán PCW-H giá 425 USD là bản đầy đủ hỗ trợ tất cả các họ vi điều khiển P1C từ họ cơ bản, cấp trung đến cấp cao, có mỏi trường phát triển tích hợp IDE chạy trong Windows. Phiên bản mới nhất hiện nay là PCW-H 3.190. Hãng CCS thường xuyên cập nhật trình biên (lịch, trung bình 2-3 tháng một lần để hỗ trợ các sản phẩm vi điều khiển mới nhất cùa Microchip.

4.2.2 Các đặc điểm của FCVV-H

Trong trình biên dịch PCW-H, tất cả các tác vụ như vào/ríi, truy cập các thanh ghi SFR, quản lý bộ nhớ RAM ... đều thône qua các hàm nên chương trình gần như (lộc lặp với cấu trúc thực tế của vi điều khiển, như vậy chươn« trình nguồn có tính khá chuyển cao: dễ dàng chuyển chương trình đã viết cho họ PIC này sang họ PIC khác mà chỉ cần những thay đổi rất ít trong chươnc trình. Trong thư viện của PCW- H còn có nhiều tệp mã nguồn gồm các hàm giao tiếp cơ ban cho rất nhiều linh kiện

Nghiên cữu ứng tiling vi (ỉiêu khiển PIC trong đo lường & điều khiển

ngoại vi như bộ mở rộng vào/ra, bộ nhớ EEPROM I2C, bộ nhớ chuẩn Micro-wire, thậm chí cá vi mạch quản lý giao thức TCP/IP hoặc vi mạch điều khiển bus USB.

Các hàm (lựng sán là một trong các điểm rất mạnh của PCW-H, cho phép người lập trình hoàn thành các mã chương trình trong một thời gian ngắn nhất. Một ví dụ là hàm delay để tạo một khoảng thời gian trẻ. Sử dụng bộ dịch PCW-H việc duy nhất cần làm là khai báo tần số xung nhịp cấp cho vi xử lý.

Ví dụ khai báo tần số cho hàm delay

# u s e d e l a y ( c l o c k = 2 0 0 0 0 0 0 0) //sử dụna xung nhịp tần só 2 0 MHz

d e la y _ m s (1 0 0); / / t ạ o một khoảns trỗ 100 ms.

Một ví dụ khác về hàm dựng sẩn là việc khai báo sử dụng cổng vào ra nối tiếp. Neirời lập trình chí việc khai báo sử dụng cổng nào cho vào/ra, tốc độ truyền, kiểm tra chẩn lẻ... một đoạn mã sẽ được trình biên dịch tự động tạo ra trong khi biên dịch đê’ quán lý việc hoạt động của cổng vào ra nối tiếp đã khai báo. Đối với các họ PIC sần khối UART bên trong, trình biên dịch PCW-H tự động nhộn biết và tạo ra mã chương trình sử đụng phần cứng UART này. Nếu ở các vi điều khiển không có phẩn cứng UART, cổng nối tiếp được thực hiện bằng phần mềm.

Ví dụ dòng lệnh khai báo cổng nối tiếp sau: Kuse RS-232 (baud=9600,

x m i t = P i N B I , r c v = P i N _ B 0 ) khởi tạo cổng nối tiếp với tốc độ 9600 baud, chân BI cùa vi xứ lý là chân truyền Tx, chân B0 là chân nhận Rx. Kể từ sau khi khai báo cổng nối tiếp, thiết bị vào/ra chuẩn được gán cho cổng, ví dụ gặp dòng lệnh sau:

s p r i n t f ( " K i e m t r a c o n g n o i t i e p " ) ;

vi diều khiển aửi các ký tự của chuồi " K i e m t r a cong n o i t i e p " ra cổng nôi tiếp. Hàm y=gets() nhận một chuỗi vào từ cổng nối tiếp.

Các hàm chức năng dựng sẵn để truy nhập đến các phần cứng bên trong của vi xử lý P1C như hàm set_timerl(x) hoặc x=get_timerl() để ghi vào và đọc ra giá trị

Một phần của tài liệu Nghiên cứu ứng dụng vi điều khiển Microchip pic trong đo lường và điều khiển thời gian thực (Trang 40)