1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Đề thi vi xử lý có đáp án 2

8 1,8K 48
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 8
Dung lượng 304,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Đề thi vi xử lý có đáp án 2

Trang 1

ĐHQG TPHCM–ĐH Bách Khoa

Khoa Đ-ĐT–BM Điện Tử

Điểm Đáp án của Đề thi HK 2 – NH:2011-2012

Môn: Vi xử lý – Mã MH:402030 Ngày thi: 22/06/2012 – Thời gian làm bài: 110 phút

Đề có 6 trang và SV làm trực tiếp trên đề

Tổng số câu là 9, tổng số điểm là 11, và SV chỉ cần làm đạt 10

(SV được sử dụng tài liệu của mình,

SV KHÔNG được dùng PC, Laptop, iPad và PC Tablet)

Chữ ký giám thị

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

Hồ Trung Mỹ

Câu 1: (1 đ)

Cho trước mạch giải mã địa chỉ của hệ thống dùng VXL 8051:

a) Xác định vùng địa chỉ của các SRAM: (0.75 đ)

 Vùng địa chỉ của SRAM thứ nhất (U1): 0800H–0FFFH

 Vùng địa chỉ của SRAM thứ hai (U2): 3000H–37FFH

b) Viết các lệnh 8051 để chép 1 byte từ địa chỉ đầu của SRAM thứ nhất vào byte có địa chỉ cuối của

SRAM thứ hai (0.25đ):

MOV DPTR,#0800H MOVX A,@DPTR

MOV DPTR,#37FFH MOVX @DPTR, A

Trang 2

Câu 2: (1.5 đ)

Điền vào các chỗ trống trong cột địa chỉ ROM chương trình, cột mã máy và cột các cách địa chỉ:

Địa chỉ

ROM (hex) Mã máy (hex) Lệnh 8051 Cách định địa chỉ của toán hạng thứ nhất thứ hai

ORG 0

0000 75 81 40 MOV SP, #40H Trực tiếp Tức thời

0003 7D 80 MOV R5, #80H Thanh ghi Tức thời

0005 12 00 0A LCALL DELAY Dài

0008 80 FE SJMP $ Tương đối

000A C0 05 DELAY: PUSH 5

000C 00 AGAIN: NOP

000D DD FD DJNZ R5,AGAIN

000F D0 05 POP 5

0011 22 RET

END Câu 3: (1.5 đ)

a) (1 đ) Viết chương trình con hợp ngữ 8051 có tên là SS4bit để so sánh 4 bit cao và 4 bit thấp của

thanh ghi A, sau khi gọi chương trình con này thì nội dung của thanh ghi A vẫn nhu cũ Kết quả so sánh tác động đến R7 theo quy ước sau:

 4 bit cao của A < 4 bit thấp của A thì R7 = 01H

 4 bit cao của A = 4 bit thấp của A thì R7 = 02H

 4 bit cao của A > 4 bit thấp của A thì R7 = 04H

b) (0.5 đ) Viết đoạn chương trình hợp ngữ 8051 đọc liên tục giá trị ở cổng P0 và dùng chương trình con

SS4bit để so sánh 4 bit cao và 4 bit thấp của P0 rồi xuất kết quả ra cổng P1 Đầu đoạn chương trình

này ta phải gán trị SP để cho stack có thể cất dữ liệu vào stack từ địa chỉ 30H

Bài giải

AEQ:

MOV R7, #2

SJMP DONE

ANEB:

JC ALTB

Câu 4: (1.5 đ)

Viết chương trình con hợp ngữ 8051 có tên là Menu_R0 thực hiện các phép tính sau theo nội dung của

thanh ghi R0 (nếu không thuộc bảng sau, nghĩa là R0 > 3 thì R2 = 0)

R0 Phép toán Chú thích (R1 là số không dấu có giá trị nhỏ hơn 64)

0 R2 = R1 * 4 SV không được dùng lệnh MUL mà phải áp dụng dịch bit

1 R2 = R1 / 4 SV không được dùng lệnh DIV mà phải áp dụng dịch bit

2 R2 = bù 2 của R1

3 R2 = swap của R1 R2 có trị là hoán đổi 4 bit thấp và 4 bit cao của R1

Bài giải (Coi thêm phần phụ lục với cách khác)

Trang 3

