Tải bản đầy đủ (.pdf) (23 trang)

Giải đề cương 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 (787.59 KB, 23 trang )

TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI
KHOA ĐIỆN – ĐIỆN TỬ

ĐỀ CƯƠNG ÔN TẬP
KỸ THUẬT VI XỬ LÝ

HÀ NỘI
Tháng 7 năm 2016


Mục Lục
A. Lý thuyết .......................................................................................................... 2
Câu 1: ................................................................................................................. 2
Câu 2: ................................................................................................................. 2
Câu 3: ................................................................................................................. 4
Câu 4: ................................................................................................................. 5
Câu 5. ................................................................................................................. 6
Câu 6: ................................................................................................................. 7
Câu 7. ................................................................................................................. 8
Câu 8. ................................................................................................................. 8
Câu 9. ................................................................................................................. 8
B. Bài tập phối ghép VXL 8088 với 8255A ......................................................... 8
Câu1. .................................................................................................................. 8
Câu 2: ............................................................................................................... 10
Câu 3: Một số bài tập khác tương tự như 2 bài tập trên .................................. 11
C. Bài tập thiết kế phần cứng và viết chương trình Phần MCS - 51 .................. 11
Câu 1: ............................................................................................................... 11
Câu 2: ............................................................................................................... 14
Câu 3. ............................................................................................................... 16
Câu 5: ............................................................................................................... 19
Câu 6: ............................................................................................................... 21



Page | 1


ĐỀ CƯƠNG ÔN TẬP MÔN KỸ THUẬT VI XỬ LÝ
A. Lý thuyết
Câu 1:
Khái niệm hệ vi xử lý? quá trình phát triển, sơ đồ cấu trúc tổng quát của Hệ
Vi xử lý. Cho ví dụ minh họa và cách sử dụng vi xử lý này trên sản phẩm
thực tế.
Trả lời:
- Một hệ vi xử lý là một mạch tích hợp chứa hàng ngàn,,thậm chí hàng
triệu transistor (LSI,VLSI) được kết nối với nhau
- -Các transistor ấy cùng nhau làm việc để lưu trữ và xử lý dữ liệu cho
phép hệ vi xử lý có thể thực hiện rất nhiều chức năng hữu ích
- Chức năng cụ thể của một hệ vi xử lý được xác định bằng phần mềm có
thể lập trình được
- Hệ vi xử lý đầu tiên của Intel, 4004,được giới thiệu vào năm 1971.
- 4004 chứa 2300 transistor.
- Hệ vi xử lý pentium 4 hiện nay chứa 55 triệu transistor.
- Sơ đồ cấu trúc
Address

Addressing
Unit (AU)

Bus Interface
Unit (BU)

Data


Prefect Queue
Execution Unit (EU)
ALU

Register

Instruction
Control
Unit (CU)

Unit (IU)

U

- Hệ vi xử lý thường được sử dụng trong các máy vi tính (microcomputer)
với vai trò là CPU. Ngoài ra, chúng còn có mặt ở nhiều thiết bị khác.
Câu 2: Cấu trúc bên trong bộ VXL 8088? Giải thích cơ chế Pipe-lining. Thế
nào là địa chỉ logic, địa chỉ vật lý? Cho ví dụ minh họa.
Trả lời:
- Cấu trúc bên trong bộ VXL 8088
Page | 2


- Cơ chế Pipelining trong VXL 8088 là cơ chế xử lý xen kẽ dòng lệnh.
Trong cơ chế này CPU được chia thành 2 khối và được phân chia công
việc rõ rang, BIU đọc mã lệnh, còn EU giải mã lệnh và thực hiện lệnh.
Khi EU đang thực hiện lệnh trước thì BIU đã tìm và lấy lệnh sau vào
CPU từ bộ nhớ và lưu trữ nó ở PQ. Hai khối BIU và EU có khả năng làm
việc độc lập với nhau và trong hầu hết trường hợp có sự trùng lặp thời

