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

Giáo trình Vi xử lý-Vi điều khiển (Nghề: Điện tử công nghiệp - Trung cấp) - Trường CĐ nghề Việt Nam - Hàn Quốc thành phố Hà Nội

174 11 1

Đ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 174
Dung lượng 4,06 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Giáo trình Vi xử lý-Vi điều khiển với mục tiêu giúp các bạn có thể trình bày được về hệ đếm và mã hóa trong máy tính, tương tác giữa máy tính và vi xử lý, các bộ vi xử lý intel đang được ứng dụng; Giải thích được nguyên lý làm việc các hệ điều khiển ứng dụng vi xử lý; Vận hành được các thiết bị và dây chuyền sản xuất dùng vi điều khiển.

Trang 1

ỦY BAN NHÂN DÂN THÀNH PHỐ HÀ NỘI TRƯỜNG CAO ĐẲNG NGHỀ VIỆT NAM - HÀN QUỐC THÀNH PHỐ HÀ NỘI

TRỊNH THỊ HẠNH (Chủ biên) NGUYỄN THANH HÀ – TRƯƠNG VĂN HỢI

GIÁO TRÌNH VI XỬ LÝ – VI ĐIỀU KHIỂN

Nghề: Điện tử công nghiệp Trình độ: Trung cấp

(Lưu hành nội bộ)

Hà Nội - Năm 2019

Trang 2

LỜI NÓI ĐẦU

Để cung cấp tài liệu học tập cho học sinh - sinh viên và tài liệu cho giáo viên khi giảng dạy, Khoa Điện tử Trường CĐN Việt Nam - Hàn Quốc thành phố

Hà Nội đã chỉnh sửa, biên soạn cuốn giáo trình “VI XỬ LÝ – VI ĐIỀU

KHIỂN” dành riêng cho học sinh - sinh viên nghề Điện tử công nghiệp Đây là

môn học kỹ thuật cơ sở trong chương trình đào tạo nghề Điện tử công nghiệp trình độ Trung cấp

Nhóm biên soạn đã tham khảo các tài liệu: Giáo trình “Vi xử lý” dùng

cho học sinh trung cấp kỹ thuật của tác giả Trần Văn Trọng,Trường ĐHSPKT

TP HCM Giáo trình “Họ vi điều khiển” Tống văn On, Đại học Bách khoa

TP.HCM 2005và nhiều tài liệu khác

Mặc dù nhóm biên soạn đã có nhiều cố gắng nhưng không tránh được những thiếu sót Rất mong đồng nghiệp và độc giả góp ý kiến để giáo trình hoàn thiện hơn

Xin chân thành cảm ơn!

Hà Nội, tháng 09 năm 2019

Chủ biên: Trịnh Thị Hạnh

Trang 3

MỤC LỤC

LỜI NÓI ĐẦU 1

MỤC LỤC 3

GIÁO TRÌNH MÔ ĐUN 5

Phần I: VI XỬ LÝ 7

Bài 1Tổng quan về các hệ vi xử lý 7

1.1 Lịch sử phát triển các trung tâm vi xử lý: 7

1.2 Cấu trúc cơ bản của hệ vi xử lý 9

Bài 2Các đơn vi vi xử lý trung tâm 11

2.1 Trung tâm vi xử lý P 8085 11

2.2 Khái niệm và bản chất vật lý của các bus trong hệ vi xử lý 15

2.3 Mạch 3 trạng thái 16

2.4 Ngắt (lnterrupt) 17

2.5 Các tập lệnh của 8085 18

Bài 3Bộ nhớ trong của hệ vi xử lý 37

3.1 Bộ nhớ trong hệ vi xử lý 37

3.2 Tổ chức bộ nhớ cho hệ vi xử lý 44

Bài 4Thiết bị vào ra của hệ vi xử lý 49

4.1 Bàn phím HEX (keyboard) 49

4.2 Màn hình (Monitor) 55

Phần II: VI ĐIỀU KHIỂN 60

Bài 5Sơ lược về lịch sử và hướng phát triển của vi điều khiển 60

5.1 Lịch sử xuất hiện bộ vi điều khiển 8051 60

5.2 Lĩnh vực và ứng dụng 62

Bài 6Cấu trúc của họ vi điều khiển 8051 64

6.1 Tổng quan 64

6.2 Sơ đồ chân vi điều khiển 8051 65

6.3 Cấu trúc Port I/O 71

Bài 7Tập lệnh 8051 75

7.1 Mở đầu 75

7.2 Các phương pháp định địa chỉ 77

Trang 4

7.3 Các nhóm lệnh 82

Bài 8Bộ định thời 116

8.1.Mở đầu 116

8.2.Thanh ghi SFR của timer 118

8.3.Các chế độ làm việc 120

8.4 Nguồn cung cấp xung cho Timer 122

8.5.Khởi động, dừng và điều khiển Timer 123

8.6 Khởi tạo và truy xuất thanh ghi Timer 123

Bài 9Cổng nối tiếp (serial port) 129

9.1 Mở đầu 129

9.2 Thanh ghi điều khiển 131

9.3 Chế độ làm việc 131

9.4 Chế độ 3: UART 9 bit với tốc độ Baud thay đổi 136

9.4 Khởi tạo và truy xuất thanh ghi PORT nối tiếp 136

9.5 Truyền thông đa xử lý (Multiprocessor Communications) 138

9.6 Tốc độ baud 140

Bài 10Ngắt 146

10.1 Mở đầu 146

10.2.Tổ chức ngắt của 8051 (hình 6.2) 147

10.3 Xử lý ngắt 153

10.4 Thiết kế chương trình sử dụng ngắt 156

10.5 Ngắt cổng nối tiếp 160

10.6 Các cổng ngắt ngoài 160

10.7 Đồ thị thời gian của ngắt 160

Bài 11Phần mềm hợp ngữ 165

11.1 Mở đầu 165

11.2 Hoạt động của trình biên dịch Assembler 166

11.3 Cấu trúc chung chương trình hợp ngữ cho 8051 167

11.4 Tính biểu thức trong khi hợp dịch 169

TÀI LIỆU THAM KHẢO 174

Trang 5

GIÁO TRÌNH MÔ ĐUN Tên mô đun: Vi xử lý – Vi điều khiển

Mã số của mô đun: MĐ 23

Thời gian của mô đun: 90 giờ (LT: 30 giờ; BT: 55 giờ; KT: 5 giờ)

I Vị trí, tính chất, ý nghĩa và vai trò của mô đun

Vị trí của mô đun: Mô đun được bố trí dạy cuối chương trình sau khi học xong các môn học cơ bản như linh kiện điện tử, đo lường điện tử, kỹ thuật xung

- số, điện tử công suất

Tính chất của mô đun: Là mô đun bắt buộc

Ý nghĩa của mô đun: sau khi học xong mô đun Vi xử lý, người học phải biết lập trình một số ứng dụng từ đơn giản đến phức tạp và xử lý được các kết nối máy tính với thiết bị ngoại vi

Vai trò của mô đun: Giáo trình mô đun “Vi xử lý – Vi điều khiển” nhằm cung cấp cho người học những kiến thức về lập trình và giao tiếp với máy tính bằng vi xử lý – vi điều khiển

II Mục tiêu của mô đun

Về kiến thức:

- Trình bày được về hệ đếm và mã hóa trong máy tính, tương tác giữa máy tính và vi xử lý, các bộ vi xử lý intel đang được ứng dụng

- Giải thích được nguyên lý làm việc các hệ điều khiển ứng dụng vi xử lý

- Vận hành được các thiết bị và dây chuyền sản xuất dùng vi điều khiển

- Xác định được các nguyên nhân gây ra hư hỏng xảy ra trong thực tế

- Kiểm tra và viết được các chương trình điều kiển

Về kỹ năng:

- Lập trình hợp ngữ một số bài tập cơ bản một cách thành thạo

- Xử lý được một số dạng kết nối máy tính với vi xử lý và các thiết bị ngoại vi

- Phát triển được các hệ điều khiển trên cơ sở khối trung tâm là vi xử lý

- Vận hành được các thiết bị và dây chuyền sản xuất dùng vi điều khiển

- Xác định được các nguyên nhân gây ra hư hỏng xảy ra trong thực tế

Về thái độ:

- Rèn luyện tính tỷ mỉ, chính xác và an toàn vệ sinh công nghiệp

Trang 6

III Nội dung của mô đun

Số

TT Tên các bài trong mô đun

Thời gian Tổng

số

Lý thuyết

Thực hành Kiểm tra*

1 Sơ lược về lịch sử và hướng phát

triển của vi điều khiển

Trang 7

Phần I: VI XỬ LÝ

Bài 1 Tổng quan về các hệ vi xử lý Mục tiêu

- Trình bày được một số hệ đếm, và các mã thường dùng trong hệ vi xử lý

- Tính toán, chuyển đổi được các phép toán nhị phân

- Trình bày được cách biểu diễn thông tin trong các hệ vi xử lý

- Rèn luyện tính tư duy, tác phong trong công nghiệp

1.1 Lịch sử phát triển các trung tâm vi xử lý:

Bộ vi xử lý là thành phần rất cơ bản không thể thiếu được để tạo nên máy

vi tính và các hệ vi xử lý Trước khi tìm hiểu cấu trúc của một hệ vi xử lý ta lướt qua về lịch sử phát triển của các bộ vi xử lý