Menu_R0: CASE0: CASE2:

MOV DTPR,#JMP_TABLE MOV A,R1 MOV A,R1

MOV R2,#0

AJMP CASE0 RR A

AJMP CASE1 MOV R2,A

AJMP CASE2 RET

AJMP CASE3

Câu 5: (1 đ) Phân tích đoạn chương trình hợp ngữ 8051H sau bằng cách ghi các giá trị hex vào các chỗ

trống Giả sử trước khi thực thi chương trình này, nội dung của 1 số ô nhớ trong RAM nội:

(30H) = 46H, (31H) = 75H, (40H) = 57H, (41H) = 89H

MOV R0,#30H

MOV R1,#40H

MOV R2,#2

CLR C

LOOP: MOV A,@R0 A = 46H A = 75H

ADDC A,@R1 A = 9DH A = FFH

DA A A = 03H và cờ C = 1 A = 65H và cờ C = 1 MOV @R0,A

INC R0

INC R1

DJNZ R2, LOOP

CLR A

ADDC A,#0

MOV @R0,A

SJMP $

Sau khi thực thi đoạn chương trình trên thì nội dung của các ô nhớ sau có trị số mới là:

(32H) = 01H (31H) = 65H (30H) = 03H

Ý nghĩa của đoạn chương trình trên là: (0.5 đ)

Tính tổng 2 số BCD nén với 2K ký số với R0 là con trỏ chỉ đến byte thấp của toán hạng 1, R1 là con trỏ chỉ đến byte thấp của toán hạng 2, R2 chứa giá trị K, và kết quả cất lại vào vùng nhớ toán hạng 1

Câu 6: (1.5 đ) Cho trước mạch sau với các chân ra 1Y1 nối với đoạn a,1Y2 nối với đoạn b, ,2Y3 nối với

đoạn g của LED 7 đoạn (CC) với các điện trở hạn dòng là 330 Biết 8051 hoạt động với XTAL=12MHz

Trang 4

a) (1 đ) Viết chương trình con DELAY_500MS làm trễ 500 ms dùng Timer 0 (không dùng ngắt timer) và

chương trình con BCD2LED7S hiển thị 1 ký số BCD trong thanh ghi A ra LED 7 đoạn

; 50 x 10000

; 200 x 2500

;

b) (0.5 đ) Viết chương trình có dùng các chương trình con ở a) để mạch hoạt động như sau:

 Khi có cạnh xuống ở P2.0 lần thứ 1 (3, 5,…) thì hiện lần lượt các số từ 0 đến 9 với thời gian hiện 1

số là 500 ms và quay lại kiểm tra cạnh xuống ở P2.0 Khi hiển thị từ 0 đến 9 thì các cạnh xuống ở

P2.0 sẽ không được kể đến!

 Khi có cạnh xuống ở P2.0 lần thứ 2 (4, 6,…) thì chỉ hiện số 0 trong 1s và quay lại kiểm tra P2.0

Chương trình: (Coi thêm phần phụ lục với cách khác)

MOV R1,#10

L1:

MOV A, R0

ACALL BCD2LED7S

ACALL DELAY_500MS

INC R0

DJNZ R1, L1

SJMP LOOP

Câu 7: (1 đ)

Xét 1 hệ thống gồm 2 vi xử lý 8051 M1 và M2 được kết nối theo kiểu modem rỗng (null modem) để truyền

nối tiếp với nhau M1 có nhiệm vụ đọc 1 chuỗi ký tự (kết thúc bằng ký tự rỗng (NULL) = 00H) từ ROM

chương trình bắt đầu từ địa chỉ 200H và xuất nối tiếp đến M2, M2 có nhiệm vụ nhận nối tiếp chuỗi ký tự

này và cất chuỗi vào RAM nội bắt đầu từ địa chỉ 30H Cả 2 VXL đều sử dụng cổng nối tiếp có tốc độ baud

là 4800 và XTAL = 11.0592 MHz Chú ý ta không dùng ngắt nối tiếp mà chỉ hỏi vòng RI và TI

Trang 5

Bài giải (Coi thêm phần phụ lục với cách khác)

Chương trình 8051 ở M1 Chương trình 8051 ở M2 CT con gửi/nhận1 byte nối tiếp

; Đặt cấu hình chỉ phát ; Đặt cấu hình chỉ thu Chú ý:

