Tải bản đầy đủ (.docx) (33 trang)

Tài liệu môn học vi xử lí

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (161.33 KB, 33 trang )

Lời mở đầu
Với các bạn đã từng và đang học môn này thì biết chắc nó khó thế nào, về cả
nội dung môn học và phương pháp thi. Và đây có lẽ cũng là môn đầu tiên các
bạn thi bằng hình thức vấn đáp. Nên để các bạn dễ hình dung, mình sẽ giới thiệu
về cách thức thi cuối kì cho các bạn chưa biết. Hình thức thi như sau (cập nhật
năm 2016, các khóa sau có thay đổi thì không chắc chắn):
Đầu tiên sẽ có khoảng 20 người bất kì vào phòng làm bài, không nhất thiết theo
chữ cái, không nhất thiết theo lớp nào, chỉ cần có lịch thi là vào ngày hôm đó thì
đều có thể vào. Vào phòng các bạn sẽ được giáo viên cho bốc đề, 1 câu lý
thuyết và 1 câu bài tập (thường thì có 2 xấp đề và các bạn lấy tự trên xuống,
nhưng nói chung là may rủi thôi).
Sau khi bốc đề thì các bạn sẽ xuống dưới ngồi làm bài, thời gian chuẩn bị là
15’ nhưng thường sẽ lâu hơn. Sau đó các bạn sẽ được 1 giáo viên chỉ định đi
vào thầy(cô) nào còn rảnh, hoặc nếu muốn chọn thầy cô thì tốt nhất là cứ ỉm ỉm,
chờ thầy (cô) đó xong thì vào luôn. Về số lượng giáo viên hỏi thi thường là 5-6
người, ai dễ ai khó thì có thể hỏi người khác nhưng nói chung là dễ khó tùy vào
mình và nhiều yếu tố khác.
Khi hỏi thì đầu tiên các bạn sẽ trả lời 2 câu hỏi lúc bốc đề, sau đó thầy cô sẽ
hỏi thêm các vấn đề khác, có thể đó là những vấn đề mình đã học hoặc những
vấn đề bên ngoài (cái này mới khoai) và nói chung là thi vấn đáp nên sẽ hỏi trên
trời dưới biển, nên khuyên các bạn học thì hãy cố mà hiểu môn này, đọc thêm
tài liệu bên ngoài còn đọc thuộc chẳng ăn thua đâu, gặp mấy thầy thì xác định gì
cũng chết (chém gió thế chứ hiểu hết môn này thì thánh cmnr, nên đôi khi vẫn
bảo “hay không bằng may” là vậy).
Đó là về hình thức thi, còn về tài liệu này, mình xin nói trước đây chỉ là TÀI
LIỆU THAM KHẢO, KHÔNG PHẢI LÀ ĐÁP ÁN. Những gì mình trình bày
đây mục đích là để các bạn tham khảo, các bạn có thể xem nó như gợi ý để có
được câu trả lời của mình. Vì như đã nói ở trên, vi xử lý là môn thi vấn đáp,
thầy cô hỏi rất nhiều vấn đề khác. Tài liệu mình viết ra mình cũng chẳng thu
được gì nên mình cũng không đảm bảo 100% là sẽ đúng hoản toàn, mình chỉ
viết có lẽ cũng vì mong giúp đước các bạn, các em sinh viên khóa sau 1 phần


nhỏ nào đó để vượt qua môn học này. Và cuối cùng, vẫn nhắc lại câu cũ, đây là
TÀI LIỆU THAM KHẢO, KHÔNG PHẢI ĐÁP ÁN. Muốn điểm cao thì chịu
khó đi học, ghi chép đầy đủ, đọc tài liệu bên ngoài và trước khi đi thi nên “ăn
chay cầu may”.
CHÚC CÁC BẠN HỌC TỐT VÀ VƯỢT QUA MÔN HỌC NÀY.


PHẦN 1: LÝ THUYẾT.
Đề 1:
a.
b.

Trình bày kiến trúc và nguyên lý hoạt động của máy tính theo Von
Neumann. Nêu vai trò của CPU và bộ nhớ trong hệ.
Nêu cơ chế mà nhờ đó CPU có thể thực hiện lệnh 1 cách tuần tự.

Gợi ý:
a.

Cấu trúc hệ vi xử lý bao gồm 2 phần chính là CPU và bộ nhớ (memory).
Ngoài ra còn có các cổng (Port) để kết nối hệ với ngoại vi (I/O). Các phần
được liên kết với nhau bởi 3 đường bus là A_bus, D_bus, C_bus.

* Nguyên lý hoạt động:


- Luôn hoạt động theo nguyên tắc địa chỉ, khi CPU cần trao đổi thông tin
với Mem hay các Port thì đều thông qua địa chỉ của nó.
- Mỗi CPU có 1 tập lệnh hữu hạn.
- CPU thực hiện các lệnh 1 cách tuần tự.

- Để thực hiện các lệnh rẽ nhánh cí điều kiện phải căn cứ vào cờ nhảy
(flag).
* Vai trò của CPU và bộ nhớ trong hệ
- Vai trò của CPU. CPU gồm 3 phần:
+, CU: Đơn vị điều khiển, đọc lệnh, giải mã lệnh, thực hiện lệnh.
+, ALU: Khối xử lý toán học và logic.
+, Thanh ghi: Nơi lưu trữ dữ liệu tạm thời.
- Vai trò bộ nhớ: dùng để lưu trữ dự liệu và chứa các lệnh. Trong cấu trúc
Von neuman thì bộ nhớ dữ liệu và bộ nhớ chương trình có chung không gian
nhớ.
b. Cơ chế mà CPU có thể thực hiện các lệnh 1 cách tuần tự là nhờ bộ đếm
chương trình PC. Thanh ghi PC chứa địa chỉ của ô nhớ có nội dung là mã
lệnh tiếp theo sẽ được thực hiện. Khi CPU tìm được mã lệnh thứ n thì PC tự
động tăng lên 1 để trỏ vào ô nhớ chứa mã lệnh n+1.
Đề 3:
a.
b.

Trình bày kiến trúc và nguyên lý hoạt động của máy tính theo Von
Neumann. Nói rõ vì sao CPU có thể truy nhập theo địa chỉ
Nêu cơ chế mà nhờ đó CPU có thể thực hiện lệnh rẽ nhánh có điều kiện.

Gợi ý:
a.

b.

Đã trình bày ở đề 1
+, CPU có thể truy nhập theo địa chỉ là nhờ bộ giải mã địa chỉ. Chính nhờ
bộ giải mã địa chỉ, thông qua D_bus sẽ trỏ đến ô nhớ hay I/O có địa chỉ

mong muốn.
Nguyên lý mà CPU có thể thực hiện lệnh rẽ nhánh có điều kiện là: Đầu
tiên vi xử lý sẽ kiểm tra điều kiện. Nếu điều kiện không thỏa mãn thì PC
tăng lên 1 và thực hiện lệnh tiếp theo. Nếu điều kiện thỏa mãn thì chương
trình sẽ nhảy đến nhãn. Lệnh rẽ nhánh có điều kiện xác định địa chỉ
tương đối tức là xác định từ địa chỉ hiện tại được bao nhiêu cộng vào PC.


