Tải bản đầy đủ (.doc) (16 trang)

đề cương môn vi xử lí

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (516.59 KB, 16 trang )

Câu 1

Câu hỏi: Viết đoạn chương trình chuyển mảng dữ liệu từ vùng nhớ bufer1 có địa 5.0
chỉ offset bắt đầu từ 200h lên vùng nhớ buffer2 có địa chỉ offset bắt đầu từ 300h.
Biết rằng địa chỉ mảng của cả 2 vùng nhớ này đều do DS quản lý, kích thước 2
vùng nhớ bằng nhau và bằng 100 byte.
Đáp án:

5.0

MOV SI, 200H
MOV DI, 300H
MOV CX, 100
LAP100:
MOV AL, [SI]
MOV [DI], AL
INC SI
INC DI
LOOP LAP100

Câu 2
Câu hỏi: Viết đoạn chương trình chuyển mảng dữ liệu từ vùng nhớ bufer1 có địa 5.0
chỉ offset bắt đầu từ 500h lên vùng nhớ buffer2 có địa chỉ offset bắt đầu từ 700h.
Biết rằng địa chỉ mảng của cả 2 vùng nhớ này đều do DS quản lý, kích thước 2
vùng nhớ bằng nhau và bằng 50 byte.

Đáp án.

5.0

MOV SI, 500H


MOV DI, 700H
MOV CX, 50
LAP50:
MOV AL, [SI]
MOV [DI], AL
INC SI
INC DI

LOOP

LAP50

Câu 3
Câu hỏi: Viết đoạn chương trình để chuyển 1 byte mã BCD chứa trong thanh ghi 5.0
AL thành các byte mã ASCII rồi lưu vào 2 byte nhớ có địa chỉ mảng là 500H, địa
chỉ offset là 300H và 301H. Biết rằng 1 byte mã BCD bao gồm 2 từ mã BCD chứa
ở 4 bit cao và 4 bit thấp.

Đáp án.
MOV AH, AL
AND AL, 0FH; lọc bỏ 4 bit cao
ADD AL, 30H; chuyển sang mã ASCII (số 0 là 30H)
MOV 500H: 300H, AL
MOV AL, AH
MOV CL, 4; bước nhảy là 4 bit
SHR AL, CL; dịch phải 4 bit, lấy lại 4 bit cao
ADD AL, 30H
MOV 500H: 301H, AL

5.0



Câu 4
Câu hỏi: Viết đoạn chương trình để chuyển 1 byte mã BCD chứa trong thanh ghi
BL thành các byte mã ASCII rồi lưu vào 2 byte nhớ có địa chỉ mảng là 700H, địa
chỉ offset là 500H và 501H. Biết rằng 1 byte mã BCD bao gồm 2 từ mã BCD chứa
ở 4 bit cao và 4 bit thấp.

5.0

Đáp án.
MOV BH, BL
AND BL, 0FH
ADD BL, 30H
MOV 700H: 500H, BL
MOV BL, BH
MOV CL, 4
SHR BL, CL
ADD BL, 30H
MOV 700H: 501H, BL

5.0

Câu 5
Câu hỏi: Viết đoạn chương trình để chuyển 1 byte mã hexa chứa trong thanh 5.0
ghi BH thành các byte mã ASCII rồi chuyển ra ngoài qua cổng 8 bit có địa
chỉ là 600h. Biết rằng 1 byte mã hexa bao gồm 2 từ mã hexa chứa ở 4 bit
cao và 4 bit thấp.
Đáp án.
MOV DX, 600H

MOV BL, BH
AND BH, 0FH; lọc bỏ 4 bit cao
CMP BH, 10; so sánh với 10 nếu lớn hơn nhảy tới BCD1
JAE BCD1
ADD BH, ‘0’
BCD1:
ADD BH, ‘A’ – 10
MOV AL, BH
OUT DX, AL
MOV BH, BL
MOV CL, 4
SHR BH, CL
CMP BH, 10
JAE BCD1
ADD BH, ‘0’
MOV AL, BH
OUT DX, AL

5.0

Câu 6
Câu hỏi: Viết đoạn chương trình để chuyển 1 byte mã hexa chứa trong thanh ghi
5.0
AH thành các byte mã ASCII rồi chuyển ra ngoài qua cổng 8 bit có địa chỉ là 300h.
Biết rằng 1 byte mã hexa bao gồm 2 từ mã hexa chứa ở 4 bit cao và 4 bit thấp.


