You are on page 1of 4

Điểm ĐỀ THI GIỮA KỲ - Ngày thi: 07/06/2020 Chữ ký giám thị

MÔN: VI XỬ LÝ (EE2013)
Thời gian làm bài: 70 phút
Đề thi có 4 trang + 2 trang phụ lục.
Sinh viên làm bài trên đề và KHÔNG được sử dụng tài liệu

Họ và tên: ………………………………………….. MSSV: ………………… Nhóm: ……..…..

Câu 1: (2,0 điểm)


1. Cho mạch giải mã địa chỉ kết nối MCU8051 tạo tín hiệu chọn chip /CS sử dụng cổng logic như sau:

A15
A14 /CS
A13
A12

1. (0,25 điểm) Viết biểu thức Boole cho tín hiệu /CS theo các tín hiệu ngõ vào Ai (𝑖 = 15 ÷ 12)
̅̅̅̅ = ̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅
𝑪𝑺 𝑨𝟏𝟓 𝑨𝟏𝟒 𝑨𝟏𝟑 𝑨𝟏𝟐

2. (0,25 điểm) Ghi ra vùng địa chỉ (dưới dạng số HEX) để tín hiệu chọn chip /CS tích cực.
FXXXH
Hay: F000H÷FFFFH

3. Cần thiết kế mạch giải mã địa chỉ tạo tín hiệu chọn chip kết nối với MCU8051 theo bảng phân vùng địa
chỉ sau:
Vùng địa chỉ (số HEX) Tín hiệu chọn chip
0000H – 07FFH /CS0 (tích cực mức thấp)
0800H – 17FFH CS1 (tích cực mức cao)
1800H – 1FFFH CS2 (tích cực mức cao)
2000H – 37FFH /CS3 (tích cực mức thấp)

1. (0,5 điểm) Lập bảng phân vùng địa chỉ tương ứng với các tín hiệu chọn chip như bảng bên dưới (Biểu
diễn địa chỉ đầu và địa chỉ cuối dưới dạng số nhị phân vào các hàng trống tương ứng).

Tín hiệu chọn chip Vùng địa chỉ A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
/CS0 (tích cực mức thấp) 0000H – 07FFH
0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
CS1 (tích cực mức cao) 0800H – 17FFH
0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1
0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0
CS2 (tích cực mức cao) 1800H – 1FFFH
0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
/CS3 (tích cực mức thấp) 2000H – 37FFH
0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1
Trang 1 / 4
2. (1,0 điểm) Từ bảng phân vùng địa chỉ ở trên, chỉ sử dụng IC 74HC138 và các cổng NAND 2 ngõ vào
thiết kế mạch giải mã địa chỉ tạo tín hiệu chọn chip /CS0, CS1, CS2 và /CS3.
1. Giải thích ngắn gọn và vẽ sơ đồ thiết kế.

1. Từ bảng phân vùng địa chỉ rút gọn:


- Chọn G2BG2A=A15A14,G1=1,CBA=A13A12A11
- Các tín hiệu chọn chip ngõ ra:
̅̅̅̅̅
𝐶𝑆0 = 𝑌0
𝐶𝑆1 = ̅̅̅̅̅̅̅
𝑌1 . 𝑌2
𝐶𝑆2 = 𝑌̅3
̅̅̅̅̅ = 𝑌4 . 𝑌5 . 𝑌6
𝐶𝑆3
1. Hình vẽ đúng: 0.75đ(sai một ngõ ra trừ 0.25đ)
2. Giải thích đúng ý: 0.25đ
Câu 2: (2,0 điểm)
1. (1,0 điểm) Chỉ ra các lệnh hợp lệ và không hợp lệ của các lệnh hỗ trợ MCU 8051 trong bảng bên dưới
(Sinh viên đánh dấu X vào cột tương ứng).
Lệnh MCU 8051 Hợp lệ Không hợp lệ ĐIỂM
DEC DPTR X 0.25
PUSH 0F0H X 0.25
SETB 0F0H X 0.25
SETB F0 X 0.25