Vi xử lý được chế tạo từ các tranzito tích hợp trên một vi mạch tích hợp đơn Xuất hiện lần đầu tiên vào những năm đầu của thập kỷ 70 của thế kỷ 20 Sử dụng mã BCD trên nền 4 bit Các vi xử lý 4 bit và 8 bit được sử dụng trong các thiết bị đầu cuối, máy in, các hệ thống tự động Đến giữa những năm 1970 thì lần đầu tiên các vi xử lý 8 bit với 16 bit địa chỉ được sử dụng như máy tính đa mục đích

Các hãng sản xuất vi xử lý đầu tiên ở thời điểm này là Intel, Texas Instruments và Garrett AiResearch với ba dịng chip tương ứng: Intel 4004, TMS

1000 và Central Air Data Computer Đây là những vi xử lý 4 bit

Sau sự ra đời của các vi xử lý 4 bit thì các hãng cho ra đời các dịng 8 bit,

12 bit, 16 bit, 32 bit, 64 bit

Đặc điểm chung của các bộ vi xử lý thế hệ này là:

Độ dài từ thường là 4 bit (có thể dài hơn)

Công nghệ chế tạo PMOS có mật độ tích hợp nhỏ

Tốc độ thực hiện lệnh: 10 - 60 μs/lệnh với tần số đồng hồ fclk = 0,1 - 0,8 MHz

Trang 8

Tập lệnh đơn giản và phải cần nhiều vi mạnh phụ trợ mới tạo nên một hệ

vi mạch hoàn chỉnh

1.1.2 Thế hệ 2 (1974 – 1977)

Các bộ vi xử lý đại diện cho thế hệ này là các bộ vi xử lý 8 bit 8080 và

8085 của Intel, 6800 và 6809 của Motorola và Z80 của Zilog

Đặc điểm:

Độ dài từ là 8 bit, đồng thời tập lệnh phong phú hơn thế hệ trước

Công nghệ chế tạo: NMOS (có mật độ tích hợp cao hơn PMOS) hoặc CMOS

Tốc độ thực hiện lệnh: 1-8 μs/lệnh với tần số đồng hồ fclk = 1-5 MHz

1.1.3 Thế hệ 3 (1978 - 1982)

Các bộ vi xử lý đại diện cho thế hệ này là các bộ vi xử lý 16 bit 8086,

80186, 80286 của Intel, 68000 và 68010 của Motorola

Đặc điểm:

Độ dài từ là 16 bit

Công nghệ chế tạo: HMOS (có mật độ tích hợp cao hơn PMOS) hoặc CMOS Tốc độ thực hiện lệnh: 0,1-1 μs/lệnh với tần số đồng hồ fclk =5-10 MHz Tập lệnh đa dạng với các lệnh nhân, lệnh chia và các lệnh thao tác với chuỗi ký tự

1.1.4 Thế hệ 4 (1983)

Các bộ vi xử lý đại diện cho thế hệ này là các bộ vi xử lý 32 bit 80386,

80486 và 64 bit Pentium của Intel, các bộ vi xử lý 32 bit 68020, 68030, 68040,

68060 của Motorola

Đặc điểm của các bộ vi xử lý thế hệ này là bus địa chỉ đều là 32 bit (có khả năng đánh địa chỉ cho bộ nhớ tới 4 GB) và có khả năng làm việc với bộ nhớ ảo Người ta cũng áp dụng các cơ chế hoặc các cấu trúc đã được sử dụng trong các máy tính lớn vào các bộ vi xử lý: cơ chế xử lý xen kẽ liên tục dạng mã lệnh (pipeline), bộ nhớ cache (bộ nhớ ẩn), bộ nhớ ảo Các bộ vi xử lý thế hệ này đều

có bộ quản lý bộ nhớ (MMU) và nhiều khi cả bộ đồng xử lý toán học ở bên trong Phần lớn các bộ vi xử lý thế hệ này đều sản xuất bằng công nghệ HCMOS

Bên cạnh các bộ vi xử lý vạn năng truyền thống thường được sử dụng để xây dựng các máy tính với tập lệnh đầy đủ (Complex Instruction Set Computer,

Trang 9

CISC) mà chúng ta đã nói ở trên, trong thời gian này cũng đã xuất hiện các bộ vi

xử lý cải tiến dùng để xây dựng các máy tính với tập lệnh rút gọn (Reduced Instruction Set Computer, RISC) với nhiều tính năng có thể so sánh với các máy tính lớn ở thế hệ trước Đó là các bộ vi xử lý Alpha của hãng Digital, PowerPC của ba hãng Apple-Motorola-IBM

1.2 Cấu trúc cơ bản của hệ vi xử lý

Một vi xử lý về cơ bản gồm có 3 khối chức năng: đơn vị thực thi (Execution), bộ điều khiển tuần tự (Sequencer) và bus giao tiếp

- Đơn vị thực thi: Xử lý các lệnh số học và logic Các toán hạng liên quan

có mặt ở các thanh ghi dữ liệu hoặc địa chỉ hoặc từ bus nội

- Bộ điều khiển tuần tự: Bao gồm bộ giải mã lệnh (Intrustruction Decoder)

và bộ đếm chương trình (Program Counter)

Bộ đếm chương trình gọi các lệnh chương trình tuần tự

Bộ giải mã lệnh thì khởi động các bước cần thiết để thực hiện lệnh Bộ điều khiển tuần tự tạo thành một hệ thống logic tuần tự mà cách thức hoạt động của nó được chứa trong ROM Nội dung chứa trong ROM được gọi là vi chương trình Các lệnh bên ngoài trong trường hợp này xác định các địa chỉ vào vi chương trình Khi chương trình bắt đầu thực hiện thì bộ đếm chương trình PC được đặt ở địa chỉ bắt đầu, thường là địa chỉ 0000H (với xi xử lý 8 bit) Địa chỉ này được chuyển đến bộ nhớ thông qua bus địa chỉ (Address Bus) Khi tín hiệu Read được đưa vào ở bus địa chỉ nội dung của bộ nhớ liên quan xuất hiện trên bus dữ liệu (data bus) và sẽ được chứa ở bộ giải mã lệnh (Instruction Decoder) Sau khi khởi động một số bước cần thiết để thực thi lệnh nhờ một số chu kỳ máy

và khi lệnh đã thực thi, thì bộ giải mã lệnh làm cho bộ đếm chương trình chỉ đến địa chỉ của lệnh kế

Hình 1.14 Sơ đồ khối một máy tính cổ điển

Trang 10

Để tạo thành một hệ vi xử lý hoàn chỉnh, bộ vi xử lý cần phải kết hợp với các bộ phận điện tử khác như bộ nhớ và các bộ phối ghép vào/ra Cần lưu ý rằng máy vi tính chỉ là một trong những ứng dụng cụ thể của hệ vi xử lý Dưới đây là

sơ đồ khối tổng quát của một hệ vi xử lý

Trong sơ đồ này ta thấy các khối chức năng chính của hệ vi xử lý gồm có: + Khối xử lý trung tâm (Central Processing Unit, CPU)

+ Bộ nhớ trong RAM-ROM (Memory, M)

+ Khối phối ghép với các thiết bị ngoại vi (Input/Output, I/O)

+ Các bus truyền thông tin giữa các khối

Trang 11

Bài2 Các đơn vi vi xử lý trung tâm Mục tiêu

- Trình bày được cấu trúc của các đơn vị vi xử lý đã học

- Phân tích các chương trình có sẵn

- Thực hiện các ứng dụng thực tế thông qua các mô hình

- Rèn luyện tính tỷ mỉ, chính xác, an toàn và vệ sinh công nghiệp

2.1 Trung tâm vi xử lý P 8085

Hình 2.1 Sơ đồ khối cấu trúc của µP8085

Hình 2.1 là sơ đồ nối chân của µP8085 Khác với các loại µP xuất hiện trước đó như µP8008 hay µP8080, µP8085 có những bước phát triển có tính đột phá như sau:

Trang 12

Hình 2.2 Sơ đồ chân của µP8085

Cơ cấu ngắt theo nhiều mức khác nhau được hình thành qua một khối điều khiển ngắt, tạo ra một vector ngắt tránh được sự chèn nhau do lệnh RET N trên BUS dữ liệu Tín hiệu nhận biết yêu cầu ngắt INTA được tạo bởi khối điều khiển ngắt, chứ không phải từ mạch phụ 8228 như ở µP8080

Các tín hiệu điều khiển ghi/đọc WR và RD được tạo ra từ bộ định thời và điều khiển chức năng Các tín hiệu INTA ,WR và RD được tạo ngay trong CPU, chứ không do mạch phụ trợ bên ngoài

µP8085 có mạch tạo xung đồng hồ được tích hợp ngay trong CPU

Khối chức năng điều khiển vào/ra nối tiếp được tích hợp cũng cho phép µP8085 thực hiện các lệnh vào/ra dữ liệu nối tiếp mà nhiều khi không cần đến

sự hỗ trợ của vi mạch chuyên dụng

Đặc biệt hơn, µP8085 có hai thanh ghi đệm địa chỉ, đó là thanh ghi đệm A5 -A8 Và thanh ghi đệm AD7-AD0 cho cả dữ liệu và địa chỉ Việc dồn kênh như trên tạo điều kiện cho những chân chức năng khác được tạo thêm, làm tăng thêm sức mạnh cho CPU

Trang 13

Đặc tính của vi xử lý 8085:

Nguồn cung cấp: 5 V ± 10%

Dòng điện cực đại: Imax = 170 mA

