Đề thi vi xử lý có đáp án 1 - Pdf 12

VXL_Thi HK_AY1213-S2_trang 1/9
ĐHQG TPHCM–ĐH Bách Khoa
Khoa Đ-ĐT–BM Điện Tử

Điểm Đề thi HK 2 – NH:2012-2013
Môn:
Vi xử lý – Mã MH: 402030
Ngày thi:
29/05/2013 – Thời gian làm bài: 110 phút
Đề có 8 trang (có 2 trang tóm tắt) và SV làm trực tiếp trên đề.
Tổng số câu là 10, tổng số điểm là 11, và SV chỉ cần làm đạt 10.
(SV KHÔNG được dùng tài liệu
SV KHÔNG được dùng ĐTDĐ, PC, Laptop, iPad và PC Tablet)
Chữ ký giám thị
Họ và tên SV: __________________________ MSSV: ____________ Nhóm: ______
Bộ môn Điện Tử duyệt GV ra đề Hồ Trung Mỹ
Chú ý: Xem phụ lục để biết các cách giải khác nếu có.
Câu 1: (1 đ) Cho trước mạch giải mã địa chỉ của hệ thống dùng VXL 8051:

a) (0.5 đ) Xác định vùng địa chỉ của các SRAM:
 Vùng địa chỉ của SRAM thứ nhất (U1): 5800H – 5FFFH
 Vùng địa chỉ của SRAM thứ hai (U2): 7000H – 77FFH

b) (0.5đ) Viết các lệnh 8051 để chép 10 byte bắt đầu từ địa chỉ đầu của SRAM thứ nhất (U1) vào RAM
nội của 8051 bắt đầu từ địa chỉ 30H:

0000 D2 80 SETB P0.0

0002 75 90 FF MOV
P
1,#0FFH
Trực tiếp (byte) Tức thời
0005 E5 90 LL: MOV A,P1

0007 60 04
J
Z Nxt

0009 30 80 01
J
NB P0.0,Nxt
Trực tiếp (bit) Tương đối
000C F4 CPL A

000D F5 A0 Nxt: MOV P2,A

000F 80 F4 SJMP LL

0011 END

Câu 3: (1 đ)
a) (0.5 đ) Viết chương trình con hợp ngữ 8051 có tên là MAX_XY để thực hiện hàm max(X,Y) (nếu X  Y
thì kết quả X; nếu ngược lại, kết quả là Y) với X và Y là các số nguyên 8 bit không dấu, X là thanh ghi A,
Y là số trong RAM nội có địa chỉ trong thanh ghi R0 và kết quả đặt trở lại vào A. Nếu chương trình con
này có dùng các thanh ghi khác A và R0 thì phải bảo lưu giá trị của nó sau khi ra khỏi chương trình con.
b) (0.5 đ) Viết đoạn chương trình hợp ngữ 8051

Hãy viết chương trình hợp ngữ cho mạch này. Qui luật hoạt động của mạch như sau:
P1.1 P1.0 Phép toán P1.1 P1.0 Phép toán Chú thích
0 0 F = NOT(X) 1 0 F = X OR Y F = P1.7
X = P1.2 và Y = P1.3
0 1 F = X AND Y 1 1 F = X XOR Y
Bài giải.
ORG 0 MOV C,X SJMP Fin
TT EQU 20H
C
JNE A,#0,CP1
E
Q3: JNB Y, Fin
X EQU TT.2 CPL C CPL C
Y EQU TT.3
S
JMP Fin
F
in: MOV F,C
F EQU P1.7 CP1: CJNE A,#1,CP2 SJMP Loop
MOV P1,#0FH ANL C,Y END
Loop: MOV A,P1
S
JMP Fin
MOV TT,A CP2: CJNE A,#2,EQ3
ANL A,#03H
O
RL C,
Y

VXL_Thi HK_AY1213-S2_trang 3/9

0
0
H

