Tải bản đầy đủ (.docx) (21 trang)

Giải chi tiết đề ôn thi vi xử lý lưu phú cuối kì

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 (219.47 KB, 21 trang )

GIẢI ĐỀ ƠN THI VI XỬ LÝ 201
Câu 1: Mơ tả chi tiết một chu kỳ lệnh gồm những bước nào?
Một chu kỳ lệnh gồm 2 bước chính:
Bước 1: Fetching
- Nội dung của thanh ghi PC được đặt lên address bus.
- Tín hiệu điều khiển READ được bật.
- Opcode được đọc từ RAM và đặt lên data bus.
- Opcode được latched từ data bus vào thanh ghi IR.
- PC tăng 1 chuẩn bị cho chu kỳ fetch sau.
Bước 2: Executing
- CPU giải mã Opcode, tạo tín hiệu điều khiển Gate các Thanh ghi thích hợp đến
ALU và ra lệnh ALU thực hiện các tác vụ cụ thể.
Câu 2: Giả sử có các nội dung của các thanh ghi: (PC)=1000H,(A)=05H,
(R0)=09H với A và R0 là tên các thanh ghi trong CPU.Trong bộ nhớ chứa
chương trình tại địa chỉ 1000H chứa giá trị 28H là mã lệnh ADD A,R0(cộng nội
dung thanh ghi A và R0 trả kết quả về thanh ghi A).
Hãy mô tả chi tiết chu kỳ thực hiện lệnh trên.
(PC) = 1000H
(A) = 05H
(R0) = 09H
(1000H) = 28H ;là mã lệnh ADD A,R0.
Mô tả chi tiết chu kỳ thực hiện lệnh trên:
Nội dung thanh ghi PC, 1000H, được đặt lên address bus.
Tín hiệu READ được xuất.


Data được đọc từ ơ nhớ có địa chỉ 1000H đặt lên data bus.
Opcode được latched vào IR.
PC tăng 1.
CPU giải mã Opcode, xuất tín hiệu điều khiển gate R0 và A vào ALU.
CPU xuất tín hiệu điều khiển cho ALU thực hiện cộng A và R0 kết quả được cất vào


A.
Câu 3: Giả sử có các nội dung của các thanh ghi: (PC)=1000H,(A)=12H,
(B)=4EH với A và B là tên các thanh ghi trong CPU.Trong bộ nhớ chứa chương
trình tại địa chỉ 1000H chứa giá trị 35H và địa chỉ 1001H chứa giá trị F0H là 2
byte mã lệnh ADD A,B(cộng nội dung thanh ghi A và B trả kết quả về thanh ghi
A). Hãy mô tả chi tiết chu kỳ thực hiện lệnh trên.
(PC) = 1000H
(A) = 12H
(B) = 4EH
(1000H) = 35H
(1001H) = F0H ;là 2 byte mã lệnh ADD A,B (cộng nội dung thanh ghi A và B trả kết
quả về thanh ghi A).
Mô tả chi tiết chu kỳ thực hiện lệnh trên:
Nội dung thanh ghi PC, 1000H, được đặt lên address bus.
Tín hiệu READ được xuất.
Data được đọc từ ơ nhớ có địa chỉ 1000H đặt lên data bus.
Opcode được latched vào IR.
PC tăng 1.
CPU giải mã Opcode, xuất tín hiệu điều khiển fetching byte tiếp theo.


Nội dung thanh ghi PC, 1001H, được đặt lên address bus.
Tín hiệu READ được xuất.
Data được đọc từ ơ nhớ có địa chỉ 1001H đặt lên data bus.
Opcode được latched vào IR.
PC tăng 1.
CPU giải mã Opcode, xuất tín hiệu điều khiển gate thanh ghi A và B vào ALU.
CPU xuất tín hiệu điều khiển, ra lệnh ALU cộng A và B, trả kết quả về lưu trong A.
Câu 4: Giả sử có các nội dung của các thanh ghi: (PC)=1000H,(2000H)=05H,
(DPTR)=2000H,với A và DPTR là tên các thanh ghi trong CPU.Trong bộ nhớ

chứa chương trình tại địa chỉ 1000H chứa giá trị E0H là mã lệnh MOVX
A,@DPTR(chuyển nội dung thanh ghi từ bộ nhớ ngoài địa chỉ trỏ bởi thanh ghi
DPTR vào thanh ghi A).
Hãy mô tả chi tiết chu kỳ thực hiện lệnh trên
(PC) = 1000H
(A) = 05H
(DPTR) = 2000H
(1000H) = E0H ;là mã lệnh MOVX A,@DPTR
Mô tả chi tiết chu kỳ thực hiện lệnh trên:
Tương tự câu 1, 2, 3.
Câu 5: Chức năng chân \EA của MCU 8051.
Chức năng chân \EA:
\EA = 1 thì MCU sẽ thực hiện chương trình từ ROM nội.
\EA = 0 thì MCU sẽ thực hiện chương trình từ bộ nhớ ngồi.