Đáp án.
MOV DX, 300H
MOV BL, AH

AND AH, 0FH
CMP AH, 10
JC BCD1
ADD AH, ‘A’ – 10
MOV AL, AH
OUT DX, AL
MOV AH, BL
MOV CL, 4
SHR AH, CL
CMP AH, 10
JC BCD2
ADD AH, ‘A’ -10
MOV AL, AH
OUT DX, AL

5.0

Câu 7
Câu hỏi: Xét hệ vi xử lý cần đọc các byte từ cổng dữ liệu 8 bit có địa chỉ 200h vào 5.0
bộ vi xử lý. Biết rằng để xác định cổng đó có dữ liệu hay không, người ta dùng
thêm một cổng trạng thái có địa chỉ 201h. Trong đó bit D3 của cổng này bằng 1
báo rằng có dữ liệu, ngược lại D3 bằng 0 báo rằng không có dữ liệu.
Yêu cầu: Viết đoạn chương trình để đọc 1 byte dữ liệu từ cổng đã cho vào bộ
vi xử lý và lưu vào trong thanh ghi BH.

Đáp án.

5.0

Đoạn chương trình đọc 1 byte trong bài tập chuyển mã Chương 3 – Giáo trình kỹ

thuật vi xử lý – Tác giả Đỗ Xuân Tiến
Port_STATUS 201h
Port_DATA 200h
MOV DX, Port_STATUS
READ_AGAIN:
IN AL,DX
AND AL,08h
JZ READ_AGAIN
MOV DX,Port_DATA
IN AL,DX
MOV BH,AL

Câu 8
Câu hỏi: Xét hệ vi xử lý cần đọc các byte từ cổng dữ liệu 8 bit có địa chỉ 400h vào 5.0
bộ vi xử lý. Biết rằng để xác định cổng đó có dữ liệu hay không, người ta dùng
thêm một cổng trạng thái có địa chỉ 401h. Trong đó bit D5 của cổng này bằng 1
báo rằng có dữ liệu, ngược lại D5 bằng 0 báo rằng không có dữ liệu.
Yêu cầu: Viết đoạn chương trình để đọc 1 byte dữ liệu từ cổng đã cho vào bộ
vi xử lý và lưu vào trong thanh ghi BH.

Đáp án.
Đoạn chương trình đọc 1 byte trong bài tập chuyển mã Chương 3 – Giáo trình kỹ

5.0


thuật vi xử lý – Tác giả Đỗ Xuân Tiến
Port_STATUS 401H
Port_DATA 400H
MOV DX,Port_STATUS

READ_AGIAN:
IN AL,DX
AND AL,20H
JZ READ_AGAIN
MOV DX,Port_DATA
IN AL,DX
MOV BH,AL

Câu 9
Câu hỏi: Viết chương trình chuyển mảng dữ liệu từ vùng nhớ có địa chỉ offset 5.0
DISPLAY_VIDEO = 900h và có địa chỉ mảng là DISPLAY_BASE = 5000h tới
vùng dữ liệu BUFFER_SAVE có địa chỉ mảng do DS quản lý. Biết rằng vùng nhớ
DISPLAY_VIDEO chứa 2 kbyte ký tự.

Đáp án.
5.0
Chương trình chuyển mảng trong chương 3 – Giáo trình kỹ thuật vi xử
lý – Tác giả Đỗ Xuân Tiến.
BUFFER_SAVE DB 2*1024 DUP(?)
DISPLAY_VIDEO = 900h
DISPLAY_BASE = 5000h
MOV SI, DISPLAY_BASE
LEA DI BUFFER_SAVE
MOV AX, DISPLAY_VIDEO
MOV DS,AX
MOV AX,DS
MOV ES,DS
CLD
LOOP_2KB
MOVS

LOOP LOOP_2KB

Câu 10
Câu hỏi: Viết chương trình chuyển mảng dữ liệu từ vùng nhớ Buffer1 có địa chỉ 5.0
offset bắt đầu là 128h tới vùng nhớ Buffer2 có địa chỉ offset bắt đầu là 512h. Biết
rằng cả hai vùng nhớ đều nằm trong mảng có địa chỉ Segment là 200h và kích
thước 2 vùng nhớ bằng nhau và bằng 500 byte.

Đáp án.
MOV AX, 200H
MOV DS, AX
MOV SI, 128H
MOV DI, 512H
MOV CX, 500
BACK:
MOV AL, [SI]
MOV [DI], AL

