intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Tài liệu Vi Xử Lý Pic

Chia sẻ: Tran Danh | Ngày: | Loại File: PDF | Số trang:33

227
lượt xem
92
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bộ nhớ RAM ( Random Access Memory - Bộ nhớ truy cập ngẫu nhiên ) : Bộ nhớ này lƣu các chƣơng trình phục vụ trực tiếp cho quá trình xử lý của CPU, bộ nhớ RAM chỉ lƣu trữ dữ liệu tạm thời và dữ liệu sẽ bị xoá khi mất điện. Theo công nghệ chế tạo RAM đƣợc phân thành: SRAM (Static RAM): RAM tĩnh. DRAM (Dynamic RAM): RAM động. Bộ nhớ ROM ( Read Olly Memory - Bộ nhớ chỉ đọc ) : đây là bộ nhớ cố định, dữ liệu không bị mất khi mất điện, bộ nhớ này dùng để nạp các...

Chủ đề:
Lưu

Nội dung Text: Tài liệu Vi Xử Lý Pic

  1. Tài liệu Vi Xử Lý Pic CHƢƠNG 1: GIỚI THIỆU TỒNG QUAN VỀ PIC 16F877A I. TÔNG QUAN VỀ CÁC LOẠI BỘ NHỚ 1. Bộ nhớ RAM Bộ nhớ RAM ( Random Access Memory - Bộ nhớ truy cập ngẫu nhiên ) : Bộ nhớ này lƣu các chƣơng trình phục vụ trực tiếp cho quá trình xử lý của CPU, bộ nhớ RAM chỉ lƣu trữ dữ liệu tạm thời và dữ liệu sẽ bị xoá khi mất điện. Theo công nghệ chế tạo RAM đƣợc phân thành: SRAM (Static RAM): RAM tĩnh DRAM (Dynamic RAM): RAM động 2. Bộ nhớ ROM Bộ nhớ ROM ( Read Olly Memory - Bộ nhớ chỉ đọc ) : đây là bộ nhớ cố định, dữ liệu không bị mất khi mất điện, bộ nhớ này dùng để nạp các chƣơng trình BIOS ( Basic Input Output System - Chƣơng trình vào ra cơ sở ) đây là chƣơng trình phục vụ cho quá trình khởi động máy tính và chƣơng trình quản lý cấu hình của máy 3. Bộ nhớ Flash Bộ nhớ flash là một loại bộ nhớ máy tính có thể xóa và ghi lại bằng điện. Đây là công nghệ đã đƣợc sử dụng trong các thẻ nhớ, ổ USB flash để lƣu trữ và truyền dữ liệu giữa các máy tính và các thiết bị kĩ thuật số khác. Không nhƣ EEPROM, nó đƣợc xóa và ghi lại theo khối gồm nhiều vị trí 4. Bảng so sánh giữa các loại bộ nhớ II. GIỚI THIỆU VỀ HỌ VI XỬ LÝ PIC 16F877A Đây là vi điều khiển thuộc họ PIC16Fxxx với các đặc điểm: Tốc độ hoạt động tối đa cho phép là 20 MHz với một chu kì lệnh là 200ns. Bộ nhớ chƣơng trình 8Kx14 bit, Bộ nhớ flash với khả năng ghi xóa đƣợc 100.000 lần. Bộ nhớ dữ liệu 368x8 byte RAM Bộ nhớ dữ liệu EEPROM với dung lƣợng 256x8 byte, với khả năng ghi xóa đƣợc 1.000.000 lần và có thể lƣu trữ trên 40 năm. Số PORT I/O là 5 với 33 pin I/O. Timer0: bộ đếm 8 bit với bộ chia tần số 8 bit. Timer1: bộ đếm 16 bit với bộ chia tần số, có thể thực hiện chức năng đếm dựa vào xung clock ngoại vi ngay khi vi điều khiển hoạt động ở chế độ sleep. Bộ Môn Tự Động – Trƣờng Cao Đẳng Kỹ Thuật Cao Thắng Trang 1
  2. Tài liệu Vi Xử Lý Pic Timer2: bộ đếm 8 bit với bộ chia tần số, bộ postcaler. Hai bộ Capture/so sánh/điều chế độ rộng xung. Chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port), SPI và I2C. Chuẩn giao tiếp nối tiếp USART với 9 bit địa chỉ. Cổng giao tiếp song song PSP (Parallel Slave Port) với các chân điều khiển RD, WR, CS ở bên ngoài. 8 kênh chuyển đổi ADC 10 bit. Khả năng tự nạp chƣơng trình với sự điều khiển của phần mềm. Nạp đƣợc chƣơng trình ngay trên mạch điện ICSP (In Circuit Serial Programming) thông qua 2 chân. Watchdog Timer với bộ dao động trong. Chức năng bảo mật mã chƣơng trình. Chế độ Sleep. Có thể hoạt động với nhiều dạng Oscillator khác nhau. III. CẤU TRÚC VỀ PHÂN CỨNG CỦA PIC 16F877A 1. SƠ ĐỒ CHÂN a. Các chân có chức năng xuất (output), nhập (input) dữ liệu Vi xử lý 16f877a có 33 chân xuất nhập dữ liệu với các thiết bị ngoại vi (thiết bị bên ngoài). Chúng đƣợc chia thành 5 port, các port này gồm PortA, PortB, PortC, PortD và PortE. Các chân này đƣợc kết nối và khai báo chức năng khác nhau còn tùy thuộc vào ứng dụng thực tế. Các chân này đƣợc ký hiệu là RXY, trong đó X là tên port và Y là thức tự chân trong Port. Ví dụ RA0 là chân thức 0 trong Port A b. Các chân có chức năng khác Các chân này có chức năng cố định: chân VDD, Vss dùng để cấp nguồn cho vi xử lý, chân OSC1/CLK1 và OSC2/CLK0 dùng để kết nối với thạch anh, chân dùng để kết nối với mạch Reset Bộ Môn Tự Động – Trƣờng Cao Đẳng Kỹ Thuật Cao Thắng Trang 2
  3. Tài liệu Vi Xử Lý Pic 2. CẤU TRÚC PHẦN CỨNG CHƢƠNG 2: GIỚI THIỆU VỀ C COMPILER I. Giới thiệu C COMPILER PIC C compiler là ngôn ngữ lập trình cấp cao cho PIC đƣợc viết trên nền C. chƣơng trình viết trên PIC C tuân thủ theo cấu trúc của ngôn ngữ lập trình C. Trình biên dịch của PIC C compiler sẽ chuyển chƣơng trình theo chuẩn của C thành dạng chƣơng trình theo mã Hexa (file.hex) để nạp vào bộ nhớ của PIC. Quá trình chuyển đổi đƣợc minh hoạ nhƣ hình sau. PIC C compiler gồm có 3 phần riêng biệt là PCB, PCM và PCH. PCB dùng cho họ MCU với bộ lệnh 12 bit, PCM dùng cho họ MCU với bộ lệnh 14 bit và PCH dùng cho họ MCU với bộ lệnh 16 và Bộ Môn Tự Động – Trƣờng Cao Đẳng Kỹ Thuật Cao Thắng Trang 3
  4. Tài liệu Vi Xử Lý Pic 18 bit. Mỗi phần khác nhau trong PIC C compiler chỉ dùng đƣợc cho họ MCU tƣơng ứng mà không cho phép dùng chung (Ví dụ không thể dùng PCM hoặc PCH cho MCU 12 bit đƣợc mà chỉ có thể dùng PCB cho MCU 12 bit). II. Cài đặt và sử dụng Pic C compiler 1. Cài đặt Pic C Compiler Để cài đặt PIC C compiler, bạn phải có đĩa CD chứa software PCW. Phần mềm này có thể download trên mạng ở địa chỉ . Khi có đĩa CD software, việc cài đặt PIC C compiler đƣợc thực hiện theo các bƣớc sau: chọn thư mục PCW -> chọn setupPCW -> clickOK. Khi đó xuất hiện cửa sổ welcome. Trên cửa sổ Welcome, click chuột vào nút Next, sau khi click Next, cửa sổ Software License Agreement sẽ xuất hiện, click nút nhấn Yes. Trong của sổ Readme information, click nút nhấn Next. Sau khi click Next trong cửa sổ Readme information, của sổ Choose Destination Location sẽ xuất hiện. Thư mục mặc nhiên để cài đặt PIC C compiler là c:\Program files\PICC. Ta có thể thay đổi thư mục cài đặt PCW bằng cách chọn nút Browse và chỉ đường dẫn tới thư mục hoặc ổ đĩa cần cài đặt, nếu muốn để ở thư mục mặc nhiên, click nút nhấn Next để tiếp tục cài đặt. Trong cửa sổ Select Program Folder, click nút nhấn Next. Click nút nhấn Next tong cửa sổ Start Copying Files sau đó chờ cho quá trình setup thực hiện. Trong cửa sổ Select Files .crg, nhập vào tên file pcb.crg, pcm.crg hoặc pch.crg nếu muốn dung PIC C compiler cho MCU 12 bit, MCU 14 bit hay MCU 16, 18 bit sau đó click nút OK. Click nút Finish để hoàn tất việc cài đặt. 2. Sử dụng Pic C Compiler Sau khi cài đặt xong PIC C compiler, trên Desktop của window sẽ xuất hiện biểu tƣợng của PIC C compiler. Double Click vào biểu tƣợng của PIC C compiler để chạy chƣơng trình khi đó cửa sổ chƣơng trình của PIC C compiler sẽ xuất hiện nhƣ sau: Trong cửa sổ chƣơng trình cửa PIC C compiler gồm có các thực đơn (Menu): File, Project, Edit, Options, Compile, View, Tools và Help. Chi tiết về các thực đơn nhƣ sau: a. File (tệp): File là thực đơn quản lý tệp gồm các thực đơn nhƣ hình Bộ Môn Tự Động – Trƣờng Cao Đẳng Kỹ Thuật Cao Thắng Trang 4
  5. Tài liệu Vi Xử Lý Pic + New: Tạo file.c mới + Open: Mở một file.c đã có, đƣợc lƣu trữ trong đĩa. + Save: Lƣu file.c vào đĩa. + Save As: Lƣu trữ file.c vào đĩa cứng với tên khác. + Save All: Lƣu trữ tất cả các file đƣợc mở vào đĩa. + Close: Đóng file hiện hành. + Close All: Đóng tất cả các file. + Print: In file hiện hành. b. Project (Dự án): Là thực đơn quản lý dự án (một chƣơng trình ứng dụng). Thực đơn Project gồm các thực đơn nhƣ hình + New: Tạo một dự án mới. Dự án mới có thể đƣợc tạo một cách thủ công hoặc tạo tự động thong qua PIC Wizard. Nếu chọn phƣơng thức thủ công thì chỉ có file.pjt đƣợc tạo để giữ thông tin cơ bản của dự án và một file.c mặc định trƣớc hoặc một file.c rỗng đƣợc tạo để soạn thảo chƣơng trình. Nếu tạo dự án thông qua PIC Wizard, thì ngƣời sử dụng có thể xác định tham số của dự án và khi hoàn tất thì các file.c, file.h và file.pjt đƣợc tạo. Mã nguồn chuẩn và các hằng số đƣợc sinh ra dựa trên tham số của dự án. Việc chọn lựa các tham số cho dự án mới đƣợc thực hiện trên mẫu đƣợc PIC C compiler đề nghị, trong mẫu gồm các chọn lựa nhƣ đặc tính của đƣờng vào ra theo chuẩn RS232, I2C, chọn lựa timer, chọn lựa ADC, sử dụng ngắt, các driver cần thiết và tên của tất cả các chân của MCU. Sau khi hoàn tất việc chọn lựa các tham số cho dự án thì file.c và file.h sẽ tạo ra với #defines, #include và một số lệnh ban đầu cần thiết cho dự án. Đây là cách nhanh nhất để tạo một dựa án mới. + Open: Mở một file.pjt đã có trong đĩa. + Open All: Mở một file.pjt và tất cả các file dùng trong dự án. + Find text in project: Tìm kiếm một từ hay một ký tự trong dự án. + Include Dirs…: Cho phép xác định các thƣ mục đƣợc dùng để tìm kiếm các file include cho dự án. Thông tin này đƣợc lƣu vào file.pjt. + Close Project: Đóng tất cả các file trong dự án. c. Edit: Thực đơn Edit gồn các thành phần nhƣ hình. Bộ Môn Tự Động – Trƣờng Cao Đẳng Kỹ Thuật Cao Thắng Trang 5
  6. Tài liệu Vi Xử Lý Pic Các thành phần trong thực đơn Edit có chức năng tƣơng tự nhƣ trong các trình ứng dụng trên môi trƣờng window quen thuộc nhƣ word, excel … d. Option: Thực đơn Option gồm các thành phần nhƣ hình. Trong thực đơn Option có 4 thành phần cần lƣu ý là: File Formats, Global Defines, Debugger/Programer và Include Dirs. Các thành phần khác thì tƣơng tự nhƣ các trình ứng dụng quen thuộc. + File Format: Cho phép chọn lựa kiểu định dạng của file xuất. Khi chọn Option->File Format, cửa sổ File Format sẽ xuất hiện. Trong cửa sổ File Format có các chọn lựa để chọn kiểu định dạng cho file xuất ra sau khi biên dịch. Cửa sổ File Format có dạng nhƣ sau: Bộ Môn Tự Động – Trƣờng Cao Đẳng Kỹ Thuật Cao Thắng Trang 6
  7. Tài liệu Vi Xử Lý Pic Debug File: File gỡ rối chƣơng trình chạt trên MPLAB. Chọn Standard.COD nếu muốn chạy gỡ rối chƣơng trình, chọn None nếu không cần chạy gỡ rối. Error File: Xuất ra file lỗi khi chƣơng trình có lỗi trong quá trình biên dịch. Chọn Standard cho các MCU chuẩn hiện hành của Microchip, chọn Original cho các MCU thế hệ trƣớc của Microchip. List Format:Chọn Simple cho định dạng cơ bản với mã C và ASM. Chọn Standard để định dạng chuẩn MPASM với mã máy. Chọn Old cho định dạng MPASM thế hệ trƣớc. Chọn Symbolic để định dạng gồm mã C trong ASSEMBLY. Object File: Chọn kiểu cho file.hex, Chọn 8 bit HEX cho file hex intel 8 bit và chọn 16 HEX cho file hex intel 16 bit. Sau khi đã chọn lựa kiểu định dạng file xuất ra sau khi biên dịch, click OK. + Global Defines: Cho phép đặt #define để sử dụng cho biên dịch chƣơng trình. Điều này tƣơng tự nhƣ việc khai báo #define ở đầu chƣơng trình. + Debug/Programer: Cho phép xác định thiết bị lập trình đƣợc sử dụng khi chọn lựa công cụ lập trình cho chip. + Include Dirs: Tƣơng tự nhƣ trong thực đơn Project. e. Compiler: Biên dịch dự án hiện hành f. View: Thực đơn view gồm các thành phần nhƣ hình C/ASM List: Mở file.lst ở chế độ chỉ đọc, file này phải đƣợc biên dịch trƣớc từ file.c. Khi đƣợc mở, file này sẽ trình bày theo dạng vừa có mã C vừa có mã Assembly. Ví dụ File.lst ……………delay_ms(3); Bộ Môn Tự Động – Trƣờng Cao Đẳng Kỹ Thuật Cao Thắng Trang 7
  8. Tài liệu Vi Xử Lý Pic 0F2: MOVLW 05 0F3: MOVWF 08 0F4: DESCZ 08,F 0F5: GOTO 0F4 …………….while input(pin_0)); 0F6: BSF 0B,3 Symbol Map: Mở file dạng mã ASM ở chế độ chỉ đọc. File này phải đƣợc biên dịch từ file.c. File này cho biết địa chỉ của các thanh ghi sử dụng trong chƣơng trình. + Binary file: Mở file nhị phân ở chế độ chỉ đọc, File này đƣợc hiển thị ở mã HEX và mã ASCII. g. Tool: Thực đơn Tool quản lý một số công cụ đặc biệt. Các thành phần trong thực đơn tool nhƣ hình. Trong thực đơn tool chỉ có một công cụ khá đặc biệt mà ngƣời sử dụng MCU cần lƣu ý là công cụ disassembler, công cụ này cho phép dịch ngƣợc file.bin hoặc file.hex thành file theo kiểu mã ASM. h. Help: thực đơn trợ giúp, trong thực đơn này chứa phần hƣớng dẫn sử dụng PIC C compiler dƣới dạng HYML. 3. Các bƣớc viết chƣơng trình trên Pic c Compiler Chạy PIC C Compiler bằng cách double click vào biểu tƣợng của phần mềm. Trên Menu Bar của phần mềm, chọn Project -> New -> PIC Wizard để tạo dự án mới hoặc chọn Project –> Open để mở dự án trong đã lƣu trong đĩa. Nếu là dự án mới thì sau khi chọn PIC Wizard, đặt tên cho dự án và click SAVE. Sau khi click SAVE, của sổ cho phép chọn thông số cho dự án theo mẫu hiện ra, chọn các thông số cần thiết cho dự án và click OK. Sau khi click OK, cửa sổ soạn thảo chƣơng trình theo mã C xuất hiện, viết mã theo giải thuật để thực hiện dự án. Chọn File save all để lƣu trữ các file trong dự án vào đĩa cứng. Sau khi viết mã xong, chọn Compiler -> compiler để biên dịch chƣơng trình thành file.hex. Nếu chƣơng trình không có lỗi thì file.hex đƣợc tạo ra còn ngƣợc lại thì sửa lỗi chƣơn gtrình rồi biên dịch lại. Sau khi tạo đƣợc file.hex, dùng chƣơng trình PIC downloader để nạp chƣơng trình vào bộ nhớ FLASH của MCU. Bộ Môn Tự Động – Trƣờng Cao Đẳng Kỹ Thuật Cao Thắng Trang 8
  9. Tài liệu Vi Xử Lý Pic III. MỘT CHƢƠNG TRÌNH TRÊN C COMPILER 1. Cấu trúc chƣơng trình Chƣơng trình đƣợc viết trên PIC C compiler gồm 4 phần tử chính, Trong mỗi phần tử sẽ bao gồm nhiều chi tiết để tạo nên chƣơng trình. Cấu trúc chƣơng trình nhƣ sau: a. Phần ghi chú Ở phần ghi chú, ngƣời lập trình sẽ ghi những chú thích cần thiết cho chƣơng trình. Phần chú thích đƣợc bắt đầu từ dấu // hoặc /* cho tới cuối hàng. Khi biên dịch, trình biên dịch sẽ bỏ qua phần ghi chú. Phần ghi chú có thể xuất hiện bất cứ chỗ nào trong chƣơng trình thậm chí có thể đặt ngay sau hàng mã lệnh để chú thích cho hàng lệnh. b. Chỉ định các tiền xử lý Phần này sẽ chỉ định các tiền xử lý đƣợc sử dụng khi biên dịch. Các tiền xử lý đƣợc bắt đầu bằng dấu #. Ví dụ: khai báo các tiền xử lý, chi tiết về từng tiền xử lý sẽ đƣợc trình bày chi tiết sau. # include // Chỉ định tiền xử lý include # device c. Định nghĩa các dữ liệu Đây là phần khai báo hằng, khai báo biến và kiểu dữ liệu sử dụng trong chƣơng trình. Ví dụ: int a,b,c,d; // Khai báo biến a,b,c,d kiểu nguyên Các kiểu dữ liệu đơn giản dùng trong PIC C compiler tƣơng tự nhƣ trong C chuẩn, gồm các kiểu nhƣ trong bảng sau: Kiểu dữ liệu Mô tả int1 Định nghĩa một dữ liệu 1 bit (kiểu nguyên) int8 Định nghĩa một dữ liệu 8 bit (kiểu nguyên int16 Định nghĩa một dữ liệu 16 bit (kiểu nguyên) int32 Định nghĩa một dữ liệu 32 bit (kiểu nguyên) char Định nghĩa một dữ liệu kiểu ký tự 8 bit float Định nghĩa một dữ liệu 32 bit dạng dấu chấm động (kiểu thực) short Mặc nhiên là int1 int Mặc nhiên là int8 long Mặc nhiên là int16 void Chỉ một kiểu dữ liệu không xác định static Định nghĩa biến tĩnh toàn cục và có giá trị ban đầu bằng 0. Khi khai báo biến này thì bộ nhơ sẽ dành một vùng nhớ tuỳ theo kiểu biến đễ lƣu trữ và vùng nhớ này đƣợc giữ cho dù biến đó không đƣợc sử dụng auto Định nghĩa một biến kiểu động, biến này chỉ tồn tại khi hàm sử dụng nó hoạt động, vùng nhớ chứa biến này sẽ đƣợc trả lại khi hàm thực hiện xong. double Dự trữ một word nhớ nhƣng không hỗ trợ kiểu dữ liệu extern Kiểu dữ liệu mỡ rộng register Kiểu thanh ghi d. Định nghĩa các hàm Định nghĩa các hàm (Function) đƣợc dùng để thực hiện giải thuật của chƣơng trình. Hàm có cấu trúc nhƣ sau: Tên hàm (Các đối số của hàm) { Các phát biểu } Trong đó Tên hàm đƣợc đặt tuỳ ý của ngƣời viết chƣơng trình. Các đối số của hàm là các Bộ Môn Tự Động – Trƣờng Cao Đẳng Kỹ Thuật Cao Thắng Trang 9
  10. Tài liệu Vi Xử Lý Pic thông số dùng để trao đổi dữ liệu cũa hàm, đối số có thể là rỗng nếu hàm không trao đổi dữ liệu hoặc có thể có nhiều đối số, các đối số phân cách nhau bằng dấu „,‟ Ví dụ: void lcd_putc(char c ) // Định nghĩa hàm { ... } 2. Các phát biểu điều kiện và vòng lặp trong chƣơng trình a. Phát biểu điều kiện if - else Phát biểu điều kiện if – else đƣợc dùng để rẽ nhánh chƣơng trình, phát biểu if – else có dạng nhƣ sau: If (điều kiện) { Các lệnh trong chương trình } else { Các lệnh trong chương trình } b. Vòng lặp WHILE Vòng lặp while đƣợc dùng để lặp chƣơng trình. Cấu trúc của vòng lặp while nhƣ sau: while (biểu thức điều kiện) { Các lệnh trong chương trình } Hoạt động của vòng lặp while là sẽ thực hiện các lệnh trong cặp từ khoá {} khi mà biểu thức điều kiện là đúng. c. Vòng lặp do – while Vòng lặp do – while đƣợc sử dụng tƣơng tự nhƣ vòng lặp while tuy nhiên, vòng lặp while kiểm tra điều kiện trƣớc khi thực hiện các lệnh còn vòng lặp do – while sẽ kiểm tra điều kiện sau khi thực hiện các lệnh. Cấu trúc của vòng lặp do – while nhƣ sau: do { Các lệnh trong chương trình } while (biểu thức điều kiện); d. Vòng lặp for Vòng lặp for đƣợc dùng để lặp lại chƣơng trình theo một biến đếm. Cấu trúc của vòng lặp for nhƣ sau: For (biểu thức 1; biểu thức 2; biểu thức 3) { Các lệnh trong chương trình } Trong đó biểu thức 1 là giá trị khởi đầu của biến đếm, biểu thức 2 là giá trị cuối của biến đếm, biểu thức 3 là biểu thức đếm. e. Phát biểu SWITCH – CASE Bộ Môn Tự Động – Trƣờng Cao Đẳng Kỹ Thuật Cao Thắng Trang 10
  11. Tài liệu Vi Xử Lý Pic Phát biểu switch – case đƣợc dùng để rẽ nhánh chƣơng trình. Cấu trúc của phát biểu này nhƣ sau: Switch (biểu thức điều kiện) { case điều kiện 1: Các lệnh trong chương trình; Break; Case điều kiện 2: Các lệnh trong chương trình; Break; … default: Các lệnh trong chương trình; Break; } f. Phát biểu return Phát biểu return đƣợc dùng để trả về trị của hàm. Phát biể return nhƣ sau: Return (giá trị); g. Phát biểu goto Phát biểu goto đƣợc dùng để nhảy tới một nhãn trong chƣơng trình. Phát biểu goto có dạng nhƣ sau: goto nhãn; h. Phát biểu break Phát biểu break dùng để kết thúc một nhóm lệnh trong cặp từ khóa {}. Phát biểu break nhƣ sau: break; i. Phát biểu continue Phát biểu continue dùng để tiếp tục thực hiện một nhóm lệnh trong cặp từ khóa {}. Phát biểu continue nhƣ sau Continue; Bộ Môn Tự Động – Trƣờng Cao Đẳng Kỹ Thuật Cao Thắng Trang 11
  12. Tài liệu Vi Xử Lý Pic 3. Các phép toán trong C compiler 4. Các hàm chứa trong thƣ viện của Pic C Compiler PIC C compiler xây dựng sẵn 108 hàm chia thành 11 nhóm và đƣợc chứa trong các file.h. Khi trong chƣơng trình muốn gọi các hàm này thì ở đầu chƣơng trình phải khai báo tiền xử lý #use hoặc #include để trình biên dịch tìm các hàm tƣơng ứng để đƣa vào dự án. Các hàm này sẽ đƣợc trình bày chi tiết trong các ứng dụng cụ thể CHƢƠNG 3: CÁC BÀI TẬP ỨNG DỤNG I. BÀI TẬP ỨNG DỤNG CÁC HÀM XUẤT NHẬP VÀ DELAY 1. Các kiến thức liên quan a. Các chỉ định tiền xử lý  # DEVICE: Cú pháp: #device chip options Trong đó  chip là tên bộ vi xử lý ( ví dụ nhƣ: 16f877)  Options là các toán tử tiêu chuẩn đƣợc quy định trong mỗi chip, các option bao gồm: • *=5: Sử dụng con trỏ 5 bit (Cho tất cả các MCU) • *=8: Sử dụng con trỏ 8 bit (Cho MCU 14 và 16 bit) • *=16: Sử dụng con trỏ 16 bit (Cho MCU 14 bit) • ADC=xd9: x là số bit trả về sau khi gọi hàm read_adc() • ICD=TRUE: Tạo ra mã tƣơng ứng Microchips ICD debugging hardware. Bộ Môn Tự Động – Trƣờng Cao Đẳng Kỹ Thuật Cao Thắng Trang 12
  13. Tài liệu Vi Xử Lý Pic Mục đích: Định nghĩa chip sử dụng. Tất cả các chƣơng trình đều phải sử dụng khai báo này nhằm định nghĩa chân trên chip và một số định nghĩa khác của chip Ví dụ: #device PIC16F877 *=16 ADC=10  #INCLUDE Cú pháp: #include hoặc #include "filename" Trong đó filename là tên file hợp lệ trong PC. Mục đích: Bộ tiền xử lý sẽ sử dụng thông tin cần thiết đƣợc chỉ ra trong filename trong quá trình biên dịch để thực thi lệnh trong chƣơng trình chính. Tên file nếu đặt trong dấu “ ” sẽ đƣợc tìm kiếm trƣớc tiên, nếu đặt trong dấu sẽ đƣợc tìm sau cùng. Nếu đƣờng dẫn không chỉ rõ, trình biên dịch sẽ thực hiện tìm kiếm trong thƣ mục chứa project đang thực hiện. Khai báo #include đƣợc sử dụng hầu hết trong các chƣơng trình để khai báo thiết bị (IC) đang sử dụng cũng nhƣ cần kế thừa kết quả một chƣơng trình đã có trƣớc đó. Ví dụ: #include "C:\Documents and Settings\Jerry\Desktop\Tam\vi du ccs\main.h" #include  #FUSE: Cú pháp: #fuse option Trong đó: option thay đổi tuỳ thuộc vào thiết bị. Danh sách các option hợp lệ đƣợc đặt tại đầu của file.h trong phần chú thích của mỗi thiết bị. Các option đƣợc diễn giải chi tiết trong thực đơn View-> Fuse valid trong PIC C compiler. Cửa sổ FUSE Review nhƣ sau: Mục đích: Định nghĩa này đƣợc dùng để chỉ ra fuses nào đƣợc đặt vào MCU khi lập trình cho nó. Chỉ dẫn này không ảnh hƣởng gì đến quá trình biên dịch nhƣ nó đƣợc xuất ra file output Ví dụ: #fuses HS,NOWDT  sử dụng thạch anh tốc độ cao, không sử dụng Watch Dog Timer  # USE Cú pháp: #use Tên hàm (các thông số của hàm) Mục đích: khai báo tiền xử lý này cho phép ta sử dụng các hàm có sẵn trong chƣơng trình Ví dụ: #use delay (clock=20000000) => khai báo sử dụng hàm delay với tần số 20Mhz  # BYTE: Bộ Môn Tự Động – Trƣờng Cao Đẳng Kỹ Thuật Cao Thắng Trang 13
  14. Tài liệu Vi Xử Lý Pic Cú pháp: #byte id = x Trong đó:  id là tên hợp lệ trong C  x là một biến trong C hoặc là hằng số Mục đích: Nếu id đã đƣợc xác định nhƣ một biến hợp lệ trong C thì lệnh này sẽ đặt biến C vào trong bộ nhớ tại địa chỉ x, biến C này không đƣợc thay đổi khác với định nghĩa ban đầu. Nếu id là biến chứa biết thì một biến C mới sẽ đƣợc tạo và đặt vào bộ nhớ tạo địa chỉ x. Ví dụ: #byte TRISA =0x85  thanh ghi TRISA đƣợc đặt vào bộ nhớ tại địa chỉ 85  # Bit: Cú pháp: #bit id = x.y Trong đó:  id là tên hợp lệ trong C  x là hằng số hoặc biến trong C  y là hằng số từ 0 -7 Mục đích: Tạo một biến mới (1 bit) trong C và đặt nó vào trong bộ nhớ tại byte x, bit y. Lệnh này thƣờng đƣợc sử dụng để truy xuất trực tiếp từ C tới một bit trong thanh ghi chức năng đặc biệt. Ví dụ: #bit RA5 =0x05.5  tạo biến RA5 là bit thứ 5 trong bộ nhớ có địa chỉ byte 05  #DEFINE Cú pháp: #define id text Trong đó:  id là một định nghĩa tiền xử lý.  text là đoạn văn bản bất kỳ Mục đích: Định nghĩa một hằng hay một tham số thƣờng sử dụng trong chƣơng trình Ví dụ: #define led portc  định nghĩa led là portc b. Các hàm liên quan a. Các hàm phục vụ cổng vào ra b. Các hàm delay (40) Bộ Môn Tự Động – Trƣờng Cao Đẳng Kỹ Thuật Cao Thắng Trang 14
  15. Tài liệu Vi Xử Lý Pic c. Các hàm thao tác trên bit, byte Các hàm trên bit, byte SHIFT_RIGHT () BIT_CLEAR () MAKE8() SHIFT_LEFT () BIT_SET () MAKE16() ROTATE_RIGHT () BIT_TEST() MAKE32() ROTATE_LEFT () SWAP() 2. Bài tập ứng dụng a. Bài tập 1: viết chƣơng trình led dịch phải #include #fusesNOWDT,PUT,HS,NOPROTECT,NOLVP #byte PORTB =0x06 #byte trisb =0x86 #use delay(clock=20000000) int8 dem,bien; void main() { trisb=0; while(true) { dem=8; portb=0; delay_ms(100); bien=1; while(dem>0) { portb=bien; bien=bien
  16. Tài liệu Vi Xử Lý Pic #include #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT #use delay(clock=20000000) #byte portb = 0x06 #byte trisb = 0x86 int8 mode,i; byte temp; void program1(); void program2(); void program3(); void program4(); void program5(); void program6(); void program7(); void program8(); Bộ Môn Tự Động – Trƣờng Cao Đẳng Kỹ Thuật Cao Thắng Trang 16
  17. Tài liệu Vi Xử Lý Pic void main() { trisb = 0x00; portb=0xff; mode = 1; while (1) { switch(mode) { case 1: program1(); break; case 2: program2(); break; case 3: program3(); break; case 4: program4(); break; case 5: program5(); break; case 6: program6(); break; case 7: program7(); break; case 8: program8(); break; } } } void program1() { Portb = 0x00; delay_ms(100); Portb = 0xFF; delay_ms(100); mode = mode +1; } void program2() { temp = 0xFF; for (i=0;i>= 1; } mode = mode +1; } void program3() { temp = 0xFF; for (i=0;i
  18. Tài liệu Vi Xử Lý Pic temp
  19. Tài liệu Vi Xử Lý Pic Portb = 0xFD; delay_ms(150); Portb = 0xFB; delay_ms(150); Portb = 0xF7; delay_ms(150); Portb = 0xEF; delay_ms(150); Portb = 0xDF; delay_ms(150); Portb = 0xBF; delay_ms(150); Portb = 0x7F; delay_ms(150); mode = mode +1; } void program8() { Portb = 0x7F; delay_ms(150); Portb= 0xBF; delay_ms(150); Portb = 0xDF; delay_ms(150); Portb= 0xEF; delay_ms(150); Portb = 0xF7; delay_ms(150); Portb = 0xFB; delay_ms(150); Portb = 0xFD; delay_ms(150); Portb = 0xFE; delay_ms(150); mode = 1; } c. Bài tập 3 II. BÀI TẬP ỨNG DỤNG CÁC HÀM TIMER VÀ NGẮT TIMER 1. Các kiến thức liên quan timer a. Giới thiệu về timer Trong Pic16f877a có 3 timer : + Timer0 : 8 bit + Timer1 : 16 bit Bộ Môn Tự Động – Trƣờng Cao Đẳng Kỹ Thuật Cao Thắng Trang 19
  20. Tài liệu Vi Xử Lý Pic + Timer2 : 8 bit Timer dùng cho nhiều ứng dụng : định thời, capture, pwm, ... Timer có nhiều kiểu chia tần, dùng chia trƣớc và sau (prescale và postscale) là chia trƣớc và chia sau, có nhiều cách đặt tỉ lệ cho Timer từ 1:1 - 1:256 tức là cách chia này giúp cho ta nhận đƣợc xung kích vào Timer sẽ đƣợc chậm đi n lần ( 1:n ) so với 1Tcy (Fosc/4), và nhƣ vậy ta sẽ đƣợc xung kich chậm hơn: b. Các hàm liên quan HÀM LIÊN QUAN TỚI TIMER TÊN HÀM CÚ PHÁP CHỨC NĂNG Hàm này đƣợc dùng để định chế độ hoạt động cho watchdog SETUP_WDT () setup_wdt(mode) timer. RESTART_WDT() restart_wdt() Hàm này đƣợc dùng để Khởi động lại watchdog timer. setup_counters(rtcc_stat Hàm này đƣợc dùng để Set up RTCC hay WDT SETUP_COUNTRES() e, ps_state) Hàm này đƣợc dùng để trả về giá trị biến đếm của real time GET_RTCC(), value = get_rtcc() clock/counter. Khi giá trị timer vƣợt quá 255, value đƣợc đặt GET_TIMER0(): value = get_timer0() trở lại 0 và đếm tiếp tục (…, 254, 255, 0, 1, 2, …) Hàm này đƣợc dùng để đặt giá trị ban đầu cho real time SET_RTCC(), set_rtcc() clock/counter. Tất cả các biến đều đếm tăng. Khi giá trị timer SET_TIMER0(): set_timer0() vƣợt quá 255, value đƣợc đặt trở lại 0 và đếm tiếp tục (…, 254, 255, 0, 1, 2, …) Hàm này đƣợc dùng để khởi động timer 1. Sau đó timer 1 có thể đƣợc ghi hay đọc dùng lệnh set_timer1() hay get_timer1(). SETUP_TIMER1() setup_timer_1(mode) Timer 1 là 16 bit timer. Với xung clock là 20MHz, timer 1 tăng 1 đơn vị sau mỗi 1,6us (khi ta dùng chế độ T1_DIV_BY_8) và tràn sau 104,8576ms. Hàm này đƣợc dùng để trả về giá trị biến đếm của real time GET_TIMER1(): value = get_timer1() clock/counter. Khi giá trị timer vƣợt quá 65535, value đƣợc đặt trở lại 0 và đếm tiếp tục (…, 65534, 65535, 0, 1, 2, …) Hàm này đƣợc dùng để đặt giá trị ban đầu cho real time clock/counter. Tất cả các biến đều đếm tăng. Khi giá trị timer SET_TIMER1() set_timer1() vƣợt quá 65535, value đƣợc đặt trở lại 0 và đếm tiếp tục (…, 65534, 65535,0, 1, 2, …) Hàm này đƣợc dùng để khởi động timer 2. mode qui định số setup_timer_2(mode,per chia xung clock. Sau đó timer 2 có thể đƣợc ghi hay đọc dùng SETUP_TIMER2() iod,postscale) lệnh set_timer2() hay get_timer2(). Timer 1 là 8 bit counter/timer Hàm này đƣợc dùng để trả về giá trị biến đếm của real time GET_TIMER2() value = get_timer2() clock/counter. Khi giá trị timer vƣợt quá 255, value đƣợc đặt trở lại 0 và đếm tiếp tục (…, 254, 255, 0, 1, 2, …) Hàm này đƣợc dùng để đặt giá trị ban đầu cho real time clock/counter. Tất cả các biến đều đếm tăng. Khi giá trị timer SET_TIMER2(): set_timer2(value) vƣợt quá 255, value đƣợc đặt trở lại 0 và đếm tiếp tục (…, 254, 255, 0, 1, 2,…) 2. Kiến thức liên quan tới ngắt timer a. Giới thiệu về ngắt timer Vi xử lý có tất cả 15 nguồn ngắt khác nhau, ở trong phần này ta chỉ khảo sát ba nguồn ngắt do 3 timer gây ra. Mỗi lần xuất hiện điều kiện ngắt thì chƣơng trình tự động nhãy tới chƣơng trình ngắt thực hiện b. Các hàm ngắt timer Bộ Môn Tự Động – Trƣờng Cao Đẳng Kỹ Thuật Cao Thắng Trang 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
6=>0