Câu 6: Chức năng chân \PSEN của MCU 8051. Khi \EA=1 trạng thái \PSEN
như thế nào?
Chức năng chân \PSEN (Program Store Enable) của MCU 8051: Là tín hiệu điều
khiển cho phép bộ nhớ chương trình ngồi.
Khi thực hiện chương trình từ ROM trong, \PSEN = 1.
Pulse Low during fetch stage of an instruction.
Câu 7: Sử dụng IC 27C64(EPROM) làm bộ nhớ chương trình ngồi.Kết nối
\PSEN với chân nào của IC 27C64?
Sử dụng IC 27C64 (EPROM) làm bộ nhớ chương trình ngoài. Kết nối \PSEN với
chân \OE của IC
27C64.
Câu 8: Chức năng chân ALE.Tần số xung trên chân ALE
Chức năng chân ALE.Tần số xung trên chân ALE?
ALE (Address Latch Enable)

Khi Port 0 được dùng trong chế độ thay thế (data bus và low-byte address bus), ALE
là tín hiệu latch địa chỉ vào thanh ghi ngoại suốt nửa đầu chu kỳ memory, khi đang ở
nửa data.
ALE xung bằng 1/6 on-chip oscillator frequency (12MHz / 6 = 2 MHz).
Câu 9: Vẽ sơ đồ kết nối mạch dao động nội tần số 12Mhz và mạch reset nguồn
cho MCU 8051.Cho biết nội dung của PC,các bank thanh ghi,các SFR như
PSW,A ,SP và các port ở trạng thái reset.
Vẽ sơ đồ kết nối mạch dao động nội tần số 12MHz và mạch reset nguồn cho MCU
8051.


1

U2

30pF

19
2

CRYSTAL
18

XTAL1
XTAL2

30pF
9
19


R2
100

18

C3
10uF

29
30
31
9

U2

RST
XTAL1
XTAL2
PSEN
ALE
EA
RST

R1
1
P1.0
2
P1.1
29
3

PSEN
P1.2
30
4
ALE
P1.3
31
5
EA
P1.4
6
P1.5
7
P1.6
8
P1.7

1
P1.0
2
Cho biết nội dung của PC,các bank thanh ghi,các SFR như PSW,A
,SP và các port ở
AT89C51
P1.1
3
trạng thái reset.
P1.2
4
P1.3
5

P1.4
6
P1.5
8.2k


PC = 0
A=0
B=0
PSW = 0
Các Port = 1
Câu 10: . Tại sao phải lắp thêm R 10K kéo lên nguồn+5V cho cả Port0?
Tại sao phải lắp thêm R = 10K kéo lên nguồn +5V cho cả Port 0?
Vì Port 0 khơng có điện trở kéo lên bên trong, nên nếu không lắp, Port 0 bị lơ lửng.
Câu 11: Tại sao phải chốt địa chỉ byte thấp. Sử dụng IC 74HC373 làm mạch
chốt địa chỉ byte thấp, vẽ sơ đồ kết nối MCU 8051 với IC 74HC373.
Chốt địa chỉ byte thấp giúp để giành các Port pins cho việc khác.
Khi sử dụng Port 0 as multiplexed address and data bus. Suốt nửa đầu mỗi chu kỳ bộ

U2

U1

nhớ, low-byte
của địa chỉ được đưaP0.0/AD0
lên Port 0, 39
ALE pulses high
19
2 chốt address ra 19
XTAL1

D0
Q0
38

3

36
35
34
33
32

5
6
7
8
9

18

D1
output của 74HC373. Nửa sau chuP0.1/AD1
kỳ sẽ là data37trên Port 0, ALE
low khôngQ1chốt 17
nên
4
P0.2/AD2

18
XTAL2

P0.3/AD3
output
của 74HC373
vẫn giữ address.

9

Câu 12:

P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7

RST

P2.0/A8
Sử dụng IC HM6264(RAM) làm bộP2.1/A9
nhớ dữ
P2.2/A10
\WR 29
đến chân
nào của IC HM6264?
PSEN
P2.3/A11
30
ALE
P2.4/A12
31
EA

P2.5/A13
\RD vào chân \OE, \WR vào chân \WE.
P2.6/A14
P2.7/A15