5.0


INC SI
INC DI
LOOP BACK
Câu 11
Câu hỏi: Viết đoạn chương trình để thu và xử lý tin trong bài toán thu tin đa kênh. 5.0
Biết sơ đồ ngoại vi thu tin như sau:
D5
D1
Sensor 0


D0

K0

Vc
c
D

Q

Clk

K5

Bộ đệm
vào
367

__
R

Sensor 5

/FLOP_In

Vc
c
D Q
Rst 0


Clk
__
R

FlipFop 7474

Rst 5

Bộ đệm
ra
174

/
FLOP_Out

Data
Bus

Đáp án.
5.0
Chương trình con Thu_xulytin trong chương 4 – giáo trình kỹ thuật vi xử lý –
Tác giả Đỗ Xuân Tiến.
IN AL,FLOPS
MOV AH,AL
NOT AL
OUT FLOPS,AL
MOV AL,FFH
OUT FLOPS,AL
MOV CX,6

MOV BX,RAM
LOOP_6K:
MOV AL,AH
SHR AL,1
MOV AH,AL
MOV AL,00H
ADC AL,[BX]
ADD AL
MOV [BX],AL
INC BX
MOV AL,00H
ADC AL,[BX]
ADD AL


MOV [BX],AL
INC BX
MOV AL,00H
ADC AL,[BX]
ADD AL
MOV [BX],AL
INC BX
MOV AL,00H
ADC AL,[BX]
ADD AL
MOV [BX],AL
INC BX
LOOP LOOP_6K
POPA
Câu 12

Câu hỏi: Viết đoạn chương trình để hiển thị dữ liệu của kênh 0 trong bài toán thu 5.0
tin đa kênh. Biết rằng dữ liệu kênh 0 gồm 3 byte có địa chỉ offset bắt đầu từ 8000h,
sơ đồ ngoại vi hiển thị như sau
Kªnh d÷ liÖu 16
bit

/DATAVALUE

FNA
5520

A
a
b
c
d
e
f
g

B
C

D
15

D

N0
N0


N5
N5

N4
N4

N3
N3

N2
N2

N1
N1

D4

d5d4d3d2d1d0

Giải mã tuyến tính

DATAPOS

Đáp án.

D3

D2


D1

7549
4

D5
D0

B
é
khuy
Õch
®¹i
dßng

74

1

G m BCD7Seg

5.0


Chương trình con HT_BF trong chương 4 – giáo trình kỹ thuật vi xử lý – Tác giả Đỗ
Xuân Tiến.

Câu 13
Câu hỏi: Viết đoạn chương trình để xác định phím được nhấn theo sơ đồ tổ chức bàn 5.0
phím sau:

Vcc
Minh họa cấu trúc phím ấn

/KBD_Out

r

3

r

2

9

8

r

1

KBD Out
KBD Out

4

r

7


r

0

6

5

Diode

KBD In
KBD In

/KBD_In

D6
D6

D5
D5

D4
D4

D3
D3

D2
D2


D1
D1

D0
D0

Kênh dữ liệu

Đáp án.
Chương trình con HT_BF trong chương 4 – giáo trình kỹ thuật vi xử lý – Tác giả Đỗ
Xuân Tiến.

Câu 14

5.0


Câu hỏi: Viết đoạn chương trình để khởi tạo cho đơn PIC 8259, biết rằng địa chỉ 5.0
CS của PIC = 10h, vector ngắt cơ sở = 40h, khoảng cách 4 byte/ vector, hệ dùng
EOI thường, không đệm kệnh. Biết dạng thức các từ điều khiển khởi đầu như sau:

ICW1:

ICW2:

ICW4:

Đáp án.
MOV AL, 17H
OUT 10H, AL

MOV AL, 40H

5.0


OUT 11H, AL
MOV AL, 01H
OUT 11H, AL
m
m

Mov al,00h
Out 10h,al
Sti;cho phép ngắt hoạt động trở lại
Câu 15
Câu hỏi:

5.0
K ê n h d ? li? u 8 b it c ? a P I C 8 2 5 9 A
đ ư ? c n ? i v ? i b y te th ? p c ? a k ê n h d ?
li? u h ? v i x ? lý 8 0 2 8 6

H ? VXL
80286

A3

A 0

A 0


/I O R D

/R D

/I O W R

/W R

/I N T A

/I N T A

IN T R

IN T R
S P /E N

A2