(Tạm hiểu địa chỉ tương đối là ví dụ chương trình đang ở lệnh rẽ nhánh
có điều kiện có địa chỉ là 1000 và cái nhãn có địa chỉ 1200 thì địa chỉ
offset của nó là 200).
Đề 5:
a.
b.

Trình bày kiến trúc và nguyên lý hoạt động của máy tính theo Von
Neumann. Nêu rõ vì sao có thể nối chung bus số liệu trong hệ.
Bạn hiểu thế nào khi CPU truy nhập vào ra như 1 ô nhớ hay truy nhập ô
nhớ nhờ cổng vào ra

Gợi ý:
a.
b.

Đã trình bày ở đề 1
+, CPU truy nhập cổng vào ra như 1 ô nhớ là: Khi đó các ô nhớ và các
cổng vào ra (port) sử dụng chung 1 bộ giải mã địa chỉ (DEC) do đó khi
CPU truy nhập cổng vào ra thì các cổng vào ra này có địa chỉ như là các ô
nhớ, mà theo nguyên lí Von Neuman thì CPU trao đổi dữ liệu theo
nguyên tắc địa chỉ, do đó CPU truy nhập cổng vào ra cũng như là các ô

nhớ.
+, Khi truy nhập ô nhớ nhờ cổng vào ra thì lúc này sẽ có 2 bộ giải mã địa
chỉ, 1 bộ giải mã địa chỉ cho các ô nhớ, 1 bộ giải mã địa chỉ cho các Port.

Đề 7:
a.
b.

Trình bày kiến trúc và nguyên lý hoạt động của máy tính theo Von
Neumann.
Bằng cách nào có thể truy nhập tới các phần tử khác nhau thông qua các
địa chỉ khác nhau:

Đề 9:
a.
b.

Mô tả chi tiết hoạt động thực hiện 1 lệnh của CPU
Minh họa trường hợp truy nhập trực tiếp
MOV R0, 50H

Gợi ý:
a.

Mô tả
+, Đầu tiên con trỏ PC sẽ chứa nội dung là ô nhớ có chứa mã lệnh cần
thực hiện. Con trỏ PC được đưa vào bộ giải mã địa chỉ. Do PC chứa ô
nhớ chứa mã lệnh nên nhờ có bộ giải mã địa chỉ sẽ trỏ đến ô nhớ có chứa
mã lệnh mong muốn.
+, Nội dung của ô nhớ mà bộ giải mã địa chỉ trỏ đến sẽ được đưa vào bộ

đệm Buffer.


b.

+, CPU thông qua C_bus sẽ gửi tín hiệu OE tích cực mức thấp cho phép
dữ liệu đi từ bộ đệm buffer đi qua D_bus về CPU.
+, Dữ liệu từ D_bus sẽ được đưa vào thanh ghi lệnh IR, sau đó đưa vào
bộ giải mã lệnh DEC.
+, Tại bộ giải mã lệnh DEC thì nó sẽ giải mã để biết lệnh đó bao nhiêu
byte, lệnh đó để làm gì. Từ đó thực hiện lệnh.
Mô tả chi tiết thực hiện lệnh trên.
- Đầu tiên con trỏ PC sẽ có nội dung là địa chỉ ô nhớ chứa mã lệnh của
lệnh MOV R0, Addr là A8, con trỏ PC sẽ thông qua mạch giải mã địa chỉ
để đưa đến ô nhớ có nội dung là A8 (ở đây mình ví dụ là ô nhớ 15).
- Nội dung của ô nhớ đó (A8) được đưa vào bộ nhớ đệm Buffer. CPU gửi
tín hiệu OE cho phép dữ liệu đi từ Buffer đi vào thanh ghi lệnh IR và bộ
giải mã lệnh DEC.
- Tại bộ giải mã lệnh DEC nó sẽ giải mã và biết lệnh này là 2 byte, có tác
dụng là chuyển nội dung ở ô nhớ 50H vào thanh ghi R0 (Có thể tra các
điều này trong tập lệnh của MCS- 51).
- Do lệnh này 2 byte nên nó sẽ chờ byte tiếp theo. Lúc này con trỏ PC
tăng lên 1, nhờ mạch giải mã địa chỉ trỏ đến ô nhớ tiếp theo (ô nhớ 16).
Tại ô nhớ này sẽ có nội dung là 50H.
- Dữ liệu từ ô nhớ đó (ô số 16) sẽ được đưa vào bộ buffer, sau đó khi có
tín hiệu OE sẽ được đưa lên D_bus và đi vào khối MAR.
- Dữ liệu từ khối MAR (ở đây là 50H) sẽ lại được đưa vào bộ giải mã địa
chỉ DEC để trỏ đến ô nhớ 50H.
- Dữ liệu từ ô 50H sẽ lại được đưa xuống Buffer đưa lên D_bus và sau đó
sẽ được di chuyển vào thanh ghi R0.

Lưu ý: Ở đây lệnh này là 2 byte, bộ giải mã lệnh DEC sẽ không biết được
đâu là mã lệnh và đâu là mã lệnh (A8) và đâu là nội dung (50H) nó chỉ có
thể phân biệt nhờ thứ tự. Nghĩa là A8 đến trước thì nó là mã lệnh và nó có
2 byte nên cái tiếp theo sẽ là nội dung thực hiện lệnh để phân biệt với mã
lệnh 50H.

Đề 11:
a.
b.

Mô tả chi tiết hoạt động thực hiện 1 lệnh của CPU
Minh họa trường hợp truy nhập gián tiếp qua thanh ghi.
ADD A, @R0

Gợi ý:
a.
b.

Đã nêu ở đề 9
Mô tả lệnh


- Đầu tiên con trỏ PC có nội dung là ô nhớ chứa mã lệnh này (mã lệnh
này là 26H). Con trỏ PC sẽ thông qua mạch giải mã địa chỉ trỏ đến ô nhớ
chứa nội dung 26H.
- Dữ liệu này sẽ được đưa xuống bộ nhớ đệm Buffer, sau đó CPU sẽ
thông qua C_bus truyền tín hiệu OE cho phép dữ liệu đi từ Buffer qua
D_bus về thanh ghi lệnh IR và vào bộ giải mã lệnh DEC.
- Tại bộ giải mã lệnh DEC nó sẽ giải mã lệnh (26H) và biết rằng lệnh này
1 byte, thực hiện nhiện vụ cộng nội dung của ngăn nhớ RAM có địa chỉ