Tần số xung clock chuẩn: 6,134 Mhz

Độ dài dữ liệu là 8 bit

Khả năng truy xuất ô nhớ trực tiếp là 64Kb

Vi xử lý có thể tính số nhị phân, thập phân

Vi xử lý có 8 đường dữ liệu và 16 đường địa chỉ

Các đường điều khiển: RD\, WR\, IO/M\, Clock Out, Reset Out và 4 ngắt A8 – A15 Nhóm tín hiệu ra: 8 bit cao của địa chỉ, các chân này là các chân được nối với bên ngoài qua mạch 3 trạng thái Các phần tử 3 trạng thái sẽ được đặt ở trạng thái high-z trong các trường hợp một trong các tín hiệu HOLD hay HALT là tích cực

AD0 – AD7 Nhóm tín hiệu dồn kênh 3 trạng thái Ở giai đoạn đầu của chu

kỳ máy, T1 của M1, sẽ là byte thấp của 16 bộ địa chỉ

ALE (Address Enable) Tín hiệu ra qua mạch 3 trạng thái Được sử dụng

để chốt byte thấp của tín hiệu địa chỉ (A0 - A7) Tín hiệu này được tạo ra trong giai đoạn đầu tiên của chu kỳ máy, T1 của M1, và cũng được dùng để chốt các tín hiệu trạng thái S0 và S1 khi cần thiết

S0 và S1 (Data BUS Status) Là các tín hiệu chỉ trạng thái của các chân thuộc BUS dữ liệu trong mỗi chu kỳ máy Tổ hợp của hai tín hiệu này cũng cho biết trạng thái của CPU

S0 S1 Hoạt động của BUS dữ liệu

0 0 Trạng thái HALT

0 1 CPU đang thực hiện thao tác WRITE

1 0 CPU đang thực hiện thao tác READ

1 1 CPU đang thực hiện thao tác nhận lệnh Instruction fetch

RD (Read) Chân ra 3 trạng thái Nằm trong nhóm tín hiệu điều khiển Tín hiệu tích cực khi CPU tiến hành đọc dữ liệu từ bộ nhớ hoặc từ thiết bị ngoại vi Trong chế độ HALT hoặc DMA, chân ra này ở trạng thái high-z

WR (Write) Chân ra 3 trạng thái Nằm trong nhóm tín hiệu điều khiển Tín hiệu tích cực khi CPU tiến hành ghi dữ liệu vào bộ nhớ hoặc đưa dữ liệu ra thiết bị ngoại vi Trong các chế độ HALT hoặc DMA, chân ra này ở trạng thái high-z

Trang 14

IO/M Trạng thái logic của Ngõ ra này cho biết CPU đang làm việc với thiết bị ngoại vi hay với bộ nhớ Nếu là logic "l", CPU đang truy cập thiết bị vào/ra, còn nếu là "0", CPU đang truy cập bộ nhớ Kết hệ với hai Ngõ ra RD

và WR để tạo ra các tín hiệu I/OR, , I/OW RD , MEMR và MEMW trong trường hợp sử dụng địa chỉ tách biệt đối với thiết bị vào/ra Nằm trong nhóm tín hiệu điều khiển, nên IO/M cũng là Ngõ ra 3 trạng thái

Interrupts µP8085 có ngắt đa mức Có 5 chân ngắt tất cả: (INTR, RST5.5 RST6.5, RST7.5 và TRAP) Ngoài chân ngắt không che được là TRAP, các chân khác đều có thể che hoặc không che nhờ lập trình phần mềm

INTR: Chân nhận yêu cầu ngắt từ bên ngoài, được đáp ứng theo nguyên tắc polling hoặc vectoring thông qua lệnh RST

Các yêu cầu ngắt RST Có 3 Ngõ vào yêu cầu ngắt với các mức ưu tiên khác nhau là RST7.5, RST6.5 và RST5.5 Khi yêu cầu ngắt xuất hiện tại các chân này, CPU tự động chuyển đến các vector ngắt tương ứng Cụ thể như sau:

• RST5.5 là mức ưu tiên thấp nhất, phản ứng theo mức điện áp trên chân yêu cầu ngắt, địa chỉ vector ngắt này nằm ở ô nhớ có địa chỉ 2CH •RST6.5 Ngắt ưu tiên thấp thứ 2, phản ứng theo mức điện áp trên chân yêu cầu ngắt, địa chỉ vector ngắt này nằm ở ô nhớ 34H

• RST7.5 Mức ưu tiên cao nhất Phản ứng theo sườn lên của xung yêu cầu ngắt Sườn lên của xung này tác động lên một flip-flop, mạch này giữ lại yêu cầu ngắt cho đến khi được xóa nhờ tín hiệu nhận biết yêu cầu ngắt Acknowledge Địa chỉ của vector ngắt này nằm ở ô nhớ 3CH

TRAP: Là chân nhận yêu cầu ngắt không che được (có mức ưu tiên cao nhất) Địa chỉ của vector ngắt này ở ô nhớ 24H

INTA Tín hiệu ra nhận biết yêu cầu ngắt tại chân INTR Các yêu cầu ngắt RST5.5, RST6.5, RST7.5 và TRAP không tác động đến INTA

HOLD trạng thái logic "1" ở chân này là yêu cầu của thao tác DMA Các Ngõ ra RD, WR, IO/M và ALE sẽ được đưa về trạng thái high-z HLDA Tín hiệu nhận biết yêu cầu HOLD

IN RESET Logic thấp "0" ở Ngõ vào của chân này yêu cầu tái khởi động

hệ Vi xử lý Do tác động của tín hiệu RESET IN tích cực, giá trị của thanh đếm chương trình PC sẽ được nạp lại là 0000H các địa chỉ ngắt và tín hiệu HLDA cũng được tái thiết lập về giá trị mặc định

RESET OUT Ngõ ra nhận biết hệ Vi xử lý được tái khởi động Dùng tín hiệu này để tái khởi động toàn bộ hệ thống

Trang 15

READY Logic "1" ở Ngõ vào này thông báo trạng thái sẵn sàng cung cấp

dữ liệu cho CPU hoặc nhận dữ liệu từ CPU của các thiết bị ngoại vi SID (Serial Input Data) Là cổng vào của dữ liệu nối tiếp của hệ Vi xử lý Bit hiện diện tại cổng này được đọc vào CPU nhờ lệnh RIM, bit sẽ được đưa vào bit cao của Acc (MSB)

SOD (Serial Output Data) Bit cao (MSB) của Acc được truyền ra ngoài chân này khi sử dựng lệnh SIM

X1, X2 Chân nối thạch anh hoặc một mạch dao động để tạo xung nhịp cho CPU Có thể sử dụng thạch anh có tần số dao động trong khoảng từ 0.5 đến 3MHz CLK Ngõ ra của xung nhịp, có thể làm xung nhịp cho các thành phần chức năng khác trong hệ Vi xử lý

Vcc, Vss Chân nối nguồn +5V và GND cho µP8085 µP8085,chỉ cần một nguồn nuôi duy nhất là +5V, khả năng cung cấp dòng của nguồn cần được thiết

kế tuỳ theo nhu cầu của toàn hệ Vi xử lý

2.2 Khái niệm và bản chất vật lý của các bus trong hệ vi xử lý

Hoạt động của một hệ Vi xử lý thực chất là việc trao đổi và xử lý các giá trị nhị phân giữa các thành phần, các khối và các mạch vi điện tử trong toàn bộ

hệ thống Như đã biết, các giá trị nhị phân (hoặc "0" hoặc "1") được thể hiện qua mức điện áp so với một chuẩn nhất định Giá trị "0" tương ứng với mức điện áp thấp (từ 0V đến +0,8V) và giá trị "1" tương ứng với mức điện áp từ khoảng +3V đến +5V Để biểu diễn một số liệu nhị phân, các phần tử mang thông tin được liên kết kề nhau theo nhóm (ví dụ 1byte là 8 bits) Để đảm nhận công việc di chuyển các dữ liệu này trong toàn bộ hệ thống, có các đường dây truyền dẫn điện chuyên dụng được ghép song song thành hệ thống, mỗi dây truyền dẫn dành riêng cho 1 bit Tập các đường truyền dẫn dành riêng cho các tín hiệu có cùng chức danh (dữ liệu, địa chỉ, điều khiển) được gọi là BUS Như vậy, trong một hệ Vi xử lý, có ba loại BUS: BUS dữ liệu, BUS địa chỉ và BUS điều khiển Các BUS này hợp lại thành BUS hệ thống

Từ khái niệm trên, dễ dàng suy ra bản chất vật lý của các BUS trong một

hệ Vi xử lý: Đó là các dường truyền dẫn điện, có thể dưới các dạng cáp nhiều sợi, đường dẫn trong các bảng mạch in v v Khả năng và chất lượng dẫn điện của các đường truyền dẫn này đóng vai trị quan trọng và quyết định đối với hoạt động của một hệ Vi xử lý Đường truyền dẫn kém, trở kháng cao có thể gây ra

sự suy giảm của tín hiệu điện dẫn đến các hiện tượng mất mát hoặc sai dữ liệu, rất nguy hiểm

BUS là đường dẫn điện nội bộ mà theo đó các tín hiệu được truyền từ

bộ phận này đến các bộ phận khác trong hệ Vi xừ lý Có 3 loại BUS trong một

hệ Vi xử lý cũng nhu trong máy tính

Trang 16

2.3 Mạch 3 trạng thái