R
2 =
0
1
H
R2 =
0
2
H

Next:
INC R0
R
0 =
3
1
H

R
0 =
3
2
H
R0 =
3
3


n
th

b)
BCD2LED7S:
O
RG 1
0
0H
C
ount EQU P1.0
PUSH ACC
LED7S: ; hgfedcba MOV P1,#01H
MOV DPTR,#LED7S
DB 11000000B;
0
CLR A
MOVC A,@A+DPTR
DB 11111001B;
1
Loop:
MOV P0,A
DB 10100100B;
2
ACALL BCD2LED7S
POP ACC
DB 10110000B;
3
JNB Count,$; đợi =1

a) 1 MC = 12/(12MHz) = 1 s
Thời gian trễ T được tính như sau:
T = 1 + (1 + (1 + 1 + 2) x 250 + 2) x 250 + 2 MC = 250753 s  250 ms
Để c
ó T = 150 ms thì phải nạp giá trị cho R1 là 150.
b) CT con làm trễ 150 ms hỏi vòng cờ TF0: c) CT con làm trễ 150 ms dùng ngắt Timer 0:
Delay
_
150ms:
D
elay
_
150ms:
MOV TMOD,#1 MOV TMOD,#1
MOV R2,#3 MOV R2,#4
Loop:
C
LR F0
MOV TL0,#LOW(–50000)
SETB EA
SETB ET0
MOV TH0,#LOW(–50000)
S
ETB TF0
SETB TR0
J
NB F0,$
JNB TF0
R
ET


R
ET
IC
hú ý:
t

i
đ

a
ch

0BH có

O
RG
0
BH

L
JMP
T
0
_
ISR


SETB TR1 SETB TR1
; Đặt cấu hình chỉ phát ; Đặt cấu hình chỉ thu
Chú ý:
MOV SCON,#01000010B MOV SCON,#01010000B
Nếu ban đầu cho TI=0
MOV P1,#0FFH L2:
thì CTC này là:
L1: ACALL SP_RECEIVE
MOV SBUF, A
MOV A,P1 MOV B, A
JNB TI, $
ACALL SP_TRANSMIT ANL A,#0FH
CLR TI
SJMP L1 ACALL A_SQUARE
RET
MOV R1,A

MOV A, B SP_RECEIVE:
SWAP A
JNB RI, $
ANL A,#0FH
CLR RI
ACALL A_SQUARE
MOV A, SBUF

ADD A,R1
RET

MOV P2,A


SETB P3.2 ; /INT0 JNB TF0,$
SETB P3.3 ; /INT1 CLR TR0
MOV TMOD,#1 CLR TF0
MOV IE,#85H CPL P1.5
SETB IT0 SJMP Loop
SETB IT1 END VXL_Thi HK_AY1213-S2_trang 6/9
Câu 10: (1 đ)
Viết chương trình hợp ngữ hoặc C (chỉ chọn một)
cho 8051 để làm sáng các LED đơn được nối với cổng P1
(hình tròn đen tương ứng LED sáng và ngõ ra của 8051 ở mức 0 làm LED sáng). Nếu ngõ vào P0.0 = 0 thì
sáng theo qui luật ở mẫu 1 (TD: trước hết tất cả các LED tắt trong 150 ms, kế tiếp chỉ có các LED ở P1.3 và
P1.4 sáng trong 150 ms, , cuối cùng chỉ có các LED ở P1.7 và P1.0 sáng trong 150 ms, và lặp lại) , và nếu
ngõ vào P0.0 = 1 thì sáng theo qui luật ở mẫu 2.
Các LED ở P1.7 . . . P1.0 Thời điểm (ms)







. . .
Các LED ở P1.7 . . . P1.0 Thời điểm (ms)





