Đề thi học kì 2 môn Vi xử lý - Năm học 2014-2015 (Có đáp án)

CÁC CÂU HỎI ÁP DỤNG TRÊN VI ĐIỀU KHIỂN 8051
Câu 1: (2 điểm) Cho mạch giải mã địa chỉ bộ nhớ sử dụng IC 74138 như hình vẽ 
a. Xác định địa chỉ của các ngõ ra decoder và tín hiệu chọn chip CS0 cho bộ nhớ ROM: (1đ) 
b. Vẽ thêm trên mạch 2 tín hiệu chọn chip CS1 và CS2 với yêu cầu:
- CS1: chọn chip RAM có dung lượng 8KB bắt đầu từ địa chỉ đầu của Y0
- CS2: chọn I/O có 256 địa chỉ và có địa chỉ tiếp theo CS1
Xác định địa chỉ của 2 tín hiệu chọn chip đó (giải thích) (1đ)
Mạch giải mã 74138 phân vùng 2KB
CS1 là vùng 8KB nên ghép 4 vùng: Y0, Y1, Y2, Y3 (hình vẽ): 8000H – 9FFFH
CS2 là vùng 256B, lấy vùng tiếp theo là Y4 với A10 = A9 = A8 = 0: A000H – A0FFH 


pdf 6 trang thamphan 28/12/2022 1060
Bạn đang xem tài liệu "Đề thi học kì 2 môn Vi xử lý - Năm học 2014-2015 (Có đáp án)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfde_thi_hoc_ki_2_mon_vi_xu_ly_nam_hoc_2014_2015_co_dap_an.pdf