RET

Câu 8: (1 đ)

Viết chương trình hợp ngữ 8051 để tạo 1 số xung ở ngõ ra như sau:

 Nếu có cạnh xuống ở chân ngắt ngoài 0 (/INT0) thì ngõ ra P1.0 sẽ có 5 xung dương (5 cạnh lên)

 Nếu có cạnh xuống ở chân ngắt ngoài 1 (/INT1) thì ngõ ra P1.1 sẽ có 3 xung dương (3 cạnh lên)

 Nếu không có cạnh xuống ở /INT0, /INT1 thì P1.0=0 và P1.1=0

Giả sử các xung kích cạnh xuống ở các ngõ INT0 và INT1 không bao giờ xảy ra đồng thời Xung dương ở

ngõ ra có được bằng lệnh SETB sau đó CLR

Bài giải

Chương trình chính Chương trình phục vụ ngắt INT0 Chương trình phục vụ ngắt INT1

LJMP MAIN MOV R1, #5 MOV R1, #3

LJMP EX0_ISR SETB P1.0 SETB P1.1

LJMP EX1_ISR DJNZ R1, L1 DJNZ R1, L2

SETB P3.2

SETB P3.3

SETB IT0

SETB IT1

CLR P1.0

CLR P1.1

MOV IE,#85H

SJMP $

Trang 6

Câu 9: (1 đ)

Viết chương trình hợp ngữ hoặc C cho 8051 để tạo dạng sóng tuần hoàn sau ở cổng P1:

Giả sử cho trước chương trình con DELAY_1S (làm trễ 1 giây)

Bài giải (Coi thêm phần phụ lục với cách khác)

Chương trình hợp ngữ Chương trình C (Keil C)

ORG 0

MOV DPTR,#STATE_TBL

MOV R0,#0

; R0 chỉ thị đang ở trạng thái mấy

LOOP:

MOV A, R0

MOVC A,@A+DPTR

ACALL DELAY_1S

INC R0

CJNE R0,#6,LOOP

MOV R0,#0

SJMP LOOP

STATE_TBL:

DB 05H,06H,0AH,05H,0EH,02H

END

#include <reg51.h>

void delay_1s();

// cho trước CTC làm trễ 1 giây void main()

{ char state[6]={0x05, 0x06, 0x0A, 0x05, 0x0E, 0x02};

char i;

while(1) {

for( i = 0; i < 6; i++) {

P1 = state[i];

delay_1s();

} }

}

Kết thúc bài thi HK

Trang 7

Phụ lục: Một số cách giải khác

Câu 3: Tối ưu mã cho chương trình con SS4bit

a)SS4bit:

PUSH ACC MOV B,#16 DIV AB CJNE A,B, ANEB

SJMP DONE

AGTB: MOV R7, #4

SJMP DONE

RET

Câu 4: Dùng toàn CJNE

Cách 2:

RET

Cách 3:

Menu_R0:

MOV R2,A

RET R0NE0: R0NE2:

CASE1: CASE3:

RR A

MOV R2,A

RET

Trang 8

Câu 6: Một cách giải khác cho câu b) (không dùng cờ C để phân biệt chẳn lẽ)

Câu 7:

1) Nhắc lại về thanh ghi SCON:

 Với 8051 phát nối tiếp (M1) với chế độ 1 thì SCON được nạp 1 trong các giá trị sau xem như đúng:

 Với 8051 thu nối tiếp (M2) với chế độ 1 thì SCON được nạp 1 trong các giá trị sau xem như đúng:

2) Nếu đặt SMOD lên 1 thì có thể gán trị cho TH1 với trị –12

MOV A,PCON SETB ACC.7 MOV PCON,A MOV TH1,#–12 Câu 9:

LOOP:

MOV P1,#05H ACALL DELAY_1S

MOV P1,#06H ACALL DELAY_1S

MOV P1,#0AH ACALL DELAY_1S

MOV P1,#05H ACALL DELAY_1S

MOV P1,#0EH ACALL DELAY_1S

MOV P1,#02H ACALL DELAY_1S

SJMP LOOP Hoặc cách khác dùng lệnh SETB và CLR để thay đổi P1 (cách này viết dài)!

Ngày đăng: 03/04/2014, 22:49

TỪ KHÓA LIÊN QUAN

w