Trong hệ Vi xử lý, có nhiều khối chức năng cần thông tin, nhưng tại một thời điểm, bao giờ cũng chỉ có một khối đưa tín hiệu ra (dữ liệu) và một số hạn chế các khối thu nhận tín hiệu Thay vì nối dây dẫn liên kết các khối qua từng đôi phần tử một, các tín hiệu này được đưa lên BUS Với các cổng logic thông thường, không thể nối trực tiếp chúng lên cùng một đường dây vì sẽ xảy ra tranh chấp BUS vì đoản mạch Ví dụ Ngõ ra của phần tử A là "1" trong lúc Ngõ ra của phần tử B là "0" (Hình 2.4 và hình 2.5) Các Ngõ ra của loại mạch này đều theo cấu trúc pull-up, nghĩa là có hai transistor được nối nối tiếp với nhau (xem hình vẽ), emitter của transistor này qua một diode rồi đến đầu ra, đến collector của transistor kia Với hai trạng thái logic "1" và "0", tương ứng sẽ là T1 mở, T2 đóng và ngược lại, T2 mở và T1 đóng Trên hình vẽ 2.4 hiện tượng nguy hiểm xảy ra khi ngõ ra của phần tử logic A là "1", các khóa mở hay đóng tương đương việc transistor thông bão hoà hay ngắt, ngõ ra chua phần tử logic

B là "0" và hiện tượng đoản mạch xảy ra

Hình 2.4 Hiện tượng đoản mạch xảy ra khi nối hai đầu ra của hai phần tử trên cùng một

đường dây của BUS

Để tránh hiện tượng này, một loại cổng logic gọi là cổng 3 trạng thái state gate) được sử dụng cho ngõ ra của các khối nối chung vào BUS Hình II.3a là một phần tử đảo Ngõ ra 3 trạng thái Hình 2.5 là sơ đồ tương đương của trạng thái high-z, tương ứng với trường hợp Ngõ ra bị tách khỏi BUS

Trang 17