21
22
liệu(data)
23
24
25
26
27
28

11
1

D2
D3
D4
D5
D6
D7

ngoài.Kết

LE
OE chân
nối


Q2
Q3
Q4
Q5
Q6
Q7

16
15
14
13
12

\RD và

74HC573

Câu 13: Tại sao ở đầu chương trình người ta thường viết lệnh dời vùng stack lên vùng
1

P1.0
cao của
2 bộ nhớ RAM nội?
P1.1
3
P1.2
4 chồng lấn với
Để khơng
P1.3

5
P1.4
Ví dụ:6MOV
SP,#5FH
P1.5
7
P1.6
8
P1.7
AT89C51

vùng

P3.0/RXD
P3.1/TXD
P3.2/INT0
địa P3.3/INT1
chỉ dữ liệu
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD

10
11
12
13
chương
14
15

16
17

trình.


Với lệnh trên,cho biết chiều dài vùng stack của MCU 8051 và MCU 8052?
32 bytes đối với 8051 (60H to 7FH), 160 bytes đối với 8052 (60H to FFH).
Câu 14: Giả sử (SP) = 60H, mô tả hoạt động của PC và stack khi thực hiện lệnh
LCALL CTC:
PC Mnemonics

MOV A,#3DH

;

1000H LCALL CTC

=> (PC) = 1003H, (61H) = 03H, (62H) = 10H,

(SP) = 62H,
(PC) = 8000H

8000H CTC: PUSH ACC => (63H) = 3DH, (SP) = 63H, (PC) = 8002H

POP ACC
RET
Câu 15: Xem đoạn chương trình sau:
PC


Mnemonics
ORG 0

0000H LJMP MAIN
0003H LJMP EX0_ISR
ORG 0030H
0030H MAIN: MOV SP,#5FH


MOV IE,#81H
SETB IT0





1000H MOV A,R7
1001H CJNE A,#0AH,$+3





4000H EX0_ISR: PUSH ACC
4002H PUSH PSW
4004H LCALL DELAY
4007H POP PSW
4009H POP ACC
400BH RETI





4A02H DELAY: ….






RET

Mô tả hoạt động của thanh ghi PC và SP khi ngõ P3.2 có chuyển biến từ mức cao
xuống thấp tại thời điểm chương trình đang thực hiện lệnh MOV A,R7.
1000H MOV A,R7 => (PC) = 1001H
falling edge occurs at P3.2: (60H) = 01H, (61H) = 10H, (SP) = 61H,
PC = 0003H.
Mô tả hoạt động của thanh ghi PC và SP khi ngõ P3.2 có chuyển biến từ mức cao
xuống thấp tại
thời điểm chương trình đang thực hiện lệnh MOV A,R7.
Câu 16:

Giả sử ban đầu (R7) = 6CH và các cờ C, AC, OV, P bằng 0. Điền nội dung thanh ghi
A và các cờ theo từng dòng lệnh sau:


(A)

(C)


(AC)

(OV)

(P)

MOV A,#77H

77H

0

0

0

0

ADD A,R7

0E3H

0

1

1

1


ADDC A,#4DH

30H

1

1

0

0

INC A

31H

1

1

0

1

SUBB A,#5EH

0D2H

1


1

0

0

Câu 17: Viết một đoạn chương trình chuyển 50 byte data chứa trong bộ nhớ
RAM ngoài địa chỉ đầu 1000H sang bộ nhớ RAM nội địa chỉ đầu 30H.
MOV50:
MOV DPTR,#1000H
MOV R0,#30H
MOVX A,@DPTR
MOV @R0,A
INC DPTR
INC R0
CJNE R0,#62H,LOOP ;Or MOV R1,#50 on the first line
; DJNZ R1,LOOP
RET


Câu 18: Viết một đoạn chương trình chuyển mảng data chứa trong bộ nhớ RAM
nội địa chỉ đầu 30H sang bộ nhớ RAM ngoài địa chỉ đầu 1000H, kết thúc chuyển
data khi gặp ký tự NULL = 00H.
MOVTILNULL:
MOV DPTR,#1000H
MOV R0,#30H
LOOP:
MOV A,@R0
JZ ENDGAME
MOVX @DPTR,A

INC DPTR
INC R0
SJMP LOOP
ENDGAME:
RET
Câu 19: Viết một đoạn chương trình chuyển mảng data chứa trong bộ nhớ RAM
ngồi địa chỉ đầu 1000H sang vùng nhớ khác địa chỉ đầu 8000H, kết thúc chuyển
data khi gặp ký tự NULL = 00H.
MOVEXTILNULL:
;Khoi tao gia tri ban dau
MOV R4,#00H
MOV R5,#10H
MOV R2,#00H
MOV R3,#80H
;Chuong trinh chinh
LOOP: MOV DPL,R4
MOV DPH,R5
MOVX A,@DPTR
JZ ENDGAME ;A=00H thi dung lai