được cất trong R0 vài thanh ghi A
( Chỗ này hơi khó hiểu với những người chưa quen, tạm hiểu nó như sau.
Ví dụ thanh ghi R0 có nội dung là A1 và ô nhớ A1 có nội dung là 12H thì
lệnh này có tác dụng cộng nội dung của ô nhớ A1 hay cộng 12H vào
thanh ghi A, kết quả cất ở thanh ghi A).
- Tiếp theo nó sẽ lấy nội dung của thanh ghi R0 đi qua MAR và được đưa
vào bộ giải mã địa chỉ. Bộ giải mã địa chỉ sẽ trỏ đến ô nhớ có địa chỉ là
nội dung thanh ghi R0 và đưa dữ liệu ô nhớ đó vào Buffer. CPU lại đưa
tín hiệu OE để cho phép dữ liệu từ Buffer lên D_bus đi vào OP2 của khối
ALU. Nội dung thanh ghi A sẽ được đưa vào OP1.
- Khối ALU sẽ thực hiện phép cộng OP1 và OP2 sau đó kết quả được đưa
trả về thanh ghi A.
CÁC ĐỀ 13, 15 TƯƠNG TỰ, CÁC BẠN TỰ LÀM. Lưu ý 2 đề này thì không
cần sử dụng đến bộ MAR, ví dụ đề số 15 thì sau khi thực hiện giải mã lệnh
xong thì đợi đến byte tiếp theo, bộ giải mã địa chỉ sẽ trỏ đến ô nhớ có nội dung
50H, đưa xuông buffer qua D-bus rồi đi vào thanh ghi A. Nói thế không hiểu thì
thôi chịu khó đi hỏi các siêu nhân khác, đang tết mẹ bắt dọn nhà nên không có
nhiều free time ))).
Đề 17:
a.
b.

Nêu cơ chế ngắt trong hệ vi xử lý, mục địch, giải pháp để cất dữ và khôi
phục trạng thái?
Trình bày cách xác định nguồn báo ngắt bằng phần mềm.

Gợi ý:
a.

Cơ chế ngắt:

+, Khi chương trình đang thực hiện câu lệnh thứ k mà gặp tín hiệu báo
ngắt (INT) thì lúc này vi xử lý sẽ thực hiện xong câu lệnh thứ k rồi kiểm
tra ngắt.
+, Nếu như ngắt đó không được chấp nhận thì vi xử lý bỏ qua và thực
hiện câu lệnh tiếp theo.


+, Nếu như ngắt nó ok thì vxl cất các cờ cần thiết, PC hiện tại, trạng thái
các thanh ghi (nếu cần) vào ngăn xếp.
+, Tra bảng Vecto ngắt để xác định ngắt đó là ngắt gì, chương trình phục
vụ ngắt nằm ở đâu, sau đó sẽ thực hiện chương trình phục vụ ngắt cho
đến khi gặp lệnh RETI thì dừng chương trình phục vụ ngắt.
+, Lúc này vxl sẽ lấy các cờ, PC các thanh ghi đã cất từ ngăn xếp ra, tiếp
tục thực hiện chương trình chính…..
Lưu ý: Nếu có nhiều ngắt thì sẽ dựa vào thanh ghi IE để kiểm tra thứ tự
ưu tiên ngắt, nếu đang thực hiện ngắt này mà lại có ngắt khác thì lại xem
xét rồi thực hiện ngắt cái kia trước. Kiểu như đang ngồi viết cái này
(chương trình chính) thì gấu gọi điện thoại (ngắt 1). Lúc đang nghe điện
thoại thì mẹ kêu ra mẹ nhờ (ngắt 2) và lúc này thì phải bảo gấu chờ, ra
giúp mẹ xong quay về nói chuyện tiếp với gấu. Nói chuyện với gấu xong
rồi lại quay lại viết tiếp…Kiểu như thế )) À gấu em nó đăng kí nên gọi
thoải mái…)))
* Mục đích giải pháp để cất giữ và khôi phục trạng thái là:
Để cất giữ và khôi phục trạng thái thì ta cần phải cất các cờ, con trò PC hiện tại,
các thanh ghi có liên quan đến chương trình phục vụ ngắt vào ngăn xếp để trong
quá trình vxl thực hiện chương trình phục vụ ngắt, các thông tin này sẽ không bị
thay đổi. Sau khi chương trình phục vụ ngắt thực hiện xong ta lại lấy các cờ, PC
thanh ghi ra, khôi phục lại trạng thái, tiếp tục thực hiện chương trình chính.
b.


Trình bày cách xác định nguồn báo ngắt bằng phần mềm.
(Cái này thì các thánh nên vẽ đi cái sơ đồ, do điều kiện hạn chế nên ở đây
không vẽ, ai đi học thì chịu khó vẽ rồi nhìn cho dễ hiểu)
Để xác định nguồn báo ngắt bằng phần mềm thì phải sử dụng phần mềm
để kiểm tra bit ở thanh ghi, dựa vào bit để xác định ngoại vi báo ngắt. Khi
có tín hiệu từ bộ chốt (Latch) đưa lên 1 trong số 8 đường D_bus và đưa
vào thanh ghi thì trong thanh ghi, chương trình sẽ kiểm tra bit xem I/O
nào báo ngắt.

Đề 19:
a.
b.

Nêu cơ chế ngắt trong hệ vi xử lý, ưu điểm, khuyết điểm của cơ chế này?
Trình bày cách xác định nguồn báo ngắt bằng phần cứng.

Gợi ý:
a.

Cơ chế thì đã nói ở trên, không nói lại.
* Ưu điểm của cơ chế này là không tốn thời gian hỏi vòng, do đó CPU sẽ
đỡ tốn năng lượng hơn, chạy nhanh hơn.


b.

* Nhược điểm: Nếu như I/O nào đó trao đổi dữ liệu với số lượng lớn thì
các I/O khác ít có cơ hội trao đổi dữ liệu.
(Cái này thì đến phần phương thức điều khiển vào ra sẽ cụ thể hơn)
Xác định nguồn báo ngắt bằng phần cứng.

Nếu xét về sơ đồ thì báo ngắt bằng phần mềm và phần cứng nó như nhau,
nên vẽ sơ đồ thì các thánh cứ vẽ như ở phần cứng.
Tuy nhiên ở xác định báo ngắt bằng phần mềm thì ta cần nhấn mạnh đó
là vxl xác định ngoại vi ngắt dựa vào vecto ngắt (phần mềm là dựa vào
kiểm tra bit). Khi 1 thiết bị nào đó báo ngắt thì tín hiệu Ry= 0 thông qua
mạch AND để tạo tín hiệu INT (cái này nhìn vào sơ đồ sẽ hiểu). Khi thực
hiện báo ngắt bằng phần cứng thì CPU dựa vào vecto ngắt, nhờ vào mạch
AND để x/đ thiết bị nào ngắt.
Ví dụ nếu như không có cái nào ngắt thì Ry0=Ry1=…=Ry7=0 nên tín
hiệu là 11111111=FF. Khi có 1 cái ngắt, như I/O 6 chẳng hạn thì Ry6=0
và tín hiệu sẽ là 10111111= BF và vi xử lý sẽ dựa vào đó để biết rằng I/O
6 báo ngắt.