(tri-Hình 2.5 Phần tử đảo 3 trạng thái và sơ đồtương đương Ngõ ra của phần tử ở trạng thái high-z

Như vậy, để tránh xung đột trên BUS, các phần tử có Ngõ ra nối với BUS cần phải đưa qua cổng 3 trạng thái

2.4 Ngắt (lnterrupt)

Trong thực tế, tốc độ xử lý dữ liệu của CPU cao hơn rất nhiều so với

“sự chế biến dữ liệu” của các thiết bị I/O Vì vậy cần tạo ra một cơ chế vào/ra hợp lý để tăng hiệu suất làm việc của CPU Ngắt trong hệ thống Vi

xử lý nhằm mục đích giải quyết sự bất hợp lý do CPU phải chờ đợi thiết bị ngoại vi Thiết bị ngoại vi chỉ yêu cầu CPU phục vụ việc nhận hay chuyển giao dữ liệu khi bản thân nó đã sẵn sảng Để thực hiện tốt yêu câu này, cơ chế phục vụ ngắt là hợp lý nhất

Ngắt nghĩa là yêu cầu CPU tạm thời dừng công việc hiện tại để trao đổi hay xử lý dữ liệu không thuộc tuần tự của chương trình đang được thực hiện Ngắt là một hiện tượng xuất hiện ngẫu nhiên về phương diện thời điểm nhưng được dự đoán trước

Trang 18

Ngắt là hiện tượng một tín hiệu xuất hiện báo với CPU rằng có một sự kiện

đã xảy ra yêu cầu CPU phải xử lý Quá trình xử lý của CPU sẽ bị tạm thời dừng lại để thực hiện một thao tác khác phục vụ sự kiện có yêu cầu Khi thao tác này kết thúc, quá trình xừ lý vừa bị tạm dừng sẽ được tiếp tục Bản thân sự kiện thông thường là yêu cầu phục vụ của thiết bị ngoại vi đối với CPU

Trong thực tế, ngắt được sử dụng chủ yếu khi các thiết bị ngoại vi (thường rất chậm so với tốc độ xử lý của CPU) cần trao đổi thông tin với CPU Khi cần trao đổi thông tin, thiết bị ngoại vi gửi tín hiệu yêu cầu ngắt (Interrupt Request) tới CPU CPU sẽ thực hiện nốt lệnh hiện tại và trả lời bằng tín hiệu nhận biết yêu cầu ngắt (INTA )

Chương trình chính lúc này bị tạm dừng (ngắt) và CPU chuyển sang thực hiện chương trình con phục vụ ngắt,tức là chương trình con trao đổi thông tin với thiết bị ngoại vi yêu cầu ngắt Sau khi xong công việc phục vụ ngắt, CPU quay về thực hiện tiếp chương trình chính kể từ lệnh tiếp theo sau khi bị ngắt các tín hiệu yêu cầu phục

vụ ngắt từ một thiết bị ngoại vi bất kỳ được gửi tới chấp nhận yêu cầu ngắt của CPU

có thể thông qua một khối điều khiển ngắt, tuỳ theo người lập trình mà yêu cầu ngắt

đó có được chuyển tới CPU hay không Trong trường hợp yêu cầu ngắt được gửi tới CPU, xử lý của CPU gồm các bước sau:

Thực hiện xong lệnh đang được xử lý

Phát tín hiệu nhận biết yêu cầu ngắt gửi cho thiết bị yêu cầu phục vụ ngắt qua chân INTA

Cất các cờ trạng thái hiện tại vào ngăn xếp

Xóa các cờ IF (Interrupt Flag) và cờ TF (Trap Flag)

Cất địa chỉ lệnh tiếp theo trong tuần tự chương trình đang thực hiện vào ngăn xếp

Lấy địa chỉ của chương trình con phục vụ ngắt

Thực hiện chương trình con phục vụ ngắt

Các cờ bị thay đổi: không

Trang 19

Ví dụ:

MOV CX, 50 ;CX←50

MOV DL, [SI] ;DL←{DS:SI}

2 OUT : Xuất một Byte hay một Word ra Port

Dạng lệnh: OUT Port, Acc

Mô tả: Acc→{Port}

Trong đó {port} là dữ liệu của cổng có địa chỉ port Port là địa chỉ 8 bit của cổng, nó có thể là các giá trị trong khoảng 00 FFH Như vậy có thể có các khả năng sau đây

- Nếu Acc là AL thì dữ liệu 8 bit được đưa ra cổng Port

- Nếu Acc là AX thì dữ liệu 16 bit được đưa ra cổng Port và Port + 1

Có một cách khác để chứa địa chỉ cổng là thông qua thanh ghi DX Khi dùng thanh ghi DX để chứa địa chỉ cổng ta có khả năng địa chỉ hoá cổng mềm dẻo hơn Lúc này địa chỉ cổng nằm trong dải 0000H … FFFFH

MOV DX, 00FFH ;nap dia chi cong vao DX

OUT DX, AX ;dua du lieu tu AX ra 00FFH

3 IN : Đọc dữ liệu từ cổng vào thanh ghi Acc

Dạng lệnh: IN Acc, địa_chỉ_cổng

Lệnh IN truyền một byte hoặc một từ từ một cổng vào lần lượt tới thanh ghi AL hoặc AX Địa chỉ của cổng có thể được xác định là một hằng tức thì kiểu byte cho phép truy nhập các cổng từ 0…255 hoặc thông qua một số đã được đưa

ra trước đó trong thanh ghi DX mà cho phép truy nhập các cổng từ 0…65535 Các cờ bị thay đổi: không

Trang 20

Ví dụ:

IN AL, 45H ;doc mot byte tu mot cong duoc xac

IN AX, 0046H ;doc hai byte tu mot cong duoc xac

IN AX, DX ;doc mot tu tu mot cong dang bien

4 POP : Lấy lại 1 Word vào thanh ghi từ đỉnh ngăn xếp

POP DX ;lay 2 byte tu dinh ngan xep dua vao DX

5 PUSH: Cất 1 Word vào ngăn xếp

Trang 21

Các cờ bị thay đổi: AF, CF, OF, PF, SF, ZF

Ví dụ:

ADC AL, 74H ;AL←AL+74+CF

ADC DL, [SI] ;DL←DL+(DS:SI)+CF

7 ADD : Cộng hai toán hạng

Dạng lệnh: ADD Đích, Nguồn

Mô tả: Đích ← Đích + Nguồn

Cộng hai toán hạng đích và Nguồn kết quả lưu vào đích

Các cờ bị thay đổi: AF, CF, OF, PF, SF, ZF

Ví dụ:

8 DEC – Decrement (giảm byte hay word đi một giá trị)

Các cờ bị thay đổi: không

Trang 22

Ví dụ:

MOV AX, 0033H ;chuyen 0033H vao AX

DIV BL ;AL=02H va AH=01H

10 INC – Increment (tăng toán hạng lên 1)

- Nếu Nguồn là số 8 bit: AL*Nguồn Số bị nhân phải là số 8 bit đặt trong

AL, sau khi nhân tích lưu vào AX

- Nếu Nguồn là số 16 bit: AX*Nguồn Số bị nhân phải là số 16 bit đặt trong AX, sau khi nhân tích lưu vào DXAX

- Nếu byte cao (hoặc 16 bit cao) của 16 (hoặc 32) bit kết quả chứa 0 thì CF=OF=0

Các cờ bị thay đổi: CF, OF

Trang 23

NEG lấy 0 trừ cho đích (có thể là 1 byte hoặc 1 từ) và trả lại kết quả cho toán hạng đích, nếu ta lấy bù hai của -128 hoặc -32768 ta sẽ được kết quả không đổi nhưng OF=1 để báo là kết quả bị tràn vì số dương lớn nhất biểu diễn được là +127 và +32767

Các cờ bị thay đổi: AF, CF, OF, PF, SF, ZF

Các cờ bị thay đổi: CF, OF, PF, SF, ZF

Ví dụ:

AND DX, CX ;DX←DX AND CX theo tung bit

AND AL, 0FH ;che 4 bit cao cua AL

15 NOT – Logical Negation (phủ định logic)

Dạng lệnh: NOT Đích

Trang 24

NOT đảo các giá trị của các bit của toán hạng đích

Các cờ bị thay đổi: không

Ví dụ:

OR AX, BX ;AX←AX∨BX theo tung bit

OR CL, 30H ;lap bit b4 va b5 cua CL len 1

Nhóm lệnh điều khiển: Bao gồm các nhóm lệnh rẽ nhánh có điều kiện và không điều kiện, các lệnh gọi chương trình con

17 RCL – Rotate though CF to the Left (quay trái thông qua cờ nhớ) Dạng lệnh: RCL Đích, CL

Các cờ bị thay đổi: CF, OF, SF, ZF, PF

Trang 25

Ví dụ:

MOV CL, 3 ;so lan quay la 3

RCL AL, CL

Trước khi thực hiện lệnh: AL = 01011110, CF = 0

Sau khi thực hiện lệnh: AL = 11110001, CF = 0

18 RCR – Rotate though CF to the Right (quay phải thông qua cờ nhớ) Dạng lệnh: RCR Đích, CL

Trước khi thực hiện lệnh: AL = 11000010, CF = 1

Sau khi thực hiện lệnh: AL = 01110000, CF = 1

19 ROL – Rotate all bit to the Left (quay vòng sang trái)

Dạng lệnh: ROL Đích, CL

Mô tả: CF MSB LSB

Lệnh này dùng để quay vòng toán hạng sang trái, MSB được đưa sang cờ

CF và LSB CL phải chứa sẵn số lần quay mong muốn Trong trường hợp quay

1 lần có thể viết ROL Đích, 1 Nếu số lần quay là 8 (CL=8) thì toán hạng không đổi vì toán hạng quay đúng một vòng (nếu toán hạng đích là 8 bit), còn nếu CL=4 thì 4 bit cao đổi chỗ cho 4 bit thấp

Trang 26

Sau lệnh ROL cờ CF mang giá trị cũ của MSB, còn cờ OF←1 nếu sau khi quay 1 lần mà bit MSB bị thay đổi so với trước khi quay, cờ OF sẽ không được xác định sau nhiều lần quay Lệnh này thường dùng để tạo cờ CF từ giá trị của MSB làm điều kiện cho lệnh nhảy có điều kiện

Các cờ bị thay đổi: CF, OF, SF, ZF, PF

Ví dụ:

MOV CL, 2 ;so lan quay la 2

Trước khi thực hiện lệnh: AL = 11001100, CF = 1

Sau khi thực hiện lệnh: AL = 00110011, CF = 1

20 ROR – Rotate all bit to the Left (quay vòng sang phải)

Dạng lệnh: ROR Đích, CL

Mô tả: MSB LSB CF

Lệnh này dùng để quay vòng toán hạng sang phải, LSB được đưa sang cờ

CF và MSB CL phải chứa sẵn số lần quay mong muốn Trong trường hợp quay

1 lần có thể viết ROR Đích, 1 Nếu số lần quay là 8 (CL=8) thì toán hạng không đổi vì toán hạng quay đúng một vòng (nếu toán hạng đích là 8 bit), còn nếu CL=4 thì 4 bit cao đổi chỗ cho 4 bit thấp

Sau lệnh ROR cờ CF mang giá trị cũ của LSB, còn cờ OF←1 nếu sau khi quay 1 lần mà bit MSB bị thay đổi so với trước khi quay, cờ OF sẽ không được xác định sau nhiều lần quay Lệnh này thường dùng để tạo cờ CF từ giá trị của LSB làm điều kiện cho lệnh nhảy có điều kiện

Các cờ bị thay đổi: CF, OF, SF, ZF, PF

Ví dụ:

MOV CL, 2 ;so lan quay la 2

Trước khi thực hiện lệnh: AL = 11001100, CF = 0

Sau khi thực hiện lệnh: AL = 00110011, CF = 0

21 SAL/SHL - Shift Arithmetically Left (dịch trái số học)/Shift Logically Left (dịch trái logic)

Dạng lệnh: SAL Đích, CL

SHL Đích, CL

Trang 27

Mô tả:

Hai lệnh này có tác dụng dịch trái số học toán hạng (còn gọi là dịch trái logic) Mỗi lần dịch MSB được đưa vào CF còn 0 được đưa vào LSB CL phải chứa sẵn số lần quay mong muốn Trong trường hợp quay 1 lần có thể viết

SAL Đích, 1

Sau lệnh SAL hoặc SHL cờ CF mang giá trị cũ của MSB, còn cờ OF←1 nếu sau khi quay 1 lần mà bit MSB bị thay đổi so với trước khi quay, cờ OF sẽ không được xác định sau nhiều lần quay Lệnh này thường dùng để tạo cờ CF từ giá trị của MSB làm điều kiện cho lệnh nhảy có điều kiện

Các cờ bị thay đổi: SF, ZF, CF, OF, PF

Ví dụ:

MOV CL, 2 ;so lan quay la 2

SAL AL, CL

Trước khi thực hiện lệnh: AL = 11001100, CF = 0

Sau khi thực hiện lệnh: AL = 00110000, CF = 1

22 SHR – Shift logically Right (dịch phải logic)

Dạng lệnh: SHR Đích, CL

Mô tả:

Lệnh này có tác dụng dịch phải logic toán hạng Mỗi lần dịch LSB được đưa vào CF còn 0 được đưa vào MSB CL phải chứa sẵn số lần quay mong muốn Trong trường hợp quay 1 lần có thể viết SHR Đích, 1

Sau lệnh SHR cờ CF mang giá trị cũ của LSB, còn cờ OF←1 nếu sau khi quay 1 lần mà bit MSB bị thay đổi so với trước khi quay, cờ OF sẽ không được xác định sau nhiều lần quay Lệnh này thường dùng để tạo cờ CF từ giá trị của LSB làm điều kiện cho lệnh nhảy có điều kiện

Các cờ bị thay đổi: SF, ZF, CF, OF, PF

Trang 28

Ví dụ:

MOV CL, 2 ;so lan quay la 2

SHR AL, CL

Trước khi thực hiện lệnh: AL = 11001100, CF = 1

Sau khi thực hiện lệnh: AL = 00110011, CF = 0

23 XOR – Exclusive OR (lệnh logic XOR (hoặc đảo))

Dạng lệnh: XOR Đích, Nguồn

Mô tả: Đích←Đích Nguồn

Lệnh XOR thực hiện logic XOR (hoặc đảo) giữa hai toán hạng và kết quả được lưu vào trong đích, một bit kết quả được đặt bằng 1 nếu nếu các bit tương ứng hai toán hạng là đối nhau Nếu toán hạng đích trùng toán hạng Nguồn thì kết quả bằng 0, do đó lệnh này còn được dùng để xoá thanh ghi về 0 kèm theo các cờ CF và OF cũng bị xoá

Các cờ bị thay đổi: AF, CF, OF, PF, SF, ZF

Các cờ chính theo quan hệ đích và Nguồn khi so sánh hai số không dấu

Trang 29

25 JA/JNBE – Jump if Above/Jump if Not Below or Equal (nhảy nếu cao hơn/nhảy nếu không thấp hơn hoặc bằng)

Dạng lệnh: JA NHAN

Mô tả: IP←IP+dịch chuyển

Hai lệnh trên biểu diễn cùng một thao tác nhảy có điều kiện tới NHAN nếu CF + ZF = 0 Quan hệ cao hơn/thấp là quan hệ dành cho việc so sánh (do lệnh CMP thực hiện) độ lớn hai số không dấu NHAN phải nằm cách xa một khoảng -128…+127 byte so với lệnh tiếp theo sau lệnh JA/JNBE Chương trình

sẽ căn cứ vào vị trí NHAN để xác định giá trị dịch chuyển

Các cờ bị thay đổi: không

Ví dụ:

CMP AX, 12ABH ;so sanh AX voi 12ABH

JA THOI ;nhay den THOI neu AX cao hon 12ABH

26 JAE/JNB/JNC – Jump if Above or Equal/Jump if Not Below/Jump if

Mô tả: IP←IP+dịch chuyển

Ba lệnh trên biểu diễn cùng một thao tác nhảy có điều kiện tới NHAN nếu

CF = 0 Quan hệ cao hơn/thấp là quan hệ dành cho việc so sánh (do lệnh CMP thực hiện) độ lớn hai số không dấu NHAN phải nằm cách xa một khoảng -128…+127 byte so với lệnh tiếp theo sau lệnh JAE/JNB/JNC Chương trình sẽ căn cứ vào vị trí NHAN để xác định giá trị dịch chuyển

Các cờ bị thay đổi: không

Trang 30

Ví dụ:

CMP AL, 10H ;so sanh AL voi 10H

JAE THOI ;nhay den THOI neu AL cao hon hoac bang 10H

27 JB/JC/JNAE – Jump if Below/Jump if Carry/Jump if Not Above or Equal (nhảy nếu thấp hơn/nhảy nếu có nhớ/nhảy nếu không cao hơn hoặc bằng) Dạng lệnh: JB NHAN

Mô tả: IP←IP+dịch chuyển

Ba lệnh trên biểu diễn cùng một thao tác nhảy có điều kiện tới NHAN nếu

CF = 1 Quan hệ cao hơn/thấp là quan hệ dành cho việc so sánh (do lệnh CMP thực hiện) độ lớn hai số không dấu NHAN phải nằm cách xa một khoảng -128…+127 byte so với lệnh tiếp theo sau lệnh JB/JC/JNAE Chương trình sẽ căn cứ vào vị trí NHAN để xác định giá trị dịch chuyển

Các cờ bị thay đổi: không

Ví dụ:

CMP AL, 10H ;so sanh AL voi 10H

JB THOI ;nhay den THOI neu AL thap hon 10H

28 JBE/JNA – Jump if Below or Equal/Jump if Not Above (nhảy nếu thấp hơn hoặc bằng/nhảy nếu không cao hơn)

Dạng lệnh: JBE NHAN

Mô tả: IP←IP+dịch chuyển

Hai lệnh trên biểu diễn cùng một thao tác nhảy có điều kiện tới NHAN nếu CF +ZF = 1 Quan hệ cao hơn/thấp là quan hệ dành cho việc so sánh (do lệnh CMP thực hiện) độ lớn hai số không dấu NHAN phải nằm cách xa một khoảng -128…+127 byte so với lệnh tiếp theo sau lệnh JBE/JNA Chương trình

sẽ căn cứ vào vị trí NHAN để xác định giá trị dịch chuyển

Các cờ bị thay đổi: không

Ví dụ:

CMP AL, 10H ;so sanh AL voi 10H

JBE THOI ;nhay den THOI neu AL thap hon hoac

Trang 31

29 JE/JZ – Jump if Equal/Jump if Zero (nhảy nếu bằng nhau/nhảy nếu kết quả bằng không)

Dạng lệnh: JE NHAN

Mô tả: IP←IP+dịch chuyển

Lệnh trên biểu diễn thao tác nhảy có điều kiện tới NHAN nếu ZF = 1 NHAN phải nằm cách xa một khoảng -128…+127 byte so với lệnh tiếp theo sau lệnh JE/JZ Chương trình sẽ căn cứ vào vị trí NHAN để xác định giá trị dịch chuyển

Các cờ bị thay đổi: không

Ví dụ:

SUB AL, 10H ;tru AL cho 10H

JE THOI ;nhay den THOI neu AL bang 10H

30 JMP – Unconditional Jump (lệnh nhảy không điều kiện)

JMP trao quyền điều khiển cho vùng mục tiêu một cách không điều kiện Lệnh này có các chế độ giống như lệnh CALL và nó cũng phân biệt nhảy gần, nhảy xa

Dạng lệnh: Sau đây là những cách viết lệnh không điều kiện

Đây là lệnh nhảy trực tiếp vì dịch chuyển để trực tiếp trong mã lệnh

Để định hướng cho chương trình dịch làm việc nên viết lệnh dưới dạng: JMP SHORT NHAN

+ Nhảy gần: Trong trường hợp này NHAN phải nằm cách xa (dịch đi một khoảng) -32768…+32767 byte so với lệnh tiếp theo sau lệnh JMP Chương trình dịch sẽ căn cứ vào vị trí NHAN để xác định giá trị dịch chuyển Do đó IP←IP+dịch chuyển

Trang 32

Đây là lệnh nhảy trực tiếp vì dịch chuyển để trực tiếp trong mã lệnh Để định hướng cho chương trình dịch làm việc nên viết lệnh dưới dạng:

JMP NEAR NHAN + Nhảy xa: Trong trường hợp này NHAN nằm ở đoạn mã khác so với lệnh tiếp theo sau lệnh JMP Chương trình sẽ căn cứ vào vị trí NHAN để xác định giá trị địa chỉ nhảy đến (CS:IP của NHAN) Sau đó:

IP←IP của NHAN

CS←CS của NHAN

JMP BX

Đây là lệnh nhảy gần, trước đó BX phải chứa địa chỉ lệch của lệnh định nhảy đến trong đoạn CS Khi thực hiện lệnh này thì IP←BX Đây là lệnh nhảy gián tiếp vì địa chỉ lệch nằm trong thanh ghi Để định hướng cho chương trình dịch làm việc ta nên viết lệnh dưới dạng:

JMP NEAR PTR BX

JMP [BX]

Đây là lệnh nhảy gần IP mới được lấy từ nội dung 2 ô nhớ do BX và BX+1 chỉ ra trong đoạn DS (SI, DI có thể dùng thay chỗ của BX) Đây là lệnh nhảy gián tiếp vì địa chỉ lệch để trong ô nhớ Để định hướng cho chương trình dịch làm việc ta nên viết lệnh dưới dạng:

JMP WORD PTR [BX]

Một biến dạng khác của lệnh trên thu được khi ta viết lệnh dưới dạng: JMP DWORD PTR [BX]

Đây là lệnh nhảy xa Địa chỉ nhảy đến ứng với CS:IP Giá trị gán cho IP

và CS được chứa trong 4 ô nhớ do BX và BX+1 (cho IP), BX+2 và BX+3 cho (CS) chỉ a trong đoạn DS (SI, DI có thể sử dụng thay chỗ của BX) Đây cũng là lệnh nhảy gián tiếp vì địa chỉ lệch và địa chỉ cơ sở nằm trong ô nhớ

Các cờ bị thay đổi: không

31 JNE/JNZ – Jump if Not Equal/Jump if Not Zero (nhảy nếu không bằng nhau/nhảy nếu kết quả không rỗng)

Dạng lệnh: JNE NHAN

Mô tả: IP←IP+dịch chuyển

Trang 33

Hai lệnh trên biểu diễn cùng một thao tác nhảy có điều kiện tới NHAN nếu ZF = 0 NHãN phải nằm cách xa (dịch đi một khoảng) -128…127 byte so với lệnh tiếp theo sau lệnh JNE/JNZ Chương trình dịch sẽ căn cứ vào vị trí NHAN để xác định độ dịch chuyển

Các cờ bị thay đổi: không

Ví dụ:

CMP AL, 10H ;so sanh AL voi 10H

JNE THOI ;nhay den THOI neu AL khac 10H

32 LOOP – Loop if CX is not 0 (lặp nếu CX ≠ 0)

Dạng lệnh: LOOP NHAN

Mô tả: Lệnh này dùng để lặp lại đoạn chương trình (gồm các lệnh nằm trong khoảng từ NHAN đến hết lệnh LOOP NHAN) cho đến khi số lần lặp CX=0 Điều này có nghĩa là trước khi vào vòng lặp ta phải đưa số lần lặp mong muốn vào CX, và sau mỗi lần lặp thì CX tự động giảm đi 1

NHAN phải nằm cách xa (dịch đi một khoảng) tối đa -128 byte so với lệnh tiếp theo sau lệnh LOOP

Các cờ bị thay đổi: không

Ví dụ:

MOV AL, 0 ;xoa AL

MOV CX, 10 ;nap so lan lap vao CX

LAP: INC AL ;tang AL len 1

LOOP LAP ;lap lai 10 lan, AL=10

33 LOOPE/LOOPZ – Loop while CX=0 or ZF=0 (lặp lại đoạn chương trình cho đến khi CX=0 hoặc ZF=0)

Dạng lệnh: LOOPE NHAN

Mô tả: Lệnh này dùng để lặp lại đoạn chương trình (gồm các lệnh nằm trong khoảng từ NHAN đến hết lệnh LOOPE NHAN hoặc LOOPZ NHAN) cho đến khi số lần lặp CX=0 hoặc cờ ZF=0 Điều này có nghĩa là trước khi vào vòng lặp ta phải đưa số lần lặp mong muốn vào CX, và sau mỗi lần lặp thì CX

Trang 34

Ví dụ:

MOV CX, 50 ;nap so lan lap vao CX

LAP: INC AL ;tang AL

COMP AL, 16 ;so sanh AL voi 16

LOOPE LAP ;lap lai cho den khi AL≠16 hoac CX=0

34 LOOPNE/LOOPNZ – Loop while CX=0 or ZF=1 (lặp lại đoạn chương trình cho đến khi CX=0 hoặc ZF=1)

Dạng lệnh: LOOPNE NHAN

LOOPNZ NHAN

Mô tả: Lệnh này dùng để lặp lại đoạn chương trình (gồm các lệnh nằm trong khoảng từ NHAN đến hết lệnh LOOPNE NHAN hoặc LOOPNZ NHAN) cho đến khi số lần lặp CX=0 hoặc cờ ZF=1 Điều này có nghĩa là trước khi vào vòng lặp ta phải đưa số lần lặp mong muốn vào CX, và sau mỗi lần lặp thì CX

tự động giảm đi 1

NHAN phải nằm cách xa (dịch đi một khoảng) tối đa -128 byte so với lệnh tiếp theo sau lệnh LOOPNE/LOOPNZ

Các cờ bị thay đổi: không Ví dụ:

MOV CX, 50 ;nap so lan lap vao CX

LAP: INC AL ;tang AL

COMP AL, 16 ;so sanh AL voi 16

LOOPNE LAP ;lap lai cho den khi AL=16 hoac CX=0

Nhóm lệnh đặc biệt: Nhóm lệnh đặc biệt bao gồm các lệnh lấy bù 1 của số liệu trong nội dung thanh ghi, lệnh thiết lập và xóa các cờ, lệnh hiệu chỉnh thập phân một số liệu Hexa và lệnh vào/ra dữ liệu nổi tiếp

35 CALL – Call a procedure (gọi chương trình con)

Trang 35

- Nếu gọi gần: Lưu vào Stack giá trị IP của địa chỉ trở về (vì CS không đổi) và các thao tác khi gọi chương trình con diễn ra như sau:

Nội dung thanh ghi SP giảm đi 2 byte, SP←SP – 2

Nội dung thanh ghi IP được cất vào ngăn xếp (lưu địa chỉ trở về) {SP}←IP

Địa chỉ lệch của ctc (lên tới ±32K) được lưu vào thanh ghi IP

Khi gặp lệnh RET ở cuối ctc thì VXL lấy lại địa chỉ trở về IP từ Stack và tăng SP lên 2 byte

- Nếu gọi xa: Lưu vào Stack giá trị IP và CS của địa chỉ trở về và các thao tác khi gọi chương trình con diễn ra như sau:

Nội dung thanh ghi SP giảm đi 2 byte, SP←SP – 2 và CS được lưu vào ngăn xếp

Nội dung của CS được thay bằng địa chỉ đoạn của ctc được gọi

Nội dung thanh ghi SP lại giảm đi 2 byte và IP được cất vào ngăn xếp Địa chỉ lệch của ctc được lưu vào thanh ghi IP

Khi gặp lệnh RET ở cuối ctc thì VXL lấy lại địa chỉ trở về IP từ Stack và tăng SP lên 2 byte sau đó tiếp tục lấy lại CS và tăng SP lên 2 byte

Các cờ bị thay đổi: AF, CF, OF, PF, SF, ZF

Các thao tác của 8086 khi chạy lệnh: INT N

- Tạo địa chỉ mới của Stack, cất thanh ghi cờ vào Stack: SP←SP-2, {FR}→SP

- Cấm các ngắt khác tác động vào vi xử lý, cho vi xử lý chạy ở chế độ từng lệnh: IF←0, TF←0

- Tạo địa chỉ mới của Stack, cất địa chỉ đoạn của địa chỉ trở về vào Stack: SP←SP-2, SP←CS

- Tạo địa chỉ mới của Stack, cất địa chỉ lệch của địa chỉ trở về vào Stack: SP←SP- 2, SP←IP

- Vi xử lý lấy lệnh tại địa chỉ mới, địa chỉ con trỏ ngắt được tính toán như sau: {Nx4}→IP, {Nx4+2}→CS

Trang 36

- {SP}→IP, SP←SP+2

- {SP}→CS, SP←SP+2

- {SP}→FR, SP←SP+2

Các cờ bị thay đổi: tất cả các cờ (được phục hồi như trước khi diễn ra ngắt)

38 NOP – No Operation (CPU không làm gì)

Dạng lệnh: NOP

Lệnh này không thực hiện một công việc gì ngoài việc làm tăng nội dung của IP và tiêu tốn 3 chu kỳ đồng hồ Nó thường được dùng để tính thời gian trễ trong các vòng trễ hoặc để chiếm chỗ các lệnh cần thêm vào chương trình sau này mà không làm ảnh hưởng dến độ dài chương trình

Các cờ bị thay đổi: không

39 RET – Return from Procedure to Calling Program (trở về chương trình chính từ chương trình con)

Dạng lệnh: RET hoặc RET N (N là số nguyên dương)

Mô tả: RET được đặt cuối ctc để vi xử lý lấy lại địa chỉ trở về, mà nó đã được tự động cất tại ngăn xếp khi có lệnh gọi ctc Đặc biệt nếu dùng lệnh RET n thì sau khi đã lấy lại được địa chỉ trở về (chỉ có IP hoặc cả IP và CS) thì SP←SP+n (dùng để nhảy qua mà không lấy lại các thông số khác của chương trình còn lại trong ngăn xếp

Các cờ bị thay đổi: không

40 STC – Set the Carry Flag (lập cờ nhớ)

Dạng lệnh: STC

Mô tả: CF←1

STC thiết lập cờ nhớ bằng 1 và không ảnh hưởng đến các cờ khác

Các cờ bị thay đổi: CF=1

Trang 37

Bài 3

Bộ nhớ trong của hệ vi xử lý Mục tiêu

- Trình bày được các bộ nhớ trong hệ vi xử lý, cách tổ chức bộ nhớ của hệ

vi xử lý thông dụng

- Phân tích được các mô hình tổ chức bộ nhớ có trong hệ vi xử lý thực tế

- Giải thích được các sơ đồ ứng dụng

- Rèn luyện tính tư duy, chính xác, an toàn và vệ sinh công nghiệp

3.1 Bộ nhớ trong hệ vi xử lý

Bộ nhớ được sử dụng để lưu giữ mã lệnh của chương trình và dữ liệu cần

xử lý Bộ nhớ được ghép nối trực tiếp với CPU qua BUS hệ thống và là nơi đầu tiên CPU truy xuất tới để lấy thông tin khi khởi động hệ thống Yêu cầu đặt ra cho bộ nhớ là phải cho phép truy xuất với tốc độ cao để đáp ứng kịp thời các đòi hỏi của CPU Chỉ có bộ nhớ bán dẫn mới đáp ứng được yêu cầu cao về tốc độ truy xuất cao (hàng trăm đến hàng chục nsec)

Bộ nhớ bán dẫn được chia ra hai loại: Bộ nhớ chỉ đọc ROM (Read Only Memory) và bộ nhớ truy xuất ngẫu nhiên RAM (Ran dom Access Memory)

Hình 3.1 Mô phỏng phần tử nhớ

Trang 38

Mạch flip-flop RS (còn gọi là triger RS) đồng bộ là một mạch có khả năng lưu giữ các giá trị "0" hoặc "1" ở lối ra Có thể dùng RS flip - flop làm một mạch lưu giữ tín hiệu vào R bằng cách chốt dữ liệu đó lại tại Ngõ ra Q (hình 3.2) Các hãng chế tạo thực hiện mạch này bằng công nghệ cao, nên kích thước vô cùng nhỏ, có thể có hàng nhiều triệu phần tử nhớ trên một diện tích 1mm2 các

Vi mạch nhớ thông thường được chế tạo với độ dài từ nhớ và số lượng từ nhớ cố định Số bộ nhớ được liên kết tại một vị trí nhớ (có cùng địa chỉ) trong một chip nhớ được gọi là từ nhớ của chip nhớ, thường được chọn là 1, 4, hoặc 8bit Để tạo được một từ nhớ của bộ nhớ, tức là từ nhớ có độ dài (số bit trong một từ) chuẩn (theo chuẩn IBM là 8 bits), trong một số trường hợp nhất định cần phải tiến hành ghép các chip nhớ lại với nhau

Hình 3.2 a), b) và c) cho ta khái niệm về khả năng tạo một từ nhớ cơ bản (byte) khi từ nhớ của chip nhớ là 1bit, 2bits và 4 bits Trong trường hợp độ dài từ nhớ của chip nhớ là 8 bits, việc liên kết là không cần thiết