2. (1,0 điểm) Viết các lệnh 8051 để thực hiện các tác vụ sau (mỗi tác vụ ứng với 1 câu lệnh).

Tác vụ Lệnh 8051 Điểm


Xuất nội dung ô nhớ RAM nội ở địa chỉ 20H ra Port 1. MOV P1,20H 0.25
Đọc nội dung ô nhớ RAM ngoài có địa chỉ được chỉ bởi MOVX A,@DPTR 0.25
DPTR, kết quả chép vào thanh ghi A.
Kiểm tra xem bit 0 của thanh ghi A có bằng 0 hay không. JNB ACC.0,ZERO 0.25
Nếu bit đó bằng 0 thì nhảy đến nhãn ZERO.
So sánh dữ liệu trong thanh ghi A với thanh ghi R0 (giả sử CJNE A,00H,KHAC 0.25
bank 0) và nhảy đến nhãn KHAC nếu chúng khác nhau.

Câu 3: (1,0 điểm) Xác định phương pháp định địa chỉ cho các toán hạng trong các câu lệnh sau:
Phương pháp định địa chỉ
Lệnh 8051
Toán hạng 1 Toán hạng 2 Toán hạng 3 ĐIỂM
MOV 20H,#10H; ví dụ Trực tiếp Tức thời −
MOV @R0,B Gián tiếp Trực tiếp 0.25
MOVC A, @A + PC Thanh ghi Chỉ số 0.25
ACALL DELAY Tuyệt đối 0.25
CJNE R7,#0FFH, LABEL Thanh ghi Tức thời Tương đối 0.25

Trang 2 / 4
Câu 4: (1,0 điểm)
1. (0,5 điểm) Tìm offset tương đối (hay độ dời) của câu lệnh DJNZ 20H,LABEL. Giả sử mã máy của
lệnh DJNZ 20H,LABEL được lưu ở bộ nhớ chương trình bắt đầu ở địa chỉ 2000H. Nhãn LABEL
được đặt tại địa chỉ 2020H.
1. Lệnh DJNZ 20H,LABEL dài 3 byte đặt tại địa chỉ 2000H→(PCHH)=2003H
Offset=Địa chỉ đích(nhãn LABEL) – (PCHH)=2020H-2003H=1DH

2. (0,5 điểm) Cho biết nội dung các thanh ghi R0, R3, R7 và con trỏ ngăn xếp (SP) bằng bao nhiêu sau
khi thực thi chương trình bên dưới. Biết rằng chương trình được thực thi sau khi reset hệ thống.
ORG 0000H CLR A Nội dung thanh ghi R0, R3, R7 và SP
MOV R0,#66H MOV R3,A sau khi thực thi chương trình:
MOV R3,#7FH MOV 08H,A
MOV R7,#5DH R0 = 00H
POP 3
PUSH 0 R3 = 5DH
POP 7
PUSH 3 POP 0 R7 = 7FH
PUSH 7 END SP = 07H
3. Sai 1 giá trị trừ 0.25đ

Câu 5: (2,0 điểm)


1. (0,5 điểm) Viết chương trình con tên BIN2BCD có chức năng chuyển số nhị phân 8 bit không dấu (giả
sử có giá trị từ 0 đến 99) lưu trong thanh ghi A sang số BCD nén (4 bit cao lưu ký số hàng chục, 4 bit
thấp lưu ký số hàng đơn vị). Kết quả được lưu trở lại trong thanh ghi A.
BIN2BCD:
MOV B,#10
1. Viết đúng ý hoàn chỉnh(0.5đ)
DIV AB
2. Viết không đúng ý (0đ)
SWAP A
ADD A,B
RET