Đề 21:
a.
b.

Ngăn xếp: vai trò và hoạt động của nó.
Liệu có tồn tại hệ vi xử lý mà hoạt động của nó không cần ngăn xếp
không. Giải thích?

Gợi ý:
a.

b.

Ngăn xếp
- Ngăn xếp là 1 vùng nhớ nằm trong RAM dùng để lưu trữ dự liệu 1 cách
tạm thời.
- Ngăn xếp hoạt động theo nguyên tắc LIFO (Last In First Out) hoặc

FIFO (First In First Out). Trong MCS-51 thì ngăn xếp hoạt động theo
nguyên tắc LIFO, những dữ liệu nào được cất vào ngăn xếp trước thì sẽ
được lấy ra sau và ngược lại. Để thực hiện theo nguyên tắc này thì ngăn
xếp có 1 con trỏ gọi là con trỏ SP (Stack Pointer)
- Để cất dữ liệu vào ngăn xếp thì ta sử dụng lệnh PUSH. Trước khi thực
hiện lệnh PUSH thì SP tự động tăng lên 1 để trỏ đến ngăn xếp tiếp theo.
- Để lấy dữ liệu ra thì ta sử dụng lệnh POP. Sau khi dữ liệu được lấy ra thì
con trỏ SP tự động giảm đi 1.
Lưu ý: có bao nhiêu lệnh PUSH thì có bấy nhiêu lệnh POP, cái nào PUSH
trước thì POP sau…
Trên lý thuyết thì có thể tồn tại 1 hệ vi xử lý hoạt động mà không cần
ngăn xếp nếu như hệ vi xử lý đó chỉ thực hiện các chương trình đơn giản
như cộng trừ không nhớ, không có nhảy, không rẽ nhánh. Tuy nhiên thực
tế 1 hệ vi xử lý được làm ra thường để thực hiện những việc phức tạp hơn


thế, do đó trên thực tế không bao giờ tồn tại hệ vi xử lý hoạt động không
cần ngăn xếp.
***11h đêm rồi, đi ngủ. Mẹ dặn ngủ sớm mới đẹp zai. Mấy thánh BK cứ
cày đêm lắm, bảo sao ế dài. Có học thì đọc xong dòng này làm động lực,
tắt máy tính đi ngủ đê. ***
Đề 23:
a. Vẽ lược đồ hoạt động của vi xử lý kể từ lúc RESET.
b. Vecto RESET và vecto ngắt có thể trùng nhau không? Giải thích?
c. Nêu sự cần thiết của ngắt NMI (ngắt không che).
Gợi ý:
a.

Vẽ lược đồ hoạt động của vi xử lý kể từ lúc RESET
RESET


DMA?A

BUS- Hiz

Y

DMA Mode
N
Y

INT?

PC -> Stack

NMI

Y

Flag -> Stack
Chương trình phục vụ ngắt

N
Y
N

IE?

N


+, Sau khi ấn Reset, CPU kiểm tra xem vxl có ở chế độ vào ra trực tiếp
Đọc lệnh, giải mã lệnh, thực hiện lệnh
DMA hay không, nếu có thì thực hiện đưa các đường bus A, D, C lên trạng
thái cao trở và thực hiện chế độ DMA.
+, Nếu không ở chế độ DMA thì sẽ kiểm tra xem có ngắt hay không, nếu
không thì thực hiện chương trình chính, đọc lệnh, giải mã lệnh thực hiện
lệnh.


+, Nếu như có ngắt thì sẽ kiểm tra xem đó có phải là ngắt không che được
hay không, nếu là ngắt không che được thì tiến hành cất các cờ, PC vào ngăn
xếp, thực hiện chương trình phục vụ ngắt đến khi gặp lệnh RETI xong lấy
cờ, PC ra rồi thực hiện đọc lệnh, giải mã lệnh, thực hiện lệnh của chương
trình chính
+, Nếu như không phải ngắt NMI thì kiểm tra xem có được phép ngắt không,
nếu không được phép ngắt thì đọc lệnh, giải mã lệnh, thực hiện lệnh của
chương trình chính. Nếu được phép ngắt thì cất cờ, PC vào ngăn xếp, thực
hiện chương trình phục vụ ngắt đến khi gặp lệnh RETI xong lấy cờ, PC ra
rồi thực hiện đọc lệnh, giải mã lệnh, thực hiện lệnh của chương trình chính.
b.

c.

Vecto Reset và vecto ngắt có thể trùng nhau bởi vì vecto RESET chính
là 1 vecto ngắt. Tra trong bảng thì vecto RESET có số hiệu là 00H và là
1 vecto ngắt.
Ngắt NMI là ngắt bằng phần cứng dùng để đề phòng những trường hợp
ngắt bằng phần mềm không hoạt động được thì dùng ngắt NMI để dừng
chương trình, bảo vệ thiết bị.


Đề 25:
a.
b.
c.

Kiến trúc phần cứng của hệ vi xử lý
Vai trò của mạch giải mã địa chỉ
Bằng cách nào CPU có thể trao đổi với thiết bị ngoại vi?

Đề 27:
a.
b.

Trình bày phương thức điều khiển vào ra bằng chương trình, điều khiển ở
đây là điều khiển gì ?
Nêu ưu khuyết điểm của phương thức này ?

Gợi ý:
a.

Phương thức điều khiển vào ra bằng chương trình là phương thức sử dụng
chương trình để trao đổi dữ liệu giữa ngoại vi và CPU.
- Có 2 phương thức điều khiển vào ra bằng chương trình.
1. Phương pháp ưu tiên quay vòng:


Start

Rdy0


Rdy1

Rdyn

N


Phương pháp ưu tiên quay vòng là phương pháp mà khi bắt đầu chương trình,
nó sẽ kiểm tra xem I/O thứ nhất có nhu cầu trao đổi hay không, nếu có thì nó sẽ
tiến hành trao đổi với ngoại I/O 0, sau đó nó lại quay lại hỏi ngoại vi thứ nhất
cho đến khi ngoại vi thứ nhất không còn nhu cầu trao đổi sẽ chuyển xuống hỏi
ngoại vi tiếp theo. Sau đó nó sẽ tiến hành trao đổi với ngoại vi thứ 2 cho đến khi
ngoại vi này không còn nhu cầu trao đổi thì nó sẽ kiểm tra ngoại vi thứ 3. Cứ
như vậy cho đến hết.
2. Phương pháp ưu tiên tuyệt đối.
Start

Rdy0

Y
Trao đổi I/O 0

N

Rdy0

Y
Trao đổi I/O 1

N


Y
Rdy0

Trao đổi I/O n

N

Ở phương pháp này, khi bắt đầu chương trình, nó sẽ kiểm tra xem I/O đầu tiên
có nhu cầu trao đổi dữ liệu hay không, nếu có sẽ thực hiện trao đổi với I/O thứ
nhất nếu không sẽ hỏi xuống I/O thứ 2. Nếu có sẽ trao đổi với I/O thứ 2 sau đó