Hình 3.2 a) Mạch Flip-flop RS như một phần tử nhớ giá trị nhị phân

b) Chip nhớ RA và chip nhớ ROM

c) Chép các chip nhớ có độ dài từ nhớ khác nhau để tạo đặc từ như có độ dài 8 bit

Trang 39

3.1.2 Vài nét về bộ nhớ trong của hệ vi xử lý và máy tính

Do ưu điểm tương thích tuyệt đối về kích thước, tiêu thụ năng lượng thấp

và mức logic, đặc biệt là tốc độ truy nhập, nên bộ nhớ bán dẫn được sử dụng làm

bộ nhớ chính (Main Memory) trong các hệ Vi xử lý cũng như trong các máy tính

PC, nhiều khi được ghép nối ngay trong bộ mạch chính, hoặc được thiết kế như những vỉ nhỏ cắm vào khe cắm riêng trên bờ mạch chính

Nhờ những tiến bộ vượt bậc của công nghệ vi mạch, đặc biệt là công nghệ cao (Hight Technology) các chip nhớ được chế tạo ngày càng nhỏ và có dung lượng tương đối lớn, tốc độ truy nhập rất cao và giá thành thấp Hiện đã có các chip nhớ có dung lượng hàng trăm triệu từ nhớ, được cấu thành từ hàng chục tỷ transistor trên một một cấu trúc cỡ 1mm2 Bộ nhớ trong của một hệ Vi xử lý gồm hai loại chính:

