


Preview text:
Đáp án Đề 2: Câu 1:
a, Hãy mô tả ngắn gọn chức năng của từng thành phần trong hệ thống trên? (1 điểm)
CPU thực hiện tính toán dữ liệu và điều khiển hoạt động của toàn bộ hệ vi xử 0.25 lý
Memory: Bộ nhớ chứa nội dung chương trình và dữ liệu 0.25
Input/Poutput: giao tiếp với các thiết bị ngoại vi 0.25
Kết nối giữa các thành phần CPU, Memory và I/O bằng System Bus là các
đường thông tin: địa chỉ, dữ liệu, điều khiển 0.25
b, Hãy mô tả chi tiết chu trình thực hiện lệnh và nội dung của các thanh ghi liên quan trong
quá trình thực hiện lệnh: SUB 0D8H
Biết nội dung của lệnh này được lưu trong bộ nhớ ở ô nhớ có địa chỉ là 003H. Tìm lệnh: 0.5 MAR ß PC: MAR = PC = 003H MBR ß M(MAR): MBR = 060D8
IR ß copy trường Opcode trong MBR: IR = 06H
MAR ß copy trường địa chỉ (X) trong MBR: MAR = 0D8H PC ß PC + 1 Giải mã lệnh: 0.25
Bộ giải mã giải mã lệnh trong IR Thực hiện lệnh: 0.25
MBR ß M(MAR): MBR có nội dung là nội dung của ô nhớ có địa chỉ 0D8H
A ß A - MBR: truyền dữ liệu và thực hiện phép toán trừ trong ALU; kết quả lưu vào thanh ghi A Câu 2 (2 điểm)
- Giá trị thanh ghi Acc = FE h (1 đ)
- Bit 55h (Bit 5 của byte 2Ah) tại vùng truy cập theo bit trong RAM trong = 0 (0.5 đ)
- Nếu N = 13 h (Ngắt ngoài 1) thì chương trình phục vụ ngắt ISP_EX1 sẽ tràn sang vùng
chương trình phục vụ ngắt Timer 1. Do ISP_EX1 có 11 byte chương trình ( vượt quá 8 byte theo cấu trúc MCS 51) (0.5đ) Câu 3:
Viết chương trình truyền 50 byte bằng cổng UART của 8051 theo chế độ 1, tốc độ 19200. Dữ liệu
truyền lấy từ bộ nhớ trong có địa chỉ từ 40H. Biết thạch anh sử dụng có tần số là 11,0592 MHz
; Khởi tạo đúng Timer để tạo tốc độ truyền tin (0.5đ) ORG 0000H
MOV TMOD,#20H ; Timer 1 làm việc ở chế độ 2, tự động nạp lại
MOV TH1,#0FDH ; Giá trị nạp lại để có tốc độ 9600bps
MOV TL1,#0FDH ; Khởi tạo giá trị đếm ban đầu cho Timer CLR TF1
; Xóa cờ tràn khi chưa bật Timer SETB TR1 ; Bật Timer
; Khởi tạo đúng UART (0.5đ) SETB SMOD
; Tốc độ 19200bps MOV SCON,#20H ; UART chế độ 1
; Khởi tạo biến đúng (0.5đ) MOV R2,#50 ; Biến đếm dữ liệu MOV R0,#40H
; Trỏ đến bộ nhớ trong
; Lập trình đúng (0.5đ) LOOP: MOV A,@R0
; Lấy dữ liệu cần truyền vào A MOV SBUF,A
; Đưa dữ liệu vào SBUF để truyển WAIT: JNB TI, WAIT ; Chờ truyền xong CLR TI ; Xóa cờ truyền INC R0
; Tăng địa chỉ để lấy dữ liệu tiếp theo DJNZ R2, LOOP
; Kiểm tra nhận đủ 50 dữ liệu END Câu 4:
1) Viết chương trình con Display Display: mov dptr,#Code_7_seg
; Lấy địa chỉ đầu của bảng tra movc a,@a+dptr
; tra bảng với index là số hiển thị trong thanh ghi
a, ; trả về mã LED 7 thanh tương ứng mov P0,a ; điều khiển LED ret Code_7_seg:
; bảng tra mã hiển thị cho loai LED 7 thanh Anode chung
db 40h, 3ch, 24h, 30h, 13h, 12h, 03h, 78h, 00h, 18h
- giải thích cách tạo ra bảng mã 7 thanh è đánh giá 0.5 điểm
2) Viết chương trình con Convert Convert: mov
dptr,#ADC_to_Temp ; Lấy địa chỉ đầu của bảng tra movc a,@a+dptr
; tra bảng với index là giá trị đọc của ADC,
; trả về giá trị nhiệt độ ret ADC_to_Temp:
; chuyen doi so doc tu ADC qua nhiet do db
0, 0, 0, 1, 1 , 2 , 2, 3, 3, 4, 5, 6, 6, 7, 8
- Giải thích cách tạo bảng mã chuyển đổi từ giá trị ADC sang nhiệt đô è đánh giá 0.5 điểm
3) Chương trình hoàn thiện org 00h ljmp start org 30h start: mov A, P1 ; đọc giá trị ADC anl A, #0fh ; chỉ lấy 4 bit thấp lcall Convert
; gọi chương trình con tính nhiệt độ lcall Display
; gọi chương trình con hiển thị LED 7 thanh sjmp start ; lặp lại end
- Biết cách khai bao chương trình hoàn thiện è 0.5 điểm
- Biết cách gọi chương trình con è 0.5 điểm