lại quay lại hỏi I/O thứ nhất… Như vậy ở phương pháp này, thứ tự ưu tiên trao
đổi sẽ giảm dần.
- Điều khiển ở đây là điều khiển…. (không nhớ, anh em tự tìm ))
b. Nêu ưu và nhược điểm
* Ưu điểm: Cấu trúc đơn giản, dễ cho người viết chương trình kiểm soát lỗi,
thay đổi mức độ ưu tiên do có thể thay đổi vị trí I/O
* Nhược điểm:
+, Tốn thời gian để hỏi ngoại vi không có nhu cầu trao đổi dữ liệu do đó làm
cho CPU bị chậm, không có thời gian nghỉ, gây tiêu tốn năng lượng.
+, Nếu ngoại vi thứ k nào đó bị lỗi và luôn tích cực thì các ngoại vi có mức ưu
tiên thấp hơn sẽ không thể trao đổi dữ liệu.
(Nói chung nhược điểm thì nhiều mà ưu điểm thì ít, ít dùng. Dạo này nhác làm
vãi (((().
Đề 29:
a.
b.


Trình bày phương thức điều khiển vào ra bằng ngắt.
Nêu ưu, khuyết điểm của phương thức này, nêu sự giống và khác nhau so
với phương thức điều khiển vào ra bằng chương trình.

Gợi ý:
a.

Cái này thì vẽ sơ đồ như ở bên ngắt rồi trình bày như sau:


CPU

INT


b.

Ở cách điều khiển vào ra bằng ngắt thì mỗi I/O có 1 đường tín hiệu Ryn.
Nếu như bình thường không có nhu cầu trao đổi thì Ryn=1. Khi 1 I/O nào
đó có nhu cầu thì Ryn=0 thông qua mạch AND tạo ra 1 tín hiệu bằng 0.
Tín hiệu này được đưa vào chân INT (tích cực mức thấp) để báo rằng có
ngoại vi cần trao đổi dữ liệu, đồng thời các đường Ryn được đưa vào bộ
chốt Latch và chờ ở đó.
Lúc này CPU kiểm tra xem ngắt đó được chấp nhận không, nếu được nó
sẽ gửi tín hiệu INTA, tín hiệu này được đưa vào bộ chốt Latch cho phép
dữ liệu đi từ bộ chốt Latch đi lên 1 trong 8 đường D_bus. Sau đó dữ liệu
đi từ D_bus sẽ vào thanh ghi trong CPU. Tại đây CPU sẽ kiểm tra xem
I/O nào có nhu cầu trao đổi dữ liệu.
* Ưu điểm: đỡ tốn thời gian hỏi ngoại vi vì cái nào có nhu cầu thì mới
ngắt, từ đó tăng tốc độ của CPU.

* Nhược điểm: Do khi trao đổi thì chỉ trao đổi được với 1 ngoại vi nên
nếu số liệu trao đổi của 1 I/O nào đó mà lớn thì các I/O khác ít có cơ hội
trao đổi dữ liệu.
* Điểm giống nhau: Việc trao đổi dữ liệu đều phải thông qua CPU, đều
điều khiển bằng các câu lệnh do người lập trình viết ra.
* Khác nhau:
+, Vào ra bằng ngắt thì cái nào có nhu cầu trao đổi mới ngắt và trao đổi
ngoại vi đó còn ở vào ra bằng chương trình thì nó phải kiếm tra tất cả các
ngoại vi theo thứ tự ưu tiên mà không cần biết nó có nhu cầu trao đổi dữ
liệu hay không.
+, Ở vào ra bằng ngắt thì các lệnh điều khiển nằm ở chương trình phục
vụ ngắt và CPU gọi nó như 1 chương trình con còn ở vào ra bằng chương
trình thì các lệnh điều kiện nằm trong thân chương trình chính.

Đề 31:
a.
b.

Trình bày phương thức điều khiển vào ra bằng truy nhập trực tiếp bộ nhớ.
Nêu ưu khuyết điểm của phương thức này, điểm khác chính của phương
pháp này so với 2 phương pháp kia là gì?

Gợi ý:
a.

Để truy nhập trực tiếp bằng bộ nhớ cần có 1 bộ DMAC. Quá trình truy
nhập trực tiếp DMA như sau:


+, I/Ox cần trao đổi dữ liệu nó sẽ gửi tín hiệu yêu cầu DMA_Rq

đến bộ DMAC. Bộ DMAC se gửi tín hiệu DMAC_Rq tới CPU đồng thời gửi số
lường byte mà I/O cần trao đổi, địa chỉ Mem truy nhập.
+, Nếu CPU cho phép truy nhập trực tiếp thì nó sẽ gửi về DMAC tín hiệu
DMAC_hold đồng thời đưa các đường bus A, D, C lên trạng thái cao trở,
nhường quyền điều khiển vào ra cho DMAC.
+, DMAC gửi tín hiệu DMA_ACK cho I/Ox cho phép I/Ox trao đổi dữ liệu
trực tiếp với bộ nhớ.
+, Sau k hi trao đổi dữ liệu xong thì I/Ox lại gửi tín hiệu DMA_Rq đến bộ
DMAC. DMAC mới gửi tín hiệu DMAC_rq đến CPU để báo rằng việc trao đổi
dữ liệu đã xong. Lúc này CPU mới đứa các đường bus A, D, C về trạng thái
bình thường, dành lại quyền điều khiển đồng thời gửi tín hiệu DMAC_unhold.
DMAC mới gửi tín hiệu DMA_Acc cho I/Ox báo kết thúc chế độ DMA.
b.

* Ưu điểm: Tốc độ trao đổi dữ liệu nhanh, đáp ứng được việc nếu trao đổi
dữ liệu với số lượng lớn.
* Nhược điểm: Giá thành của bộ DMAC khá là chát vì nó có cấu tạo
phức tạp, đòi hỏi có thể làm được các nhiệm vụ như CPU. Nhược điểm
thứ 2 là nếu như đang ở chế độ DMA mà tự nhiên cái bộ DMAC bị dở
chứng chập mạch thì CPU sẽ không thể lấy lại quyền điều khiển các
đường bus, hệ thống sẽ khôn thể phục hồi lại.
Để khắc phục nhược điểm này thì thường người ta sử dụng 1 hệ điều
hành thời gian thực (không nhớ rõ lắm). Cái này có nghĩa là mỗi phương
Memđịnh, và sau thời
thức điều khiển chỉ tồn tại trong 1 khoảng thời gian nhất
gian đó thì CPU sẽ lấy lại quyền điều khiển của mình.
* Điểm khác lớn nhất của phương thức này so với các phương thức điều
khiển khác là phương thức này cho phép trao đổi trực tiếp giữa I/O vào
bộ nhớ mà không cần thông qua CPU, quá trình trao đổi do 1 bộ DMAC
điều khiển chứ không phải là CPU điều khiển.

I/O 0

Đề 2:
a.
b.

Trình bày nguyên lí hoạt động của cổng vào ra không đối thoại, có đối
thoại.
Vẽ biểu đồ thời gian của các tín hiệu handshaking STB, IBF…

Gợi ý: Cả đối thoại và không đối thoại nên vẽ cái sơ đồ cho dễ nói, vì hình vẽ
khá rắc rối đối với Word nên thôi anh em đi học rồi chịu khó vẽ vào.
a.

* Vào ra không đối thoại:
Khi CPU cần đọc dữ liệu, nó gửi địa chỉ của ô nhớ cần lấy dữ liệu vào
mạch giải mã địa chỉ đồng thời gửi tín hiệu Rd (tích cực mức thấp). 2 tín

I/O


b.

hiệu này đi qua mạch OR để làm tín hiệu OE (tích cực mức thấp) cho bộ
đêm Buffer, cho phép dữ liệu đi từ I/O qua bộ đệm Buffer đi vào CPU.
* Vào ra có đối thoại:
+, Đầu tiên I/O gửi dữ liệu lên bộ chốt tín hiệu Latch đồng thời gửi tín
hiệu STB, tín hiệu này được đưa vào chân CS của bộ Latch để chốt dữ
liệu.
+, Đồng thời tín hiệu STB được đưa vào chân CLK của 1 D-FF. Do D-FF

này có D= 1 nên đầu ra Q= 1. Đầu ra Q này lại được nối với chân IBF của
I/O (Input Buffer Full) để báo rằng dữ liệu đưa lên đã đầy, không đưa dữ
liệu lên nữa.
+, Chân Q còn được nối với chân INT của CPU để báo ngắt. Khi Q= 1 thì
chân INT= 1 nó sẽ báo cho CPU biết có I/O cần trao đổi dữ liệu. Lúc này
CPU sẽ tạm dừng chương trình chính để thực hiện quá trình trao đổi dữ
liệu với I/O.
+, Lúc này CPU sẽ gửi địa chỉ qua mạch giải mã địa chỉ đồng thời gửi tín
hiệu Rd (tích cực mức thấp). 2 tín hiệu này được đi qua mạch OR tạo tín
hiệu đưa vào chân OE (tích cực mức thấp) của bộ đêm Buffer, cho phép
dữ liệu đi từ Buffer đi vào CPU.
+, 1 phần tín hiệu này (tín hiệu sau khi đi qua mạch OR) được đưa vào
chân CLR của D-FF làm cho Q= IBF= 0 để báo rằng quá trình trao đổi dữ
liệu đã hoàn tất
Cái biểu đồ thời gian thì anh em tự vẽ.
Cái này trao đổi thêm 1 tý vì mình đi vấn đáp trúng câu này nên nói thêm
tý thôi. Hôm đó sau khi trình bày xong cả câu a, b thì thầy hỏi thêm mấy
câu hỏi phụ.
- Giờ có 1 cái MCS- 51 và 1 cái I/O, em hãy vẽ cách ghép nối giữa
MCS- 51 và I/O cụ thể các chân nối thế nào, sau đó vẽ biểu đồ thời gian.
- Em hãy cho biết hoạt động của MCS- 51 (không phải của vxl đâu nha
mấy thím) sau khi ấn nút RESET.
- Em hãy cho biết MCS- 51 có thể kết nối trực tiếp với bộ DMAC hay
không, nếu có thì nó được ghép nối như thế nào?
Nói chung như thế này còn ít vì mình ngồi hỏi được 30’ là xong, có mấy
thánh khốn khổ vật vã gần 2 tiếng đồng hồ mới xong. Vài câu như thế
cho các bạn hình dung được kiểu hỏi nó thế nào.

Đề 4:
a.

b.

Trình bày nguyên lí hoạt động của cổng ra đơn giản, có đối thoại.
Vẽ biểu đồ thời gian các tín hiệu handshaking ACK, OBF..,

Gợi ý: Vì câu này nó kiểu tương tự câu trên nên thôi mình sẽ không trình bày ở
đây nữa. Dạo này hơi nhác, tết nhất mà, anh em thông cảm ))))