Bộ nhớ ROM: là bộ nhớ chỉ đọc (Read Only Memory), thông thường chứa các chương trình giám sát (monitoring) các hoạt động chức năng của hệ Vi xử lý: chương trình thiết lập hệ thống, chương trình vào/ra dữ liệu quản lý và phân phát bộ nhớ, quản lý các thiết bị vào/ra v.v Đối với máy tính PC, đó là chương trình hệ thống vào/ra cơ sở (BIOS - Basic Input Output System) Đặc điểm cơ bản nhất của bộ nhớ này là sự bảo toàn dữ liệu khi không có nguồn nuôi

Bộ nhớ RAM - là bộ nhớ ghi/đọc tuỳ tiện (Random Access Memory) Vì

có khả năng ghi/đọc tuỳ theo người dùng, nên bộ nhớ này được sử dụng để chứa

dữ liệu, các chương trình ứng dụng nhất thời của người dùng v.v Trong máy tính PC, bộ nhớ này là nơi chương trình hệ điều hành được nạp khi khởi động máy, hay nơi chứa các chương trình ứng dụng lúc nó được thực thi Bộ nhớ này

bị mất dữ liệu khi bị mất nguồn nuôi

Trong các hệ Vi xử lý đơn giản, hai bộ nhớ này thường được thiết kế và lắp ráp từ các chip nhớ riêng biệt thành một vỉ nhớ Địa chỉ được giải mã cho từng chip nhớ nhờ khối giải mã, thông thường là một vi mạch giải mã hay được xây dựng từ các mạch tổ hợp logic Các tín hiệu điều khiển việc ghi/đọc bộ nhớ