2. (1,5 điểm) Sử dụng chương trình con ở trên, viết chương trình có chức năng chuyển số nhị phân 8 bit
không dấu (giả sử có giá trị từ 0 đến 99) ở 100 ô nhớ RAM ngoài bắt đầu ở địa chỉ 2000H sang số BCD
nén và lần lượt lưu kết quả vào vùng nhớ RAM ngoài ở địa chỉ bắt đầu là 3000H.
ORG 0 → MOV DPL,R4
MOV R7,#100 MOV DPH,R5
MOV R2,#00H MOVX @DPTR,A
MOV R3,#20H INC DPTR
MOV R4,#00H MOV R4,DPL
MOV R5,#30H MOV R5,DPH
LOOP: MOV DPL,R2 DJNZ R7,LOOP
MOV DPH,R3 END
MOVX A,@DPTR 1. Viết đúng ý phần đọc và đổi sang
CALL BIN2BCD BCD (0.5đ)
INC DPTR 2. Viết đúng ý phần ghi (0.5đ)
MOV R2,DPL 3. Viết đúng ý phần lặp vòng (0.5đ)
MOV R3,DPH →

Trang 3 / 4
Câu 6: (1,0 điểm)
1. (0,5 điểm) Sử dụng vòng lặp tạo trễ, viết chương trình con DL1ms có chức năng tạo khoảng thời gian
trễ là 1ms. Biết rằng Fosc = 12MHz. (Chỉ yêu cầu tính gần đúng).
DL1ms: MOV R7,#2
LOOP: MOV R6,#250 1. Viết đúng ý hoàn chỉnh(0.5đ)
DJNZ R6,$ 2. Viết không đúng ý(0đ)
DJNZ R7,LOOP
RET

2. (0,5 điểm) Sử dụng chương trình con DL1ms ở câu trên và các lệnh cần thiết, viết chương trình tạo
sóng vuông có tần số 125Hz, chu kỳ nhiệm vụ 25% ở ngõ ra P1.5. Biết rằng Fosc = 12MHz. (Chỉ yêu
cầu tính gần đúng).
F=125hZ→T=8ms
CKNV=25%# thời gian mức 1=2ms 1. Viết đúng ý thời gian mức 1(0.25đ)
ORG 0 2. Viết đúng ý thời gian mức 0(0.25đ)
START: MOV R5,#2
SETB P1.5
MUC1: CALL DL1ms
DJNZ R5,MUC1
MOV R5,#6
CLR P1.5
MUC0: CALL DL1ms
DJNZ R5,MUC0
SJMP START
END

Câu 7: (1,0 điểm) Cho chương trình con SUM như sau:

SUM: CLR C 1. Cho biết vai trò của các thanh ghi R0, R1 và R2 trong chương
LAP: MOV A,@R0 trình con SUM?
ADDC A,@R1
R0=con trỏ địa chỉ toán hạng phép cộng và kết quả cộng
MOV @R0,A
R1=con trỏ địa chỉ toán hạng thứ hai của phép cộng
INC R0
R7=số lần lặp vòng phép cộng
INC R1
Đúng cả 3=0.5đ,sai 1 trừ 0.25đ
DJNZ R2,LAP
RET

1. Giả sử với nội dung các thanh ghi R0 = 20H, R1 = 40H và R2 = 10H, khi gọi chương trình con SUM
thì chương trình con thực hiện nhiệm vụ gì?
R2=10H=16→lặp vòng 16 lần
Chương trình con SUM thực hiện phép cộng
dồn 2 chuỗi số dài 16 byte cất trong RAM nội:
- Chuỗi thứ nhất địa chỉ đầu 20H
- Chuỗi thứ hai địa chỉ đầu 40H
- Kết quả phép cộng dài 16 byte cất trong
RAM nội địa chỉ đầu 20H và cờ C
2. Trả lời đúng phép cộng 16 byte (0.25đ)
3. Trả lời đúng vị trí địa chỉ (0.25đ)

Trang 4 / 4

You might also like