Đề 6:
a.
b.

Trình bày nguyên lí cổng vào ra Read- Back, tác dụng của cổng này?
Trình bày nguyên lí hoạt động của cổng vào ra có điều khiển theo hướng,
theo nhóm 8 bit, theo từng bit.

Đề 8:
a.
b.

Vào ra nối tiếp: định nghĩa, mục đích, nguyên lí, chế độ, phương thức,
nhịp truyền.
Có thể dùng cổng song song để vào ra nối tiếp được không, giải thích?

Gợi ý:
a.

b.


Vào ra nối tiếp:
+, Vào ra nối tiếp là phương pháp vào ra dữ liệu theo từng bit chỉ sử dụng
1 đường truyền thay vì sử dụng đường truyền 8 bit như ở vào ra song
song.
+, Mục đích: tiết kiệm nguyên vật liệu, có thể truyền dữ liệu đi xa.
+, Nguyên lí: Để vào ra nối tiếp trước hết các byte dữ liệu cần chuyển
thành các bit nối tiếp nhờ thanh ghi dịch vào song song- ra nối tiếp. Tiếp
theo dữ liệu được truyền qua 1 đường dữ liệu đơn. Ở đầu thu sẽ có 1
thanh ghi dịch vào nối tiếp, ra song song để nhận dữ liệu nối tiếp và
chuyển thành từng byte một. Dữ liệu để truyền qua đường thoại thì cần
phải chuyển dữ liệu dạng nhị phân 0,1 thành dạng sóng hình sin. Việc
điều chế này do bộ điều chế thực hiện.
+, Chế độ: Có 3 chế độ thu phát dữ liệu:
* Đơn công: bên thu chỉ thu, bên phát chỉ phát.
* Bán song công: cả 2 bên đều có thể thu hoặc phát tuy nhiên ở 1 thời
điểm thì chỉ có 1 bên thu và 1 bên phát.
* Song công hoàn toàn: Cả 2 bên có thể đồng thời thu và phát.
+, Phương thức truyền: truyền lần lượt 8 bit, mỗi kí tự được bố trí giữa bít
khởi động và bit dừng. Bit khởi động luôn là bit thấp và chỉ có 1 bit. Bit
dừng có thể có 1 hoặc 2 bit (thường là 1 bit) và là bit cao. Ngoài ra người
ta còn sử dụng bit chẵn lẻ nhằm tăng khả năng bảo toàn dữ liệu, bit này
được gửi đi sau bit MSB và trước bit dừng.
+, Nhịp truyền: là số bit truyền được trong 1s.
Đối với cổng vào ra nối tiếp thì cần có thanh ghi dịch 8 bit để tách byte
dữ liệu thành 8 bit nối tiếp. Tuy nhiên ở cổng vào ra song song thì thường
không có thanh ghi dịch do đó không thể sử dụng cổng song song để
truyền tin nối tiếp.


Đề 10:

a.
b.

Trình vày về cổng vào ra nối tiếp trong hệ MCS- 51.
Hãy trình bày rõ cách sử dụng bit Parity trong trường hợp này.