gian thực hiện lệnh trước và lấy lệnh sau và như vậy có thể coi thời gian
lấy lệnh xấp xỉ bằng 0 vì EU chỉ việc thực hiện lệnh lấy sẵn bởi BIU.
Điều này làm tăng tốc độ máy tính lên đáng kể. Đối với các VXL thế hệ
sau cơ chế này ngày càng được phát triển bằng cách tăng số lượng các
bước thực hiện thậm chí cả thay đổi về cấu trúc nhằm mục đích nâng cao
tốc độ của bộ VXL.
- Bộ VXL thực hiện các lệnh theo các bước sau:
+ Lấy lệnh từ bộ nhớ.
+ Đọc toán hạng (nếu lệnh yêu cầu).
+ Thực hiện lệnh
+ Ghi kết quả
Page | 3


F1

D1

E1

F2

F1

D2
E2
F3
Không sử dụng pipelining

D1


E1

F2

D2

E2

F3

D3

Có SD pipelining
E- opcode Fetch: đọc lệnh
D – Decoder: Giải mã lệnh
E – Excution: Thực hiện lệnh

D3

E3

E3

Câu 3: Các chế độ địa chỉ của Vi xử lý Intel 8086? Cho ví dụ minh hoạ. Phân
tích cấu trúc và cách mã hóa lệnh cho vi xử lý Intel 8086.
Hãy chỉ ra các chế độ địa chỉ dùng trong các lệnh sau rồi mã hoá chúng dưới
dạng mã máy:
Mov AX,[021Bh][BX]


Mov [0110h],CL

Mov [SI+0C12h], DL

Mov AL, [0AC2h]

Trả lời:
- Các chế độ địa chỉ của VXL Intel 8086
Họ VXL 8086 có 7 chế độ địa chỉ
+ Chế độ địa chỉ thanh ghi (register addressing mode)
VD:
MOV DS, BX: chuyển nội dung BX vào DS
ADD DL, AL: cộng nội dung AL vào DL,cất vào DL
+ Chế độ địa chỉ tức thì (Immidiate addressing mode)
VD:
MOV [BX], 7: chuyển 7 vào ô nhớ tại địa chỉ DS: BX
MOV CL, 10: chuyển giá trị 10 vào CL
+ Chế độ địa chỉ trực tiếp (Direct addressing mode)
VD:
MOV BL, [1465H]: chuyển nội dung ô nhớ 1465H vào BL
MOV [3460H], CX: chuyển nội dung CX vào 2 ô nhớ liên tiếp
DS: 3460H và DS: 3461H
+ Chế độ địa chỉ gián tiếp qua thanh ghi (register indirect addressing
mode)
VD:
MOV AL, [BX]: chuyển nội dung ô nhớ có địa chỉ DS:BX vào AL
Page | 4


MOV [SI], BL: chuyển nội dung BL vào ô nhớ có địa chỉ DS : SI

MOV [DI], CX: chuyển nội dung CX vào 2 ô nhớ lien tiếp có địa
chỉ: DS:DI và DS:(DI+1)
+ Chế độ địa chỉ tương đối cơ sở (base relative addressing mode)
VD:
MOV AX, [BX]+10 : chuyển nội dung của 2 ô nhớ lien tiếp có địa
chỉ: DS:(BX+10) và DS:(BX +11)vào AX
MOV AX, 10[BX]: cho kết quả tương tự lệnh 1
MOV AX, [BX+10] : cho kết quả tương tự lệnh 1
ADD AL,Table[BX] : cộng AL với nội dung ô nhớ do BX chỉ ra
trong bảng : Table (Table nằm trong DS), kết quả đưa vào AL
+ Chế độ địa chỉ tương đối chỉ số (Indexed relative addressing mode)
VD:
MOV DX,[SI] +10 : chuyển nội dung 2 ô nhớ liên tiếp có địa chỉ
DS:[SI +10] và DS:[SI+11] và DX
MOV CL, [DI]+7: chuyển nội dung ô nhớ DS :( DL +7) vào CL
+ Chế độ địa chỉ tương đối chỉ số cơ sở (Base indexed relative addressing
mode)
VD:
MOV CX, [DX][SI]+10 ;chuyển nội dung 2 ô nhớ liên tiếp có địa
chỉ: DS:(DX+SI+10) và DS:(DX+SI+11)và CX
MOV CX, [DX+SI+10] : cho kết quả tương tự lệnh 1
MOV CL, [BP+DI+7] : chuyển nội dung ô nhớ SS :(BP+DI+7) vào
CL
Cấu trúc và cách mã hóa lệnh cho VXL Intel 8086
+ Bên trong VXL các lệnh được mã hóa như sau :
Ta xét lệnh
MOV Dest.Souree ; D = đích, S= nguồn
Dung để chuyển đổi dữ liệu giữa 2 thanh ghi hoặc giữa 2 ô nhớ và thanh
ghi.
Câu 4: Trình bày cấu trúc khung chương trình ASSEMBLY trên PC cho vi xử

