You are on page 1of 3

ĐÁP ÁN ĐỀ 2

Câu 1 (1 điểm):
a) 0.5 điểm
ALU: Thành phần có chức năng thực hiện các lệnh tính toán số học và logic rồi trả lại kết quả cho các
thanh ghi hoặc bộ nhớ.
AC: thanh ghi tích lũy, là thanh ghi đặc biệt lưu các toán hạng hoặc kết quả tính toán trung gian của các
phép toán số học và logic
MBR: thanh ghi đệm chứa thông tin đọc từ bộ nhớ hoặc I/O, hoặc chứa thông tin để ghi vào bộ nhớ
hoặc ghi vào I/O
IR: thanh ghi chứa nội dung câu lệnh được đọc từ bộ nhớ
b) 0.5 điểm
Ngắt là một tín hiệu từ bên trong hoặc bên ngoài hệ vi xử lý thông báo tới làm vi xử lý tạm dừng thực
hiện chương trình hiện tại để chuyển qua chương trình phục vụ ngắt.

Quy trình xử lý ngắt khi có nguồn báo ngắt:


- Nếu nguồn báo ngắt bị cấm: vi xử lý tiếp tục thực hiện chương trình hiện tại như bình thường
- Nếu nguồn báo ngắt không bị cấm:
o Vi xử lý hoàn thành nốt lệnh đang thực hiện
o Cất ngữ cảnh (PC, các thanh ghi đặc biệt,…) vào vùng nhớ đặc biệt (ngăn xếp)
o Thực hiện chương trình phục vụ ngắt tương ứng
o Khôi phục ngữ cảnh từ vùng nhớ đặc biệt và quay lại thực hiện chương trình chính.

Câu 2 (2 điểm):
a) Bộ nhớ RAM trong hệ vi xử lý 8051: (0.5 điểm)
- Gồm 128 byte đánh địa chỉ từ 00h-7Fh
- Chia thành 3 phân vùng:
o Vùng băng thanh ghi (00h-1Fh)
o Vùng đánh địa chỉ theo bit (20h-2Fh)
o Vùng RAM cho mục đích chung (30h-7Fh)
b) Đoạn chương trình assembly:

….
MOV 20H, #9AH (2 chu kì máy)
MOV A, #8BH (1 ck máy)
MOV B, #61H (2 ck máy)
ADD A, B (1 ck máy)
MOV R0, A (1 ck máy)
MOV 07H, C (2 ck máy)
….

- 0x75 0x20 0x9A 0x74 0x8B 0x75 0xF0 0x61 0x25 0xF0 0xF8 0x92 0x07 (0.5đ)
- Tổng cộng mất 9 chu kì máy thực hiện (0.5 đ)
- Ô 20H nhận giá trị 0x1A. Do ban đầu nạp 9AH, sau đó phép cộng ADD A,B có không nhớ nên
C=0, bit 0 này được đưa ra bit 07h là bit cao nhất của ô 20H nên thành 0x1A. (0.25 đ)
- PSW = 0x01 (0000 0001) do kết quả của phép cộng 95H + 9FH cho ra C = 0, AC = 0, OV = 0,
P = 1. (0.25 đ)
Câu 3 (3 điểm):

- Số cần nạp Timer X: 55.536 = D8F0 (THx = D8 h; TLx = F0 h) – khoảng thời gian đếm là
10.000 xung chu kỳ 1μs (tương đương = 10ms). Mỗi lần tràn thì đảo P1.7 một lần đến khi đủ 20
xung
- Thiết lập chế độ Timer 1: TMOD = 10 h
- Lưu đồ và Chương trình sinh viên tự đề xuất.

Câu 4 (4 điểm):

1) Viết CTC “Display”

; tham so truyen qua thanh ghi A


Display:
push acc
mov B, #10
div AB
swap A
add A,B
mov P2, A
pop acc
ret
2) Viết CTC

; doc cong P3.6


; tra ve acc
Counter:
jnb P3.6, $
jb P3.6, $
inc a
ret
3) Viết CTC “Sender”

; truyen gia tri 0AAh de ket thuc


Sender:
mov SCON,#0x40
mov TMOD,#0x20
mov TH1,#0xFD
clr TI
setb TR1 ; start timer 1
mov sbuf,#0BBh
jnb TI,$
clr TI
ret
4) Viết chương trình chính

org 00h
ljmp start
org 30h
start:
mov P2, #00
setb P3.6
clr a
lcall Display
loop_1:
lcall Counter
lcall Display
cjne a,#72,loop_1
lcall Sender
sjmp $
END

You might also like