Giáo trình Vi xử lý: Phần 1 cung cấp cho người học những kiến thức như: Mô tả tổng quát một hệ vi xử lý; Hệ vi điều khiển 8-bit 805; Lập trình hợp ngữ trên hệ vi điều khiển 8051; Bộ vi xử lý 16 bit Intel 8088/8086.
Trang 1TRƯỜNG CAO ĐẲNG GIAO THÔNG VẬN TẢI KHOA KỸ THUẬT ĐIỆN – ĐIỆN TỬ
Trang 2Sự ra đời của công nghệ bán dẫn vào những thập niên cuối thế kỉ XX, cho đến nay đã có nhiều phát triển vượt bậc Công nghệ nano đã giúp các thiết bị điện tử tích hợp với mật độ rất cao và nhiều chức năng hơn, trong khi giá thành ngày càng rẻ Một bước tiến mới trong công nghệ điện tử khi công ty Intel cho ra đời bộ vi xử lý đầu tiên mà phần cứng chỉ đóng vai trò thứ yếu, phần mềm (chương trình) đóng vai trò chủ đạo đối với các chức năng cần thực hiện Nhờ vậy vi xử lý có sự mềm dẻo hóa trong các chức năng của mình
Vi xử lý hoạt động cần có chương trình kèm theo, các chương trình này điều khiển các mạch logic xử lý các dữ liệu cần thiết theo yêu cầu Để thực hiện các công việc với các thiết bị cuối cùng, chẳng hạn điều khiển động cơ, hiển thị kí tự trên màn hình đòi hỏi phải kết hợp
vi xử lý với các mạch điện giao tiếp với bên ngoài được gọi là các thiết bị ngoại vi hay còn gọi
là các thiết bị nhập/xuất (I/O)
Hiệu quả ứng dụng của Vi xử lý là rất lớn, chẳng hạn như các hệ thống sản xuất tự động trong công nghiệp, các tổng đài điện thoại, hoặc ở các robot có khả năng hoạt động phức tạp v.v Tuy nhiên đối với các ứng dụng nhỏ, không đòi hỏi khả năng tính toán lớn thì việc ứng dụng vi xử lý cần cân nhắc Bởi vì hệ thống dù lớn hay nhỏ, nếu dùng vi xử lý thì cũng đòi hỏi các khối mạch điện giao tiếp phức tạp như nhau Các khối này bao gồm bộ nhớ để chứa dữ liệu
và chương trình thực hiện, các mạch điện giao tiếp ngoại vi để xuất nhập và điều khiển trở lại điều này gây khó khăn cho người dùng trong việc thiết kế phần cứng nên các nhà chế tạo tích hợp một số mạch giao tiếp ngoại vi cùng với vi xử lý vào một IC duy nhất được gọi là Microcontroller-Vi điều khiển
Vi điều khiển về cơ bản cũng giống như vi xử lý, nhưng cấu trúc phần cứng dành cho người dùng đơn giản hơn nhiều 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
Vi xử lý / vi điều khiển là môn học hữu ích cho sinh viên khối kỹ thuật nhất là sinh viên ngành điện - điện tử Mọi sinh viên ngành điện đều cần nắm vững cơ sở lý thuyết để từ đó có thể thiết kế các mạch ứng dụng như mạch đồng hồ hẹn giờ, mạch đếm sản phẩm, mạch đèn giao thông, mạch quang báo, chống trộm, chống cháy, mạch đo nhiệt độ, robot tự động
Trên thị trường hiện nay tài liệu về vi xử lý khá nhiều, tuy nhiên lại đề cập đến nhiều mảng nội dung khác nhau, mỗi sách viết một kiểu, điều này gây không ít khó khăn cho sinh
Trang 3Trường Cao đẳng Giao thông vận tải TP Hồ Chí Minh có một cuốn tài liệu tham khảo học tập theo sát chương trình và mục tiêu đào tạo của Trường Được sự quan tâm của Ban Giám hiệu nhà trường cùng với sự định hướng nội dung của Thầy Ths Nguyễn Ngọc Trung - Trưởng Khoa Kỹ thuật Điện – Điện tử , nhóm tác giả là các Thầy, Cô khoa KT Điện - Điện tử tiến hành biên soạn cuốn ―Giáo trình Vi xử lý‖ với mong muốn cuốn giáo trình này phần nào giúp các
em góp nhặt được những kiến thức bổ ích trên bước đường học tập và làm việc mai sau
Nội dung cuốn giáo trình vi xử lý gồm 8 chương được giảng dạy trong thời lượng 60 tiết với bố cục như sau:
Chương 1 : Mô tả tổng quát một hệ vi xử lý ( 6 tiết)
Chương 2 : Hệ vi điều khiển 8-bit 8051 ( 6 tiết)
Chương 3 : Lập trình hợp ngữ trên hệ vi điều khiển 8051 ( 9 tiết)
Chương 4 : Bộ vi xử lý 16 bit Intel 8088/8086 ( 9 tiết)
Chương 5 : Hệ vi điều khiển 32-bit MC68332 ( 9 tiết)
Chương 6 : Lập trình hợp ngữ trên họ vi điều khiển 32-bit MC68332 ( 9 tiết)
Chương 7 : Các vi mạch hỗ trợ việc thiết kế hệ thống dựa trên các họ trên ( 6 tiết)
Chương 8 : Thiết kế các hệ thống ( 6 tiết)
Trong quá trình thực hiện cuốn giáo trình vi xử lý nhóm tác giả có sử dụng các tài liệu chuẩn nước ngoài đồng thời tham khảo vài tài liệu từ các trường đại học trong khu vực và cũng nhận được khá nhiều ý kiến đóng góp từ các đồng nghiệp nhằm giúp giáo trình hoàn thiện hơn
Do Trường vừa chuyển từ hình thức học phần sang học chế tín chỉ, bắt đầu thực hiện từ khóa K2013 cho đối tượng sinh viên hệ cao đẳng đòi hỏi tính tự học rất cao, với cách trình bày chi tiết từ cơ bản đến nâng cao một cách có hệ thống, hy vọng cuốn giáo trình vi xử lý này thực
sự hữu ích cho các em Bên cạch đó cuốn giáo trình này cũng là tài liệu chính giúp giáo viên bộ môn giảng dạy theo sát chương trình khung
Tuy nhiên, đây chỉ là lần biên soạn đầu tiên, điều này chắc không tránh khỏi thiếu xót, nhóm tác giả mong đón nhận sự góp ý từ Hội đồng và các Thầy Cô cũng như bạn đọc gần xa, nhóm tác giả chân thành cảm ơn!
TP Hồ Chí Minh, tháng 9 năm 2013
Nhóm tác giả
Trang 4CHƯƠNG 1 : MÔ TẢ TỔNG QUÁT MỘT HỆ VI XỬ LÝ ( 6 TIẾT) 9
1.1 Giới thiệu bộ vi xử lý tổng quát 10
1.1.1 Các khái niệm 10
1.1.2 Lịch sử phát triển 10
1.1.3 Ứng dụng 12
1.2 Sơ đồ khối của một hệ vi xử lý 13
1.2.1 Khối xử lý trung tâm (CPU) 14
1.2.2 Hệ thống bus 14
1.3 Tổng quát về các vi mạch xuất nhập song song/ nối tiếp 15
1.4 Hoạt động xuất nhập 18
1.4.1 Thiết bị ngoại vi có địa chỉ tách rời với bộ nhớ 18
1.4.2 Thiết bị ngoại vi và bộ nhớ có chung không gian địa chỉ 18
1.4.3 Giải mã địa chỉ cho thiết bị I / O 18
1.5 Hoạt động xuất nhập sử dụng ngắt 19
1.6 Từ bộ vi xử lý đến bộ vi điều khiển 20
1.7 Sơ đồ khối tổng quát của bộ vi điều khiển 23
CHƯƠNG 2 HỆ VI ĐIỀU KHIỂN 8-BIT 8051 ( 6 TIẾT) 25
2.1 Phần cứng của hệ vi điều khiển 8051 26
2.1.1 Sơ đồ khối chip 8051 26
2.1.2 Mô tả các chân của chip 8051 28
2.1.3 Cổng xuất nhập - Input/Output Ports (I/O Ports) 30
2.1.4 Tổ chức bộ nhớ 33
2.1.5 Memory expansion – Mở rộng bộ nhớ 36
2.1.6 Special Function Registers (SFRs)- Thanh ghi chức năng đặc biệt 38
2.2 Tóm tắt tập lệnh 42
2.2.1 Các lệnh số học (Arithmetic Instruction) : 42
2.2.2 Các hoạt động logic (Logic Operation) : 43
2.2.3 Các lệnh rẽ nhánh chương trình (lệnh nhảy) : 45
2.2.4 Các lệnh dịch chuyển dữ liệu : 48
2.2.5 Các lệnh luận lý (Boolean Instruction) : 49
2.2.6 Các lệnh xen vào (Miscellameous Instruction) : 50
2.3 Hoạt động định thời 51
2.3.1 Timer T0 – Bộ định thời T0 51
2.3.2 TMOD Register (Timer Mode) – Thanh ghi chọn chế độ định thời 52
2.3.3 Timer Control (TCON) Register - Thanh ghi điều khiển hẹn giờ (TCON) 57
Trang 52.4.1 Bộ đệm port nối tiếp (SBUF - Serial Data Buffer) 61
2.4.2 Điều khiển port nối tiếp SCON (Serial port control) 61
2.4.3 Các chế độ hoạt động: 63
2.4.4 Khởi động và truy xuất các thanh ghi cổng nối tiếp: 68
2.4.5 Tốc độ baud port nối tiếp: 70
2.5 Hoạt động ngắt 74
2.5.1 Giới thiệu chung: 74
2.5.2 Tổ chức ngắt của 8951: 75
2.5.3 Cho phép và cấm các ngắt : 76
2.5.4 Quyền ưu tiên của ngắt : 78
2.5.5 Các bit cờ ngắt 79
2.5.6 Các ngắt ngoài 79
2.5.7 Vận hành Step 80
CHƯƠNG 3 LẬP TRÌNH HỢP NGỮ TRÊN HỆ VI ĐIỀU KHIỂN 8051 ( 9 TIẾT) 82
3.1 Mô tả chi tiết các lệnh của hệ vi điều khiển 8051 83
3.1.1 Nhóm lệnh di chuyển dữ liệu 83
3.1.2 Nhóm lệnh số học 89
3.1.3 Nhóm lệnh lôgic học 95
3.1.4 Nhóm lệnh rẽ nhánh 100
3.1.5 Nhóm lệnh xử lý bít 112
3.2 Trình dịch hợp ngữ 114
3.2.1 Cú pháp của ngôn ngữ assembly 115
3.2.2 Numbers – Các con số 115
3.2.3 Operators – thực hiện 116
3.2.4 Symbol - biểu tượng 117
Ví dụ: các biểu tượng sau đây sẽ được coi là giống hệt nhau: 118
Serial_Port_Buffer 118
SERIAL_PORT_BUFFER 118
3.3 Khuôn dạng của chương trình hợp ngữ 118
3.3.1 Các thành phần cơ bản của ngôn ngữ Assembly: 118
3.3.2 Khuôn dạng của một dòng lệnh 119
3.3.3 Các quy ước trong tập lệnh 120
3.3.4 Một số chỉ dẫn thường gặp: 121
3.3.5 Các chế độ địa chỉ 122
3.3.6 Cấu trúc một chương trình hợp ngữ 124
Trang 63.6 Các điều khiển của trình dịch hợp ngữ 126
3.7 Hoạt động liên kết 127
3.8 Macro 127
3.9 Lập trình định thời 128
3.9.1 Khởi động và truy xuất các thanh ghi timer 128
3.9.2 Các bài toán về Timer 128
3.10 Lập trình cho port nối tiếp 131
3.10.1 Chương trình con phục vụ truyền thông nối tiếp 131
3.10.2 Truyền thông UART cho 8051 bằng phần mềm 131
3.11 Lập trình sử dụng ngắt 132
3.11.1 Dùng ngắt ngoài 132
3.11.2 Lập trình ngắt ngoài theo sườn xuống 134
CHƯƠNG 4 BỘ VI XỬ LÝ 16 BIT INTEL 8088/8086 ( 9 TIẾT) 136
4.1 Mở đầu: 137
4.1.1 Mô tả chức năng các chân 138
4.1.2 Các chế độ địa chỉ 139
4.2 Mô tả các tín hiệu 139
4.3 Tập thanh ghi 141
4.4 Khuôn dạng của lệnh 144
4.5 Tập lệnh 146
4.5.1 Giới thiệu chung 146
4.5.2 Các nhóm lệnh 146
4.6 Khả năng ngắt 164
4.7 Khả năng DMA 165
4.8 Xử lý tranh chấp bus 166
4.8.1 Chức năng và thông số của BUS 166
4.8.2 Trọng tài bus (bus arbitration) 168
4.9 Hoạt động ở chế độ min 170
4.10 Hoạt động ở chế độ max 170
CHƯƠNG 5 HỆ VI ĐIỀU KHIỂN 32-BIT MC68332 ( 9 TIẾT) 172
5.1 Mở đầu 173
5.2 Mô tả các tín hiệu 174
5.3 Mô-đun tích hợp hệ thống SIM (system integration module) 177
5.4 Đơn vị xử lý trung tâm CPU ( central processing unit) 179
5.5 Đơn vị xử lý thời gian TPU ( time processor unit ): 181
5.6 Mô-đun nối tiếp có hàng đợi QSM ( queued serial module ): 182
Trang 7CHƯƠNG 6 LẬP TRÌNH HỢP NGỮ TRÊN HỌ VI ĐIỀU KHIỂN 32-BIT MC68332 ( 9 TIẾT) 185
6.1 Mô tả chi tiết các lệnh của MC68332 186
6.1.1 Nhóm truyền dữ liệu: 186
6.1.2 Nhóm lệnh số học 187
6.1.3 Nhóm lệnh logic 188
6.1.4 Nhóm lệnh quay và dịch 189
6.1.5 Nhóm lệnh xử lý bit 190
6.1.6 Nhóm lệnh BCD 190
6.1.7 Nhóm lệnh điều khiển chương trình 191
6.1.8 Nhóm lệnh hệ thống 192
6.2 Trình dịch hợp ngữ 193
6.3 Khuôn dạng của chương trình hợp ngữ 194
6.4 Đánh giá biểu thức trong thời gian dịch 195
6.5 Các chỉ dẫn 195
6.6 Các điều khiển của trình dịch hợp ngữ 197
6.7 Hoạt động liên kết 198
6.8 Macro 199
6.9 Lập trình cho TPU 199
6.10 Lập trình xuất nhập 200
6.11 Lập trình cho QSM 201
6.11.1 Lập trình cho khối SCI 201
6.11.2 Lập trình khởi động cho khối QSPI 201
6.12 Lập trình cho TPURAM 201
6.13 Lập trình sử dụng ngắt 202
CHƯƠNG 7 CÁC VI MẠCH HỖ TRỢ VIỆC THIẾT KẾ HỆ THỐNG DỰA TRÊN CÁC HỌ TRÊN ( 6 TIẾT) 204
7.1 IC chuyển đổi tương tự sang số ADC 205
7.1.1 Vi mạch 0809 205
7.1.2 Vi mạch 0808 205
7.1.3 Ứng dụng 206
7.2 IC chuyển đổi số sang tương tự DAC 206
7.2.1 Vi mạch AD7524 206
7.2.2 Vi mạch DAC 0830 207
7.2.3 Ứng dụng 207
7.3 Vi mạch nhớ ROM 208
7.3.1 Các loại ROM đặc trưng 209
Trang 87.4 Vi mạch nhớ RAM 210
7.5 Vi mạch cổng đệm 212
7.6 Giải mã địa chỉ 213
CHƯƠNG 8 : THIẾT KẾ CÁC HỆ THỐNG ( 6 TIẾT) 214
8.1 Nguồn cung cấp – Reset 215
8.2 Xung đồng hồ 215
8.3 Thiết bị chuyển mạch 216
8.4 Giao tiếp với OPTOCOUPLER 216
8.5 Giao tiếp với Rơle 217
8.6 Mạch giao tiếp với Led đơn 218
8.7 Mạch giao tiếp với LED 7 thanh 219
8.8 Giao tiếp với màn hình tinh thể lỏng Liquid Crystal Displays (LCD) 221
8.9 Giao tiếp với RS232 225
8.10 Giao tiếp với bàn phím 226
Trang 9CHƯƠNG 1 : MÔ TẢ TỔNG QUÁT MỘT HỆ VI XỬ LÝ ( 6 TIẾT)
Trình bày sơ lược về lịch sử ra đời của hệ vi xử lý – vi điều khiển, biểu diễn sơ đồ khối tổng quát của một hệ thống điều khiển gồm các cấu trúc xử lý trung tâm CPU, bộ nhớ RAM/ROM, cổng vào /ra (IN/OUT), các đường BUS dữ liệu, địa chỉ
Nội dung chính chương 1 gồm các mục sau:
1.1 Giới thiệu bộ vi xử lý tổng quát
1.2 Sơ đồ khối của một hệ vi xử lý
1.3 Tổng quát về các vi mạch xuất nhập song song vă nối tiếp lập trình được
1.4 Hoạt động xuất nhập sử dụng các lệnh xuất nhập
1.5 Hoạt động xuất nhập sử dụng ngắt
1.6 Từ bộ vi xử lý đến bộ vi điều khiển
1.7 Sơ đồ khối tổng quát của bộ vi điều khiển
Trang 101.1 Giới thiệu bộ vi xử lý tổng quát
1.1.1 Các khái niệm
Vi xử lý - microprocessor (viết tắt là µP hay uP), đôi khi còn đƣợc gọi là bộ vi xử lý, là một
linh kiện điện tử đƣợc chế tạo từ các tranzito thu nhỏ tích hợp lên trên một vi mạch tích hợp đơn Khối xử lý trung tâm (CPU) là một bộ vi xử lý đƣợc nhiều nguời biết đến, ngoài ra nhiều thành phần khác trong máy tính cũng có bộ vi xử lý riêng của nó, ví dụ trên card màn hình
(video card) chúng ta cũng có một bộ vi xử lý
Truớ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 dó, 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ể
1.1.2 Lịch sử phát triển
Một hệ vi xử lý đƣợc gọi là một hệ thống bao gồm:
Ðơn vị nhập xuất: Ðƣợc sử dụng để nhập và xuất số liệu, dữ liệu
Ðơn vị xử lý: Xử lý các dữ liệu nhập vào, sau đó xuất ra các thiết bị
Bộ nhớ: Luu trữ thông tin, dữ liệu trong quá trình xử lý
Tất cả các thiết bị có các chức năng nhƣ vậy đều có thể đƣợc gọi là một hệ vi xử lý Máy vi tính là một hệ thống vi xử lý Một thành phần quan trọng trong hệ thống máy vi tính, đó là bộ
vi xử lý Trên thực tế, có rất nhiều hãng chế tạo bộ vi xử lý cho các máy vi tính nhƣ: IBM, Intel, Cyrix, AMD, Motorola Nhƣng thông dụng nhất vẫn là bộ vi xử lý của Intel
Các bộ vi xử lý của Intel đƣợc phát triển qua các thời kỳ nhƣ sau:
Thế hệ 1 (1971 - 1973): vi xử lý 4 bit, đại diện là 4004, 4040, 8080 (Intel) hay IPM-16
(National Semiconductor)
+ Ðộ dài word thuờng là 4 bit (có thể lớn hơn)
+ Tốc độ 10 - 60 µs / lệnh, với tần số xung nhịp 0.1 - 0.8 MHz
+ Tập lệnh don giản và phải cần nhiều vi mạch phụ trợ
Thế hệ 2 (1974 - 1977): vi xử lý 8 bit, đại diện là 8080, 8085 (Intel) hay Z80
Trang 11+ Tập lệnh phong phú hơn
+ Ðịa chỉ có thể đến 64 KB
+ Một số bộ vi xử lý có thể phân biệt 256 địa chỉ cho thiết bị ngoại vi
+ Sử dụng công nghệ NMOS hay CMOS
+ Tốc độ 1 - 8 µs / lệnh, với tần số xung nhịp 1 - 5 MHz
Thế hệ 3 (1978 - 1982): vi xử lý 16 bit, đại diện là 68000/68010 (Motorola) hay 8086/
80286/ 80386 (Intel)
+ Tập lệnh đa dạng với các lệnh nhân, chia và xử lý chuỗi
+ Ðịa chỉ bộ nhớ có thể từ 1 - 16 MB và có thể phân biệt tới 64KB địa chỉ cho ngoại vi
+ Sử dụng công nghệ HMOS
+ Tốc độ 0.1 - 1 µs / lệnh, với tần số xung nhịp 5 - 10 MHz
Thế hệ 4 (1985 - 1989): Vi xử lý 32 bit 68020/68030/68040/68060 (Motorola) hay 80386/
80486 (Intel) và vi xử lý 32 bit Pentium (Intel)
+ Bus địa chỉ 32 bit, phân biệt 4 GB bộ nhớ
+ Có thể dùng thêm các bộ đồng xử lý (coprocessor)
+ Có khả năng làm việc với bộ nhớ ảo
+ Có các cơ chế pipeline, bộ nhớ cache
+ Sử dụng công nghệ HCMOS
Thế hệ 5: vi xử lý 64 bit
Năm 1993, bộ vi xử lý Pentium ra đời với 64 bit dữ liệu, tốc độ xử lý 100MHz Sau đó là các
bộ vi xử lý Pentium Pro, Pentium II, Pentium III, Celeron, Pentium 4, hiện nay là các bộ vi xử
lý đa lõi (Multi Core )
Một bộ xử lý đa lõi chỉ đơn giản là một con chip duy nhất có chứa nhiều hơn một lõi vi xử lý Điều này có hiệu quả sẽ nhân tiềm năng hiệu suất của bộ vi xử lý bằng của số nhân (miễn là hệ điều hành và phần mềm đƣợc thiết kế để tận dụng lợi thế của nhiều hơn một lõi xử lý) Một số thành phần, chẳng hạn nhƣ giao diện bus và bộ nhớ cache, có thể đƣợc chia sẻ giữa hai lõi Vì các lõi có thể chất rất gần gũi với nhau, họ có thể giao tiếp với nhau nhanh hơn rất nhiều so với
bộ vi xử lý riêng biệt trong một hệ thống đa, giúp cải thiện hiệu năng hệ thống tổng thể
Năm 2005, bộ vi xử lý máy tính cá nhân đầu tiên lõi kép đã đƣợc công bố Năm 2012, bộ vi xử
lý dual-core và quad-core đƣợc sử dụng rộng rãi trong máy tính gia đình và máy tính xách tay
Trang 12trong khi bốn, sáu, tám, mười, mười hai và bộ vi xử lý mười sáu lõi là phổ biến trong thị trường chuyên nghiệp và doanh nghiệp với các máy trạm và máy chủ
Hình 1-1 Sơ đồ biều diễn lịch sử phát triển vi xử lý
1.1.3 Ứng dụng
Hàng ngàn mặt hàng truyền thống liên quan đến ứng dụng của bộ vi xử lý, chúng bao gồm các thiết bị lớn, nhỏ trong hộ gia đình, xe ô tô (và các thiết bị phụ kiện ), chìa khóa xe, công cụ và dụng cụ kiểm tra, đồ chơi, thiết bị chuyển mạch ánh sáng, điều chỉnh độ sáng và bộ phận ngắt mạch điện, thiết bị báo khói, các thành phần âm thanh hi-fi , hình ảnh (từ đầu máy DVD) Các sản phẩm như điện thoại di động, hệ thống video DVD và các hệ thống phát sóng truyền hình HDTV Tiêu chuẩn kiểm soát ô nhiễm ngày càng nghiêm ngặt đòi hỏi các nhà sản xuất ô tô sử dụng hệ thống quản lý động cơ vi xử lý, cho phép kiểm soát tối ưu lượng khí thải hơn trong điều kiện hoạt động của xe ô tô rất khác nhau
Ví dụ, một hệ thống điều khiển động cơ trong một chiếc ô tô có thể điều chỉnh thời điểm đánh lửa dựa trên tốc độ động cơ, tải trọng trên động cơ, nhiệt độ môi trường xung quanh, cho phép
xe ô tô hoạt động trên một phạm vi của lớp nhiên liệu
Trang 131.2 Sơ đồ khối của một hệ vi xử lý
Một máy tính cổ điển được xây dựng từ các khối sau:
Hình 1-2 Sơ đồ khối của một máy tính cổ điển ALU (Đơn vị logic số học): thực hiện các phép toán cho máy tính bao gồm: cộng, trừ , nhân,
chia, phép toán logic, …
Control (điều khiển): điều khiển, kiểm soát các đuờng dữ liệu giữa các thành phần của máy
tính
Memory (bộ nhớ): lưu trữ chương trình hay các kết quả trung gian
Input / Output (nhập / xuất): xuất nhập dữ liệu (còn gọi là thiết bị ngoại vi)
Một vi xử lý về cơ bản kiến trúc gồm những phần cứng sau:
Ðơn vị xử lý trung tâm CPU (Central Processing Unit)
Các bộ nhớ (Memories)
Các cổng vào/ra (song song (Parallel I/O Ports), nối tiếp (Serial I/O Ports))
Các bộ đếm/bộ định thời (Timers)
Hệ thống BUS (Ðịa chỉ, dữ liệu, điều khiển)
Ngoài ra với mỗi loại vi điều khiển có thể có thêm một số phần cứng khác như bộ biến đổi tương tự-số ADC, bộ biến đổi số-tương tự DAC, các mạch điều chế dạng sóng WG, điều chế
độ rộng xung PWM…
Bộ não của mỗi vi xử lý chính là CPU, các phần cứng khác chỉ là các cơ quan chấp hành duới quyền của CPU Mỗi cơ quan này đều có một cơ chế hoạt động nhất định mà CPU phải tuân theo khi giao tiếp với chúng
Trang 14Hình 1-3 Sơ đồ khối của bộ vi xử lý
Ðể có thể giao tiếp và điều khiển các cơ quan chấp hành (các ngoại vi), CPU sử dụng 3 loại tín hiệu cơ bản là tín hiệu địa chỉ (Address), tín hiệu dữ liệu (Data) và tín hiệu điều khiển (Control) Về mặt vật lý thì các tín hiệu này là các đuờng nhỏ dẫn diện nối từ CPU đến các ngoại vi hoặc thậm chí là giữa các ngoại vi với nhau Tập hợp các đuờng tín hiệu có cùng chức năng gọi là các BUS Nhƣ vậy ta có các bus địa chỉ, bus dữ liệu và bus điều khiển
1.2.1 Khối xử lý trung tâm (CPU)
CPU (central processing unit) có cấu tạo gồm có đơn vị xử lý số học và lôgic (ALU), các thanh ghi, các khối lôgic và các mạch giao tiếp Chức năng của CPU là tiến hành các thao tác tính toán xử lý, đƣa ra các tín hiệu địa chỉ, dữ liệu và điều khiển nhằm thực hiện một nhiệm vụ nào
đó do nguời lập trình đƣa ra thông qua các lệnh (Instructions)
1.2.2 Hệ thống bus
Bus địa chỉ - Address bus
Trang 15Là các đuờng tín hiệu song song 1 chiều nối từ CPU đến bộ nhớ Ðộ rộng bus: là số các duờng tín hiệu, có thể là 8, 18, 20, 24, 32 hay 64 CPU gửi giá trị địa chỉ của ô nhớ cần truy nhập (đọc/ghi) trên các đuờng tín hiệu này
Nếu CPU có n đuờng địa chỉ sẽ có thể địa chỉ hoá được 2n ô nhớ
Ví dụ: 1 CPU có 16 đuờng địa chỉ có thể địa chỉ hoá được 216 = 65.536 (64K) ô nhớ
Bus dữ liệu - Data bus
Ðộ rộng Bus: 4, 8, 16, 32 hay 64 bits là các đường tín hiệu song song 2 chiều, nhiều thiết bị khác nhau có thể được nối với bus dữ liệu; nhưng tại một thời điểm chỉ có 1 thiết bị duy nhất
có thể được phép đưa dữ liệu lên bus dữ liệu
Bất kỳ thiết bị nào được kết nối đến bus dữ liệu phải có đầu ra ở dạng 3 trạng thái, sao cho nó
có thể ở trạng thái treo (trở kháng cao) nếu không được sử dụng
Bus điều khiển - Control bus
Bao gồm 4 đến 10 đuờng tín hiệu song song CPU gửi tín hiệu ra bus điều khiển để cho phép các đầu ra của ô nhớ hay các cổng I/O đã được địa chỉ hoá Các tín hiệu điều khiển thuờng là: đọc/ ghi bộ nhớ - memory read, memory write, đọc/ ghi cổng vào/ra - I/O read, I/O write
Ví dụ: Đọc 1 byte dữ liệu từ ô nhớ sẽ cần đến các hoạt động sau:
CPU xác định địa chỉ của ô nhớ cần đọc lên bus địa chỉ
CPU đưa ra tín hiệu đọc bộ nhớ - Memory Read trên bus điều khiển
Tín hiệu điều khiển này sẽ cho phép thiết bị nhớ đã được địa chỉ hoá đưa byte dữ liệu lên bus dữ liệu Byte dữ liệu từ ô nhớ sẽ được truyền tải qua bus dữ liệu dến CPU
1.3 Tổng quát về các vi mạch xuất nhập song song/ nối tiếp
Như đã biết, trong các hệ thống truyền dữ liệu có hai cách đưa tín hiệu lên đường truyền: nối tiếp và song song Cách truyền song song thuờng được truyền trên một khoảng cách ngắn, ví
dụ giữa các thiết bị trong cùng một phòng như từ máy tính sang máy in Cách truyền nối tiếp thuờng duợc thực hiện khi khoảng cách truyền khá xa Ngoài ra, trong cách truyền nối tiếp, dựa vào cách thực hiện sự đồng bộ giữa nơi phát và thu ta có hai chế độ hoạt động: đồng bộ và bất đồng bộ Trong chế độ bất dồng bộ, xung đồng hồ được tạo ra một cách riêng rẽ ở máy phát và máy thu dựa vào tần số danh định tương ứng với vận tốc truyền (bit rate hoặc baud rate) Trong chế độ đồng bộ, nơi phát có thể gửi xung đồng hồ tới nơi thu theo một kênh truyền song
Trang 16song với kênh truyền dữ liệu hoặc nơi thu tự tạo ra xung đồng hồ bằng cách tách tín hiệu thời gian từ dòng dữ liệu Chúng ta sẽ khảo sát vài IC thực hiện chức năng biến đổi song song nối tiếp trong các thiết bị thu phát
Truớc đây việc thu phát bất đồng bộ đƣợc thiết kế dựa trên các IC loại SSI và MSI Ví dụ, để tạo và kiểm tra chẵn lẻ, nguời ta có thể dùng các cổng EX-OR
Hiện nay sự phát triển của công nghệ chế tạo IC cho phép sử dụng các vi mạch LSI để thực hiện các chức năng thu phát thỏa mãn giao thức truyền bất đồng bộ Duới đây giới thiệu vài IC
thu phát bất đồng bộ (Universal Asynchronous Receiver,Transmitter, UART) hoặc IC điều hợp giao tiếp thông tin bất đồng bộ (Asynchronous Communication Interface Adapter, ACIA), đó
là các IC:- UART 6402 của Intersil - ACIA 6850 của Motorola - USART 8251A của Intel
IC 74HC595 có thể sử dụng giao tiếp với vi điêu khiển vào nối tiếp ra song song
-Kết nối mạch
+ Đầu vào: Cần 3 chân vào điều khiển SCK, RCK, CLR; 01 chân vào dữ liệu SDI 04 chân này nối với vi điều khiển
+ Đầu ra: xuất ra 8 bít – ví dụ 8 chân Out nối đến 8 Led
Hình 1-4 Sơ đồ chân và sơ đồ kết nối vi điều khiển của IC 74HC595
Trang 17- Hoạt động:
1 Áp 1 bit dữ liệu đầu tiên vào chân SDI
2 Tạo 1 cạnh xung lên tại chân SCK để dịch bit này vào chốt của IC595
3 Lại áp bit dữ liệu kế tiếp vào SDI, lại tạo xung lên tại SCK
Lặp lại 8 lần để dịch hết 8 bít dữ liệu vào chốt IC595
4 Cuối cùng tạo 1 cạnh xung lên tại chân RCK để xuất dữ liệu ra 8 chân Out
Để hiểu rõ hơn về hoạt động của IC 74HC595 ta cần xem qua bảng chức năng sơ đồ chân
Bảng 1.1: Chức năng các chân IC 74HC595
Ví dụ : Để truyền dữ liệu 8 bit nhị phân 10001101 (0x8E) từ khối chủ (master ) đến khối tớ
(Slave) đồng thời khối tớ cũng muốn chuyển dữ liệu nhị phân 8 bit 00110010 (0x32) đến khối chủ, bằng cách nối chân CS (chip select) xuống GND
Trang 18Hình 1-5 Sơ đồ biểu diễn hoạt động truyền bit của 74HC595
1.4 Hoạt động xuất nhập
1.4.1 Thiết bị ngoại vi có địa chỉ tách rời với bộ nhớ
Trong cách giao tiếp này, bộ nhớ dùng toàn bộ không gian nhớ Các thiết bị ngoại vi sẽ có một không gian nhỏ hơn cho mỗi loại cổng Trong kiểu giao tiếp này, ta phải dùng tín hiệu IO/M và các lệnh trao đổi dữ liệu thích hợp
Bộ nhớ: IO/M = 0, dùng lệnh MOV
Ngoại vi: IO/M = 1, dùng lệnh IN (nhập) hay OUT (xuất)
1.4.2 Thiết bị ngoại vi và bộ nhớ có chung không gian địa chỉ
Trong kiểu giao tiếp này, thiết bị ngoại vi sẽ chiếm một vùng nào đó trong không gian bộ nhớ
và ta chỉ dùng lệnh MOV để thực hiện trao đổi dữ liệu
1.4.3 Giải mã địa chỉ cho thiết bị I / O
Việc giải mã địa chỉ cho thiết bị ngoại vi cũng tương tự với việc giải mã địa chỉ cho bộ nhớ Thông thuờng, các cổng có địa chỉ 8 bit A0 – A7 Tuy nhiên, trong một số hệ vi xử lý, các cổng
sẽ có địa chỉ 16 bit Ta có thể dùng mạch NAND để tạo tín hiệu chọn cổng nhưng mạch này
Trang 19chỉ có thể giải mã cho 1 cổng Trong truờng hợp cần nhiều tín hiệu chọn cổng, ta có thể dùng
bộ giải mã 74LS138 dể giải mã cho 8 cổng khác nhau
Hình 1-6 Giải mã cho cổng ngỏ vào dùng 74LS138
Hình 1-7 Mạch giải mã cổng ngỏ ra dùng 74LS138
Một chương trình chính không có ngắt thì chạy liên tục, còn chương trình có ngắt thì cứ khi nào điều kiện ngắt được đảm bào, thì con trỏ sẽ nhảy sang hàm ngắt, thực hiện xong hàm ngắt lại quay về đúng chỗ cũ và thực hiện tiếp chương trình ví dụ : Bạn đang ngồi đọc sách, bỗng nhiên có tiếng điện thoại reng, bạn ngưng đọc sách để ra nghe điện thoại , nghe xong lại quay
về đọc sách tiếp Thì quá trình đọc sách của bạn là chương trình chính,có điện thoại gọi đến là điều kiện ngắt, bạn ra nghe diện thoại là thực hiện chương trình ngắt (Interrupt Service Rountine),quay về đọc sách tiếp là tiếp tục thực hiện chương trình chính
Có nhiều loại ngắt khác nhau nhưng tất cả đều có chung 1 đặc điểm, ngắt dùng cho mục đích
đa nhiệm Các bạn nhìn vào tiến trình của hàm main với chương trình có ngắt :
Trang 20Hình 1-8 Chương trình ngắt theo thời gian
Chương trình chính đang chạy, ngắt xảy ra, thực hiện hàm ngắt rồi quay lại chương trình chính Chương trình trong vi điều khiển khác với ví dụ đọc sách nghe điện thoại ở trên là thời gian thực hiện hàm chính là rất lớn, thời gian thực hiện hàm ngắt là rất nhỏ, cho nên thời gian thực thi hàm ngắt không ảnh huởng nhiều lắm đến chức năng hàm chính Như vậy trong hàm ngắt chúng ta làm 1 việc, trong hàm chính chúng ta làm 1 việc, như vậy coi như chúng ta làm được
2 việc (đa nhiệm) trong 1 khoảng thời gian tương đối ngắn cở mS, thực ra thì tại 1 thời điểm vi điều khiển chỉ thực thi 1 lệnh
Ví dụ : Bạn thử nghĩ xem làm thế nào để vừa điều chế xung PWM để điều chỉnh tốc độ động
cơ, vừa đọc các cảm biến đầu vào mà tốc độ động cơ phụ thuộc đầu vào cảm biến
Trang 21hợp, các ngoại vi cũng được tích hợp vào bên trong IC và nguờ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‖
Hình 1-9 So sánh giữa vi xử lý và vi điều khiển
Vi xử lý có các khối chức năng cần thiết để lấy dữ liệu, xử lý dữ liệu và xuất dữ liệu ra ngoài sau khi đã xử lý Và chức năng chính của Vi xử lý chính là xử lý dữ liệu, chẳng hạn nhu cộng, trừ, nhân, chia, so sánh.v.v Vi xử lý không có khả năng giao tiếp trực tiếp với các thiết bị ngoại vi, nó chỉ có khả năng nhận và xử lý dữ liệu mà thôi
Ðể vi xử lý hoạt động cần có chương trình kèm theo, các chương trình này điều khiển các mạch logic và từ dó vi xử lý xử lý các dữ liệu cần thiết theo yêu cầu Chương trình là tập hợp các lệnh để xử lý dữ liệu thực hiện từng lệnh được luu trữ trong bộ nhớ, công việc thực hành lệnh bao gồm: nhận lệnh từ bộ nhớ, giải mã lệnh và thực hiện lệnh sau khi đã giải mã
Ðể thực hiện các công việc với các thiết bị cuối cùng, chẳng hạn điều khiển động cơ, hiển thị kí
tự trên màn hình đòi hỏi phải kết hợp vi xử lý với các mạch điện giao tiếp với bên ngoài được gọi là các thiết bị I/O (nhập/xuất) hay còn gọi là các thiết bị ngoại vi Bản thân các vi xử
lý khi đứng một mình không có nhiều hiệu quả sử dụng, nhưng khi là một phần của một máy tính, thì hiệu quả ứng dụng của Vi xử lý là rất lớn Vi xử lý kết hợp với các thiết bị khác được
sử dụng trong các hệ thống lớn, phức tạp đòi hỏi phải xử lý một luợng lớn các phép tính phức
Trang 22tạp, có tốc dộ nhanh Chẳng hạn như các hệ thống sản xuất tự động trong công nghiệp, các tổng đài điện thoại, hoặc ở các robot có khả năng hoạt động phức tạp v.v
Bộ Vi xử lý có khả năng vuợt bậc so với các hệ thống khác về khả năng tính toán, xử lý, và thay đổi chương trình linh hoạt theo mục đích nguời dùng, đặc biệt hiệu quả đối với các bài toán và hệ thống lớn Tuy nhiên đối với các ứng dụng nhỏ, tầm tính toán không đòi hỏi khả năng tính toán lớn thì việc ứng dụng vi xử lý cần cân nhắc Bởi vì hệ thống dù lớn hay nhỏ, nếu dùng vi xử lý thì cũng đòi hỏi các khối mạch điện giao tiếp phức tạp như nhau Các khối này bao gồm bộ nhớ để chứa dữ liệu và chương trình thực hiện, các mạch điện giao tiếp ngoại vi để xuất nhập và điều khiển trở lại, các khối này cùng liên kết với vi xử lý thì mới thực hiện được công việc Ðể kết nối các khối này đòi hỏi nguời thiết kế phải hiểu biết tinh tuờng về các thành phần vi xử lý, bộ nhớ, các thiết bị ngoại vi Hệ thống được tạo ra khá phức tạp, chiếm nhiều không gian, mạch in phức tạp và vấn đề chính là trình độ nguời thiết kế Kết quả là giá thành sản phẩm cuối cùng rất cao, không phù hợp để áp dụng cho các hệ thống nhỏ
Vì một số nhược điểm trên nên các nhà chế tạo tích hợp một ít bộ nhớ và một số mạch giao tiếp ngoại vi cùng với vi xử lý vào một IC duy nhất được gọi là Microcontroller-Vi điều khiển
Vi điều khiển có khả năng tương tự như khả năng của vi xử lý, nhưng cấu trúc phần cứng dành cho nguời dùng đơn giản hơn nhiều Vi điều khiển ra dời mang lại sự tiện lợi đối với nguời dùng, họ không cần nắm vững một khối luợng kiến thức quá lớn như nguời dùng vi xử lý, kết cấu mạch điện dành cho nguời dùng cũng trở nên đơn giản hơn nhiều và có khả năng giao tiếp trực tiếp với các thiết bị bên ngoài Vi điều khiển tuy được xây dựng với phần cứng dành cho nguời sử dụng đơn giản hơn, nhưng thay vào lợi điểm này là khả năng xử lý bị giới hạn (tốc dộ
xử lý chậm hơn và khả năng tính toán ít hơn, dung luợng chương trình bị giới hạn) Thay vào
đó, Vi điều khiển có giá thành rẻ hơn nhiều so với vi xử lý, việc sử dụng đơn giản, do dó nó được ứng dụng rộng rãi vào nhiều ứng dụng có chức năng đơn giản, không đòi hỏi tính toán phức tạp Vi diều khiển được ứng dụng trong các dây chuyền tự dộng loại nhỏ, các robot có chức năng đơn giản, trong máy giặt, ôtô v.v
Năm 1976 Intel giới thiệu bộ vi điều khiển (microcontroller) 8748, một chip tương tự như các
bộ vi xử lý và là chip đầu tiên trong họ MCS-48 Ðộ phức tạp, kích thuớc và khả năng của Vi điều khiển tăng thêm một bậc quan trọng vào năm 1980 khi intel tung ra chip 8051, bộ Vi diều khiển đầu tiên của họ MCS-51 và là chuẩn công nghệ cho nhiều họ Vi điều khiển được sản
Trang 23xuất sau này Sau đó rất nhiều họ Vi diều khiển của nhiều nhà chế tạo khác nhau lần luợt được đưa ra thị trường với tính năng được cải tiến ngày càng mạnh
1.7 Sơ đồ khối tổng quát của bộ vi điều khiển
Một vi điều khiển (đôi khi viết tắt μC, uC hoặc MCU) là một máy tính nhỏ trên một mạch tích hợp duy nhất có chứa một lõi xử lý, bộ nhớ, và đầu vào / đầu ra thiết bị ngoại vi lập trình Bộ nhớ chương trình theo hình thức NOR flash hoặc OTP ROM cũng thường bao gồm trên chip, cũng như một số lượng nhỏ bộ nhớ RAM
Hình 1-10 Hình dạng của vi điều khiển PIC
Vi điều khiển được thiết kế cho các ứng dụng nhúng, trái ngược với các bộ vi xử lý được sử dụng trong máy tính cá nhân hoặc các ứng dụng mục đích khác nói chung Một bộ vi điều khiển cơ bản có sơ đồ khối như sau
Hình 1-11 Sơ đồ khối cơ bản của vi điều khiển
Trang 24 CPU xử lý từ đơn giản 4 bit đến phức tạp hơn 64 bit
Mạch định thời, đếm sự kiện và watch dog
RAM lưu dữ liệu, dữ liệu lưu trong kho dưới dạng các thanh ghi và các phép toán ALU
ROM, EPROM, EEPROM hay bộ nhớ Flash lưu trữ các chương trình hay thông số
Chương trình thực hiện có thể là Assembly, C, C++, Basic và Pascal
Ngõ vào ra nối tiếp cũng như Port nối tiếp
Tín hiều tạo xung đồng hồ có thể là dao động thạch anh hoặc mạch RC tạo xung vuông
Các Port nối tiếp
Các Bus dữ liệu mang thông tin
Trang 25CHƯƠNG 2 HỆ VI ĐIỀU KHIỂN 8-BIT 8051 ( 6 TIẾT)
MSC-51 là một họ IC vi điều khiển (microcontroller), được phát triển chế tạo và bán ở thị trường bởi hãng INTEL của Mỹ Các nhà chế tạo IC khác như SIEMENS của Đức, ADVANCED MICRO DEVICES, FUJITSU của Nhật và PHILIPS của Hà Lan là các nhà cung cấp thiết bị trong họ MSC-51 được cấp giấy bản quyền thứ hai, hãng ALMEL cũng là một hãng được cấp bản quyền và sản phẩm 8951, 8952 là hai IC tiêu biểu trong thiết kế của họ
Nội dung chính chương 2
Cấu trúc phần cứng của chip 8051
Các thành phần bên trong và các thiết bị ngoại vi
Thu phát nối tiếp UART
Lý do chính cho sự thành công tuyệt vời của họ là một sự lựa chọn cấu hình khéo léo, đáp ứng nhu cầu khác nhau của một số lượng lớn cho phép người dùng mở rộng liên tục tại cùng một thời điểm (đề cập đến các loại mới của vi điều khiển) Bên cạnh đó, phần mềm đã được phát triển và đơn giản để thay đổi bất cứ điều gì trong cốt lõi cơ bản của vi điều khiển Đây là lý do cho việc có một số lượng lớn các vi điều khiển khác nhau mà cơ bản là chỉ nâng cấp phiên bản của họ 8051
Điều gì làm cho vi điều khiển này rất đặc biệt và phổ quát để gần như tất cả các nhà sản xuất trên toàn thế giới ngày nay sản xuất dưới những tên gọi khác nhau?
Trang 262.1 Phần cứng của hệ vi điều khiển 8051
Intel 8051 — là vi điều khiển đơn tinh thể với kiến trúc Harvard, lần đầu tiên được sản xuất bởi Intel năm 1980, để dùng trong các hệ thống nhúng Trong những năm 1980 và đầu những năm
1990 đã rất nổi tiếng Tuy nhiên hiện tại đã cũ và được thay thế bằng các thiết bị hiện đại hơn, với các lõi phối hợp 8051, được sản xuất bởi hơn 20 nhà sản xuất độc lập, như Atmel, Maxim
IC (công ty con của Dallas Semiconductor), NXP Semiconductors (Philips Semiconductor trước đây), Winbond, Silicon Laboratories, Texas Instruments và Cypress Semiconductor Tên gọi chính thức của họ vi điều khiển Intel 8051 — MCS 51
Những vi điều khiển Intel 8051 được sản xuất với việc dùng công nghệ MOSFET, những bản sau, chứa kí hiệu «C» trong tên, như 80C51, dùng công nghệ CMOS và yêu cầu công suất thấp, hơn những cái MOSFET trước (điều này cho phép trang bị cho các thiết bị với nguồn là pin)
MCS – 51 chính là một hệ thống vi xử lý hoàn chỉnh bao gồm các các thành phần của hệ vi xử lý: CPU, bộ nhớ, các mạch giao tiếp, điều khiển ngắt MCS-51 bao gồm nhiều vi điều khiển khác nhau, bộ vi điều khiển đầu tiên là 8051 có 4KB ROM, 128 byte RAM và 8031không có ROM nội, phải sử dụng bộ nhớ ngoài MCS-51 bao gồm nhiều phiên bản khác nhau, mỗi phiên bản sau thêm một số thanh ghi điều khiển hoạt động
2.1.1 Sơ đồ khối chip 8051
Kiến trúc cơ bản bên trong 8051 bao gồm các đặt tính sau:
o Một ALU 8-bit, một thanh tích lũy và một thanh ghi 8-bit, do đó nó là một vi điều khiển 8-bit
o Bus dữ liệu 8-bit - có thể truy cập 8 bits dữ liệu trong một hoạt động
o Bus địa chỉ 16-bit - có thể truy cập 2 16 vị trí nhớ, 64kB cho mỗi bộ nhớ RAM và ROM
o RAM trên chip - 128 bytes (bộ nhớ dữ liệu)
o ROM trên chip - 4 kbytes (bộ nhớ chương trình)
o 32 chân I/O riêng biệt (4 nhóm mỗi nhóm 8 chân I/O) có thể được truy cập riêng rẽ
o Hai bộ định thời/đếm 16-bit
o Đơn vị thu/phát bất đồng bộ phổ biến UART hoàn toàn song công
o Sáu nguyên nhân ngắt với 2 mức ưu tiên
Trang 27o Chế độ tiết kiệm năng lượng (trên 1 số phiên bản)
Hình 2-1 Sơ đồ khối bên trong của chip 8051
Khối xử lý trung tâm CPU nhận tín hiệu từ xung nhịp của bộ dao động, tần số ra của bộ dao động phụ thuộc vào tần số dao động của thạch anh bên ngoài thường dùng 12MHz Bộ vi điều khiển có bộ nhớ RAM trong là 128byte, các thanh ghi thông thường năm trong RAM ngoài ra còn có bộ nhớ ROM để lưu các chương trình lên đến 4Kbyte Bộ điều khiển BUS cung cấp các tín hiệu điều khiển giao tiếp với bên ngoài và kiểm soát hoạt động các cổng vào ra dữ liệu song song Hai trong 4 cổng vào ra song song (Port 0 và Port 2) có thể dùng làm Bus địa chỉ và Bus
dữ liệu khi giao tiếp bên ngoài Cổng vào ra nối tiếp có hai đường truyền và cũng nhận dữ liệu nối tiếp từ các thiết bị khác Bộ điều khiển ngắt tích hợp trong chip cho phép nhận hai yêu cầu ngắt cung cấp thẳng từ bên ngoài hoặc từ cổng nối tiếp và các bộ định thời từ bên trong
Trang 282.1.2 Mô tả các chân của chip 8051
Chip 8051 có tất cả 40 chân có chức năng như các đường xuất nhập Trong đó có 24 chân có công dụng kép, mỗi đường có thể hoạt động như đường xuất nhập hoặc như đường điều khiển hoặc là thành phần của bus dữ liệu và bus địa chỉ
Là IC đóng vỏ dạng DIP có 40 chân, mỗi chân có một kí hiệu tên và có các chức năng như sau:
Hình 2-2 Sơ đồ chân của chip 8051 Pins 1-8: Port 1 : Mỗi một trong các chân có thể được cấu hình như một đầu vào hoặc đầu ra Pin 9: RS: Mức logic 1 trên chân này sẽ vô hiệu hóa các vi điều khiển và xóa nội dung của
hầu hết các thanh ghi Nói cách khác, điện áp tích cực trên chân này sẽ reset vi điều khiển Bằng cách áp dụng mức logic 0 ở chân này, chương trình bắt đầu thực hiện từ đầu
Pins10-17: Port 3: Tương tự như cổng 1, mỗi chân có thể phục vụ như là đầu vào hay đầu ra
chung Bên cạnh đó, chúng còn có chức năng khác
Trang 29Pin 10: RXD Nhận tín hiệu thông tin nối tiếp không đồng bộ
Pin 11: TXD Truyền xung thông tin nối tiếp không đồng bộ
Pin 12: INT0 Interrupt 0 input: ngắt ngoài 0
Pin 13: INT1 Interrupt 1 input: ngắt ngoài 1
Pin 14: T0 Counter 0 clock input: Chân vào 0 của bộ timer/counter 0
Pin 15: T1 Counter 1 clock input: Chân vào 1 của bộ timer/counter 1
Pin 16: WR Write to external (additional) RAM: Ghi dữ liệu vào bộ nhớ RAM ngoài
Pin 17: RD Read from external RAM: Đọc dữ liệu từ bộ nhớ RAM ngoài
Pin 18, 19: X2, X1 Internal oscillator input and output: Đầu vào, ra bộ dao động nội, Một tinh
thể thạch anh tần số hoạt động xác định thường được kết nối với các chân này Thay vì đó, mạch cộng hưởng cũng có thể được sử dụng cho sự ổn định tần số Trong các phiên bản sau của vi điều khiển hoạt động ở tần số từ 0 Hz lên đến hơn 50 Hz
Pin 20: GND Ground: Chân nguồn nối đất GND
Pin 21-28: Port 2 Nếu không có ý định sử dụng bộ nhớ bên ngoài thì các chân cổng được cấu
hình như đầu vào / đầu ra chung Trong trường hợp sử dụng bộ nhớ bên ngoài, địa chỉ byte cao hơn, tức là địa chỉ A8-A15 sẽ xuất hiện trên cổng này Mặc dù bộ nhớ với dung lượng 64Kb không được sử dụng, không có nghĩa là tất cả tám bit cổng được sử dụng để làm địa chỉ như là đầu vào / đầu ra
Pin 29: PSEN Nếu ROM bên ngoài được sử dụng để lưu trữ chương trình khi đó mức logic (0) xuất hiện trên nó mỗi khi vi điều khiển đọc một byte từ bộ nhớ
Trang 30Pin 30: ALE Trước khi đọc từ bộ nhớ ngoài, vi điều khiển đặt các byte địa chỉ thấp hơn
(A0-A7) trên P0 và kích hoạt đầu ra ALE Sau khi nhận được tín hiệu từ chân ALE, thanh ghi bên ngoài (thường là 74HCT373 hoặc 74HCT375 tiện ích trên chip) ghi nhớ những trạng thái của P0 và sử dụng nó như là một địa chỉ chip nhớ Ngay sau đó, chân ALU được trả về trạng thái logic trước đó và P0 đang sử dụng như một Bus dữ liệu Như đã thấy, cổng ghép kênh dữ liệu được thực hiện bằng phương pháp mạch tích hợp Nói cách khác, cổng này được sử dụng cho
cả truyền dữ liệu và địa chỉ
Pin 31: EA Bằng cách áp dụng mức logic 0 cho chân này, P2 và P3 dùng để truyền dữ liệu và
địa chỉ cho dù có bộ nhớ trong hay không Điều này có nghĩa là một chương trình ghi vào vi điều khiển, sẽ không được thực thi Thay vào đó, các chương trình ghi vào ROM bên ngoài sẽ được thực hiện Bằng cách áp dụng mức logic 1 với pin EA, vi điều khiển sẽ sử dụng cả hai bộ nhớ, lần đầu tiên nội bộ sau đó bên ngoài (nếu có)
Pin 32-39: Port 0 Tương tự như P2, nếu bộ nhớ bên ngoài không được sử dụng, các chân được
sử dụng như đầu vào / đầu ra chung Nếu không, P0 được định cấu hình như đầu ra địa chỉ A7) khi chân ALE được thúc mức cao (1) hoặc như dữ liệu đầu ra (Bus dữ liệu) khi chân ALE được thúc mức thấp (0)
(A0-Pin 40: VCC +5V power supply: chân cấp nguồn +5V
2.1.3 Cổng xuất nhập - Input/Output Ports (I/O Ports)
Tất cả vi điều khiển 8051 có cấu hình 4 cổng I / O mỗi bộ gồm 8 bit có đầu vào hay đầu ra Theo đó, trong tổng số 32 chân đầu vào / đầu ra tạo điều kiện cho vi điều khiển được kết nối với các thiết bị ngoại vi có sẵn để sử dụng
Trang 31Hình 2-3 Mạch điện cổng vào ra
Để đặt một chân vi điều khiển như một đầu vào, cần áp dụng mức logic (0) để chiếm cổng I / O bit Trong trường hợp này, mức điện áp trên chân thích hợp sẽ là 0
Hình 2-4 Mạch điện chân ngỏ ra
Trang 32Tương tự như vậy, cấu hình một chân vi điều khiển như một đầu vào, cần áp dụng mức logic (1) đến cổng thích hợp Trường hợp này, mức điện áp trên chân phù hợp sẽ là 5V ( với mọi đầu vào TTL)
Port 0 :
- Chức năng I/O (xuất/nhập): dùng cho các thiết kế nhỏ Tuy nhiên, khi dùng chức năng này thì Port 0 phải dùng thêm các điện trở kéo lên (pull-up
Hình 2-5 Mạch ngỏ ra P0 với điện trở kéo lên
- Khi dùng làm ngõ vào, Port 0 phải được set mức logic 1 truớc đó
- Chức năng địa chỉ / dữ liệu đa hợp: khi dùng các thiết kế lớn, đòi hỏi phải sử dụng bộ nhớ ngoài thì Port 0 vừa là bus dữ liệu (8 bit) vừa là bus địa chỉ (8 bit thấp)
Hình 2-6 Mạch điện ngỏ vào P0
- Trong trường hợp P0 được sử dụng để giải quyết bộ nhớ bên ngoài, vi điều khiển sẽ cung cấp nguồn cung cấp điện bên trong để cung cấp chân của nó với logic một Không cần phải có thêm bên ngoài điện trở kéo lên
Port 1:
Trang 33P1 là một cổng I / O thật sự, bởi vì nó không có bất kỳ chức năng nào khác như trường hợp với P0 Nó có một điện trở kéo lên được bên trong và hoàn toàn tương thích với các mạch TTL
Port 2:
P2 hoạt động tương tự như P0 khi bộ nhớ bên ngoài được sử dụng Chân của cổng này chiếm giữ các địa chỉ dành cho chip bộ nhớ bên ngoài, với các byte địa chỉ cao hơn địa chỉ A8-A15 Khi không có bộ nhớ được thêm vào, cổng này có thể được sử dụng như một cổng đầu vào / đầu ra chung cho thấy các tính năng tương tự như P1
Port 3:
Tất cả các chân cổng có thể được sử dụng như I / O chung, nhưng cũng có một chức năng thay thế Để sử dụng các chức năng này thay thế, một logic một (1) phải được áp dụng cho bit thích hợp thanh ghi P3 Trong hệ thống phần cứng, cổng này cũng tương tự như P0, với sự khác biệt
là chân của nó có điện trở kéo lên được xây dựng bên trong
Giới hạn dòng điện của chân
Khi cấu hình là đầu ra (logic (0)), chân cổng đơn lẻ có thể nhận được một dòng 10mA Nếu tất
cả 8 bit của một cổng đang hoạt động, tổng cộng dòng phải được giới hạn 15mA (cổng P0: 26mA) Nếu tất cả các cổng (32 bit) đang hoạt động, tổng số dòng điện tối đa phải được giới hạn 71mA Khi các chân này được cấu hình như đầu vào (logic 1), được xây dựng với điện trở kéo lên cung cấp dòng rất yếu kém, nhưng đủ mạnh để kích hoạt lên đến 4 đầu vào TTL của loạt LS
vi điều khiển 8051có địa chỉ 16-bit và có khả năng giải quyết vấn đề bộ nhớ 64 kb
Trang 34Các mô hình đầu tiên của vi điều khiển họ 8051 không có chương trình bộ nhớ nội bộ Nó đã được thêm vào như là một chip riêng biệt bên ngoài Những mô hình này được nhận biết bởi nhãn hiệu đầu là 803 (ví dụ 8031 hoặc 8032) Các mô hình sau nhúng một vài Kbyte ROM
Program Memory - Bộ nhớ chương trình
Vi điều khiển xử lý bộ nhớ bên ngoài thế nào tùy thuộc vào trạng thái chân logic EA?
Hình 2-7 Điều khiển bộ nhớ theo trạng thái logic chân EA
EA = 0 Trong trường hợp này, vi điều khiển hoàn toàn bỏ qua chương trình bộ nhớ nội và chỉ thực hiện chương trình được lưu trữ trong bộ nhớ bên ngoài
EA = 1 Trong trường hợp này, đầu tiên vi điều khiển thực hiện các chương trình xây dựng từ trong ROM, sau đó chương trình được lưu trữ trong bộ nhớ bên ngoài
Trang 35 Data Memory: Bộ nhớ dữ liệu
Hình 2-8 Vùng phân bố địa chỉ nhớ RAM
Trang 36Như đã đề cập, bộ nhớ dữ liệu được sử dụng để lưu trữ tạm thời dữ liệu và kết quả trung gian tạo ra và sử dụng trong các hoạt động của vi điều khiển Bên cạnh đó, bộ nhớ RAM được xây dựng họ 8051 phần cứng bao gồm nhiều thanh ghi như bộ đếm và tính giờ, cổng vào / ra, bộ đệm dữ liệu nối tiếp vv các model trước đã có RAM 256, trong khi đối với các mô hình sau con
số này đã tăng thêm 128 thanh ghi Tuy nhiên, 256 vị trí bộ nhớ đầu tiên (địa chỉ 0-FFh) là trung tâm của bộ nhớ chung cho tất cả các mô hình thuộc các họ 8051 Một phần của bộ nhớ RAM được chia thành nhiều khối
Khối đầu tiên bao gồm 4 bank mỗi bank gồm 8 thanh ghi ký hiệu R0-R7 Trước khi truy cập vào bất kỳ thanh ghi này, cần thiết lựa chọn các banhk có chứa nó
Khối bộ nhớ tiếp theo (địa chỉ 20h-2Fh) là bit địa chỉ, có nghĩa là mỗi bit có địa chỉ riêng của
nó (0-7Fh) Vì có 16 thanh ghi như vậy, khối này có tổng số 128 bit với địa chỉ riêng biệt (địa chỉ của bit 0 của byte 20h là 0, trong khi địa chỉ của bit 7 của byte 2Fh là 7Fh)
Nhóm thứ ba của thanh ghi địa chỉ chiếm 2Fh-7Fh, tức là 80 vị trí nhớ, và không có bất kỳ chức năng hoặc các tính năng đặc biệt
Để thỏa mãn sự thiếu hụt liên tục bộ nhớ dữ liệu của các lập trình viên, các nhà sản xuất quyết định nhúng một khối bộ nhớ bổ sung của 128 vị trí vào các phiên bản mới nhất của 8051 vi điều khiển Tuy nhiên, nó không phải là đơn giản có vẻ vấn đề là thiết bị điện tử thực hiện việc giải quyết có 1 byte (8 bit) về việc xử lý và có khả năng đạt chỉ có 256 vị trí đầu tiên, do đó Để giữ cho kiến trúc 8-bit đã tồn tại và khả năng tương thích với các mô hình khác hiện có một thủ thuật nhỏ đã được thực hiện
Có nghĩa là gì? Nó có nghĩa là khối bộ nhớ bổ sung chia sẻ cùng một địa chỉ với vị trí dành cho các SFR (80h-FFh) Để phân biệt giữa hai không gian bộ nhớ vật lý tách biệt, cách khác nhau
để giải quyết được sử dụng Các vị trí nhớ SFR có thể được truy cập bằng cách trực tiếp giải quyết, trong khi vị trí bộ nhớ RAM bổ sung được truy cập bằng địa chỉ gián tiếp
2.1.5 Memory expansion – Mở rộng bộ nhớ
Trong trường hợp bộ nhớ (RAM hoặc ROM) được xây dựng trong các vi điều khiển là không
đủ, có thể để thêm hai chip bộ nhớ ngoài với dung lượng mỗi bộ 64Kb Cổng I / O của P2 và P3 được sử dụng để giải quyết vấn đề và truyền dữ liệu
Trang 37Tất cả mọi thứ hoạt động khá đơn giản khi kết nối đúng bởi vì hầu hết các hoạt động được thực hiện bởi chính vi điều khiển Vi điều khiển 8051 có hai chân cho dữ liệu đọc RD # (P3.7) và PSEN # Chân đầu tiên được sử dụng để đọc dữ liệu từ bộ nhớ dữ liệu bên ngoài (RAM), trong khi chân còn lại được sử dụng để đọc dữ liệu từ bộ nhớ chương trình bên ngoài (ROM) Cả hai chân hoạt động mức thấp Một ví dụ điển hình của việc mở rộng bộ nhớ bằng cách bổ sung thêm RAM và chip ROM (kiến trúc hardward), được hiển thị trong hình trên
Khi chương trình trong quá trình thực thi mà gặp một chỉ dẫn nằm trong bộ nhớ bên ngoài (ROM), vi điều khiển sẽ kích hoạt kiểm soát đầu ra ALE của nó và thiết lập 8 bit đầu tiên của địa chỉ (A0-A7) trên P0 IC 74HCT573 chuyển 8 bit đầu tiên tới các chân địa chỉ của bộ nhớ Một tín hiệu trên chân ALE chốt mạch IC 74HCT573 và ngay sau đó 8 bit cao của địa chỉ (A8-A15) xuất hiện trên Port Bằng cách này, một vị trí mong muốn của bộ nhớ chương trình bổ sung được dùng để đọc nội dung của nó Chân cổng P0 được cấu hình như đầu vào, chân PSEN được kích hoạt và vi điều khiển đọc từ chip bộ nhớ
Hình 2-9 Sơ đồ kết nối mở rộng bộ nhớ của 8051
Trang 38Tương tự xảy ra khi đọc vị trí từ bộ nhớ RAM bên ngoài Giải quyết được thực hiện trong cùng một cách, trong khi đọc và viết được thực hiện thông qua tín hiệu xuất hiện trên kết quả kiểm soát đầu ra RD (là viết tắt của đọc) hoặc WR (là viết tắt của viết)
2.1.6 Special Function Registers (SFRs)- Thanh ghi chức năng đặc biệt
Thanh ghi chức năng đặc biệt (SFR) là một dạng bảng điều khiển được sử dụng để vận hành và giám sát hoạt động của vi điều khiển Mỗi bit trong thanh ghi bao gồm: tên nhãn, địa chỉ trong phạm vi của bộ nhớ RAM và được xác định mục đích như điều khiển hẹn giờ, điều khiển ngắt, kiểm soát giao tiếp truyền nối tiếp vv
Hình 2-10 Thanh ghi đặc biệt SFR
Hình 2-11 Thanh ghi A
Thanh ghi A là một thanh ghi đa năng sử dụng để lưu trữ các kết quả trung gian thu được trong quá trình hoạt động Trước khi thực hiện một lệnh trên bất kỳ số hoặc toán hạng cần thiết để
Trang 39lưu trữ nó trong A đầu tiên Tất cả các kết quả thu được từ các hoạt động số học được thực hiện bởi ALU được lưu trữ trong A Dữ liệu được chuyển từ một thanh ghi khác phải đi qua A
Hình 2-12 Thanh ghi B
Phép nhân và chia chỉ có thể được thực hiện khi các số được lưu trữ trong thanh ghi A và B Tất cả các lệnh khác trong chương trình có thể sử dụng thanh ghi này như một thanh ghi (A) dự phòng
Đây là tên gọi chung cho 8 thanh ghi đa năng (R0, R1, R2 R7) Mặc dù chúng thật sự không phải là SFR, nhưng chúng xứng đáng được thảo luận ở đây vì mục đích của chúng Chúng chiếm 4 bank trong bộ nhớ RAM Tương tự như thanh ghi A, chúng được sử dụng cho các biến lưu trữ tạm thời và kết quả trung gian trong quá trình hoạt động Một trong những bank được hoạt động phụ thuộc vào hai bit của thanh ghi PSW Bank đang hoạt động thì một trong số
dụng
Hình 2-13 Địa chỉ Hex của các bank thanh ghi
Trang 40Ví dụ sau đây minh họa tốt nhất vai trò của các thanh ghi này Giả sử để thực hiện một số hoạt động số học lưu trữ trong thanh ghi R: (R1 R2) - (R3 + R4) Rõ ràng, một thanh ghi cho kết quả tạm thời lưu trữ bổ sung là cần thiết Đây là cách nó nhìn vào trong chương trình: MOV A, R3; Có nghĩa là: di chuyển số từ R3 vào thanh ghi A
ADD A, R4, có nghĩa là: thêm số từ R4 cho thanh ghi A (kết quả vẫn còn ở thanh ghi A)
MOV R5, A; Có nghĩa là: tạm thời di chuyển kết quả từ thanh ghi A vào R5
MOV A, R1; Có nghĩa là: di chuyển số từ R1 đến thanh ghi A
ADD A, R2; Có nghĩa là: thêm số từ R2 để ắc quy thanh ghi A
Subb A, R5; Có nghĩa là: trừ đi số từ R5 (có R3 + R4)
PSW là một trong những thanh ghi SFR quan trọng nhất Nó chứa một số bit trạng thái phản ánh tình trạng hiện tại của CPU Bên cạnh đó, thanh ghi này có bit Carry, Carry phụ, hai Bank thanh ghi chọn bit, cờ tràn, bit chẵn lẻ và cờ xác định trạng thái người dùng
Hình 2-14 Thanh ghi chương trình trạng thái
o P - Parity bit - bit chẵn lẻ: Nếu một số được lưu trữ ở các accumulator là chẵn, bit này sẽ tự
động thiết lập (1), nếu không nó sẽ bị xóa (0) Nó được sử dụng chủ yếu trong quá trình truyền và nhận dữ liệu thông qua giao tiếp nối tiếp
o Bit 1 Bit này được thiết kế để được sử dụng ở các phiên bản tương lai của vi điều khiển
o OV Overflow – Cờ báo tràn: OV tràn xảy ra khi kết quả của một hoạt động số học lớn hơn
255 và không thể được lưu trữ trong một thanh ghi Tình trạng tràn nên bit OV được thiết lập (1) Nếu không, nó sẽ bị xóa (0)
o RS0, RS1 - Register bank select bits - Bit chọn Bank:
RS0, RS1, hai bit được sử dụng để chọn một trong bốn bank thanh ghi trong bộ nhớ RAM Bằng cách thiết lập (1) và xoá (0) các bit, thanh ghi R0-R7 được lưu trữ trong một trong bốn bank bộ nhớ RAM