1. Trang chủ
  2. » Tất cả

092-VXL-Thi-Đáp án

7 1 0

Đ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 7
Dung lượng 530,57 KB

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

Nội dung

Cho lệnh gọi chương trình con ACALL MAX chứa trong bộ nhớ chương trình bắt đầu từ địa chỉ 97FFH.. Cho đoạn chương trình 8051 sau: * Xác định nội dung thanh ghi A va B khi thực hiện xong

Trang 1

ĐỀ THI HỌC KỲ 2 (2009-2010)

Môn thi: VI XỬ LÝ Thời gian làm bài: 110 phút

(SINH VIÊN ĐƯỢC SỬ DỤNG TÀI LIỆU)

HỌ TÊN: ……… MSSV: ……… NHÓM: ………

Câu 1: (2 điểm) Cho mạch phân vùng bộ nhớ của hệ thống vi xử lý 8051 sử dụng IC 74138 như hình vẽ Thiết kế mạch giải mã địa chỉ cho các tín hiệu chọn chip theo vùng địa chỉ: CS0 (ROM1): 8000H BFFFH CS1 (ROM2): D000H EFFFH

CS2 (RAM): B000H EFFFH CS3 (I/0): 8A00H 8BFFH

(Giải thích ngắn gọn và vẽ hình trực tiếp lên sơ đồ trên) ………

………

………

………

A 15 A 14 A 13 A 12 A 11 A 10 A 9 A 8 A 7 A 6 A 5 A 4 A 3 A 2 A 1 A 0 Vuøng ñòa chæ (HEX)

1 0 0 0 X X X X X X X X X X X X /Y0: 8000H 8FFFH

1 0 0 1 X X X X X X X X X X X X /Y1: 9000H 9FFFH

1 0 1 0 X X X X X X X X X X X X /Y2: A000H AFFFH

1 0 1 1 X X X X X X X X X X X X /Y3: B000H BFFFH

1 1 0 0 X X X X X X X X X X X X /Y4: C000H CFFFH

1 1 0 1 X X X X X X X X X X X X /Y5: D000H DFFFH

1 1 1 0 X X X X X X X X X X X X /Y6: E000H EFFFH

1 1 1 1 X X X X X X X X X X X X /Y7: F000H FFFFH

SINH VIÊN LÀM BÀI THI NGAY TRÊN ĐỀ - ĐỀ THI CÓ 6 TRANG

C

A (LSB) Y0

Y1 Y2 Y3 Y4 Y5 Y6 Y7 G2B

G2A G1

B

0 A15

A14 A13 A12

G2B

0

/CS0

/CS1

/CS2

A11 A10 A9 /CS3

Trang 2

Trang 2 / 6

………

………

Câu 2: (3 điểm)

a Cho lệnh gọi chương trình con ACALL MAX chứa trong bộ nhớ chương trình bắt đầu từ

địa chỉ 97FFH

* Xác định phạm vi địa chỉ hợp lệ của chương trình con MAX? (Giải thích) (0,5đ)

PC = 97FFh + 2 = 9801h = 1001 1000 0000 0001b

Địa chỉ trang 2KB: 10011

Phạm vi địa chỉ ctcon MAX là 1001 1XXX XXXX XXXX = 9800h 9FFFh

* Nếu lệnh ACALL MAX có mã máy là B1H và 9EH thì chương trình con MAX có địa

B1h = 1 0 1 1 0 0 0 1 9Eh = 1 0 0 1 1 1 1 0

Địa chỉ ctcon MAX = địa chỉ trang _ địa chỉ 11 bit

= 1 0 0 1 1 1 0 1 1 0 0 1 1 1 1 0

= 9D9Eh

b Cho đoạn chương trình 8051 sau:

* Xác định nội dung thanh ghi A va B khi thực hiện xong đoạn chương trình này (0,5đ)

A = 88 = 0 1 0 1 1 0 0 0 B = 0 : ACC.0 = 0 : lặp vòng

A = 0 0 1 0 1 1 0 0 B = 1 : ACC.0 = 0 : lặp vòng

A = 0 0 0 1 0 1 1 0 B = 2 : ACC.0 = 0 : lặp vòng

A = 0 0 0 0 1 0 1 1 B = 3 : ACC.0 = 1 : kết thúc

MOV A, # 88 ; 1MC

MOV B, #0 ; 2MC

LP: JB ACC.0, KT (1) ; 2MC

INC B ; 1MC

SJMP LP (2) ; 2MC

KT: SJMP KT ; 2MC

Trang 3

* Xác định mã máy của 2 lệnh: (1) và (2) (Giải thích) (0,5đ)

MOV A, # 88 ; 1MC

MOV B, #0 ; 2MC

LP: JB ACC.0, KT (1) ; 2MC - 3Byte : 20h, E0h, 05h(+5)

RR A ; 1MC - 1B

INC B ; 1MC - 2B

SJMP LP (2) ; 2MC - 2B : 80h, F8h (-8)

KT: SJMP KT ; 2MC - 2B

* Với tần số thạch anh là 4MHz, xác định thời gian thực hiện đoạn chương trình này (1,0đ)

(Giải thích)

Các lệnh trong vòng lặp LP thực hiện 3 lần, ngoài trừ lệnh (1) là 4 lần

Lệnh SJMP KT thực hiện ít nhất 1 lần

Thời gian thực hiện 1 + 2 + 2x4 + (1 + 1 + 2) x 3 + 2 = 25 MC

Với 1MC = 12/ 4MHz = 3 s => Tgian 75s

Câu 3: (1 điểm)

Cho chuỗi dữ liệu chứa các số hạng 16 bit (số nhị phân có dấu bù 2) chứa trong vùng RAM

