Vi điều khiển PIC16F877A
MỤC LỤC
CHƯƠNG 1 TỔNG QUAN VỀ VI ĐIỀU KHIỂN PIC
1.1 PIC LÀ GÌ ??
1.2 TẠI SAO LÀ PIC MÀ KHÔNG LÀ CÁC HỌ VI ĐIỀU KHIỂN KHÁC??
1.3 KIẾN TRÚC PIC
1.4 RISC VÀ CISC
1.5 PIPELINING
1.6 CÁC DÒNG PIC VÀ CÁCH LỰA CHỌN VI ĐIỀU KHIỂN PIC
1.7 NGÔN NGỮ LẬP TRÌNH CHO PIC
1.8 MẠCH NẠP PIC
1.9 BOOTLOADER VÀ ICP (In Circuit Programming)
CHƯƠNG 2 VI ĐIỀU KHIỂN PIC16F877A
2.1 SƠ ĐỒ CHÂN VI ĐIỀU KHIỂN PIC16F877A
2.2 MỘT VÀI THÔNG SỐ VỀ VI ĐIỀU KHIỂN PIC16F877A
2.3 SƠ ĐỒ KHỐI VI ĐIỀU KHIỂN PIC16F877A
2.4 TỔ CHỨC BỘ NHỚ
2.4.1 BỘ NHỚ CHƯƠNG TRÌNH
2.4.2 BỘ NHỚ DỮ LIỆU
2.4.2.1 THANH GHI CHỨC NĂNG ĐẶC BIỆT SFR
2.4.2.2 THANH GHI MỤC ĐÍCH CHUNG GPR
2.4.3 STACK
2.5 CÁC CỔNG XUẤT NHẬP CỦA PIC16F877A
2.5.1 PORTA
2.5.2 PORTB
2.5.3 PORTC
2.5.4 PORTD
2.5.5 PORTE
2.6 TIMER 0
2.7 TIMER1
2.8 TIMER2
2.9 ADC
2.10 COMPARATOR
2.10.1 BỘ TẠO ĐIỆN ÁP SO SÁNH
2.11 CCP
2.12 GIAO TIẾP NỐI TIẾP1.12.1 USART
2.12.1.1 USART BẤT ĐỒNG BỘ
2.12.1.1.1 TRUYỀN DỮ LIỆU QUA CHUẨN GIAO TIẾP USART BẤT ĐỒNG BỘ
2.12.1.1.2 NHẬN DỮ LIỆU QUA CHUẨN GIAO TIẾP USART BẤT ĐỒNG BỘ
2.12.1.1.2 USART ĐỒNG BỘ
2.12.1.2.1 TRUYỀN DỮ LIỆU QUA CHUẨN GIAO TIẾP USART ĐỒNG BỘ MASTER
MODE
2.12.1.2.2 NHẬN DỮ LIỆU QUA CHUẨN GIAO TIẾP USART ĐỒNG BỘ MASTER
MODE
2.12.1.2.3 TRUYỀN DỮ LIỆU QUA CHUẨN GIAO TIẾP USART ĐỒNG BỘ SLAVE
MODE
2.12.1.2.4 NHẬN DỮ LIỆU QUA CHUẨN GIAO TIẾP USART ĐỒNG BỘ SLAVE MODE
2.12.2 MSSP
2.12.2.1 SPI
2.12.2.1.1 SPI MASTER MODE
2.12.2.1.2 SPI SLAVE MODE
2.12.2.2 I2C
2.12.2.2.1 I2C SLAVE MODE
2.12.2.2.2 I2C MASTER MODE
2.13 CỔNG GIAO TIẾP SONG SONG PSP (PARALLEL SLAVE PORT)
2.14 TỔNG QUAN VỀ MỘT SỐ ĐẶC TÍNH CỦA CPU.
2.14.1 CONFIGURATION BIT
2.14.2 CÁC ĐẶC TÍNH CỦA OSCILLATOR
2.14.3 CÁC CHẾ ĐỘRESET
2.14.4 NGẮT (INTERRUPT)
2.14.4.1 NGẮT INT
2.14.4.2 NGẮT DO SỰ THAY ĐỔI TRẠNG THÁI CÁC PIN TRONG PORTB
2.14.5 WATCHDOG TIMER (WDT)
2.14.6 CHẾ ĐỘ SLEEP
2.14.6.1 “ĐÁNH THỨC” VI ĐIỀU KHIỂN
CHƯƠNG 3 TẬP LỆNH CỦA VI ĐIỀU KHIỂN PIC
3.1 VÀI NÉT SƠ LƯỢC VỀ TẬP LỆNH CỦA VI ĐIỀU KHIỂN PIC
3.2 TẬP LỆNH CỦA VI ĐIỀU KHIỂN PIC
3.3 CẤU TRÚC CỦA MỘT CHƯƠNG TRÌNH ASSEMBLY VIẾT CHO VI ĐIỀU KHIỂN
PICCHƯƠNG 4 MỘT SỐ ỨNG DỤNG CỤ THỂ CỦA PIC16F877A
4.1 ĐIỀU KHIỂN CÁC PORT I/O
4.1.1 CHƯƠNG TRÌNH DELAY
4.1.2 MỘT SỐ ỨNG DỤNG VỀ ĐẶC TÍNH I/O CỦA CÁC PORT ĐIỀU KHIỂN
4.2 VI ĐIỀU KHIỂN PIC16F877A VÀ IC GHI DỊCH 74HC595
4.3 PIC16F877A VÀ LED 7 ĐOẠN
4.4 NGẮT VÀ CẤU TRÚC CỦA MỘT CHƯƠNG TRÌNH NGẮT
4.5 TIMER VÀ ỨNG DỤNG
4.5.1 TIMER VÀ HOẠT ĐỘNG ĐỊNH THỜI
PHỤ LỤC 1 SƠ ĐỒ KHỐI CÁC PORT CỦA VI ĐIỀU KHIỂN PIC16F877A
PHỤ LỤC 2 THANH GHI SFR (SPECIAL FUNCTION REGISTER)
giao tiếp MSSP. Khi MSSP hoạt động ở chế độ SPI: Bit 7 SMP Sample bit SPI Master mode: SMP = 1 dữ liệu được lấy mẫu (xác định trang thái logic) tại thời điểm cuối xung clock. SMP = 0 dữ liệu được lấy mẫu tại thời điểm giữa xung clock. SPI Slave mode: bit này phải được xóa về 0. Bit 6 CKE SPI Clock Select bit CKE = 1 SPI Master truyền dữ liệu khi xung clock chuyển từ trạng thái tích cực đến trạng thái chờ. CKE = 0 SPI Master truyền dữ liệu khi xung clock chuyển từ trạng thái chờ đến trạng thái tích cực. (trạng thái chờ được xác định bởi bit CKP (SSPCON). Bit 5 bit. Bit này chỉ có tác dụng ở chế độ I2C mode. Bit 4 P Stop bit Bit này chỉ sử dụng khi MSSP ở chế độ I2C. Bit 3 S Start bit Bit này chỉ có tác dụng khi MSSP ở chế độ I2C. Bit 2 bit information Bit này chỉ có tác dụng khi MSSP ở chế độ I2C. Bit 1 UA Update Address bit Bit này chỉ có tác dụng khi MSSP ở chế độ I2C. Bit 0 BF Buffer Status bit BF = 1 thanh ghi đệm SSPBUF đã có dữ liệu. BF = 0 thanh ghi đệm SSPBUF chưa có dữ liệu. Khi hoạt động ở chế độ I2C Bit 7 SPM Slew Rate Control bit SPM = 1 dùng tốc độ chuẩn (100 KHz và 1 MHz). SPM = 0 dùng tốc độ cao ( 400 KHz). Bit 6 CKE MSBus Select bit CKE = 1 cho phép MSBus. CKE = 0 không cho phép MSBus. Bit 5 bit I2C Master mode: không quan tâm. = 1 byte vừa truyền đi hoặc nhận được là dữ liệu. = 0 byte vừa truyền đi hoặc nhận được là địa chỉ. Bit 4 P Stop bit P = 1 vừa nhận được bit Stop. P = 0 chưa nhận được bit Stop. Bit 3 S Start bit S = 1 vừa nhận được bit Start. S = 0 chưa nhận được bit Start. Bit 2 bit information I2C Slave mode: = 1 đọc dữ liệu. = 0 ghi dữ liệu. I2C Master mode: = 1 đang truyền dữ liệu. = 0 không truyền dữ liệu. Bit 1 UA Update Address Bit này chỉ có tác dụng đối với chế độ I2C Slave mode10 bit địa chỉ. UA = 1 vi điều khiển cần cập nhật thêm địa chỉ từ thanh ghi SSPADD. UA = 0 không cần cập nhật thêm địa chỉ. Bit 0 BF Buffer Full Status bit BF = 1 Thanh ghi SSPBUF đang chứa dữ liệu truyền đi hoặc nhận được. BF = 0 thanh ghi SSPBUF không có dữ liệu. P2.44 Thanh ghi TXSTA: địa chỉ 98h Thanh ghi chứa các bit trạng thái và điều khiển việc truyền dữ liệu thông qua chuẩn giao tiếp USART. Bit 7 CSRC Clock Source Select bit Ở chế độ bất đồng bộ: không cần quan tâm. Ở chế độ đồng bộ: CSRC = 1 Master mode (xung clock được lấy từ bộ tạo xung BRG). CSRC = 0 Slave mode (xung clock được nhận từ bên ngoài). Bit 6 TX-9 9-bit Transmit Enable bit TX-9 = 1 truyền dữ liệu 9 bit. TX-9 = 0 truyền dữ liệu 8 bit. Bit 5 TXEN Transmit Enable bit TXEN = 1 cho phép truyền. TXEN = 0 không cho phép truyền. Bit 4 SYNC USART Mode Select bit SYNC = 1 dạng đồng bộ SYNC = 0 dạng bất đồng bộ. Bit 3 Không cần quan tâm và mặc định mang giá trị 0. Bit 2 BRGH High Baud Rate Select bit Bit này chỉ có tác dụng ở chế độ bất đồng bộ. BRGH = 1 tốc độ cao. BRGL = 0 tốc độ thấp. Bit 1 TRMT Transmit Shift Register Status bit TRMT = 1 thanh ghi TSR không có dữ liệu. TRMT = 0 thanh ghi TSR có chứa dữ liệu. Bit 0 TX9D Bit này chứa bit dữ liệu thứ 9 khi dữ liệu truyền nhận là 9 bit. P2.45 Thanh ghi SPBRG: địa chỉ 99h Thanh ghi chứa giá trị tạo xung clock cho bộ tạo xung BRG (Baud Rate Generator). Tần số xung clock do BRG tạo ra được tính theo các công thức trong bảng sau: Trong đó X là giá trị chứa trong thanh ghi SRBRG. Thanh ghi CMCON: địa chỉ 9Ch Thanh ghi điều khiển và chỉ thị các trạng thái cũng như kết quả của bộ so sánh. Bit 7 C2OUT Comparator 2 (C2) Output bit Khi C2INV = 0 C2OUT = 1 khi (pin VIN+ của C2)> (pin VIN- của C2). C2OUT = 0 khi (pin VIN+ của C2) < (pin VIN- của C2). Khi C2INV = 1 C2OUT = 1 khi (pin VIN+ của C2)< (pin VIN- của C2). C2OUT = 0 khi (pin VIN+ của C2) > (pin VIN- của C2). Bit 6 C1OUT Comparator 1 (C1) Output bit Khi C1INV = 0 C1OUT = 1 khi (pin VIN+ của C1)> (pin VIN- của C1). C1OUT = 0 khi (pin VIN+ của C1) < (pin VIN- của C1). Khi C1INV = 1 C1OUT = 1 khi (pin VIN+ của C1)< (pin VIN- của C1). C1OUT = 0 khi (pin VIN+ của C1) > (pin VIN- của C1). Bit 5 C2INV Comparator 2 Output Conversion bit C2INV = 1 ngõ ra C2 được đảo trạng thái. C2INV = 0 ngõ ra C2 không đảo trạng thái. Bit 4 C1INV Comparator 1 Output Conversion bit C1INV = 1 ngõ ra C1 được đảo trạng thái. C1INV = 0 ngõ ra C1 không đảo trạng thái. Bit 3 CIS Comparator Input Switch bit Bit này chỉ có tác dụng khi CM2:CM0 = 110 CIS = 1 khi pin VIN- của C1 nối với RA3/AN3 và pin VIN- của C2 nối với RA2/AN2 CIS = 0 khi pin VIN- của C1 nối với RA0/AN0 và pin VIN- của C2 nối với RA1/AN1 Bit 2-0 CM2:CM0 Comparator Mode bit Các bit này đóng vai trò trong việc thiết lập các cấu hình hoạt động của bộ Comparator. Các dạng cấu hình của bộ Comparator đựơc trình bày trong bảng sau: Trong đó: A là ngõ vào Analog, khi đó giá trị của các pin này đọc từ các PORT luôn bằng 0. B là ngõ vào Digital. P2.46 Thanh ghi CVRCON: địa chỉ 9Dh Thanh ghi điều khiển bộ tạo điện áp so sánh khi bộ Comparator hoạt động với cấu hình ‘110’. Bit 7 CVREN Comparator Voltage Reference Enable bit. CVREN = 1 bộ tạo điện áp so sánh được cấp điện áp hoạt động. CVREN = 0 bộ tạo điện áp so sánh không được cấp điện áp hoạt động. Bit 6 CVROE Comparator VREF Output Enable bit CVROE = 1 điện áp do bộ tạo điện áp so sánh tạo ra được đưa ra pin RA2. CVROA = 0 điện áp do bộ tạo điện áp so sánh tạo ra không được đưa ra ngoài. Bit 5 CVRR Comparator VREF Range Selection bit CVRR = 1 một mức điện áp có giá trị VDD/24 (điện áp do bộ tạo điện áp so sánh tạo ra có giá trị từ 0 đến 0.75VDD). CVRR = 0 một mức điện áp có giá trị VDD/32 (điện áp do bộ tạo điện áp so sánh tạo ra có giá trị từ 0.25 đến 0.75VDD). Bit 4 Không cần quan tâm và mặc định mang giá trị 0. Bit 3-0 CVR3:CVR0 Các bit chọn điện áp ngõ ra của bộ tạo điện áp so sánh. Khi CVRR = 1: Điện áp tại pin RA2 có giá trị CVREF = (CVR/24)*VDD. Khi CVRR = 0 Điện áp tại pin RA2 có giá trị CVREF = (CVR/32)*VDD + ¼VDD. P2.47 Thanh ghi ADRESL: địa chỉ 9Eh Thanh ghi chứa các bit thấp của kết quả bộ chuyển đổi A/D (8 bit cao chứa trong thanh ghi ADRESH địa chỉ 1Eh). P2.48 Thanh ghi ADCON1: địa chỉ 9Fh Thanh ghi chứa các bit điều khiển bộ chuyển đổi ADC (ADC có hai thanh ghi điều khiển là ADCON1 và ADCON0). Bit 7 ADFM A/D Result Format Select bit ADFM = 1 Kết quả được lưu về phía bên phải 2 thanh ghi ADRESH:ADRESL (6 bit cao mang giá trị 0). ADFM = 0 Kết quả được lưu về phía bên trái 2 thanh ghi ADRESH:ADRESL (6 bit thấp mang giá trị 0). Bit 6 ADCS2 A/D Conversion Clock Select bit ADCS2 kết hợp với 2 bit ADCS1:ADCS0 trong thanh ghi ADCON0 để điều khiển việc chọn xung clock cho khối chuyển đổi ADC. Bit 5,4 Không cần quan tâm và mặc định mang giá trị 0. Bit 3-0 PCFG3:PCFG0 A/D Port Configuration Control bit Các bit này điều khiển việc chọn cấu hình hoạt động các cổng của bộ chuyển đổi ADC. Trong đó A là ngõ vào Analog. D là ngõ vào Digital. C/R là số ngõ vào Analog/số điện áp mẫu. P2.49 Thanh ghi EEDATA: địa chỉ 10Ch Thanh ghi chứa byte thấp của dữ liệu trong quá trình ghi đọc trên bộ nhớ dữ liệu EEPROM. P2.50 Thanh ghi EEADR: địa chỉ 10Dh Thanh ghi chứa byte thấp của địa chỉ trong quá trình ghi đọc trên bộ nhớ dữ liệu EEPROM. P2.51 Thanh ghi EEDATH: địa chỉ 10Eh Thanh ghi chứa byte cao của dữ liệu trong quá trình ghi đọc trên bộ nhớ dữ liệu EEPROM (thanh ghi này chỉ sử dụng 6 bit thấp). P2.52 Thanh ghi EEADRH: địa chỉ 10Fh Thanh ghi chứa byte cao của địa chỉ trong quá trình ghi đọc trên bộ nhớ dữ liệu EEPROM (thanh ghi này chỉ sử dụng 4 bit thấp). P2.53 Thanh ghi EECON1: địa chỉ 18Ch Thanh ghi điều khiển bộ nhớ EEPROM. Bit 7 EEPGD Program/Data EEPROM Select bit EEPGD = 1 truy xuất bộ nhớ chương trình. EEPGD = 0 truy xuất bộ nhớ dữ liệu. Bit 6-4 Không cần quan tâm và mặc định mang giá trị 0. Bit 3 WRERR EEPROM Error Flag bit WRERR = 1 quá trình ghi lên bộ nhớ bị gián đoạn và không thể tiếp tục (do các chế độ Reset WDT hoặc ). WRERR = 0 quá trình ghi lên bộ nhớ hoàn tất. Bit 2 WREN EEPROM Write Enable bit WREN = 1 cho phép ghi. WREN = 0 không cho phép ghi. Bit 1 WR Write Control bit WR = 1 ghi dữ liệu. Bit này chỉ được set bằng chương trình và tự động xóa về 0 khi quá trình ghi dữ liệu hoàn tất. WR = 0 hoàn tất quá trình ghi dữ liệu. Bit 0 RD Read Control bit RD = 1 đọc dữ liệu. Bit này chỉ được set bằng chương trình và tự động xóa về 0 khi quá trình đọc dữ liệu hoàn tất. RD = 0 quá trình đọc dữ liệu không xảy ra. P2.54 Thanh ghi EECON2: địa chỉ 18Dh. Đây là một trong 2 thanh ghi điều khiển bộ nhớ EEPROM. Tuy nhiên đây không phải là thanh ghi vật lí thông thường và không cho phép ngươi1 sử dụng truy xuất dữ liệu trên thanh ghi. TÀI LIỆU THAM KHẢO PIC16F877A DATASHEET WWW.MICROCHIP.COM MIDRANGE PICmicro FAMILY WWW.MICROCHIP.COM CÁC TRANG WEB WWW.MICROCHIP.COM WWW.DIENDANDIENTU.COM WWW.PICVIETNAM.NET VÀ CÁC TRANG WEB KHÁC
File đính kèm:
- vi_dieu_khien_pic16f877a.pdf