Nội dung text: Đề thi học kì 2 môn Vi xử lý - Năm học 2014-2015 (Có đáp án)

  1. Ñieåm Chöõ kyù giaùm thò ĐÁP ÁN ĐỀ THI VI XỬ LÝ HK 2 (2014-2015) Ngày thi: 12/06/2015 Thời gian làm bài: 110 phút Đề thi có 6 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Ọ TÊN: . MSSV: . Duyệt của BM Điện tử GV ra đề: NGUYỄN TRỌNG LUẬT CÁC CÂU HỎI ÁP DỤNG TRÊN VI ĐIỀU KHIỂN 8051 Câu 1: (2 điểm) Cho mạch giải mã địa chỉ bộ nhớ sử dụng IC 74138 như hình vẽ. A11 Y0 A(LSB) CS1 A12 B Y1 A13 C Y2 Y3 CS0 Y4 A15 G1 Y5 A14 G2A A10 Y6 A9 CS2 0 G2B Y7 A8 G2B a. Xác định địa chỉ của các ngõ ra decoder và tín hiệu chọn chip CS0 cho bộ nhớ ROM: (1đ) A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 Vuøng ñòa chæ (HEX) 1 0 0 0 0 X X X X X X X X X X X /Y0: 8000H – 87FFH 1 0 0 0 1 X X X X X X X X X X X /Y1: 8800H – 8FFFH 1 0 0 1 0 X X X X X X X X X X X /Y2: 9000H – 97FFH 1 0 0 1 1 X X X X X X X X X X X /Y3: 9800H – 9FFFH 1 0 1 0 0 X X X X X X X X X X X /Y4: A000H – A7FFH 1 0 1 0 1 X X X X X X X X X X X /Y5: A800H – AFFFH 1 0 1 1 0 X X X X X X X X X X X /Y6: B000H – B7FFH 1 0 1 1 1 X X X X X X X X X X X /Y7: B800H – BFFFH Địa chỉ của CS0: 9800H - A7FFH b. Vẽ thêm trên mạch 2 tín hiệu chọn chip CS1 và CS2 với yêu cầu: - CS1: chọn chip RAM có dung lượng 8KB bắt đầu từ địa chỉ đầu của Y0 - CS2: chọn I/O có 256 địa chỉ và có địa chỉ tiếp theo CS1 Xác định địa chỉ của 2 tín hiệu chọn chip đó (giải thích) (1đ) Mạch giải mã 74138 phân vùng 2KB CS1 là vùng 8KB nên ghép 4 vùng: Y0, Y1, Y2, Y3 (hình vẽ): 8000H – 9FFFH CS2 là vùng 256B, lấy vùng tiếp theo là Y4 với A10 = A9 = A8 = 0: A000H – A0FFH (hình vẽ) Trang 1 / 6
  2. Với A = 26, hãy tính số chu kỳ máy (MC) để đoạn chương trình trên nhảy đến nhãn thoat A = 26 = 0001 1010 B, chương trình quay trái thanh ghi A cho đến khi MSB(A) = 1 thì nhảy đến nhãn THOAT. Như vậy, vòng lặp thực hiện 3 lần và lần thứ 4 chỉ thực hiện lệnh JB rồi nhảy. Vậy số chu kỳ máy: 1 + 3 (2 + 1 + 1 + 2) + 2 = 21MC (0.5đ) Câu 4: (1 điểm) Viết chương trình hợp ngữ tìm giá trị y (kết quả cất vào thanh ghi B) bằng 2 cách: có dùng 2 lệnh MUL và không dùng MUL (dùng bảng tham chiếu). Giá trị y cần tính là y = x -2x + 3, với giá trị x chứa trong thanh ghi A có giá trị từ 0 đến 9. *Dùng lệnh MUL: (0.5đ) * Dùng bảng tham chiếu: (0.5đ) MOV R7, A y(0) = 3, y(1) = 2, y(2) = 3, y(3) = 6 RL A y(4) = 11, y(5) = 18, y(6) = 27 MOV R6, A ; R6 = 2x y(7) = 38, y(8) = 51, y(9) = 66 MOV A, R7 MOV B, A MOV DPTR, # BANG MUL AB ; A = x2 MOVC A, @A+DPTR ADD A, #3 ; A = x2 + 3 MOV B, A CLR C SJMP $ SUBB A, R6 ; A = x2 - 2x + 3 BANG: DB 3, 2, 3, 6, 11 MOV B, A DB 18, 27, 38, 51, 66 SJMP $ Câu 5: (1 điểm) Mạch 8051 có 2 công tắc SW ở P1.1 và P1.0. Viết chương trình hợp ngữ hoặc C (không dùng ngắt) kiểm tra các SW cứ sau mỗi 1 phút để làm thay đổi các ngõ ra của Port 2 theo quy luật như bảng sau. (cho sẵn chương trình con tạo trễ 1 giây DELAY_1s) P1.1 P1.0 Port 2 0 0 Quay phải 1 bit 0 1 Quay trái 1 bit 1 0 Lấy đảo các bit 1 1 Hoán đổi 4 bit cao và 4 bit thấp Trang 3 / 6
  3. Câu 7: (1,5 điểm) a. Viết chương trình con SOSANH, có nhiệm vụ so sánh 2 số nhị phân (mỗi số 16 bit). Số thứ nhất là nội dung của cặp thanh ghi R7_R6 và số thứ 2 là nội dung của cặp thanh ghi R5_R4. Chương trình tìm giá trị lớn nhất của 2 số trên và cất vào cặp thanh ghi R3_R2; nếu 2 số bằng nhau thì xóa cặp thanh ghi R3_R2. (Các thanh ghi R7, R5, R3 là byte cao của các số 16 bit) (0,75 điểm) SOSANH: MOV A, R7 NHO: MOV R3, 05H CJNE A, 05H, KHAC MOV R2, 04H MOV A, R6 KTHUC: RETI CJNE A, 04H, KHAC MOV R3, #0 MOV R2, #0 SJMP KTHUC KHAC: JC NHO MOV R3, 07H MOV R2, 06H SJMP KTHUC b. Cho port nối tiếp hoạt động ở chế độ UART 8 bit, tốc độ baud 19200, tần số thạch anh 11.059MHz. Viết chương trình hợp ngữ nhận từ port nối tiếp 2 byte liên tiếp là số nhị phân 16 bit (byte đầu là 8 bit thấp). Sử dụng chương trình con SOSANH để so sánh số vừa nhận được với số nhị phân 16 bit nhập từ Port 1 và Port 0 (Port 1 là 8 bit cao). Kết quả được phát trở lại ra port nối tiếp (byte trọng số thấp phát trước). (0,75 điểm) MOV TMOD, #20H MOV R5, P1 MOV TH1, # -3 MOV R4, P2 MOV A, PCON ; SMOD = 1 ACALL SOSANH SETB ACC.7 JNB TI, $ ; phát R3_R2 MOV PCON, A CLR TI SETB TR1 MOV SBUF, R2 ; byte thấp MOV SCON, # 01010010B JNB TI, $ JNB RI, $ ; thu 2 byte CLR TI CLR RI MOV SBUF, R3 ; byte cao MOV R6, SBUF ; byte thấp SJMP $ JNB RI, $ CLR RI MOV R7, SBUF ; byte cao Trang 5 / 6