ngoài có địa chỉ đầu là 4000H Nôi dung ô nhớ 3FFFH chứa số lượng các số hạng 16 bit Trong

chuỗi dữ liệu, mỗi số hạng 16 bit được chứa trong 2 ô nhớ có địa chỉ liên tiếp nhau (với ô nhớ có địa chỉ thấp chứa byte thấp) Viết chương trình tính số lượng các số hạng 16 bit là số dương và có

giá trị lẻ, kết quả cất vào ô nhớ 3FFEH

MOV DPTR, #3FFFH

MOVX A, @DPTR

MOV R7, A

MOV R6, # 0

MOV B, A

JB ACC.7, TT ; số âm

JNB B.0, TT ; số chẳn

INC R6 ; số dương và lẻ

TT: DJNZ R7, LAP

MOV DPTR, #3FFEH

(Cách khác:)

JNB ACC.0, CH ; số chẳn

JB ACC.7, TT ; số âm

INC R6 ; số dương và lẻ

SJMP TT

Trang 4

Trang 4 / 6

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

Viết chương trình 8051 sử dụng ngắt ngoài INT1 và ngắt Port nối tiếp như sau:

- Ngắt ngoài INT1: cho phép ngắt theo cạnh xuống Mỗi lần có ngắt ngoài thì dịch 1 bit của thanh

ghi R7 ra chân port P1.7 Bit được dịch đầu tiên là bit trọng số nhỏ nhất (LSB) và sau khi dịch bit trọng số lớn nhất (MSB) thì chấm dứt ngắt ngoài

- Ngắt Port nối tiếp: khi thu được 1 byte thì xuất giá trị đó ra ngoại vi được ánh xạ như bộ nhớ dữ

liệu ngoài có địa chỉ là 8000H nếu giá trị thu được có giá trị từ 100 đến 200 Port nối tiếp sử dụng

UART 8 bit có tốc độ baud là 9600bps, tần số thạch anh là 11.059MHz

ORG 0000H

ORG 0013H

LJMP ISR_X1

ORG 0023H

LJMP ISR_SER

MAIN:

MOV TMOD, #20H

MOV TH1, # -3

SETB TR1

MOV SCON, #01010000B

MOV DPTR, #8000H

MOV A, R7

SETB IT1

MOV R6, #8

MOV IE, #10010100B

SJMP $

ISR_ X1:

MOV P1.7, C DJNZ R6, KT1

KT1: RETI

ISR_ SER:

CLR RI MOV A, SBUF CJNE A, #100, DK1

CJNE A, #201, DK2 DK2: JNC KT2

KT2: POP ACC

RETI

Trang 5

Câu 5: (2 điểm) Sử dụng CCS điều khiển PIC

a Cho sơ đồ kết nối giữa PIC 16F84 với các LED như hình vẽ và chương trình điều khiển:

#include <16F84.h>

#fuses HS, NOWDT, NOPROTECT, PUT

#use delay(clock=8000000)

byte const LED[8]={0x0f,0x0e,0x0c,0x08,0x00,0x01,0x03,0x07}; main()

{

int8 count;

while(true) {

for(count=0;count<8;count++) {

output_A(LED[count]);

delay_ms(500);

} }

}

Khi thực hiện chương trình này, thì các đèn LED hoạt động ra sao? (Giải thích) (1,0 đ)

Count = 0: Xuất ra port A: LED[0] = 0Fh = 00001111b: cả 4 LED đều tắt

Count = 1: Xuất ra port A: LED[1] = 0Eh = 00001110b: LED0 sáng

Count = 2: Xuất ra port A: LED[2] = 0Ch = 00001100b: LED0, LED1 sáng

Count = 3: Xuất ra port A: LED[3] = 08h = 00001000b: LED0, LED1, LED2 sáng Count = 4: Xuất ra port A: LED[4] = 00h = 00000000b: cả 4 LED đều sáng

Count = 5: Xuất ra port A: LED[5] = 01h = 00000001b: LED0 tắt

Count = 6: Xuất ra port A: LED[6] = 03h = 00000011b: LED0, LED1 tắt

Count = 7: Xuất ra port A: LED[7] = 07h = 00000111b: LED0, LED1, LED2 tắt

Lặp vòng lại với Count = 0

V cc

16F84

RA0

RA1

RA2

RA3

LED0

LED1

LED2

LED3

Trang 6

Trang 6 / 6

Đèn LED sáng dần và tắt dần theo thứ tự LED0, LED1, LED2, LED3 Giữa mỗi lần là delay 0,5 giây

b Viết chương trình điều khiển PIC 16F84 có nhiệm vụ liên tục kiểm tra chân port RB0:

- Nếu RB0 = 0 thì tạo sóng vuông tần số 4KHz ở chân port RB6

- Nếu RB0 = 1 thì tạo sóng vuông tần số 50Hz ở chân port RB7

Chú ý khi tạo sóng vuông ở chân port này thì chân port kia ở mức 0 (1,0 đ)

#include <16F84.h>

#fuses HS, NOWDT, NOPROTECT, PUT

#use delay(clock=8000000)

#use fast_io(B)

main()

{

Set_tris_B(0b00000001);

For (;;)

{ If (input(pin_B0))

{

Output_low(pin_B6);

Output_togle(pin_B7);

Delay_ms(10);

} Else

{

Output_low(pin_B7);

Output_togle(pin_B6);

Delay_s(125);

} }

}

Ngày 23 tháng 06 năm 2010 Sóng vuông tần số 4KHz có chu kỳ là 250s Sóng vuông tần số 50Hz có chu kỳ là 20ms

Trang 7

Bộ môn Điện tử

HỒ TRUNG MỸ

Ngày đăng: 24/12/2018, 11:33

🧩 Sản phẩm bạn có thể quan tâm

w