Võ Như Thành 2 Vi xử lý là bộ xử lý trung tâm trong: máy tính PC, Laptop, mini computer, super computer, thiết bị smartphone, thiết bị nhúng,...v{ đặc biệt trong công nghiệp ngành Điện -
Trang 1ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA CƠ KHÍ – BỘ MÔN CƠ ĐIỆN TỬ
Lưu hành nội bộ
Trang 3TS Đặng Phước Vinh – TS Võ Như Thành i
DANH MỤC HÌNH ẢNH
Hình 1.1: Intel 4004, vi xử lý 4 bit thương mại đầu tiên năm 1971 [1] 2
Hình 1.2: Cấu trúc của một chip vi xử lý 2
Hình 1.3: Cấu trúc của một chip vi điều khiển [2] 3
Hình 1.4: Chip vi điều khiển PIC16F877A của hãng Microchip 6
Hình 1.5: Chương trình biên dịch CCS 8
Hình 1.6: Chương trình nạp PICkit 2 9
Hình 1.7: Mạch nạp PICkit 2 của hãng Microchip [11] 9
Hình 2.1: Sơ đồ chân họ PIC16F877A dạng PDIP [4] 12
Hình 2.2: Sơ đồ chân họ PIC16F877A dạng TQFP [4] 12
Hình 2.3: Sơ đồ khối của PIC16F87XA [4] 13
Hình 2.4: Cấu trúc bộ nhớ theo kiểu Von Neumann và Harvard [6] 14
Hình 2.5: Sơ đồ bộ nhớ chương trình v{ ngăn xếp [4] 16
Hình 2.6: Sơ đồ thanh ghi chức năng đặc biệt [4] 17
Hình 2.7: Xuất nhập I/O [7] 19
Hình 2.8: Thạch anh 4Mhz được nối vào hai chân OSC1 và OSC2 của vi điều khiển 19
Hình 2.9: Các chân của port A trên PIC16F877A [4] 20
Hình 2.10: C|c thanh ghi liên quan đến Port A [4] 21
Trang 4TS Đặng Phước Vinh – TS Võ Như Thành ii
Hình 2.11: Bit RBPU nằm trên thanh ghi OPTION_REG 22
Hình 2.12: Các chân của port B trên PIC16F877A [4] 22
Hình 2.13: C|c thanh ghi liên quan đến Port B [4] 23
Hình 2.14: Các chân của port C trên PIC16F877A [4] 23
Hình 2.15: C|c thanh ghi liên quan đến Port C [4] 25
Hình 2.16: Các chân của port D trên PIC16F877A [4] 25
Hình 2.17: C|c thanh ghi liên quan đến Port D [4] 26
Hình 2.18: Các chân của port E trên PIC16F877A [4] 27
Hình 2.19: C|c thanh ghi liên quan đến Port E [4] 27
Hình 2.20: Đặc tính ngoại vi của chip vi điều khiển PIC16F877A [8] 28
Hình 3.1: Cấu trúc của một chương trình biểu diễn bằng lưu đồ thuật toán 30
Hình 3.2: Lưu đồ thuật toán dùng cấu trúc điều kiện “if” 34
Hình 3.3: Lưu đồ thuật toán dùng cấu trúc điều kiện “if - else” 35
Hình 3.4: Lưu đồ thuật toán dùng cấu trúc điều kiện “switch” 37
Hình 3.5: Lưu đồ thuật toán dùng vòng lặp “ while” 40
Hình 3.6: Cấu trúc vòng lặp “while” 40
Hình 3.7: Lưu đồ thuật toán dùng vòng lặp “do – while” 41
Hình 3.8: Sơ đồ mạch nhấp nh|y LED đơn 46
Hình 3.9: Sơ đồ mạch hiển thị LED 7 đoạn anode chung 48
Hình 3.10: Sơ đồ chân của LED 7 đoạn (bên trái) và hình ảnh thực tế của một LED 7 đoạn (bên phải) 49
Hình 3.11: LED 7 đoạn hiển thị các số từ 0 đến 9 49
Hình 3.12: LED 7 đoạn hiển thị các ký tự Alpha 49
Hình 3.13: LED 7 đoạn loại Anode chung (Common Anode – CA) 50
Hình 3.14: LED 7 đoạn loại Anode chung (Common Cathode – CA) 51
Hình 4.1: Sơ đồ khối Timer0 [5] 55
Hình 4.2: Thanh ghi OPTION_REG 55
Hình 4.3: Thanh ghi T1CON 57
Hình 4.4: Sơ đồ khối Timer1 [4] 59
Trang 5TS Đặng Phước Vinh – TS Võ Như Thành iii
Hình 4.5: Counter 1 phải nhận 1 xung cạnh xuống trước khi có xung đếm [4] 59
Hình 4.6: Sơ đồ khối Timer2 [4] 61
Hình 4.7: Thanh ghi T2CON 61
Hình 4.8: Sơ đồ mạch hiển thị LED 7 đoạn anode chung 63
Hình 4.9: Sơ đồ khối capture [4] 65
Hình 4.10: Sơ đồ khối Compare [4] 65
Hình 4.11: Điều chế độ rộng xung [4] 66
Hình 4.12: Sơ đồ khối PWM [4] 67
Hình 4.13: Thanh ghi CCPxCON 67
Hình 5.1: Thực thi chương trình không có ngắt (a) và có ngắt (b) 71
Hình 5.2: Thanh ghi INTCON 72
Hình 5.3: Thanh ghi PIE1 73
Hình 5.4: Thanh ghi PIE2 73
Hình 5.5: Thanh ghi PIR1 74
Hình 5.6: Thanh ghi PIR2 75
Hình 6.1: Sơ đồ khối bộ ADC trong PIC [4] 79
Hình 6.2: Thanh ghi ADCON0 80
Hình 6.3: Thanh ghi ADCON1 81
Hình 6.4: Các kiểu định dạng kết quả [4] 81
Hình 6.5: Chu kỳ chuyển đổi ADC [4] 83
Hình 6.6: Sơ đồ mạch đo v{ hiển thị nhiệt độ sử dụng cảm biến nhiệt độ LM35 84
Hình 7.1: Thanh ghi TXSTA 87
Hình 7.2: Thanh ghi RCSTA 87
Hình 7.3: Sơ đồ khối chế độ truyền [4] 89
Hình 7.4: Sơ đồ khối chế độ nhận [4] 91
Hình 7.5: Giao tiếp simplex 92
Hình 7.6: Giao tiếp half-duplex 92
Hình 7.7: Giao tiếp full-duplex 93
Trang 6TS Đặng Phước Vinh – TS Võ Như Thành iv
Hình 7.8: Cổng COM 9 chân [10] 94
Hình 7.9: Cổng COM 25 chân [10] 95
Hình 7.10: Sơ đồ kết nối IC MAX232 và máy tính 98
Hình 7.11: Ảnh thực tế của IC MAX232 (trái) và mạch sử dụng MAX232 (phải) 98
Hình 7.12: Sơ đồ nối dây dùng giao tiếp UART – RS232 98
Hình 7.13: Cáp chuyển đổi từ giao tiếp cổng USB sang cổng COM 99
Hình 7.14: Sơ đồ khối giao diện SPI [4] 101
Hình 7.15: Thanh ghi SSPCON1 101
Hình 7.16: Thanh ghi SSPSTAT 102
Hình 7.17: Sơ đồ kết nối của chuẩn giao tiếp SPI [4] 104
Hình 7.18: Giản đồ xung SPI ở chế độ Master [4] 105
Hình 7.19: Giản đồ xung SPI ở chế độ Slave với CKE = 0 [4] 106
Hình 7.20: Giản đồ xung SPI ở chế độ Slave với CKE = 1 [4] 107
Hình 7.21: Khái niệm giao tiếp I2C 108
Hình 7.22: Các chế độ hoạt động và tốc độ hoạt động của giao tiếp I2C 110
Hình 7.23: Gi~n đồ thời gian của giao tiếp I2C 111
Hình 7.24: Quá trình tạo điều kiện START [4] 111
Hình 7.25: Quá trình tạo điều kiện STOP [4] 112
Hình 7.26: Quá trình tạo điều kiện START liên tục [4] 112
Hình 7.27: Qu| trình đọc 1 byte 114
Hình 7.28: Qu| trình đọc nhiều byte 115
Hình 7.29: Quá trình ghi 1 byte 115
Hình 7.30: Quá trình ghi nhiều byte 116
Hình 7.31: Thanh ghi SSPCON1 116
Hình 7.32: Thanh ghi SSPCON2 117
Hình 7.33: Thanh ghi SSPSTAT 118
Hình 7.34: Sơ đồ khối giao tiếp I2C ở chế độ master [4] 119
Trang 7TS Đặng Phước Vinh – TS Võ Như Thành v
DANH MỤC CÁC BẢNG
Bảng 1.1: So sánh giữa chip vi xử lý v{ chip vi điều khiển 4
Bảng 1.2: So sánh giữa các loại bộ nhớ 7
Bảng 2.1: Lựa chọn bank thanh ghi 15
Bảng 3.1 Các ký hiệu trong lưu đồ thuật toán 30
Bảng 3.2 Các kiểu khai báo biến trong vi điều khiển PIC 31
Bảng 3.3 Các kiểu khai báo biến trong vi điều khiển PIC 32
Bảng 3.4 Các phép toán số học trong PIC 32
Bảng 3.5: Mã hiển thị LED 7 đoạn Anode chung 50
Bảng 3.6: Mã hiển thị LED 7 đoạn Cathode chung 51
Bảng 4.1 Chọn tỉ lệ bộ chia trước của Timer0 56
Bảng 4.2 Chọn tỉ lệ bộ chia trước của Timer1 58
Bảng 4.3 Lựa chọn ngõ ra của postscaler của Timer2 61
Bảng 4.4 Lựa chọn ngõ ra của bộ chia trước của Timer2 62
Bảng 4.5 So sánh ba bộ định thời trên PIC16F877A 62
Bảng 4.6 Dùng Timer trong chế độ CCP 68
Bảng 6.1 Lựa chọn xung chuyển đổi ADC 80
Bảng 6.2 Lựa chọn kênh ADC 80
Trang 8TS Đặng Phước Vinh – TS Võ Như Thành vi
Bảng 6.3 Lựa chọn cấu hình cổng ADC [4] 82
Bảng 7.1: Công thức tính tốc độ baud [4] 86
Bảng 7.2: Đặc điểm của giao tiếp cổng nối tiếp theo chuẩn RS232 93
Bảng 7.3: Chức năng từng chân của cổng COM 25 chân và 9 chân 95
Trang 9TS Đặng Phước Vinh – TS Võ Như Thành vii
MỤC LỤC
DANH MỤC HÌNH ẢNH i
DANH MỤC CÁC BẢNG v
MỤC LỤC vii
1 GIỚI THIỆU CHUNG 1
1.1 Vi xử lý v{ vi điều khiển 1
1.1.1 Vi xử lý 1
1.1.2 Vi điều khiển 2
1.1.3 Sự khác nhau giữa vi xử lý v{ vi điều khiển 3
1.2 Vi điều khiển PIC 5
1.3 Các loại bộ nhớ 6
1.3.1 ROM (Read-Only Memory) 6
1.3.2 EPROM (Erasable Programmable Read-Only Memory) 6
1.3.3 EEPROM (Electrically Erasable Programmable Read-Only Memory) 6
1.3.4 Bộ nhớ FLASH 6
1.4 Trình biên dịch và nạp cho vi điều khiển PIC 7
1.4.1 Trình biên dịch cho PIC 7
1.4.1.1 Ngôn ngữ bậc thấp – Lập trình hợp ngữ 8
1.4.1.2 Ngôn ngữ bậc cao – trình biên dịch CCS 8
1.4.2 Chương trình nạp cho PIC 8
Trang 10TS Đặng Phước Vinh – TS Võ Như Thành viii
2 CẤU TRÚC PHẦN CỨNG PIC 16F877A 10
2.1 Tổng quan về chip PIC16F877A 10
2.2 Tổ chức bộ nhớ 13
a Kiến trúc Von Neumann 14
b Kiến trúc Harvard 14
2.2.2 Cấu trúc bộ nhớ chương trình 14
2.2.3 Cấu trúc bộ nhớ dữ liệu 15
2.2.4 Thanh ghi chức năng đặc biệt 15
2.2.5 Ngăn xếp Stack 17
2.3 Xuất nhập I/O 18
2.3.1 Điều khiển hướng xuất/nhập 18
2.3.2 Chức năng c|c ch}n 19
2.3.2.1 Các chân nối nguồn và thạch anh dao động 19
2.3.2.2 Port A 20
2.3.2.3 Port B 21
2.3.2.4 Port C 23
2.3.2.5 Port D 25
2.3.2.6 Port E 26
2.4 C|c đặc tính ngoại vi 28
3 TẬP LỆNH, CHỈ THỊ TIỀN XỬ LÝ 29
3.1 Lưu đồ thuật toán 29
3.2 Khai báo biến 31
3.3 Các phép toán 32
3.4 Toán tử biểu thức điều kiện 33
3.5 Toán tử chuyển kiểu 33
3.6 Các cấu trúc điều kiện 34
3.6.1 Lệnh “if” 34
3.6.2 Cấu trúc điều kiện “switch” 36
3.6.2.1 Không dùng lệnh default 36
3.6.2.2 Có dùng lệnh default 37
3.6.3 Cấu trúc vòng lặp “for” 38
3.6.4 Vòng lặp “while” 39
Trang 11TS Đặng Phước Vinh – TS Võ Như Thành ix
3.6.5 Vòng lặp “do – while” 40
3.7 Các chỉ thị tiền xử lý 41
3.8 Các hàm xủa lý xuất/nhập 42
3.9 Trình biên dịch CCS 44
3.9.1 Một chương trình mẫu trong CCS 44
3.10 Ví dụ 45
3.10.1 Nhấp nh|y LED đơn 45
3.10.2 Hiển thị LED 7 đoạn 47
3.10.2.1 Led 7 đoạn: 48
a Loại Anode chung 49
b Loại Cathode chung 50
3.10.2.2 Chú ý 51
3.10.2.3 Chương trình 52
4 BỘ ĐỊNH THỜI 54
4.1 Tổng quan bộ định thời trong PIC 54
4.2 Bộ định thời Timer0 55
4.2.1 Đặc điểm 55
4.2.2 Thanh ghi OPTION_REG 55
4.3 Bộ định thời Timer1 57
4.3.1 Đặc điểm 57
4.3.2 Thanh ghi liên quan T1CON 57
4.3.3 Timer1 ở chế độ Counter 59
4.3.3.1 Chế độ Counter bất đồng bộ 60
4.3.3.2 Chế độ Counter đồng bộ 60
4.4 Bộ định thời Timer2 60
4.4.1 Đặc điểm 60
4.4.2 Thanh ghi liên quan T2CON 61
4.4.3 Lưu ý 62
4.5 Ví dụ 63
4.6 Khối CCP (Capture/Compare/PWM) 64
4.6.1 Khối Capture 64
4.6.2 Khối Compare 65
Trang 12TS Đặng Phước Vinh – TS Võ Như Thành x
4.6.3 Khối PWM (Pulse Width Modulation) 66
4.6.3.1 Đặc điểm 66
4.6.3.2 Thanh ghi CCP1CON và CCP2CON 67
4.6.3.3 C|c bước c{i đặt 67
4.6.3.4 Lưu ý 68
4.6.3.5 Ví dụ 68
5 HOẠT ĐỘNG NGẮT 70
5.1 Tổng quan 70
5.2 Các thanh ghi liên quan 72
5.2.1 Thanh ghi điều khiển ngắt INTCON 72
5.2.2 Thanh ghi PIE1 – PIE2 73
5.2.3 Thanh ghi PIR1 – PIR2 74
5.3 Ngắt bộ định thời 76
5.4 Ngắt ngoài RB0/INT 76
6 BỘ CHUYỂN ĐỔI ADC 78
6.1 Tổng quan về bộ chuyển đổi ADC 78
6.2 Bộ ADC trên PIC16F877 79
6.2.1 Đặc điểm 79
6.2.2 Các thanh ghi liên quan 80
6.2.2.1 Thanh ghi điều khiển bộ chuyển đổi ADCON0 80
6.2.2.2 Thanh ghi điều khiển bộ chuyển đổi ADCON1 81
6.2.3 C|c bước thực hiện 82
6.2.4 Thời gian chuyển đổi ADC 83
6.2.5 Lưu ý 83
7 GIAO TIẾP NỐI TIẾP 85
7.1 Giao tiếp nối tiếp USART 85
7.1.1 USART đồng bộ 86
7.1.2 USART bất đồng bộ 86
7.1.2.1 Các thanh ghi liên quan 87
a Thanh ghi TXSTA 87
b Thanh ghi RCSTA 87
c Lỗi “framing”: lỗi khung truyền 88
Trang 13TS Đặng Phước Vinh – TS Võ Như Thành xi
7.1.2.2 Truyền trong chế độ USART bất đồng bộ 89
a Đặc điểm 89
b C|c bước thực hiện khi TRUYỀN 89
7.1.2.3 Nhận trong chế độ USART bất đồng bộ 90
a Đặc điểm 90
b C|c bước thực hiện khi NHẬN 91
7.1.3 Giao tiếp cổng nối tiếp UART – RS232 91
a Giao tiếp Simplex 92
b Giao tiếp half-duplex 92
c Giao tiếp full-duplex 92
7.1.3.2 Chuẩn UART (hay chuẩn TTL) 93
7.1.3.3 Chuẩn RS232 (Recommeded Standard 232) 93
7.1.3.4 Dạng tín hiệu truyền mô tả như sau (truyền ký tự A): 96
7.1.3.5 Tốc độ baud 96
7.1.3.6 Bit chẵn lẻ hay Parity bit 97
7.1.3.7 Giao tiếp UART – RS232 97
7.2 Giao diện đồng bộ nối tiếp MSSP 99
7.2.1 Giao tiếp SPI (Serial Pheripheral Interface) 100
7.2.1.1 Tổng quan về giao tiếp SPI 100
7.2.1.2 Các thanh ghi liên quan 101
7.2.1.3 Hoạt động của chế độ SPI trong PIC 103
7.2.1.4 Thiết lập chân vào/ra trong chế độ SPI: 103
7.2.1.5 SPI ở chế độ Master 104
7.2.1.6 SPI ở chế độ Slave 105
7.2.2 Giao tiếp I2C (Inter-Intergrated Circuit) 107
7.2.2.1 Các chế độ hoạt động của chế độ I2C 109
a Chế độ hoạt động 109
b Tốc độ hoạt động 109
7.2.2.2 Giản đồ thời gian của chế độ I2C 110
a Điều kiện START 111
b Điều kiện STOP 112
c Điều kiện START liên tục 112
Trang 14TS Đặng Phước Vinh – TS Võ Như Thành xii
7.2.2.3 Qu| trình đọc dùng giao tiếp I2C 113
a Qu| trình đọc 1 byte 113
b Qu| trình đọc nhiều byte 114
7.2.2.4 Quá trình ghi dùng giao tiếp I2C 115
a Quá trình ghi 1 byte 115
b Quá trình ghi nhiều byte 116
7.2.2.5 Các thanh ghi liên quan 116
a Thanh ghi điều khiển SSPCON1, SSPCON2 116
b Thanh ghi SSPSTAT 118
TÀI LIỆU THAM KHẢO 120
Trang 15TS Đặng Phước Vinh – TS Võ Như Thành 1
ví dụ trên card màn hình (Graphic card) chúng ta cũng có một bộ vi xử lý
Trước khi xuất hiện các bộ vi xử lý, c|c CPU được xây dựng từ các mạch tích hợp cỡ nhỏ riêng biệt, mỗi mạch tích hợp chỉ chứa khoảng vào chục tranzito Do đó, một CPU có thể là một bảng mạch gồm hàng ngàn hay hàng triệu vi mạch tích hợp Ngày nay, công nghệ tích hợp đ~ ph|t triển, một CPU có thể tích hợp lên một hoặc vài vi mạch tích hợp
cỡ lớn, mỗi vi mạch tích hợp cỡ lớn chứa hàng ngàn hoặc hàng triệu tranzito Nhờ
đó công suất tiêu thụ và giá thành của bộ vi xử lý đ~ giảm đ|ng kể
Sự tiến hóa của các bộ vi xử lý một phần nhờ vào việc chạy theo Định luật Moore và hiệu suất của nó tăng lên một cách ổn định sau h{ng năm Định luật này phát biểu rằng
sự phức tạp của một mạch tích hợp sẽ tăng lên gấp đôi sau mỗi chu kỳ 18 tháng Và thực
tế, sự phát triển của các bộ vi xử lý đ~ b|m s|t định luật này từ những năm 1970 Nhờ
đó, từ máy tính mẹ (mainframe computer) lớn nhất cho đến các máy tính xách tay hiện nay đều sử dụng một bộ vi xử lý nhỏ nhắn tại trung tâm của chúng
Trang 16TS Đặng Phước Vinh – TS Võ Như Thành 2
Vi xử lý là bộ xử lý trung tâm trong: máy tính (PC, Laptop, mini computer, super computer), thiết bị smartphone, thiết bị nhúng, v{ đặc biệt trong công nghiệp ngành Điện - chuyên ngành Tự động hóa: bộ điều khiển khả trình PLC v{ Vi điều khiển để ứng dụng điều khiển các dây chuyền, hệ thống tự động
Hình 1.1: Intel 4004, vi xử lý 4 bit thương mại đầu tiên năm 1971 [1]
Hình 1.2: Cấu trúc của một chip vi xử lý
1.1.2 Vi điều khiển
Vi điều khiển là một máy tính được tích hợp trên một chíp, nó thường được sử dụng
để điều khiển các thiết bị điện tử Vi điều khiển, thực chất, là một hệ thống bao gồm một vi xử lý có hiệu suất đủ dùng và giá thành thấp (khác với các bộ vi xử lý đa năng dùng trong máy tính) kết hợp với các khối ngoại vi như bộ nhớ, các mô đun v{o/ra, các
mô đun biến đổi số sang tương tự v{ tương tự sang số, Ở m|y tính thì c|c mô đun thường được xây dựng bởi các chíp và mạch ngoài [3]
Vi điều khiển thường được dùng để xây dựng các hệ thống nhúng Nó xuất hiện khá nhiều trong các dụng cụ điện tử, thiết bị điện, máy giặt, lò vi sóng, điện thoại, đầu đọc DVD, thiết bị đa phương tiện, dây chuyền tự động, v.v
nối tiếp
Address Bus
CPU
Vi xử lý
Data Bus Nhiều chips trên bo mạch chủ
RAM ROM I/O
Port Timer
Cổng
Trang 17TS Đặng Phước Vinh – TS Võ Như Thành 3
Va o na m 1971, ta p đoa n Intel đa giơ i thie u bo vi xư ly đa u tie n: 8080 Sau đo th Motorola, RCA ke đe n la MOS Technolgy va ilog đa giơ i thie u ca c bo vi xư ly tương tư :
6800, 1801, 6502 va 80
Va o na m 1976, Intel giơ i thie u bo vi đie u khie n 8748, mo t chip đa u tie n trong ho vi đie u khie n MCS-48
Đo phư c ta p, k ch thươ c va kha na ng cu a ca c bo vi đie u khie n đươ c ta ng the m mo t
ba c quan tro ng va o na m 1980 khi Intel co ng bo chip 8051, bo vi đie u khie n đa u tie n cu a
ho MCS-51 Chip 8051 bao go m tre n 60000 transistors, 4 byte ROM, 128 byte RAM, 32 đươ ng xua t nha p, 1 co ng no i tie p va 2 bo đi nh thơ i 16-bit
Hình 1.3: Cấu trúc của một chip vi điều khiển [2]
1.1.3 Sự khác nhau giữa vi xử lý và vi điều khiển
Vào những giai đoạn đầu trong quá trình phát triển của công nghệ vi xử lý, các chip (hay các vi xử lý) được chế tạo chỉ tích hợp những phần cứng thiết yếu như CPU cùng các mạch giao tiếp giữa CPU và các phần cứng kh|c Trong giai đoạn này, các phần cứng khác (kể cả bộ nhớ) thường không được tích hợp trên chip mà phải ghép nối thêm bên ngoài Các phần cứng n{y được gọi là các ngoại vi (Peripherals) Về sau, nhờ sự phát triển vượt bậc của công nghệ tích hợp, các ngoại vi cũng được tích hợp vào bên trong IC
Trang 18TS Đặng Phước Vinh – TS Võ Như Thành 4
v{ người ta gọi các vi xử lý đ~ được tích hợp thêm các ngoại vi là các “vi điều khiển” Việc tích hợp thêm các ngoại vi vào trong cùng một IC với CPU tạo ra nhiều lợi ích như l{m giảm thiểu các ghép nối bên ngoài, giảm thiểu số lượng linh kiện điện tử phụ, giảm chi phí cho thiết kế hệ thống, đơn giản hóa việc thiết kế, nâng cao hiệu suất và tính linh hoạt
Cấu trúc: Hầu hết các bộ vi xử lý sử dụng cấu trúc CISC và Von-Neumann Tuy
nhiên, bộ vi xử lý phổ biến sử dụng cấu trúc CISC Còn vi điều khiển sử dụng cấu trúc RISC v{ Harvard Nhưng cũng có một số vi điều khiển sử dụng cấu trúc CISC như 8051 v{ SHARC Bộ vi xử lý có ROM, RAM, bộ nhớ lưu trữ thứ cấp I / O thiết
bị ngoại vi, timer bộ đếm(counters) vv được xếp cùng trên một board và kết nối thông qua bus được gọi l{ vi điều khiển
Tốc độ CPU: Bộ vi xử lý có tốc độ nhanh hơn so với các bộ điều khiển bởi clock
Bộ vi xử lý có thể có tốc độ xung nhịp (clock) cao Bộ vi điều khiển có thể chậm khi so sánh với các bộ vi xử lý Tốc độ thực thi luôn luôn phụ thuộc vào clock Nếu chúng ta so sánh hiệu suất tổng thể và ứng dụng, vi điều khiển tốc độ thực hiện rất nhanh bởi vì tất cả các thiết bị ngoại vi sẵn có
Thời gian thiết kế: Thiết kế một vi điều khiển sẽ mất ít thời gian hơn khi thiết kế
bộ vi xử lý Việc giao tiếp giữa các thiết bị ngoại vi v{ chương trình dễ d{ng hơn khi so sánh với bộ vi xử lý Vi điều khiển được thiết kế để thực hiện một chức năng cụ thể Cụ thể có nghĩa l{ c|c ứng dụng mà quan hệ giữa đầu v{o v{ đầu ra được x|c định rõ ràng Tùy thuộc v{o đầu vào, một số xử lý cần phải được thực hiện và thiết lập từ đầu ra Ví dụ, bàn phím, chuột, máy giặt, máy ảnh kỹ thuật, USB, điều khiển từ xa, lò vi sóng, xe hơi, xe đạp, điện thoại, điện thoại di động, đồng hồ vv Khi ứng dụng được cụ thể hóa, cần tài nguyên nhỏ như RAM, ROM, I / O port …vv do đó có thể được nhúng vào một chip duy nhất Điều này sẽ làm giảm kích thước và chi phí
Ứng dụng: bộ vi xử lý chủ yếu được sử dụng trong các hệ thống máy tính, hệ
thống quốc phòng, mạng thông tin liên lạc …vv vi điều khiển được sử dụng chủ yếu trong các ứng dụng nhúng như đồng hồ, điện thoại di động, máy nghe nhạc mp3, vv
Giá thành: So s|nh vi điều khiển và vi xử lý về chi phí là không hợp lý Chắc chắn
vi điều khiển rẻ hơn so với bộ vi xử lý Tuy nhiên vi điều khiển không thể được sử dụng thay cho bộ vi xử lý v{ ngược lại vì vi điều khiển và vi xử lý có tầm quan trọng riêng trong việc phát triển các ứng dụng
Bảng 1.1: So sánh giữa chip vi xử lý và chip vi điều khiển
CPU chip riêng biệt RAM, ROM, I/O,
Timer nằm bên ngoài
CPU, RAM, ROM, I/O và Timer nằm trên cùng 1 chip
Lượng ROM, RAM, I/O Ports tùy ý Cố định lượng ROM, RAM, I/O Ports
Trang 19TS Đặng Phước Vinh – TS Võ Như Thành 5
1.2 Vi điều khiển PIC
PIC được sản xuất bởi công ty Microchip Technology
"Programmable Intelligent Computer" là một sản phẩm của hãng General Instruments
Dòng sản phẩm đầu tiên là PIC1650
PIC 8-bit được phát triển vào khoảng năm 1975
Có thể tìm mua dể dàng tại thị trường Việt Nam
Giá thành không quá cao
Có đầy đủ tính năng của một VĐ khi hoạt động độc lập
Số lượng người dùng lớn số lượng tài liệu lớn, mã nguồn mở, dể d{ng trao đổi học tập, thảo luận
Sự hổ trợ của nhà sản xuất về trình biên dịch, các công cụ lập trình, nạp chương trình…
C|c tính năng đa dạng của VĐ liên tục được cập nhật
Các ký hiệu của vi điều khiển PIC:
PIC12xxxx: độ dài lệnh 12 bit
PIC16xxxx: độ dài lệnh 14 bit
PIC18xxxx: độ dài lệnh 16 bit
C: PIC có bộ nhớ chương trình l{ EPROM (chỉ có 16C84 là EEPROM)
F: PIC có bộ nhớ chương trình l{ flash
LF: PIC có bộ nhớ chương trình l{ flash hoạt động ở điện áp thấp
LV: tương tự như LF, đ}y l{ tín hiệu cũ
Bên cạnh đó một số vi điều khiển có ký hiệu xxFxxx thì bộ nhớ chương trình l{ EEPROM, nếu có thêm chữ A ở cuối thì bộ nhớ chương trình l{ flash (ví dụ PIC16F877 là EEPROM, còn PIC16F877A là flash)
Ở Việt Nam phổ biến nhất là các họ vi điều khiển PIC do Microchip sản xuất
Trang 20TS Đặng Phước Vinh – TS Võ Như Thành 6
Hình 1.4: Chip vi điều khiển PIC16F877A của hãng Microchip
1.3 Các loại bộ nhớ
1.3.1 ROM (Read-Only Memory)
Thông tin trên ROM vẫn được duy trì dù nguồn điện cấp không còn
Nó dùng cho lưu giữ m~ chương trình điều hành và dữ liệu mặc định của hệ thống
Cho phép chỉ đọc dữ liệu từ chúng, và chỉ cho phép ghi dữ liệu một lần
1.3.2 EPROM (Erasable Programmable Read-Only Memory)
Thông tin trên bộ nhớ vẫn được duy trì dù nguồn điện cấp không còn
Phải dùng thiết bị chuyên dụng để xóa bộ nhớ Xóa toàn bộ
1.3.3 EEPROM (Electrically Erasable Programmable Read-Only Memory)
Có khả năng xo| được bằng phương ph|p lập trình mà chúng không cần đến các thiết bị chuyên dụng như c|c thế hệ trước của nó
Trang 21TS Đặng Phước Vinh – TS Võ Như Thành 7
Bảng 1.2: So sánh giữa các loại bộ nhớ
Loại
Mất dữ liệu khi mất điện?
Khả năng ghi ? Cỡ xoá ?
Xoá nhiều lần ? Tốc độ ?
Giá thành (theo byte) ROM ho ng ho ng ho ng sa n sa ng ho ng sa n sa ng Nhanh ho ng đa t
EPROM ho ng
Co , nhưng
ca n thie t
bi chuye n
du ng
Toa n bo Giơ i ha n Nhanh Vư a pha i
EEPROM ho ng Co Byte Giơ i ha n
Nhanh cho đo c Cha m cho xoa
va ghi
Đa t
FLASH ho ng Co Sector Giơ i ha n
Nhanh cho đo c Cha m cho xoa
va ghi
Vư a pha i
1.4 Trình biên dịch và nạp cho vi điều khiển PIC
1.4.1 Trình biên dịch cho PIC
Sự ra đời của một loại vi điều khiển đi kèm với việc phát triển phần mềm ứng dụng cho việc lập trình cho con vi điều khiển đó Vi điều khiển chỉ hiểu và làm việc với hai con
số 0 v{ 1 Ban đầu để việc lập trình cho vi điều khiển là làm việc với dãy các con số 0 và
1 Sau này khi kiến trúc của vi điều khiển ngày càng phức tạp, số luợng thanh ghi lệnh nhiều lên, việc lập trình với dãy các số 0 và 1 không còn phù hợp nữa, đòi hỏi ra đời một ngôn ngữ mới thay thế: ngôn ngữ lập trình Assembly Sau này với sự ra đời của ngôn ngữ C thì việc lập trình cho vi điều khiển trở nên ngắn gọn và dễ hiểu hơn Hiện này có rất nhiều chương trình soạn thảo và biên dịch C cho vi điều khiển: eil C, HT‐PIC, MikroC, CCS
Trang 22TS Đặng Phước Vinh – TS Võ Như Thành 8
1.4.1.1 Ngôn ngữ bậc thấp – Lập trình hợp ngữ
Được cung cấp miễn phí bởi nhà sản xuất Microchip
Giúp người học và lập trình hiểu rõ hơn về cấu trúc bên trong của vi điều khiển PIC
Tối ưu hóa bộ nhớ chương trình
Tuy nhiên, nhìn chung phương ph|p tiếp cận hợp ngữ là khó và khả năng ph|t triển ứng dụng là hạn chế, mất thời gian
1.4.1.2 Ngôn ngữ bậc cao – trình biên dịch CCS
Kế thừa tất cả đặc điểm của ngôn ngữ C- là ngôn ngữ cơ bản, quen thuộc mà sinh viên đ~ được đ{o tạo
Xây dựng sẵn các hàm phục vụ cho việc sử dụng dễ dàng các khối chức năng đặc biệt của Vi điều khiển PIC như: ADC, PWM, RS232, SPI
Có khả năng kết hợp với ngôn ngữ hợp ngữ, tạo sự mềm dẻo trong phát triển ứng dụng
Khả năng phát triển, nâng cấp ứng dụng là dễ dàng
Ng{y c{ng được cập nhật với nhiều tính năng ưu việt và hiệu quả hơn
Hình 1.5: Chương trình biên dịch CCS
1.4.2 Chương trình nạp cho PIC
PICKit 2 Programmer/ Debugger là một công cụ phát triển giá rẻ nhưng tính năng v{ độ ổn định cao, dễ d{ng để sử dụng để nạp và gỡ lỗi PIC Microcontrollers Flash Ngoài
ra còn có thể sử dụng như một thiết bị đầu cuối truyền dữ liệu với PC qua chức năng UART Tool và Logic Tool Analyzer Chương trình n{y có khả năng nạp và gỡ lỗi trực tiếp
Trang 23TS Đặng Phước Vinh – TS Võ Như Thành 9
trong MPLAB IDE hoặc nạp chip bằng phần mềm PICKit 2 Programmer Bên cạnh đó chương trình n{y có khả năng tự cập nhật Firmware khi có phiên bản mới Phần mềm này v{ firmware sẵn có v{ có thể tải miễn phí trên website của hãng Mirochip
Hình 1.6: Chương trình nạp PICkit 2
Các tính năng của PICKIT2 như sau:
Giao tiếp PC qua cong USB, không cần cài driver, độ ổn định cao, không bị lỗi
Giao diện windows nổi bật, supports the Windows Vista 64-bit OS
Support đầy đủ tất cả các PIC họ baseline (PIC10F, PIC12F5xx, PIC16F5xx), midrange (PIC12F6xx, PIC16F), PIC18F, PIC24, dsPIC30, dsPIC33, và họ PIC32 8-bit, 16-bit, và 32-bit và một số sản phẩm Serial Eprom của Microchip
Cho phép cập nhật Firmware khi có phiên bản mới
Có chức năng Programmer-To-Go nạp không cần giao tiếp PC
Chip mới có thể được bổ sung bằng việc cập nhật phần mềm trên Website của hãng Microchip www.microchip.com
Hình 1.7: Mạch nạp PICkit 2 của hãng Microchip [11]
Trang 24TS Đặng Phước Vinh – TS Võ Như Thành 10
Chương n{y sẽ trình bày về sơ đồ chân, chức năng từng chân, tổ chức bộ nhớ (bao gồm bộ nhớ chương trình v{ bộ nhớ dữ liệu), các thanh ghi chức năng đặc biệt và các đặc tính ngoại vi của vi điều khiển PIC16F877A
2.1 Tổng quan về chip PIC16F877A
PIC là một họ vi điều khiển RISC được sản xuất bởi công ty Microchip Technology Dòng PIC đầu tiên l{ PIC1650 được phát triển bởi Microelectronics Division thuộc General Instrument [9]
PIC bắt nguồn là chữ viết tắt của "Programmable Intelligent Computer" (Máy tính khả trình thông minh) là một sản phẩm của h~ng General Instrument đặt cho dòng sản phẩm đầu tiên của họ là PIC1650 Lúc này, PIC1650 được dùng để giao tiếp với các thiết
bị ngoại vi cho máy chủ 16bit CP1600, vì vậy, người ta cũng gọi PIC với cái tên
"Peripheral Interface Controller" (Bộ điều khiển giao tiếp ngoại vi) CP1600 là một CPU tốt, nhưng lại kém về các hoạt động xuất nhập, và vì vậy PIC 8-bit được phát triển vào khoảng năm 1975 để hỗ trợ hoạt động xuất nhập cho CP1600 PIC sử dụng microcode đơn giản đặt trong ROM, và mặc dù, cụm từ RISC chưa được sử dụng thời bây giờ, nhưng PIC thực sự là một vi điều khiển với kiến trúc RISC, chạy một lệnh một chu kỳ máy (4 chu kỳ của bộ dao động)
Năm 1985 General Instrument b|n bộ phận vi điện tử của họ, và chủ sở hữu mới hủy bỏ hầu hết các dự án - lúc đó đ~ qu| lỗi thời Tuy nhiên PIC được bổ sung EEPROM
để tạo thành 1 bộ điều khiển vào ra khả trình Ngày nay rất nhiều dòng PIC được xuất
Trang 25TS Đặng Phước Vinh – TS Võ Như Thành 11
xưởng với hàng loạt các module ngoại vi tích hợp sẵn (như USART, PWM, ADC ), với bộ nhớ chương trình từ 512 Word đến 32K Word
Hiện nay, tại Việt Nam, đ~ có một cộng đồng nghiên cứu và phát triển PIC, dsPIC
và PIC32
Một số đặc điểm chính của vi điều khiển PIC [9]:
8/16 bit CPU, x}y dựng theo kiến trúc Harvard có sửa đổi
FLASH v{ ROM có thể tuỳ chọn từ 256 byte đến 256 byte
C|c cổng Xuất/Nhập (I/O ports) (mức logic thường từ 0V đến 5.5V, ứng với logic
0 và logic 1)
C|c chuẩn giao tiếp ngoại vi nối tiếp đồng bộ / không đồng bộ USART, AUSART, EUSARTs
Bộ chuyển đổi ADC Analog-to-digital converters, 10/12 bit
Bộ so s|nh điện |p (Voltage Comparators)
Các module Capture/Compare/PWM
Thuộc họ PIC16Fxxx với tập lệnh gồm 35 lệnh có độ dài 14 bit
Tất cả các lệnh là 1 chu kỳ máy, ngoại trừ chương trình con là 2 chu kỳ máy
Một chu kỳ lệnh của vi điều khiển bao gồm 4 xung clock Ví dụ ta sử dụng thạch anh 4MHz cho vi điều khiển PIC thì xung lệnh sẽ có tần số là 1MHz (tương ứng với thời gian là 1µs)
Bộ nhớ chương trình flash với dung lượng 8K x 14 bit, với khả năng ghi/xóa 100.000 lần
Bộ nhớ dữ liệu RAM: 368 byte
Bộ nhớ EEPROM với dung lượng 256 byte, với khả năng ghi/xóa 1.000.000 lần
Có thể lưu trữ dữ liệu hơn 40 năm
Nguồn sử dụng: 5VDC
Chế độ SLEEP để tiết kiệm năng lượng
Có 5 cổng xuất nhập (A, B, C, D, E) với 33 ch}n
Hỗ trợ giao tiếp USB
Hỗ trợ điều khiển Ethernet
Hỗ trợ giao tiếp CAN
Hỗ trợ giao tiếp LIN
Hỗ trợ giao tiếp IrDA
Trang 26TS Đặng Phước Vinh – TS Võ Như Thành 12
Hình 2.1: Sơ đồ chân họ PIC16F877A dạng PDIP [4]
Hình 2.2: Sơ đồ chân họ PIC16F877A dạng TQFP [4]
Port C Port C
Trang 27TS Đặng Phước Vinh – TS Võ Như Thành 13
Hình 2.3: Sơ đồ khối của PIC16F87XA [4]
2.2 Tổ chức bộ nhớ
Ha u he t ca c bo vi xư ly (CPU) đe u co kho ng gian nhơ chung cho dư lie u va chương
tr nh Ca c chip vi đie u khie n hie m khi đươ c sư du ng gio ng như ca c CPU trong ca c he ma y
Trang 28TS Đặng Phước Vinh – TS Võ Như Thành 14
t nh, thay va o đo chu ng đươ c du ng la m tha nh pha n trung ta m trong ca c thie t ke hươ ng đie u khie n, trong đo bo nhơ co dung lươ ng giơ i ha n, kho ng co o đ a va he đie u ha nh Chương tr nh đie u khie n pha i thươ ng tru trong ROM
Do đo , vi điều khiển PIC co kho ng gian bo nhơ rie ng cho chương tr nh va dư lie u Ca
2 bo nhơ na y đe u đa t be n trong chip, tuy nhie n ta co the mơ ro ng bo nhơ chương tr nh
va bo nhơ dư lie u ba ng ca ch sư du ng ca c chip nhơ be n ngoa i
Có hai loại kiến trúc bộ nhớ: kiến trúc Von Neumann và kiến trúc Harvard
a Kiến trúc Von Neumann
Bộ nhớ giao tiếp với CPU thông qua một bus dữ liệu 8 bit, bộ nhớ có các ô nhớ chứa
dữ liệu 8 bit, bộ nhớ vừa lưu trữ chương trình vừa lưu trữ dữ liệu Do đó kiến trúc bộ nhớ này kh| đơn giản Tuy nhiên do chỉ có một bus đường truyền nên tốc độ xử lý châm v{ khó thay đổi dung lượng của ô nhớ
b Kiến trúc Harvard
Bộ nhớ được tách làm hai bộ nhớ độc lập: bộ nhớ dùng để lưu chương trình v{ dùng
để lưu dữ liệu CPU giao tiếp với hai bộ nhớ độc lập nên cần hai bus dữ liệu độc lập Vì là hai bộ nhớ độc lập nên ta có thể thay đổi số bit lưu trữ của từng bộ nhớ mà không ảnh hưởng lẫn nhau
Ưu điểm của loại bộ nhớ này là tốc độ truy xuất dữ liệu nhanh do có hai bộ nhớ độc lập v{ tùy ý thay đổi số bit của ô nhớ Tuy nhiên kiến trúc phức tạp do có hai bộ nhớ độc lập l{ nhược điểm lớn của loại bộ nhớ này
Hình 2.4: Cấu trúc bộ nhớ theo kiểu Von Neumann và Harvard [6]
2.2.2 Cấu trúc bộ nhớ chương trình
Là bộ nhớ flash, dung lượng bộ nhớ 8K word (1 word = 14 bit)
Trang 29TS Đặng Phước Vinh – TS Võ Như Thành 15
Được phân thành nhiều trang (từ page 0 đến page 3)
Như vậy bộ nhớ chương trình có khả năng chứa được 8*1024 = 8192 lệnh (vì một lệnh sau khi mã hóa sẽ có dung lượng 1 word (14 bit)
hi vi điều khiển được reset, bộ đếm chương trình sẽ chỉ đến địa chỉ 0000h (Reset vector)
Khi có ngắt xảy ra, bộ đếm chương trình sẽ chỉ đến địa chỉ 0004h (Interrupt vector)
Có bộ đếm chương trình 13bit có thể quản lý bộ nhớ chương trình có dung lượng 8K word
2.2.3 Cấu trúc bộ nhớ dữ liệu
Là bộ nhớ EEPROM
Được chia ra làm 4 bank
Mỗi bank có dung lượng 128 byte
Thanh ghi có chức năng đặc biệt SFR (Special Function Register) nằm ở
c|c vùng địa chỉ thấp
Thanh ghi mục đích chung GPR (General Purpose Register) nằm ở vùng
địa chỉ còn lại trong bank
Bảng 2.1: Lựa chọn bank thanh ghi
2.2.4 Thanh ghi chức năng đặc biệt
Những thanh ghi chức năng đặc biệt là những thanh ghi được sử dụng bởi CPU và những khói ngoại vi để điều khiển hoạt động theo yêu cầu của CPU Những thanh ghi n{y được xem như l{ RAM tĩnh
Các thanh ghi chức năng đặc biệt thường xuyên được sử dụng (ví dụ như thanh ghi STATUS) sẽ được đặt ở tất cả c|c bank để giúp thuận tiện trong quá trình truy xuất và làm giảm bớt lệnh của chương trình
Chức năng cụ thể của c|c thanh ghi cũng như c|c bit tương ứng nằm trong thanh ghi
đó sẽ được trình bày cụ thể ở những chương tiếp theo
Trang 30TS Đặng Phước Vinh – TS Võ Như Thành 16
Hình 2.5: Sơ đồ bộ nhớ chương trình và ngăn xếp [4]
Trang 31TS Đặng Phước Vinh – TS Võ Như Thành 17
Hình 2.6: Sơ đồ thanh ghi chức năng đặc biệt [4]
2.2.5 Ngăn xếp Stack
PIC16F877A có 8 ngăn xếp với độ rộng là 13 bit (xem Hình 2.5) Bộ nhớ của ngăn xếp này không lấy từ bộ nhớ chương trình hay bộ nhớ dữ liệu, và con trỏ stack này không thể đọc hoặc ghi
Trang 32TS Đặng Phước Vinh – TS Võ Như Thành 18
Khi một chương trình con hoặc chương trình ngắt được gọi thì địa chỉ của thanh ghi
bộ đếm chương trình PC (Program Counter) sẽ được cất v{o ngăn xếp hi chương trình con hoặc ngắt được thực thi xong, dữ liệu trong ngăn xếp Stack này sẽ được lấy ra để vi điều khiển quay trở lại đúng vị trí của chương trình chính trước khi gọi chương trình con hoặc ngắt
Lưu ý rằng ngăn xếp này hoạt động như l{ một vòng khép kín: sau khi ngăn xếp được cất vào 8 lần thì lần cất vào thứ 9 sẽ ghi đè lên gi| trị cũ của lần ghi đầu tiên, lần ghi thứ 10 sẽ ghi đè lên gi| trị cũ của lần ghi thứ hai… Một điều cần chú ý nữa l{ vi điều khiển PIC không cung cấp bit n{o để cảnh báo trạng th|i ngăn xếp Stack bị tràn hay chưa hông có c|c lệnh cất (PUSH) hay lấy (POP) dữ liệu vào/ra từ ngăn xếp Stack
2.3 Xuất nhập I/O
2.3.1 Điều khiển hướng xuất/nhập
Vi điều khiển PIC16F877A có 5 cổng xuất/nhập v{ được đặt tên A, B, C, D, E với tổng cộng 33 chân xuất/nhập Các cổng xuất/nhập này đều cho phép truyền nhận dữ liệu theo hai hướng, có nghĩa l{ ta được phép đọc và xuất dữ liệu ra các cổng điều khiển Hướng truyền nhận được thiết lập bằng c|ch đưa gi| trị thích hợp vào thanh ghi điều khiển hướng TRIS tương ứng của mỗi cổng xuất/nhập (ví dụ thanh ghi điều khiển hướng của cổng A là TRISA) Mỗi bit trong thanh ghi điều khiển hướng xuất/nhập cho một chân của một cổng Ví dụ bit 7 của thanh ghi TRISB sẽ điều khiển xuất/nhập cho chân RB7, bit 6 của thanh ghi TRISB điều khiển chân RB6 v.v…
Nếu một bit trong thanh ghi điều khiển hướng TRIS mang mức logic 0 thì vi điều khiển sẽ hiểu rằng ch}n điều khiển bởi bit đó l{ chân xuất dữ liệu v{ ngược lại, nếu một bit trong thanh ghi TRIS mang mức logic 1 thì vi điều khiển sẽ hiểu rằng ch}n điều khiển bởi bit đó l{ ch}n nhập dữ liệu Ví dụ, ta muốn thiết lập chân RB3, RB2, RB1, RB0 của PORTB là nhập, chân RB7, RB6, RB5, RB4 của PORTB là xuất, khi đó gi| trị tương ứng đưa v{o thanh ghi TRISB sẽ là “00001111”
Dữ liệu nhập vào hay xuất ra mỗi cổng sẽ được chứa trong thanh ghi PORT (xem Hình 2.7) Ví dụ, giả sử như tất cả các chân của PORTB đều là chân xuất dữ liệu, khi đó muốn đưa tất cả các chân của PORTB lên mức logic 1, ta chỉ việc đưa v{o thanh ghi PORTB giá trị “11111111” Nếu tất cả c|c ch}n trong PORTB đều là chân nhập dữ liệu, muốn biết được trạng thái mức logic của từng chân ta chỉ việc đọc giá trị của thanh ghi PORTB
Trang 33TS Đặng Phước Vinh – TS Võ Như Thành 19
Vpp: khi lập trình cho PIC thì đóng vai trò l{ ngõ v{o nhận điện áp lập trình
Chân VDD (11, 32) và VSS (12, 31): là các chân nguồn của vi điều khiển PIC
Chân OSC1/CLKIN (13) và OSC2/CLKOUT (14)
Hai chân này nối với thạch anh để tạo ra xung dao động cho PIC (xem Hình 2.8)
Hai tụ lọc C1, C2 được them vào để xung tạo ra từ thạch anh ổn định hơn Giá trị điện dung của hai tụ này dựa theo datasheet của PIC
Hình 2.8: Thạch anh 4Mhz được nối vào hai chân OSC1 và OSC2 của vi điều khiển
Trang 34TS Đặng Phước Vinh – TS Võ Như Thành 20
2.3.2.2 Port A
Là port 2 chiều Chỉ có 6 bit: RA0 – RA5
Thanh ghi định hướng dữ liệu: TRISA
0: OUTPUT
1: INPUT
Ch}n RA4 được đa hợp với ngõ vào xung clock của module Timer0: RA4/T0CKI
Các chân còn lại được đa hợp với c|c ngõ v{o tương tự, ngõ v{o tương tự VREF cho các bộ chuyển đổi A/D và các bộ so sánh
Khi sử dụng ngõ v{o tương tự đảm bảo rằng thanh ghi TRISA được duy trì ở mức 1
Hình 2.9: Các chân của port A trên PIC16F877A [4]
AN2: ngõ v{o tương tự của kênh thứ 2
VREF-: ngõ v{o điện |p chuẩn(thấp) của bộ A/D
CVREF: điện |p tham chiếu VREF ngõ ra bộ so s|nh
Chân RA3/AN3/VREF+ (5)
RA3: xuất/nhập số
Trang 35TS Đặng Phước Vinh – TS Võ Như Thành 21
AN3: ngõ v{o tương tự của kênh thứ 3
VREF+: ngõ v{o điện |p chuẩn(cao) của bộ A/D
AN4: ngõ v{o tương tự của kênh thứ 4
SS: ngõ v{o chọn lựa SPI phụ
C2OUT: ngõ ra bộ so sánh 2
Hình 2.10: Các thanh ghi liên quan đến Port A [4]
2.3.2.3 Port B
Là port 2 chiều Có 8 bit: RB0 – RB7
Thanh ghi định hướng dữ liệu: TRISB
Mỗi chân của port B có điện trở nội kéo lên Bit điều khiển là RBPU (nằm trong
thanh ghi OPTION_REG<7>)
RBPU = 0 mở c|c điện trở kéo lên
Port B được thiết lập là ngõ ra hoặc lúc bị reset tắt chức năng điện trở kéo lên
Chân RB0/INT được đa hợp ngắt ngoài
RB4 – RB7 có cấu trúc ngắt thay đổi (chỉ khi được thiết lập là input)
Trang 36TS Đặng Phước Vinh – TS Võ Như Thành 22
Hình 2.11: Bit RBPU nằm trên thanh ghi OPTION_REG
Hình 2.12: Các chân của port B trên PIC16F877A [4]
Trang 37TS Đặng Phước Vinh – TS Võ Như Thành 23
RB7: xuất/nhập số
PGC: mạch gỡ rối v{ dữ liệu lập trình ICSP
Hình 2.13: Các thanh ghi liên quan đến Port B [4]
2.3.2.4 Port C
Là port 2 chiều Có 8 bit: RC0 – RC7
Thanh ghi định hướng dữ liệu: TRISC
Chân RC3-RC4 được đa hợp với giao tiếp SPI và I2C
RC6-RC7 được đa hợp với giao tiếp nối tiếp USART
Hình 2.14: Các chân của port C trên PIC16F877A [4]
Trang 38TS Đặng Phước Vinh – TS Võ Như Thành 24
Chân RC0/T1OSO/T1CKI (15)
RC0: xuất/nhập số
T1OSO: ngõ ra bộ dao động Timer 1
T1CKI: ngõ vào xung clock bên ngoài Timer 1
Chân RC1/T1OSI/CCP2 (16)
RC1: xuất/nhập số
T1OSI: ngõ v{o bộ dao động Timer 1
CCP2: ngõ vào Capture 2, ngõ ra Compare 2, ngõ ra PWM 2
Chân RC1/T1OSI/CCP2 (16)
RC1: xuất/nhập số
T1OSI: ngõ v{o bộ dao động Timer 1
CCP2: ngõ vào Capture 2, ngõ ra Compare 2, ngõ ra PWM 2
SCK: ngõ v{o xung clock nối tiếp đồng bộ/ngõ ra của chế độ SPI
SCL: ngõ v{o xung clock nối tiếp đồng bộ/ngõ ra chế độ I2C
Chân RC4/SDI/SDA (23)
RC4: xuất/nhập số
SDI: dữ liệu v{o SPI
SDA: xuất/nhập dữ liệu I2C
Trang 39TS Đặng Phước Vinh – TS Võ Như Thành 25
Là port 2 chiều Có 8 bit: RD0 – RD7
Thanh ghi định hướng dữ liệu: TRISD
Port D được đa hợp với giao tiếp song song
Hình 2.16: Các chân của port D trên PIC16F877A [4]
Trang 40TS Đặng Phước Vinh – TS Võ Như Thành 26
Chân RDx/PSPx (19, 20, 21, 22, 27-30)
RDx: xuất/nhập số
PSPx: dữ liệu port slave song song
Hình 2.17: Các thanh ghi liên quan đến Port D [4]
2.3.2.6 Port E
Là port 2 chiều Có 3 bit: RE0 – RE2
Thanh ghi định hướng dữ liệu: TRISE 0: OUTPUT, 1: INPUT
Các chân ở Port E được đa hợp với ngõ v{o tương tự
Phải đảm bảo c|c ch}n được cấu hình là ngõ vào khi sử dụng ngõ v{o tương tự
Chân RE0/RD/AN5 (8)
RE0: xuất/nhập số
RD: điều khiển đọc port slave song song
AN5: ngõ vào tương tự của kênh thứ 5
Chân RE1/WR/AN6 (9)
RE1: xuất/nhập số
WR: điều khiển ghi port slave song song
AN6: ngõ v{o tương tự của kênh thứ 6
Chân RE2/CS/AN7 (10)
RE2: xuất/nhập số