ACALL Delay_150ms
INC R1
CJNE R1,#6,Loop
MOV R1,#0
SJMP LOOP
STATE_TBL:
DB 0FFH,0E7H,0C3H,99H,3CH,7EH
DB 0FFH,7EH,3CH,99H,0C3H,0E7H
END

#include <reg51.h>
#define STATES 6
sbit control = P0^0;
void Delay_150ms();
// cho trước CTC làm trễ 150 ms

void main()
{
char pattern[2][STATES]=
{{0xFF, 0xE7, 0xC3, 0x99, 0x3C, 0x7E},
{0xFF, 0x7E, 0x3C, 0x99, 0xC3, 0xE7}};
char index[2]={–1,–1};
char select;
char i;

control = 1; // Input pin

while(1)
{
select =(control != 1)? 0:1;

F EQU P1.7
MOV P1,#0FH
MOV DPTR,#JMP_TABLE
Loop: MOV A,P1
MOV TT,A
MOV C,X
ANL A,#03H
RL A
JMP @A+DPTR
JMP_TABLE:
AJMP Case0
AJMP Case1
AJMP Case2
AJMP Case3
C
ase0:
CPL C
SJMP Fin
Case1:
ANL C,Y
SJMP Fin
Case2:
ORL C,Y
SJMP Fin
Case3:
JNB Y, Fin
CPL C
Fin:
MOV F,C
SJMP Loop

SJMP Fin
Case1:
ANL C,Y
SJMP Fin
Case2:
ORL C,Y
SJMP Fin
Case3:
JNB Y, Fin
CPL C
Fin:
MOV F,C
SJMP Loop
END VXL_Thi HK_AY1213-S2_trang 8/9
Câu 10: Chương trình hợp ngữ
Cách 2:
dùng 2 bảng
ORG 0
SETB P0.0
MOV R0,#0 ;Pointer cho mẩu 1
MOV R1,#0 ;Pointer cho mẩu 2
; R0 và R1 chỉ trạng thái mấy
Loop: JB P0.0, Pattern_2
Pattern_1:
MOV A,R0
MOV DPTR,#STATE_TBL1
MOVC A,@A+DPTR

MOV P1,A
ACALL Delay_150ms
INC R0
CJNE R0,#6,Pattern_1
MOV R0,#0
SJMP LOOP
Pattern_2:
MOV A,R0
MOV DPTR,#STATE_TBL2
MOVC A,@A+DPTR
MOV P1,A
ACALL Delay_150ms
INC R0
CJNE R0,#6,Pattern_2
MOV R0,#0
SJMP LOOP
STATE_TBL1: DB 0FFH,0E7H,0C3H,99H,3CH,7EH
STATE_TBL2: DB 0FFH,7EH,3CH,99H,0C3H,0E7H
END
VXL_Thi HK_AY1213-S2_trang 9/9
Câu 10: Chương trình C (Keil C)
Cách 2: dùng 2 bảng
#include <reg51.h>
#define STATES 6
sbit control = P0^0;
void Delay_150ms(); // cho trước CTC làm trễ 150 ms

void main()
{
char pattern_1[STATES]= {{0xFF, 0xE7, 0xC3, 0x99, 0x3C, 0x7E}};

{
char pattern_1[STATES]= {{0xFF, 0xE7, 0xC3, 0x99, 0x3C, 0x7E}};
char pattern_2[STATES]= {{0xFF, 0x7E, 0x3C, 0x99, 0xC3, 0xE7}};
char index_1, index_2, select, i;
control = 1; // Input pin
index_1 =0; index_2 = 0;
while(1)
{
select =(control != 1)? 0:1;
if (select == 0)
{
for (i = 0; i < STATES; i++)
{
P1 = pattern_1[index_1];
index_1 = (index_1 + 1)%STATES;
Delay_150ms();
}
}
else
{
for (i = 0; i < STATES; i++)
{
P1 = pattern_2[index_2];
index_2 = (index_2 + 1)%STATES;
}
}
} // End of while
} // End of Main



Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status