Gợi ý:
a.

Trình bày về cổng vào ra nối tiếp trong MCS- 51
- 8051 có 2 chân chuyên dùng cho truyền và nhận dữ liệu nối tiếp, 2 chân
này là RxD và TxD tương ứng là 2 chân P3.0 và P3.1 (trong vxl là chân
số 10 và 11). Các chân này tương thích mức logic TTL do đó cần bộ điều
khiển đường truyền để tương thích với RS232.
- Port hoạt động theo chế độ song công, cho phép 1 kí tự được nhận và
lưu trong bộ đệm trong khi kí tự tiếp theo được nhận vào.
- Để truy xuất Port nối tiếp, phần mềm sử dụng 2 thanh ghi SBUF và
SCON .
+, SBUF như 1 bộ đệm, muốn byte dữ liệu truyền qua TxD thì nó cần đặt
dữ liệu trong SBUF. Tương tự SBUF lưu 1 byte dữ liệu khi nó được nhận
qua đường RxD của 8051. Byte dữ liệu khi được ghi vào SBUF thì nó sẽ
được định khung với bit Start và bit STOP rồi truyền qua TxD. Khi SBUF
nhận được các bit dữ liệu từ RxD thì nó sẽ mở khung loại trừ các bit start,
Stop.
+, SCON là thanh ghi 8 bit chứa các bit trạng thái và các bit điều khiển.
SM0 SM1 SM2

b.

REN


TB8

RB8

T1

R1

* Các bit trạng thái chỉ ra sự kết thúc việc thu hoặc phát.
* Các bit điều khiển sẽ thiết lập chế độ hoạt động của Port nối tiếp.
SM0 SM1
Chế độ
0
0
Chế độ thanh ghi dịch
0
1
Chế độ 8 bit start stop
1
0
Chế độ 9 bit
1
1
Bit Parity là bit kiểm tra tính chẵn lẻ có ký hiệu là P nằm trong thanh ghi
đặc biết PSW. Bit này được nạp vào bit TB8 của thanh ghi SCON bằng
phần mềm. Bit là chẵn khi tổng số các số 1 của bit dữ liệu là chẵn và bit
chẵn sẽ có giá trị bằng 0. Bit có giá trị 1 khi tổng số các số 1 của byte dữ
liệu là 1 số lẻ.
Lưu ý nếu như ban đầu ta định sẵn byte dữ liệu có bit Parity là bit chẵn

mà ở bên thu lại là lẻ thì nghĩa là dữ liệu đã bị truyền sai, nhưng nếu như
ở bên thu mà lại là chẵn thì ta chưa có kết luận gì.
VD để kiểm tra chẵn lẻ ta dùng đoạn lệnh
MOV C, P
CPL C


MOV TB8, C
MOV SBUF, A
Đề 12:
a.
b.

Vào ra nối tiếp dị bộ: định nghĩa, mục đích, phương pháp đồng bộ.
Nêu mặt hạn chế của chuẩn RS232C, cách khắc phục.

Gợi ý:
a.

b.

Vào ra nối tiếp dị bộ.
- Định nghĩa: Vào ra nối tiếp dị bộ là phương pháp truyền mỗi lần 1 byte
thay vì truyền mỗi lần 1 khối dữ liệu như ở phương pháp đồng bộ.
- Mục đích: Là để khi phát tín hiệu không phải phát theo xung clock đồng
bộ phức tạp.
- Phương pháp đồng bộ: Đồng bộ theo từng byte, thêm vào các bit khởi
đầu và bit kết thúc.
Hạn chế của chuẩn RS232C là do chuẩn này ra đời trước khi có họ vi
mạch TTL nên điện áp vào ra của chuẩn này không tương thích với TTL.

Hạn chế thứ 2 của nó là không thể truyền dữ liệu ở khoảng cách xa vì dễ
bị nhiễu tín hiệu.
Để khắc phục nhược điểm đầu tiên, người ra sử dụng 1 bộ biến đổi điện
áp như MAX232 để chuyển đổi mức điện áp TTL sang mức điện áp của
RS232 và ngược lại. Để khắc phục hạn chế thứ 2 thì có thể sử dụng các
chuẩn khác như RS484, RS422…hoặc phải có các biện pháp chống nhiễu
phù hợp.

Đề 14:
(Như năm mình (anh) học thầy Tuấn thì câu này thầy bảo là bỏ, nhưng các
khóa sau thì không rõ thế nào nên cứ viết vậy).
a.
b.

Mạch thời gian trong hệ vi xử lý: công dụng, cấu trúc, hoạt động và ghép
nối với hệ vi xử lý.
Nếu sử dụng mạch thời gian để đếm sự kiện thì ta phải làm gì? Nêu sự
khác biệt giữa mạch thời gian và mạch đếm.

Gợi ý:
a.

Mạch thời gian trong hệ vi xử lý:
• Công dụng: Dùng để tạo trễ thời gian hoặc làm bộ đếm để đếm các
sự kiện xảy ra bên ngoài bộ vi xử lý.
• Cấu trúc:
TFx
NHmax

NLmax


THx

TLx

OSC


Px.m

N0H

N0L

Bộ dao động thạch anh để đếm thời gian
 1 mạch chia
 Bộ đếm thời gian
 Các thanh ghi để đặt giá trị đầu và giá trị cuối.
• Nguyên tắc hoạt động:
♦ Khi được phép hoạt động thì bộ đếm sẽ tăng từ
N0 -> N0max. Khi đạt đến giá trị max thì sẽ phát ra 1 xung gọi là
xung TF (Timer Overflow) có tác dụng là báo tràn. Cờ TF lúc
này sẽ được bật lên. Sau 1 chu kì thì cờ sẽ tự xóa và giá trị đếm
sẽ về 0.
♦ Có 2 chế độ hoạt động:
 Chế độ Input Capture: khi phát xung bộ đếm sẽ lưu lại giá trị
hiện tại vào 1 thanh ghi và bộ đếm vẫn chạy đến Nmax.
 Chế độ Output Capture: Là chế độ so sánh giá trị bộ đếm với
giá trị đặt.
Nếu sử dụng mạch thời gian để đếm sự kiện thì ta đặt nguồn tạo xung

clock tạo xung dựa trên việc xảy ra 1 sự kiện.
- Sự khác biệt giữa mạch thời gian và mạch đếm:
+, Mạch thời gian có xung được đưa từ ngoài vào, thường là xung dao
động thạch anh nên có chu kì biết trước.
+, Mạch đếm sự kiện thì khi nào có sự kiện xảy ra, bộ đếm mới hoạt
động. Do đó chu kì là chưa biết trước.


b.

Đề 16:
a.
b.
c.

Mạch thời gian trong hệ MCS-51 của Intel: mô tả các thanh ghi liên
quan.
Các chế độ hoạt động và ứng dụng của các chế độ đó
Sử dụng ngắt với mạch thời gian như thế nào?

Gợi ý:
a.