V cc

A1

IR
IR
IR
IR
IR
IR

IR
IR

0
1
2
3
4
5
6
7

N V0
N V1
N V2

NV3
N
N
N
N

V
V
V
V

4
5
6

7

/C S
A
B
C
A EN
A15
A4

Vcc

/Q 0

C as0
C as1
C as2

74138
/E 3
/E 2 /Q 7
E1
74138

Cho sơ đồ ghép nối giữa PIC 8259 với hệ vi xử lý như trên, yêu cầu viết đoạn chương trình để
cài đặt ngắt NV5 vào bảng vector ngắt của bộ vi xử lý 80286. Biết rằng số hiệu ngắt cơ sở của
PIC là 30h và đã có sẵn chương trình con phục vụ ngắt IR5_Service.


Đáp án.


5.0

MOV AX, 00H
MOV ES, AX
MOV DX, OFFSET IR5_SERVICE
MOV WORD PTR ES: [35H*4], DX
MOV DX, CS
MOV WORD PTR ES: [35H * 4 + 2], DX

Câu 16
Câu hỏi: Cho sơ đồ ghép nối ADC 0809 với hệ vi xử lý như sau:

5.0

/CS 0809 có địa chỉ xác định từ bộ
giải mã địa chỉ

EOC
/ IORD
OE

Báo cho hệ
vi xử lý biết:
đã biến đổi
xong

START
/ IOWR
ALE

8 kênh vào

A B

C

Kênh dữ
liệu hệ
thống

3 bit địa chỉ kênh vào

Biết rằng địa chỉ chọn chip của ADC là 200h. Viết đoạn chương trình để đọc 1 byte dữ liệu
sau lấy mẫu của kênh 3 vào bộ vi xử lý và lưu trong thanh ghi BL.

Đáp án.

/CS 0809 có địa chỉ xác định từ bộ giải mã
địa chỉ

5.0

Chương trình trong bài tập ADC 8 bit – chương 8 – Giáo trình kỹ thuật vi xử lý – Tác
giả Đỗ Xuân Tiến.
EOC
Báo cho hệ vi
/ IORD
OE

xử lý biết: đã

biến đổi xong

START
/ IOWR
ALE

Câu 17
8 kênh vào
B C
Câu hỏi: Cho sơ đồ ghép nối ADC 0809Avới
hệ vi xử lý như sau:

3 bit địa chỉ kênh vào

Kênh dữ liệu
hệ thống

5.0


Biết rằng địa chỉ chọn chip của ADC là 100h. Viết đoạn chương trình để đọc 1 byte dữ
liệu sau lấy mẫu của kênh 5 vào bộ vi xử lý và lưu trong thanh ghi BH.

Đáp án.

5.0

Chương trình trong bài tập ADC 8 bit – chương 8 – Giáo trình kỹ thuật vi xử lý –
Tác giả Đỗ Xuân Tiến.


Câu 18
Câu hỏi: Viết đoạn chương trình Assembly cho Onchip 80c51 để thức hiện đọc 1 5.0
byte từ ROM có địa chỉ 200h và đưa byte giá trị đó ra cổng P1.

Đáp án.
MOV A, #0
MOV DPTR, #200H
MOVC A, @A+DPTR
MOV P1, A

5.0

Câu 19
Câu hỏi: Viết đoạn chương trình Assembly cho Onchip 80c51 để thực hiện đọc 1 5.0
byte từ ROM có địa chỉ 100h và lưu giá trị đó vào ô nhớ có địa chỉ 40h trên RAM
trong.

Đáp án.
MOV A, #0
MOV DPTR, #100H
MOVC A, @A+DPTR
MOV 40H, A

5.0

Câu 20
Câu hỏi: Hệ đo độ rộng xung trên hệ vi xử lý on-chip 80C51 với focs= 12 MHZ, 5.0
xung cần đo độ rộng được đưa vào chân tín hiệu INT0 (bit P3.2 – chân IC 12), kết
quả đo phải chuyển vào máy tính PC qua đường truyền UART của hệ vi xử lý onchip 80C51 với tốc độ = 9600 baud, khung tin = 8 bit DATA, 1 bit STOP, không



PARITY. Giữa các giá trị kết quả phải có dấu “,” ngăn cách.
Yêu cầu: Phân tích phương pháp đo độ rộng xung và trình bày lưu đồ thuật
toán cho bài toán này (không yêu cầu viết chương tình).