MOV DPL,R2
MOV DPH,R3
MOVX @DPTR,A
INC R2
CJNE R2,#0,NEXT1 ;Kiem tra R2 tran
INC R3
NEXT1: INC R4
CJNE R4,#0,NEXT2 ;Kiem tra R4 tran
INC R5

NEXT2: SJMP LOOP
ENDGAME:
RET

Câu 20: Viết một chương trình con tên DELAY_100US tạo thời gian trễ đúng
100us.
DELAY_100US:
MOV R6,#49
DJNZ R6,$
RET
Câu 21: Viết một chương trình con tên DELAY_10MS tạo thời gian trễ đúng
10ms,sử dụng chương trình con DELAY_100US ở câu 15.
Chả có DELAY_100US nào ở câu 15 cả.
Câu 22: Viết một chương trình con tên HEX_BCD chuyển byte data nhập từ P1
vào thành số BCD không nén 3 digits,hàng trăm cất trong (32H),hàng chục cất
trong(31H),hàng đơn vị cất trong (30H)
HEX_BCD:
PUSH ACC
MOV A,P1


MOV B,#10
DIV AB
MOV 30H,B
JZ EXIT ;A=0 suy ra so nho hon 10, khong can tinh tiep
MOV B,#10
DIV AB
MOV 31H,B ;Hang chuc trong B
MOV 32,A ;Hang tram trong A
EXIT: POP ACC

RET
Câu 23: Thiết kế mạch hiển thị 3 LED 7 đoạn Anode chung,mỗi LED được lái
bằng một chốt D 74HC573. MCU8051 xuất mã 7 đoạn ra mạch chốt và tín hiệu
chọn chốt tương ứng.
a) Vẽ sơ đồ thiết kế phần cứng và giải thích tóm tắt.
b) Viết một chương trình nhập data từ port 3 và hiển thị giá trị thập phân tương
ứng ra mạch hiển thị
LED.
ORG 0000H
MOV A,P3
MOV B,#10
DIV AB
MOV 30H,B
JZ EXIT ;A=0 suy ra so nho hon 10, khong can tinh tiep
MOV B,#10
DIV AB
MOV 31H,B ;Hang chuc trong B
;MOV 32H,A ;Hang tram trong A
MOV A,31H


SWAP A
ORL A,30H
MOV P1.0,A
END
Câu 24/30: Viết một chương trình tạo chuỗi xung vuông chu kỳ nhiệm vụ(thời
đoạn mức 1)30%, tần số 5KHz xuất ra P1.0 và chuỗi xung vuông chu kỳ nhiệm
vụ 25%,tần số 500Hz xuất ra P1.1.Đánh giá sai số theo chương trình đã viết.Cho
Fosc=12MHz.
Lập lại bài 24 sử dụng ngắt timer.

ORG 0000H
LJMP MAIN
ORG 000BH
;LJMP T0_ISR
T0_ISR: CLR P1.0
CLR TR0
RETI
ORG 001BH
LJMP T1_ISR
ORG 0030H
MAIN:
MOV TMOD,#22H
MOV TH0,#-60
MOV TL0,#-60
MOV TH1,#-100
MOV TL1,#-100
SETB TR0
SETB TR1
MOV IE,#8AH


MOV R0,#2
MOV R2,#20
SJMP $
T1_ISR: DJNZ R0,XONG0
MOV R0,#2
SETB P1.0
SETB TR0
XONG0: DJNZ R2,CHUKY1
MOV R2,#20

MOV R1,#6
SETB P1.1
CHUKY1: DJNZ R1,PW1
CLR P1.1
PW1:

RETI

END
Câu 32:
Viết một chương trình sử dụng ngắt cổng nối tiếp thực hiện các công việc sau:
- Nếu MCU thu được mã ASCII khác chữ R, sẽ quay về chương trình chính.
- Nếu MCU thu được mã ASCII chữ R,sẽ phát ra cổng nối tiếp chuỗi ký tự kết
thúc bằng mã NULL (00H), phát ln mã NULL, cất trong RAM ngồi địa chỉ
đầu C000H.
- Trong q trình phát MCU cấm thu.
- Chương trình chính liên tục thực hiện việc cộng dồn(không qua carry)chuỗi ký
tự cho đến khi gặp mã NULL,sau đó cất kết quả phép cộng trên vào R0.
ORG 0000H
LJMP MAIN


