1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Giao trinh PIC vi điều khiển

135 1K 72

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 135
Dung lượng 6,44 MB

Nội dung

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 3

TS Đặ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 4

TS Đặ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 5

TS Đặng Phước VinhTS 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 6

TS Đặ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 7

TS Đặ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 8

TS Đặ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 9

TS Đặ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 10

TS Đặ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 11

TS Đặ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 12

TS Đặ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 13

TS Đặ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 14

TS Đặ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 15

TS Đặ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 16

TS Đặ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 17

TS Đặ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 18

TS Đặ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 19

TS Đặ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 20

TS Đặ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 21

TS Đặ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 22

TS Đặ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 23

TS Đặ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 24

TS Đặ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 25

TS Đặ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 26

TS Đặ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 27

TS Đặ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 28

TS Đặ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 29

TS Đặ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 30

TS Đặ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 31

TS Đặ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 32

TS Đặ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 33

TS Đặ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 34

TS Đặ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 35

TS Đặ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 36

TS Đặ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 37

TS Đặ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 38

TS Đặ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 39

TS Đặ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 40

TS Đặ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ố

Ngày đăng: 23/01/2018, 18:33

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[12] Nguyễn Đình Phú. Giáo trình Vi xử lý 2. Trường Đại học Sư phạm ỹ thuật th{nh phố Hồ Chí Minh. Năm 2007 Sách, tạp chí
Tiêu đề: Giáo trình Vi xử lý 2
[14] Tống Văn On, Ho{ng Đức Hải. Họ vi điều khiển 8051. Nh{ xuất bản Lao động v{ X~ hội. Năm 2009 Sách, tạp chí
Tiêu đề: Họ vi điều khiển 8051
[15] Tống Văn On, Ho{ng Đức Hải. Thiết kế hệ thống với họ 8051. Nh{ xuất bản Phương Đông. Năm 2006 Sách, tạp chí
Tiêu đề: Thiết kế hệ thống với họ 8051
[16] Ngô Diên Tập. Vi điều khiển với lập trình C. Nh{ xuất bản khoa học v{ kỹ thuật. Năm 2006 Sách, tạp chí
Tiêu đề: Vi điều khiển với lập trình C
[17] Nguyễn Trường Thịnh, Nguyễn Tấn Nó. Vi điều khiển PIC 16F và ngôn ngữ lập trình HI-TECH C. Nh{ xuất bản Đại học Quốc gia th{nh phố Hồ Chí Minh. Năm 2015 Sách, tạp chí
Tiêu đề: Vi điều khiển PIC 16F và ngôn ngữ lập trình HI-TECH C
[18] Lê Duy Phi. Lập trình vi điều khiển PIC 16F84A. Năm 2006 Sách, tạp chí
Tiêu đề: Lập trình vi điều khiển PIC 16F84A
[19] Bohdan Borowik. Interfacing PIC Microcontrollers to Peripherial Devices. Springer Dordrecht Heidelberg London New York. 2011 Sách, tạp chí
Tiêu đề: Interfacing PIC Microcontrollers to Peripherial Devices
[20] MPLAB IDE User’s Guide, DS51519A. Published by Microchip Technology Inc., 2005 Sách, tạp chí
Tiêu đề: MPLAB IDE User’s Guide
[21] Dogan Ibrahim. Advanced PIC Microcontroller Projects in C. From USB to RTOS with the PIC18F Series. ISBN: 978-0-7506-8611-2. Published by Elsevier Ltd.2008 Sách, tạp chí
Tiêu đề: Advanced PIC Microcontroller Projects in C. From USB to RTOS with the PIC18F Series
[22] Dogan Ibrahim. Designing Embedded Systems with 32-Bit PIC Microcontrollers and MikroC. ISBNe13: 978-0-08-097786-7. Published by Elsevier Ltd. 2015 Sách, tạp chí
Tiêu đề: Designing Embedded Systems with 32-Bit PIC Microcontrollers and MikroC
[23] Myke Predko. Programming and Customizing the PIC Microcontroller. 3 rd Edition Sách, tạp chí
Tiêu đề: Programming and Customizing the PIC Microcontroller
[24] Di Jasio, Wilmshurst, Ibrahim, Morton, Bates, J. Smith, D.W. Smith, Hellebuyck. PIC Microcontrollers - Know It All. Published by Elsevier Sách, tạp chí
Tiêu đề: PIC Microcontrollers - Know It All
[25] Lucio Di Jasio. Programming 16-Bit PIC Microcontrollers in C, Second Edition: Learning to Fly the PIC 24. 2nd Edition. ISBN-13: 978-1856178709 Sách, tạp chí
Tiêu đề: Programming 16-Bit PIC Microcontrollers in C, Second Edition: "Learning to Fly the PIC 24
[26] John Iovine. PIC Microcontroller Project Book: A True Beginner's Guide to the Popular PIC Microcontroller. Published May 18th 2000 by Tab Books Sách, tạp chí
Tiêu đề: PIC Microcontroller Project Book: A True Beginner's Guide to the Popular PIC Microcontroller
[27] Milan Verle. PIC Microcontrollers - Programming in C. Published by MikroElektronika; 1st edition (2009). ISBN-13: 978-8684417178 Sách, tạp chí
Tiêu đề: PIC Microcontrollers - Programming in C
Tác giả: Milan Verle. PIC Microcontrollers - Programming in C. Published by MikroElektronika; 1st edition
Năm: 2009

TỪ KHÓA LIÊN QUAN

w