Đáp án.
5.0
Bài toán đo độ rộng xung – Chương 11 - Giáo trình kỹ thuật vi xử lý –
Tác giả Đỗ Xuân Tiến
Câu 21
Câu hỏi: Hệ đo độ rộng xung trên hệ vi xử lý on-chip 80C51 với focs= 12 MHZ,
xung cần đo độ rộng được đưa vào chân tín hiệu INT0 (bit P3.2 – chân IC 12), kết
quả đo phải chứa trong hai thanh ghi: R1 chứa byte cao của kết quả, R0 chứa byte
thấp của kết quả.

5.0

Yêu cầu: Hãy phân tích phương pháp đo độ rộng xung và trình bày thuật
toán cho bài toán này (không yêu cầu viết chương trình).

Đáp án.
5.0
Bài toán đo độ rộng xung – Chương 11 - Giáo trình kỹ thuật vi xử lý –
Tác giả Đỗ Xuân Tiến
Câu 22
Câu hỏi: Viết đoạn chương trình bằng ngôn ngữ Assembly cho Onchip 80c51 5.0
thực hiện:
Khởi tạo cho UART làm việc ở MODE 1, cho phép UART nhận dữ liệu, tốc độ
baud = 9600 baud/s. Biết tần số dao động đưa vào Onchip là 11,059 MHz.
Khởi tạo để Timer 0 chạy ở MODE 2, với giá trị bắt đầu của bộ đếm (giá trị

reload) là 156.
Cho biết dạng thức của các thanh ghi SCON và TMOD lần lượt là:



Đáp án.
MOV SCON, #50H
MOV TMOD, #22H
MOV TH1, #0FDH
MOV TH0, #156
SETB TR1
SETB TR0

5.0


Câu 23
Câu hỏi: Hệ đo độ rộng xung trên hệ vi xử lý on-chip 80C51 với focs= 12 MHZ,
xung cần đo độ rộng được đưa vào chân tín hiệu INT0 (bit P3.2 – chân IC 12), kết
quả đo phải chuyển vào máy tính PC qua đường truyền UART của hệ vi xử lý onchip 80C51 với tốc độ = 9600 baud, khung tin = 8 bit DATA, 1 bit TOP, không
PARITY. Giữa các giá trị kết quả phải có dấu “,” ngăn cách.
Yêu cầu: Viết chương trình cho hệ vi xử lý thực hiện chức năng trên, cho sẵn
lưu đồ thuật toán như sau:
a/ Lưu đồ thuật toán chương trình con phát 1 byte

b/ Lưu đồ thuật toán chương trình chính:

5.0



Đáp án.
5.0
Bài toán đo độ rộng xung – Chương 11 - Giáo trình kỹ thuật vi xử lý –
Tác giả Đỗ Xuân Tiến.
Câu 24
Câu hỏi: Hệ đo độ rộng xung trên hệ vi xử lý on-chip 80C51 với focs= 12 MHZ, 5.0
xung cần đo độ rộng được đưa vào chân tín hiệu INT0 (bit P3.2 – chân IC 12), kết
quả đo phải chứa trong hai thanh ghi: R1 chứa byte cao của kết quả, R0 chứa byte
thấp của kết quả.
Yêu cầu: Viết chương trình cho hệ vi xử lý thực hiện chức năng trên, cho sẵn
lưu đồ thuật toán như sau:


Đáp án.
5.0
Bài toán đo độ rộng xung – Chương 11 - Giáo trình kỹ thuật vi xử lý –
Tác giả Đỗ Xuân Tiến.
Câu 25
Câu hỏi: Cho bài toán dùng hệ vi xử lý Onchip 80c51 với nguồn dao động thạch 5.0
anh 12 MHz để tạo ra đồng hồ. Hãy trình bày ý tưởng sử dụng tài nguyên của
Onchip và viết đoạn chương trình để tạo ra đơn vị là 1 giây.

Đáp án.
5.0
Ý 1: Sử dụng Timer0 ở Mode 2 với giá trị TH0 = 6. Như vậy chu kỳ
ngắt là 250 us. Ta cần đếm 40 * 100 chu kỳ ngắt để có được đơn vị là 1 giây.
Ý 2: ORG 0BH
INC R0
CJNE R0, #40, END_
MOV R0, #0

INC R1
CJNE R1, #100, END_
MOV R1, #0


INC R2
; R2 chứa biến giây
CJNE R2, #60, END_
MOV R2, #0



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×