lý x86 ? Cho ví dụ minh hoạ. So sánh chương trình *.com và *.exe.
Trả lời:
Cấu trúc khung chương trình ASSEMBLY
Khai báo sử dụng quy mô bộ nhớ
Cú pháp:
MODEL

Kiểu_kích_thước_bộ_nhớ

Khai báo đoạn ngăn xếp
Page | 5


Cú pháp
.STACK Kích_thước (tính theo byte)
Khai báo đoạn dữ liệu
Cú pháp
.DATA
CR

EQU 0Dh

LF

EQU 0Ah

MSG DB

“Hello”


MASK

EQU 11000101B

Khai báo đoạn mã (chứa lệnh của chương trình)
Cú pháp:
.CODE
Bên trong đoạn mã các lệnh được tổ chức như các thủ tục, cấu trúc:
.CODE
MAIN

PROC

;các lệnh của chương trình
MAIN

ENDP

;các thủ tục khác, ctr con,…
END

MAIN

+ So sánh chương trình *.com và *.exe.
Chương trình hợp ngữ dịch ra file*.ÊXE có đầy đủ các đoạn. Chương trình hợp
ngữ viết dịch ra file *.COM là chương trình ngắn gọn và đơn giản hơn nhiều so
với chương trình hợp ngữ dịch ra file *.EXE, trong đó các đoạn mã, đoạn dữ
liệu và đoạn ngăn xếp được gộp lại trong 1 đoạn duy nhất là đoạn mã.
Câu 5. Sơ đồ khối của vi mạch nhớ, các nhóm chân tín hiệu? Có những phương
pháp giải mã địa chỉ cho bộ nhớ nào? Lấy ví dụ minh hoạ.

Page | 6


Trả lời
IC nhớ
A0

Giải

Mảng nhớ

A1



(ma trận nhớ-

Địa

Memory matric)

An-2
An-1

Chỉ

̅̅̅̅
𝑂𝐸

Điều

Khiển

̅̅̅̅̅
𝑊𝐸

Đệm dữ liệu

̅𝐶𝑆
̅̅̅

d0

d1 dm-1