Mạch thời gian trong hệ MCS-51 của Intel có 2 thanh ghi là thanh ghi
TMOD và TCON.




Thanh ghi TMOD:


GATE
C/T
M1
M0
GATE
C/T
Trong đó 4 bit đầu dành cho Timer 1, 4 bit sau dành cho Timer 0.

M1

M0

+, Bit GATE nhận 2 giá trị là 0 hoặc 1, nó dùng để lựa chọn chế độ điều
khiển. GATE= 0 chỉ chạy khi bit TRx= 1. Khi đó Timer chọn chế độ điều
khiển bằng phần mềm. Bit GATE= 1, khi đó Timer chọn chế độ điều khiển
bằng phần cứng => điều khiển bằng ngắt
+, Bit C/T cho phép lựa chọn chế độ Timer hay Counter.
+, 2 bit M1 và M0 dùng để lựa chọn chế đô cho Timer







b.
c.

M1= 0, M0= 0: chế độ 13 bit trong đó 5 bit cao được đặt trước. (an

hem tìm hiểu 5 bit đặt trước này là thế nào, thầy cô có thể hỏi)
M1=0 M0= 1: chế độ 16 bit sử dụng cả THx và TLx đếm từ 0000H
đến FFFFH
M1= 1 M0= 0: chế đồ Auto reload là bộ định thời 8 bit do đó chỉ có
thể đếm từ 00H đến FFH vào thanh ghi THx của bộ định thời còn
TLx là thanh ghi đếm. Ở đây TLx sẽ chứa giá trị bắt đầu nghĩa là khi
TLx đếm đến giá trị max thì bộ đếm sẽ tự động đếm lại bắt đầu từ
giá trị nằm ở thanh ghi TLx.
M1=1 M0=1: 2 thanh ghi THx, TLx là 2 bộ đếm độc lập 8 bit (chế
độ này ít dùng).
Thanh ghi TCON:

TF1
TR1
TF0
TR0
IE1
IT1
IE0
- TF1/ TF0: báo tràn cho T/C1 và T/C0.
- TR1 TR0: khời chạy cho T/C1 T/C0.
4 bit còn lại được dùng cho ngắt với mạch thời gian, sẽ giải thích ở
phần sau.
Các chế độ hoạt đông: có 4 chế đô hoạt động đã nêu ở trên, về ứng dụng thì
tự tìm )))
Sử dụng ngắt với mạch thời gian như thế nào:
• Để sử dụng ngắt với mạch thời gian, ta sử dụng 4 bit IE1/0 IT1/0 của
thanh ghi TCON
• Các bit IT1/0 là các bit xác định mức ngắt phần cứng cho 2 chân
INT1 và INT0. Khi Reset thi 2 bit này bằng 0 nghĩa là ngắt mức

thấp.
• IE0 và IE1 dùng để xác định kiểu ngắt kích sườn phát xung. Nếu IT1
và IT0 bằng không thì IE1 và IE0 không có tác dụng. Các bit IE1 và
IE0 dùng để chốt sường phát xung từ cao xuống thấp trên INT1 và
INT0

IT0




Khi có chuyển trang thái sườn xung trên INT1 và INT0 thì 8051
chuyển các bit IE1 IE0 từ 0 lên 1.

Đề 18:
a.
b.
c.

Trình bày kỹ thuật quét giải mã phím.
Có thể dùng kỹ thuật này để xác đinh mã của 2 phím cùng nhấn hay không?
Giải thích?
Nếu dùng kỹ thuật này theo cách điều khiển bằng ngắt có được không? Giải
thích?

Gợi ý:
a.

Trình bày kỹ thuật quét giải mã phím.
Cách 1: Quét bằng chương trình.

+5V

Px.0
Px.1
Px.2
Px.3
Px.4
Px.5
Px.6
Px.7


start

Hx=0, Cx= 1
Mov A, Px
ANL A, #F0H

H0=0, Cx=1, Hx=1
Mov A,Px
ANL A, #F0H

N
Y
A= F0H?
Không có phím ấn

A= F0H?

H0 có phím ấn


N
Y

A=E0H?

C0 ấn

N
A=D0H?

N

H1=0, Hx=1, Cx=1
Đọc cột về

Y
C1 ấn

A= F0H?

N
H1 có phím ấn

A=B0H?

Y
C2 ấn

N


H2=0, Hx=1, Cx=1
Đọc cột về

Y
A=70H?
C3 ấn

A= F0H?

N
H2 có phím ấn

H3=0, Hx=1, Cx=1
Đọc cột về

A= F0H?

N
H3 có phím ấn


B1: Xác định cột bằng cách cho các cột bằng 0, các hàng bằng 1 sau đó đoc cột
về bằng cách:
Mov A, Px
ANL A, #F0H
B2: đặt 1 hàng bằng 0, các hàng còn lại bằng 1. Đọc và kiểm tra lần lượt các cột
- Nếu bằng 0 thì xác đinh được côt hàng.
- Nếu khác 0 thì tiếp tục quét.
B3: Sau đó đặt hàng tiếp theo bằng 0, các hàng còn lại bằng 1. Đọc và kiểm tra

các cột như bước 2 cho đến hết.
Cách 2: Khi dùng ngắt.
Khi kiểm tra các cột có phím bấm thì qua cổng AND cho giá trị bằng 0 và đi
vào ngắt, khi đó mới kiểm tra.
b.

c.

Kỹ thuật này không thể xác định mã của 2 phím cùng nhấn. Khi có 2 phím
cùng nhấn thì tùy thuộc vào chương trình của mình viết thì nó sẽ thực hiện
theo thứ tự trước sau. Nghĩa là nó vẫn chỉ xác định đươc mã của từng phím
mà không xác định được mã của 2 phím nhấn cùng lúc.
Kỹ thuât này có thể dùng theo cách điều khiển bằng ngắt (đã trình bày như
trên, đúng ra phải vẽ ra nhưng nhác vẽ quá. Thực ra nó giống với cái sơ đồ
trên nhưng khác cái là 4 tín hiệu ở Px.4- Px.7 sẽ đươc gom đưa vào 1 cổng
AND, đầu ra của cổng AND sẽ được đưa vào INT ).

Đề 20:
a.
b.
c.

Trình bày kỹ thuật đảo dây để giải mã bàn phím
Có thể dùng kỹ thuật này để xác định mã của 2 phím cùng nhấn hay không?
Giải thích?
Kỹ thuật này thích hợp với phương thức điều khiển nào? Giải thích?

Gợi ý:
a.


Trình bày kỹ thuật đảo dây
Đầu tiên ta xác định cột:
- Cho các hàng bằng 0, các cột bằng 1 sau đó đọc cột về:
mov A, Px
ANL A, #F0H
Từ đó ta xác định được cột, nó tương tự như đối với quét giải mã phím.
- Do vai trò của hàng và cột là như nhau nên ta đảo vị trí cột và hàng, sau đó
tương tự thực hiện như trên. Từ đó ta sẽ xác định được hàng.


×