ORG 0023H
LJMP SP_ISR
ORG 0030H
MAIN:
MOV SCON,#50H
MOV IE,#90H

LOOP: MOV R0,#0

MOV DPTR,#0C000H
LOOPCONG:
MOV A,@DPTR
JZ THOICONG
ADD A,R0
MOV R0,A
INC DPTR
SJMP LOOPCONG
THOICONG:
SJMP LOOP

SP_ISR: JNB TI,NHAN
CLR TI
SJMP EXIT
NHAN: CLR RI
MOV A,SBUF
CJNE A,#'R',EXIT
CLR REN
MOV DPTR,#0C000H
LOOP1: MOV A,@DPTR


MOV SBUF,A
JNB TI,$
CLR TI
JZ EXIT
INC DPTR
SJMP LOOP1
EXIT: SETB REN
RETI

END
Câu 33:
Từ sơ đồ bài 22,thiết kế mạch đếm số người vào /ra phòng hoạt động như sau:
- Cửa vào và ra có cảm biến tạo xung tích cực mức thấp khi mở/đóng.
- Chỉ có một người vào/ra khi cửa mở/đóng.
Một tín hiệu điều khiển khóa cửa vào khi số người trong phòng tới 90 người và
chỉ cho mở cửa nếu số người trong phịng khơng hơn 80 người.
a) Vẽ lại sơ đồ thiết kế thêm các khối cảm biến cửa vào/ra,khóa cửa vào và tín
hiệu kết nối tương ứng.
b) Viết một chương trình đếm và hiển thị số người trong phịng và điều khiển
đóng/mở cửa vào theo các điều kiện nêu ở trên.
ORG 0000H
LJMP MAIN
ORG 0003H
INC R1
RETI
ORG 0013H


DEC R1
RETI
ORG 0030H
MAIN:
SETB IT0
SETB IT1
SETB EX0
SETB EX1
SETB EA
LOOP:
CJNE R1,#20,EXIT0

CLR EX0
EXIT0: CJNE R1,#10,EXIT1
SETB EX0
EXIT1: ACALL HEXTOBCD
MOV A,31H
SWAP A
ORL A,30H
MOV P2,A
SJMP LOOP
HEXTOBCD:
MOV A,R1
MOV B,#10
DIV AB
MOV 30H,B ;B la don vi
MOV 31H,A
EXIT: RET
END


ORG 0
LJMP MAIN
ORG 000BH
SJMP T0_ISR
ORG 001BH
SJMP T1_ISR
ORG 0030H
MAIN:
MOV IE,#8AH
MOV TMOD,#11H
MOV TH0, #HIGH(-60)

MOV TL0, #LOW(-60)
MOV TH1, #HIGH(-500)
MOV TL1, #LOW(-500)
SETB TR0
SETB TR1
SETB P1.0
SETB P1.1
SJMP $
T0_ISR:
JB P1.0, LOOP
SETB P1.0
CLR TR0


MOV TH0, #HIGH(-60)
MOV TL0, #LOW(-60)
SETB TR0
QUAN: RETI
LOOP: CLR P1.0
CLR TR0
MOV TH0, #HIGH(-140)
MOV TL0, #LOW(-140)
SETB TR0
SJMP QUAN
T1_ISR:
JB P1.1, LOOP1
SETB P1.1
CLR TR1
MOV TH1, #HIGH(-500)
MOV TL1, #LOW(-500)

SETB TR1
QUAN1: RETI
LOOP1: CLR P1.1
CLR TR1
MOV TH1, #HIGH(-1500)
MOV TL1, #LOW(-1500)
SETB TR1


SJMP QUAN1
END

ORG 0000H
MOV TMOD,#01H
MOV A,#20
MOV R7,#2
LOOP:
MOV R0,7
PUSH ACC
SUBB A,R0
MOV R1,A
POP ACC
SETB P1.0
LOOPH:
LCALL DL500us
DJNZ R0,LOOPH
CPL P1.0
LOOPL:
LCALL DL500us
DJNZ R1,LOOPL

JNB P1.1,CHECKMAX


JNB P1.2,CHECKMIN
RETURN:
SJMP LOOP
CHECKMAX:
CJNE R7,#18,UP
SJMP RETURN
UP:
JNB P1.1,$
INC R7
SJMP RETURN
CHECKMIN:
CJNE R7,#2,DOWN
SJMP RETURN
DOWN:
JNB P1.2,$
DEC R7
SJMP RETURN
DL500us:



×