- Các nhóm chân tín hiệu
+ Các dây địa chỉ và bộ giải mã địa chỉ (A0 – An-1)
+ Các dây dữ liệu và bộ đếm dữ liệu (d0 – dm-1)
̅̅̅̅, ̅̅̅̅
̅̅̅̅̅ )
+ Các đường điều khiển
(𝐶𝑆
𝑂𝐸 , 𝑊𝐸
- Phương pháp giả mã địa chỉ cho bộ nhớ
+ Phương pháp giải mã cho ROM và SRAM
+ Phương pháp giải mã cho vi mạch cho DRAM và cấu trúc của IC
DRAM
VD: Bộ nhớ ROM 63256 dung lượng 32k*8bit được giải mã địa chỉ theo
phương pháp Giải mã cho ROM và SRAM.

Câu 6: Trình bày phối ghép VXL với các cổng đơn giản? Các lệnh vào ra cơ

bản? Cho ví dụ minh họa.
Trả lời:
- Phối ghép VXL với các cổng đơn giản
+ phối ghép bộ VXL với BUS

Page | 7


8086 cũng như 8088 đều sử dụng phương pháp dồn kênh tín hiệu.
Do đó để tách các tín hiệu địa chỉ, người ta dùng các mạch chốt ngoài,
thường là các thanh ghi chốt (74LS373).
Để nâng cao khả năng tải của BUS, và cách ly bộ vi xử lý với BUS
ta sử dụng các bộ đẹm BUS có đầu ra 3 trạng thái
Các bộ VXL 8086 cũng như 8088 đều sử dụng mạch dao động
ngoài dùng IC dao động 8284.
Cả 8086 và 8088 đề hoạt động trong chế độ MIN hay MAX.
+chế độ MIN MAX trang( 61+62) quyển 1 x86
Câu 7. Tổ chức bộ nhớ cho hệ 8088 trong chế độ MAX với các yêu cầu sau::
- Bộ nhớ RAM có dung lượng 8Kx8 bit có địa chỉ đầu là 00000h, sử dụng
các IC nhớ SRAM 2K×8 bit
- Bộ nhớ ROM có dung lượng 64K×8 bit có địa chỉ kết thúc FFFFFh, sử
dụng các IC nhớ EEPROM 16K×8 bit
Giải: Xem giáo trình trang 68, 69, 70.
Câu 8. Tổ chức bộ nhớ cho hệ 8088 trong chế độ MIN với:
- Bộ nhớ RAM có dung lượng 16Kx8 bit từ các IC nhớ SRAM 4K×8 bit,
sao cho bộ nhớ RAM nằm trong vùng thấp nhất của không gian địa chỉ.
- Bộ nhớ ROM có dung lượng 8K×8 bit có địa chỉ nằm trong vùng cao
nhất của Không gian địa chỉ, sử dụng các IC nhớ EEPROM 2Kx8 bit.
Giải: xem trang 71, 72, 73.
Câu 9.

Thế nào là ngắt vi xử lý? Phân loại ngắt VXL Intel 8086. Cách thi hành một
lệnh INT như thế nào? Cho ví dụ minh họa minh hoạ.
Giải: xem từ trang 141 ^ ^ . Dài quá ngại chép. Hề !

B. Bài tập phối ghép VXL 8088 với 8255A
Câu1. Vẽ cấu hình và lập trình định nghĩa chế độ 0 (mode 0) cho 8255A ghép
nối với vi xử lý Intel 8088, làm nhiệm vụ đọc dữ liệu có tại PB rồi đưa ra
PA, sau đó đọc dữ liệu từ PCU và đưa ra PCL. Cho địa chỉ cơ sở (PA) là
60H.
Giải:
I/O mode => D7 = 1
Page | 8


Mode 0 => D6=D5=D2=0
Vào PB => D1 = 1
Ra PA => D4 = 0
Vào PCU => D3 = 1
Ra PCL => D0 = 0
CW: D7 D6 D5 D4 D3 D2 D1 D0
1 0 0 0 | 1 0 1 0
8
A
* Baseadd = 60H
A7 A6 A5 A4 A3 A2 A1 A0 Add
0 1 1 0 0 0 0 0 60H
0 1 1 0 0 0 0 1 61H
0 1 1 0 0 0 1 0 62H
0 1 1 0 0 0 1 1 63H


Port
PA
PB
PC
CR

Cấu hình:

 Chương trình
MOV AL, 8AH
OUT 63H, AL; CW -> CR
OUT 60H, AL; PA OUT
IN
AL, 61H; PB IN
IN
AL, 62H; PC IN
Page | 9


AND AL, 0FH
MOV CL, 4
ROL AL, CL
OUT 63H, AL
Câu 2: Vẽ sơ đồ sử dụng 8255A để vào ra dữ liệu với vi xử lý Intel 8088 khi
cho CS = 010011
Viết đoạn mã chương trình để set PC4 lên mức cao (High)
Viết đoạn mã chương trình để phát ra 16 xung với T = 100ms, độ rộng
50% ra bit PC5 của 8255A. Giả thiết đã có sẵn chương trình trễ 25ms là
DELAY.
Giải:

Ta có: CS = 010011 => Base Add = 4CH
A7 A6 A5 A4 A3 A2 A1 A0 Port Add
0 1 0 0 1 1 0 0
PA
4CH
0 1 0 0 1 1 0 1
PB 4DH
0 1 0 0 1 1 1 0
PC
4EH
0 1 0 0 1 1 1 1
CR
4FH
 CW : D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 0| 1 0 0 1
0
9
Cấu hình:

 Chương trình:
MOV AL, 09H
Page | 10


OUT 4FH, AL
OUT 4CH, AL
OUT 4DH, AL
OUT 4EH, AL
AND
AL, 0FH

MOV CL, 4
ROL AL, CL
OUT 4FH, AL
 PC5ON
EQU 0BH; từ điều khiển để PC5 = 1 (on): 00001011B
PC5OFF
EQU 0AH; từ điều khiển để PC5 = 0 (off):00001010B
Chương trình:
Mov CX, 10H
CLI
LAP:
Mov AL, PC5ON
Out PC, AL
Call DELAY
Mov AL, PC5OFF
Out PC, AL
Call DELAY
LOOP
Lap
STI

Câu 3: Một số bài tập khác tương tự như 2 bài tập trên

C. Bài tập thiết kế phần cứng và viết chương trình Phần MCS - 51
Câu 1: Thiết lập sơ đồ phần cứng và viết chương trình điều khiển động cơ một
chiều loại nhỏ, điều khiển trực tiếp thông qua các phím bấm nối chân vi xử lý
AT89C51 như sau:
- Bấm phím P3.7: Động cơ quay thuận
- Bấm phím P3.6: Động cơ quay nghịch
- Bấm phím P3.5: Động cơ dừng

Kết nối 3 led đơn Xanh, Vàng, đỏ hiển thị chế độ hoạt động tương ứng.
Giải:
Page | 11


a. Sơ đồ phần cứng

Hình1

Page | 12


Hình 2
b. Chương trình điều khiển
org 0000h
start:
jb p3.7,start1
chay_thuan:
mov p0,#00000011b
acall delay
mov p1,#11111011b
acall delay
start1:
jb p3.6,start2
chay_nghich:

Page | 13


mov p0,#00001100b

acall delay
mov p1,#11111101b
acall delay
start2:
jb p3.5,start
dung:
mov p0,#00000101b
acall delay
mov p1,#11111110b
acall delay
sjmp start
delay:
mov r0,#0ffh
loop:
mov r1,#0ffh
djnz r1,$
djnz r0,loop
ret
end
Câu 2: Thiết lập sơ đồ phần cứng và viết chương trình điều khiển động cơ một
chiều loại nhỏ, điều khiển trực tiếp thông qua các phím bấm nối chân vi xử lý
AT89C51 như sau:
- Bấm phím P3.5: Động cơ quay thuận
- Bấm phím P3.6: Động cơ quay nghịch
- Bấm phím P3.7: Động cơ dừng
Page | 14


Kết nối 3 led đơn Xanh, Vàng, đỏ hiển thị chế độ hoạt động tương ứng.
Giải:

a. Sơ đồ phần cứng như bài 1
b. Chương trình
#include <sfr51.inc>
org 0000h
start:
jb p3.5,start1
chay_thuan:
mov p0,#00000011b
acall delay
mov p1,#11111011b
acall delay
start1:
jb p3.6,start2
chay_nghich:
mov p0,#00001100b
acall delay
mov p1,#11111101b
acall delay
start2:
jb p3.7,start
dung:
mov p0,#00000101b
acall delay
mov p1,#11111110b
acall delay
sjmp start
delay:
mov r0,#0ffh
loop:
mov r1,#0ffh

djnz r1,$
djnz r0,loop
ret
Page | 15


end

Câu 3. Thiết kế sơ đồ phần cứng và ghép nối vi xử lý AT89C51 với 4 LED 7
thanh. Viết chương trình hiển thị số 1234 trên 4 LED 7 thanh đó.
Giải:
a. Sơ đồ phần cứng

b. chương trình
#include <sfr51.inc>
org 0000h
mov dptr,#led7thanh
main:
mov a,#1
movc a,@a+dptr
mov p0,a
acall delay1ms
mov a,#2
movc a,@a+dptr
mov p2,a
acall delay1ms

Page | 16



mov a,#3
movc a,@a+dptr
mov p3,a
acall delay1ms
mov a,#4
movc a,@a+dptr
mov p1,a
acall delay1ms
led7thanh:
DB
0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
delay1ms:
mov r1,#100
loop:
nop
nop
nop
nop
nop
nop
nop
nop
djnz r1,loop
ret
end
Câu 4: Thiết lập sơ đồ phần cứng và viết chương trình sử dụng vi xử lý
AT89C51 tạo một đồng hồ đếm thời gian, đếm lùi từ 99 về 00, hiển thị trên 2
LED 7 thanh, 1s/1 nhịp.
Giải:
a. Sơ đồ phần cứng


Page | 17


b. Chương trình
#include <sfr51.inc>
org 0000h
mov dptr,#led7thanh
start:
mov r4,#10
hangchuc:
dec r4
mov a,r4
movc a,@a+dptr
mov p0,a
acall hangdonvi
mov a,r4
cjne a,#0,hangchuc
sjmp start
hangdonvi:
mov r5,#10
hangdonvi1:
dec r5
mov a,r5
movc a,@a+dptr
mov p2,a
acall delay1s
Page | 18



mov a,r5
cjne a,#0,hangdonvi1
ret
led7thanh:
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
delay1s:
mov r1,#10
loop1:
mov r2,#100
loop2:
mov r3,#100
loop3:
nop
nop
nop
nop
nop
nop
nop
nop
djnz r3,loop3
djnz r2,loop2
djnz r1,loop1
ret
end
Câu 5: Thiết lập sơ đồ phần cứng và viết chương trình sử dụng vi xử lý
AT89C51 tạo một đồng hồ đếm thời gian, đếm tiến từ 00 đến 99, hiển thị trên 2
LED 7 thanh, 1s/1 nhịp.
Giải:
a. Sơ đồ phần cứng giống câu trên

b. Chương trình
#include <sfr51.inc>
org 0000h
mov dptr,#led7thanh
start:
Page | 19


mov r4,#0
hangchuc:
inc r4
mov a,r4
dec a
movc a,@a+dptr
mov p0,a
acall hangdonvi
mov a,r4
cjne a,#10,hangchuc
sjmp start
hangdonvi:
mov r5,#0
hangdonvi1:
inc r5
mov a,r5
dec a
movc a,@a+dptr
mov p2,a
acall delay1s
mov a,r5
cjne a,#10,hangdonvi1

ret
led7thanh:
DB
0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
;
0 1 2 3 4 5 6 7 8 9
delay1s:
mov r1,#10
loop1:
mov r2,#100
loop2:
mov r3,#100
loop3:
nop
Page | 20


nop
nop
nop
nop
nop
nop
nop
djnz r3,loop3
djnz r2,loop2
djnz r1,loop1
ret
end
Câu 6: Thiết lập sơ đồ phần cứng ghép nối 8 LED đơn với cổng P1 của vi xử lý

AT89C51 và 1 phím bấm nối chân P3.2. Viết chương trình quét trạng thái
của phím bấm, khi bấm phím thì sang 8 LED, khi không bấm thì tắt 8
LED trên.
Giải:
a. Sơ đồ phần cứng

b. Chương trình
Page | 21


#include <sfr51.inc>
org 000h
ljmp main
org 03h
ljmp ngat
org 40h
main:
mov sp,#5fh
setb ex0
setb ea
main_loop:
mov p1,#0ffh
acall delay
sjmp main_loop
ngat:
mov p1,#0
acall delay
reti
delay: mov r1,#250
dl1: mov r2,#1

djnz r2,$
djnz r1,dl1
ret
end

Page | 22



×