do CPU cung cấp Mạch triger RS đồng bộ là một mạch có khả năng lưu giữ các giá trị "0" hoặc "1" ở lối ra Có thể dùng RS flip-flop làm một mạch lưu giữ tín hiệu vào R bằng cách chốt dữ liệu đó lại tại ngõ ra Q (hình 3.2)

Bộ nhớ được xây dựng từ các chip nhớ Các chip nhớ RAM (SRAM hoặc DRAM) thường có các từ nhớ có độ dài 1 bit, 4 bits hoặc 8 bits Từ các chip nhớ loại này có thể xây dựng được bộ nhớ với mỗi ô nhớ chứa được 1byte dữ liệu (8 bits)

Xây dựng bộ nhớ với các chip SRAM

Trang 40

Giả sử cần xây dựng một bộ nhớ kích thước 16kbyte trên cơ sở các chip SRAM loại 16K x 1bit

Băng nhớ SRAM 16kbyte được xây dựng trên cơ sở 8 chip SRAM loại 16K x bit, để có được ô nhớ có độ dài 8 bits (từ nhớ cơ bản) Để làm được điều này người ta sắp đặt 8 chip SRAM loại 16K x bit sao cho mỗi chip tại một vị trí xác định sẽ đảm nhiệm lưu trữ bit dữ liệu có trọng số tương ứng trong byte dữ liệu

Cấu trúc chip SRAM

Hình 3.3 Chip nhớ RAM 64K bit (64K x 1)

Các đường tín hiệu:

A 13 – A0 BUS địa chỉ

- CS: Tín hiệu chọn chip Nếu CS = 0 thì truy nhập được chip

- W/R: Tín hiệu điều khiển ghi/đọc W-O điều khiển ghi

Ngày đăng: 15/03/2022, 09:33

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] T hiết kế các chương trình ứng dụng dựa trên ngôn ngữ C , Yoon, Kun Su. KorPolytechnics Khác
[2] Đề cương môđun/môn học nghề Sửa chữa thiết bị điện tử công nghiệp”, Dự án Giáo dục kỹ thuật và Dạy nghề (VTEP), Tổng cục Dạy Nghề, Hà Nội, 2003 Khác
[3] Microprocessor and IC families - Walter H. Buchbaum. Sc.D Khác
[4] Mikrocompute Lehrbuch - HPI Fachbuchreihen Pflaum Verlag Munchen [5] 8051 Development Boad, Rev 5 - Paul Stoffregen Khác
[6] Họ vi điều khiển - Tống văn On - Đại học Bách khoa TP.HCM - 2005 Khác

HÌNH ẢNH LIÊN QUAN

Hình  1.14.  Sơ đồ khối một máy tính cổ điển - Giáo trình Vi xử lý-Vi điều khiển (Nghề: Điện tử công nghiệp - Trung cấp) - Trường CĐ nghề Việt Nam - Hàn Quốc thành phố Hà Nội
nh 1.14. Sơ đồ khối một máy tính cổ điển (Trang 9)
Hỡnh 2.1. Sơ đồ khối cấu trỳc của àP8085 - Giáo trình Vi xử lý-Vi điều khiển (Nghề: Điện tử công nghiệp - Trung cấp) - Trường CĐ nghề Việt Nam - Hàn Quốc thành phố Hà Nội
nh 2.1. Sơ đồ khối cấu trỳc của àP8085 (Trang 11)
Hỡnh 2.2. Sơ đồ chõn của àP8085 - Giáo trình Vi xử lý-Vi điều khiển (Nghề: Điện tử công nghiệp - Trung cấp) - Trường CĐ nghề Việt Nam - Hàn Quốc thành phố Hà Nội
nh 2.2. Sơ đồ chõn của àP8085 (Trang 12)
Hình 2.4. Hiện tượng đoản mạch xảy ra khi nối hai đầu ra của hai phần tử trên cùng một - Giáo trình Vi xử lý-Vi điều khiển (Nghề: Điện tử công nghiệp - Trung cấp) - Trường CĐ nghề Việt Nam - Hàn Quốc thành phố Hà Nội
Hình 2.4. Hiện tượng đoản mạch xảy ra khi nối hai đầu ra của hai phần tử trên cùng một (Trang 16)
Hình 2.5.  Phần tử đảo 3 trạng thái và sơ đồtương đương Ngõ ra   của phần tử ở trạng thái high-z - Giáo trình Vi xử lý-Vi điều khiển (Nghề: Điện tử công nghiệp - Trung cấp) - Trường CĐ nghề Việt Nam - Hàn Quốc thành phố Hà Nội
Hình 2.5. Phần tử đảo 3 trạng thái và sơ đồtương đương Ngõ ra của phần tử ở trạng thái high-z (Trang 17)
Hình 3.5.  Biểu đồ thời gian ghi đọc bộ nhớ - Giáo trình Vi xử lý-Vi điều khiển (Nghề: Điện tử công nghiệp - Trung cấp) - Trường CĐ nghề Việt Nam - Hàn Quốc thành phố Hà Nội
Hình 3.5. Biểu đồ thời gian ghi đọc bộ nhớ (Trang 41)
Hình 3.6. Cấu trúc bên trong chip DRAM - Giáo trình Vi xử lý-Vi điều khiển (Nghề: Điện tử công nghiệp - Trung cấp) - Trường CĐ nghề Việt Nam - Hàn Quốc thành phố Hà Nội
Hình 3.6. Cấu trúc bên trong chip DRAM (Trang 42)
Hình 3.7a. Sơ đồ cấu trúc các phần tử nhớ cơ bản - Giáo trình Vi xử lý-Vi điều khiển (Nghề: Điện tử công nghiệp - Trung cấp) - Trường CĐ nghề Việt Nam - Hàn Quốc thành phố Hà Nội
Hình 3.7a. Sơ đồ cấu trúc các phần tử nhớ cơ bản (Trang 43)
Hình 3.7b Sơ đồ cấu trúc các phần tử nhớ - Giáo trình Vi xử lý-Vi điều khiển (Nghề: Điện tử công nghiệp - Trung cấp) - Trường CĐ nghề Việt Nam - Hàn Quốc thành phố Hà Nội
Hình 3.7b Sơ đồ cấu trúc các phần tử nhớ (Trang 44)
Hình 3.9. Tạo từ nhớ 8 bit từ các các chip nhớ có độ dài từ nhớ nhỏ hơn. - Giáo trình Vi xử lý-Vi điều khiển (Nghề: Điện tử công nghiệp - Trung cấp) - Trường CĐ nghề Việt Nam - Hàn Quốc thành phố Hà Nội
Hình 3.9. Tạo từ nhớ 8 bit từ các các chip nhớ có độ dài từ nhớ nhỏ hơn (Trang 45)
Hình 3.11.  Sơ đồ khối vi nhớ 32KB từ các chip ROM 2764 - Giáo trình Vi xử lý-Vi điều khiển (Nghề: Điện tử công nghiệp - Trung cấp) - Trường CĐ nghề Việt Nam - Hàn Quốc thành phố Hà Nội
Hình 3.11. Sơ đồ khối vi nhớ 32KB từ các chip ROM 2764 (Trang 47)
Hình 4.2.  Sơ đồ nguyên lý và các ghép nối của bàn phím - Giáo trình Vi xử lý-Vi điều khiển (Nghề: Điện tử công nghiệp - Trung cấp) - Trường CĐ nghề Việt Nam - Hàn Quốc thành phố Hà Nội
Hình 4.2. Sơ đồ nguyên lý và các ghép nối của bàn phím (Trang 49)
Hình 4.3.  Bàn phím 22 phím sử dụng giao tiếp qua PPI8255 - Giáo trình Vi xử lý-Vi điều khiển (Nghề: Điện tử công nghiệp - Trung cấp) - Trường CĐ nghề Việt Nam - Hàn Quốc thành phố Hà Nội
Hình 4.3. Bàn phím 22 phím sử dụng giao tiếp qua PPI8255 (Trang 50)
Hình 4.4. Lưu đồ thời gian thực hiện - Giáo trình Vi xử lý-Vi điều khiển (Nghề: Điện tử công nghiệp - Trung cấp) - Trường CĐ nghề Việt Nam - Hàn Quốc thành phố Hà Nội
Hình 4.4. Lưu đồ thời gian thực hiện (Trang 52)
Hình 4.5 -  Bộ điều khiển bàn phím - Giáo trình Vi xử lý-Vi điều khiển (Nghề: Điện tử công nghiệp - Trung cấp) - Trường CĐ nghề Việt Nam - Hàn Quốc thành phố Hà Nội
Hình 4.5 Bộ điều khiển bàn phím (Trang 52)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm