Professional Documents
Culture Documents
Haøng
AHALBHBL 654321ñôïi
CHCLDHDL leänh
BPDISISP
CSESSSDSIP
Caùc
thanh ghi
ñoaïn
Arithmetic logic
unit (ALU)
Caùc
côø
Excution Unit Bus Interface Unit
(EU) (BIU)
Boä vi xöû lyù thöïcHình
hieän caùc
1.1: Sô leänh theo8086
ñoà khoái caùc böôùc sau:
- Laáy leänh töø boä nhôù.
- Ñoïc toaùn haïng (neáu leänh yeâu caàu).
- Thöïc hieän leänh.
- Ghi keát quaû.
1). Khoái thöïc hieän:
Caùc thanh ghi traïng thaùi vaø ñieàu khieån (Status & Control
Register): IPFlag Con troû leänh (Intruction Pointer)
Côø
Sau ñaây laø sô ñoà chaân cuûa 8086 ôû caû hai cheá ñoä minimum vaø
maximum:
GND 1 40 Vcc
AD14 2 39 AD15
AD13 38 A16/S3
3
AD12 37 A17/S4
4
AD11 36 A18/S5
5
AD10 35 A17/S6
6
AD9 34 BHE/S7
7
AD8
AD7
8
9
8086 33
32
MN/MX
RD
AD6
AD5
10 CPU 31 HOLD
HLDA
(RQ/GT0)
(RQ/GT1)
11 30
AD4 12 29 WR (LOCK)
AD3 13 28 M/IO (S2)
AD2 14 27 DT/R (S1)
AD1 15 26 DEN (S0)
AD0 16 25 ALE (QS0)
NMI 17 24 INTA (QS1)
INTR 18 23 TEST
CLK 19 22 READY
Test (input):
Tín hieäu vaøo ñöôïc kieãm tra bôûi leänh ‘WAIT’ vi xöû lyù seõ khoâng laøm
gì caû khi ñieän aùp chaân naøy coù giaù trò thaáp, ñoàng boä taïi caïnh leân cuûa
moãi xung ñoàng hoà.
MN-MX – Minimum-Maximum (input):
Chaân choïn cheá ñoä laøm vieäc cuûa 8086, cheá ñoä laøm vieäc laø minimum
töông öùng vôùi möùc cao vaø cheá ñoä laøm vieäc laø maximum öùng vôùi möùc
thaáp. Bus ñieàu khieån ôû hai cheá ñoä coù chöùc naêng khaùc nhau.
M/IO (output):
Ngoû ra traïng thaùi gioáng nhö bit S0 ôû cheá ñoä maximum duøng ñeå baùo vò
trí ñang truy xuaát döõ lieäu. Möùc cao laø boä nhôù vaø möùc thaáp laø khoái vaøo-
ra. Caáu taïo ba traïng thaùi, toång trôû cao khi vi xöû lyù ôû cheá ñoä ‘Hold
acknowlegde’.
WR – write (output):
Tín hieäu ra ñieàu khieån thao taùc ghi vaøo boä nhôù hoaëc khoái vaøo-ra tuøy
theo giaù trò cuûa ngoõ M/IO. Taùc ñoäng möùc thaáp ôû T 2, T3 vaø Tw cuûa moãi chu
kyø ghi, caáu taïo ba traïng thaùi vaø traïng thaùi toång trôû cao khi vi xöû lyù ôû cheá
ñoä ‘Hold acknowlegde’.
INTRA – Interrup Acknowlegde (output):
T
OE
8286 DÖÕ
Transceiver
LIEÄU
BHE
OD
RAM ROM PERIPHERAL
GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH
Hình 1.3: Moâ phoûng keát noái heä thoáng vi xöû lyù
Luaän vaên toát nghieäp trang15
- ÔÛ hai cheá ñoä neâu treân toâi thöïc hieän chæ nghieân cöùu cheá ñoä minimum.
CLK
ALE
M/IO
RD
Chu kyø
ñoïc
DT/R
DEN
WR
Chu kyø
ghi
DT/R
DEN
Hình 1.4: Giaûn ñoà thôøi gian ñoïc vaø ghi cuûa
P8086
BB 00 02 6B 07 43
Hình 1.5: Quaù trình naïp haøng ñôïi leänh cuûa BIU
EU BIU Boä
nhôù
AX 00 0000 CS
BX 12 3400 DS
CX 00 0000 SS
DX 0 00 0 0000 ES
80
00
00
1280 3400
+
35280
8B 07
35280 34
1 12
Ñòa chæ offset ñöôïc laáy ra töø moät thanh ghi cuûa khoái EU (thanh ghi döõ
Hình
lieäu, chæ soá hoaëc boä1.6: Truyleänh).
ñeám xuaát döõ lieäughi
Thanh trong boäñöôïc
naøy nhôù BIU saép xeáp coá ñònh
thaønh töøng caëp. Hình treân seõ moâ taû vieäc saép xeáp caùc thanh ghi ñeå xaùc
ñònh ñòa chæ vaät lyù.
Thì bit ñaàu (opcode) naøy luoân laø ‘100010’ (ñoái vôùi thanh ghi ñoaïn thì
khaùc).
Ñoái vôùi bit ‘D’ duøng ñeå chæ höôùng ñi cuûa döõ lieäu.
D = 0 thì döõ lieäu ñi töø thanh ghi cho bôûi 3 bit cuûa REG.
D = 1 döõ lieäu ñi ñeán thanh ghi cho bôûi 3 bit REG.
Ñoái vôùi bit W duøng ñeå chæ raèng moät byte (W = 0) hoaëc moät töø (W = 1)
seõ ñöôïc chuyeån.
II. CAÙC PHÖÔNG PHAÙP ÑÒNH ÑÒA CHÆ CUÛA VI XÖÛ LYÙ
8086:
Phöông phaùp ñònh ñòa chæ (Addressing Mode) laø caùch ñeå CPU tìm thaáy
toaùn haïng cho caùc leänh cuûa noù khi hoaït ñoäng. Moät boä vi xöû lyù coù theå
coù nhieàu cheá ñoä ñònh ñòa chæ.
Caùc cheá ñoä ñònh ñòa chæ naøy ñöôïc xaùc ñònh ngay töø khi cheá taïo ra boä
vi xöû lyù vaø sau naøy ngöôøi ta laáy ñoù ñeå laøm chuaån maø khoâng thay ñoåi.
Ngoaøi caùc phöông phaùp ñònh ñòa chæ: töùc thôøi, tröïc tieáp, giaùn tieáp
gioáng nhö cuûa 8085, vi xöû lyù 8086 coøn coù theâm caùc caùch ñònh ñòa chæ
khaùc vaø ñöôïc phaân loaïi nhö sau:
- Ñònh ñòa chæ baèng thanh ghi.
- Ñònh ñòa chæ töùc thôøi.
O D I T S Z A P C
FI
Mov ax, [0230] CPU Boä
Sau nhôù
Tröôùc
2300
AX
AX 1200 SPSP CS 2300
CS 2300 B8
2300 00
BX
BX BP
BP DS2780
DS PC 0103
CX
CX SISI SS
SS PC 0100 010 B8 2080
12 00
DX
DX DIDI ES
ES 00
0 0103 12
12
OO D D I I T T S S ZZ AA PP CC
FIFI
Sau
O DHình
1.2). Phöông I 2.1
T :Phöông
phaùp Sñònh phaùp
Z ñòa Achæ ñònhPñòatieáp:
tröïc chæ
C töùc thôøi
Trong chæAXthò1200
bao goàm 2300
SP ñòa chæ CSoffset
2300 cuûa toaùn haïng, ñòa chæ ñoaïn ñöôïc
B8 208 00
quy ñònh laø noäi
BXdung cuûaBPthanh ghiDSDS.2780 PC 1003 00 0 12
CX ax, [0230]
Thí duï: Mov SI SS
12
DX DI ES
010
3
FI
GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH
O D I T S Z A P C
Tröôùc 2300
AX SP CS 2300 0100 EC
BX BP DS PC 0100
CX 0260 SI SS I/O
O D I 260 1C
FI DX DI T S ZES A P C
Sau 2300
AX 1200 SP CS 2300 EC
BX PC 0101 0101
BP DS
CX SI SS
DX O D IDI T S ZES A P C I/O 1C
260
FI
CPU Boä
Tröôùc nhôù
AX SP CS 2300
2300
2780
BX 0280 BP DS PC 0100 010 8B 2080 00
CX SI SS 0 07 12
DX DI ES
O D I T S Z A P C
FI
Sau
AX 1200 SP CS 2300 2300
2780 PC 1002 8B 208 00
BX 0280 BP DS 07 0 12
CX SI SS
DX DI ES
010
3
O D I T S Z A P C
FI2).
Khaûo saùt toång quaùt taäp leänh 8086:
Taäp leänh cuûa 8086 goàm 9 nhoùm leänh:
Hình 2.4:soá
- Nhoùm leänh truyeàn Phöông
lieäu.phaùp ñònh ñòa chæ töông ñoái
- Nhoùm leänh soá hoïc.
Pheùp so saùnh
Trong pheùp so saùnh hai toaùn haïng caàn so saùnh ñöôïc tröø vôùi nhau nhöng
noäi dung cuûa caùc thanh ghi vaø oâ nhôù khoâng bò thay ñoåi, keát quûa so saùnh
chæ aûnh höôûng ñeán thanh ghi côø seõ ñöôïc minh hoïa ôû hình sau:
CPU Boä
Tröôùc nhôù
AX SP CS
2300
BX BP DS
PC 0100 010 39
CX SI SS
0 08
DX DI ES
O D I T S Z A P C
FI
Sau
AX CS 2300
0123 SP 2300
39
BX 0246 BP DS PC 0102
08
CX SI SS
DX DI ES 010
2
O D I T S Z A P C
Hình
0 2.5: Phöông1phaùp
0 ñònh 1ñòa chæ1töông ñoái
1 Boä
FI CPU
Nhoùm leänh
Tröôùc logic:
nhôù
8086 thöïc hieän ñöôïc caùc pheùp tính logic : AND ,OR , EXOR, vaø pheùp
ñaûo NOT. Caùc ñòa AXchæ gioáng
SP nhö pheùp
CS coäng:
2300
2300
BX 0280 BP DS 2780
PC 0100
CX SI SS 010 8B 2080 39
0 07 1
DX 0815 DI ES
278
A
O D I T S Z A P C 0
FI
Sau
O D I T S Z A P C
FI
Sau
AX SP CS 2300
B8
BX BP DS PC 0105
00
CX SI SS
12
DX DI ES
010
O D I T S Z A P C 5
FI
D0 – D7 : Data input
LE : Cho pheùp
OE : Cho pheùp xuaát
O0 – O7 : Ngoõ ra
74LS373
A15 – A0
8086
74LS373
74LS373
74LS244
1G 1 20 Vcc
1A1 2 19 2G
2Y1 3 18 1Y1
1A2 4 17 2A4
2Y3 5 16 1Y2
1A3 6 15 2A3
2Y2 7 14 1Y3
1A4 8 13 2A2
2Y1 9 12 1Y4
GND 10 11 2A1
Baûng söï thaät: Hình II.3: Sô ñoà chaân 74LS244
INPUT H: möùc ñieän theá cao
1G 2G D OUTPUT L: möùc ñieän theá
thaáp
L L L X: khoâng quan taâm
L H H Z: toång trôû cao
H X Z
Thoâng soá ngöôõng:
Kyù Thoâng soá Min Type Max Ñôn vò
hieäu
Vcc Nguoàn cung caáp 4,45 5,0 5,25 V
o
TA Nhieät ñoä hoaït 0 2,5 70 C
ñoäng
IOH Doøng ra cao -1,5 mA
IOL Doøng ra thaáp 24 mA
III. MAÏCH TAÏO XUNG NHÒP 8284:
Cho duø laøm vieäc ôû cheá ñoä naøo ñi nöûa CPU 8086 luoân caàn xung nhòp
ñeå hoaït ñoäng, maïch taïo xung nhòp 8284 seõ ñaûm nhaän vieäc taïo xung nhòp
clock cho CPU 8086. Maïch taïo xung nhòp khoâng nhöõng cung caáp xung clock
vôùi taàn soá thích hôïp cho toaøn boä maø noù coøn coù aûnh höôûng tôùi vieäc
ñoàng boä tín hieäu Reset vaø tín hieäu Ready cuûa CPU.
CSYN 1 18 Vcc
C2 17 X1
PCLK 3 16 X2
AEN1 4 15 ASYN
RDY1 5 8284 14 C
READ 6 13 EFI
Y7 12 F/C
RDY2 8 11 OSC
AEN2 9 10 RES
CSYNC: loái vaøo cho xung ñoàng boä chung khi trong heä thoáng coù
caùc 8284 duøng dao ñoäng ngoaøi taïi chaân EFI. Khi duøng maïch dao ñoäng trong
thì phaûi noái mass chaân naøy.
X
+5V CL CLK
1 K
8284 8086
X
RE RESE RESE
K S2 T T
F/ CSYN
C C Khôûi ñoäng heä
thoáng
Hình II.5: Sô ñoà caùc ñöôøng tín hieäu chính cuûa 8284
Hình treân bieåu dieãn caùc ñöôøng noái tín hieäu chính cuûa 8284. Maïch 8284
nhaän xung khôûi ñoäng töø beân ngoaøi thoâng qua maïch RC, khi baét ñaàu baät
ñieän hoaëc xung khôûi ñoäng laïi khi baám coâng taéc K töø xung naøy 8284 coù
nhieäm vuï ñöa ra xung khôûi ñoäng ñoàng boä cho CPU cuøng vôùi taát caû caùc
thaønh phaàn khaùc cuûa heä thoáng.
IV. TOÅNG QUAN VEÀ BOÄ NHÔÙ:
Tröôùc khi noùi veà keát noái boä nhôù vôùi vi xöû lyù 8086 nhoùm thöïc hieän
noùi qua veà boä nhôù baùn daãn thöôøng duøng ñeå keát noái vôùi vi xöû lyù. Bao
goàm:
- Boä nhôù coá ñònh ROM (Read Only Memory – Boä nhôù chæ ñoïc),
thoâng tin trong boä nhôù seõ khoâng maát ñi khi maïch bò maát ñieän nguoàn cung
caáp.
- Boä nhôù baùn coá ñònh EPROM (Erasable Programnable ROM) laø
boä nhôù ROM coù theå laäp trình ñöôïc baèng xung ñieän vaø xoùa ñöôïc baèng tia
cöïc tím.
- Boä nhôù khoâng coá ñònh RAM (Random Access Memory – Boä nhôù
truy caäp ngaãu nhieân). Trong noäi dung ñeà taøi nhoùm thöïc hieän duøng SRAM
(Static RAM – RAM tónh, trong ñoù moãi phaàn töû nhôù laø moät maïch laät hai
traïng thaùi oån ñònh) vaø DRAM (Dynamic RAM – RAM ñoäng, trong ñoù moãi
phaàn töû nhôù laø moät tuï ñieän raát nhoû ñöôïc cheá taïo baèng coâng ngheä MOS)
ñeå keát noái vôùi vi xöû lyù.
Moãi boä nhôù thöôøng ñöôïc cheá taïo neân töø nhieàu vi maïch nhôù. Moät vi
maïch nhôù thöôøng coù caáu truùc tieâu bieåu nhö sau:
A0 D0
A1 D1 WR: Write – ghi
Tín hieäu A2 D2 Tín hieäu
ñòa chæ . . döõ lieäu WE: Write Enable-cho
. . pheùp ñoïc.
. . OE: Output Enable-ñaàu
Am Dn vaøo ñieàu khieån.
CS OE
WE CS: Chip Select- chaân
choïn.
Chaân choïn RD RD: Read – ñoïc.
Theo sôHình
ñoà treân ta ñoà
II.6: Sô thaáy moät
moät vi maïch
vi maïch nhôùnhôù coù caùc nhoùm tín hieäu sau:
OE
D8 D15
CS
A14 1 28 Vcc
A12 2 27 WE
MEMR
A7 3 OE 26 A13
A6 4 D0 D7
25 A8
CS töø boä giaõi CS
A5 5 24 A9
maõ
A4 6keát noái boä giaûi
Hình II.8: Moâ hình 23 A11
maõ vôùi
A
2). RAM 62256: boä nhôù
3 7
62256 22 OE
A1 9 10 CE
A0 10 19 D7
D0 11 18 D6
D1 12 17 D5
GVHD: NGUYEÃN ÑÌNH PHUÙ
D2 13 16 D4
SVTH: NGOÂ VAÊN BÌNH
GND 14 15 D3
74LS138
A 1 16 Vcc
B 2 15 O0
C 3 14 O1
E1 4 13 O2
E2 5 12 O3
E3 6 11 O4
O7 7 10 O5
GND 8 9 O6
Baûng traïng thaùi :
INPUT Hình II.11: Sô ñoà chaân 74LS138
OUTPUT
ENABLE SELECT
G1 G2* C B A Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
X H X X X H H H H H H H H
L X X X X H H H H H H H H
H L L L L L H H H H H H H
H L L L H H L H H H H H H
H L L H L H H L H H H H H
H L L H H H H H L H H H H
H L H L L H H H H L H H H
H L H L H H H H H H L H H
H L H H L H H H H H H L H
H L H H H H H H H H H H L
G2 = G2A + G2B
2). Maïch giaõi maõ cuï theå nhö sau:
Bus A A1 A13
Bus B D0 D7
OE
CS0
Y0 CE
A16 A Y1 CS1
A17 B Y2 CS2
A18 C
Y3 CS3
Y4 CS4
Y5 CS5
G1 Y6 CS6
Y7 CS7
Hình II.12: Sô ñoà maïch giaûi maõ
RESET Vcc
CLK Control and GND
timing registers 16 byte
IRQ display OUT A2 A0
memory
- 8279 coù moät boä nhôù RAM 16 byte duøng ñeå hieån thò vaø moät
boä nhôù RAM duøng Hình
ñeåIII.1: Sô ñoà
chöùa maõkhoái
cuûaviphím
maïchnhaán.
giaûi maõ hieån
Trong thò coù
8279 8279moät thanh
ghi ñeäm döõ lieäu, khi döõ lieäu ñöôïc vi xöû lyù gôûi tôùi thì noù ñöôïc chuyeån tôùi
thanh ghi naøy. Ngoaøi ra 8279 coøn chöùa thanh ghi traïng thaùi ñeå chæ traïng thaùi
cuûa 8279 taïi moät thôøi ñieåm.
RL2 1 40 Vcc
RL3 2 39 RL1
CLK 3 38 RL0
IRO 4 37 CNTL/ST
RL4 5 36 B
RL5 6 35 SHIFT
RL6 7 34 SL3
RL7 8 33 SL2
RESE 9 32 SL1
T 10
RD 11
8279 31 SL0
30 OUT B0
WR 12 29 OUT B1
DB0 13 28 OUT B2
DB1 14 27 OUT B3
DB2 15 26 OUT A0
DB3 16 25 OUT A1
DB4 17 24 OUT A2
DB5 18 23 OUT A3
DB6 19 22 BD
DB7 20 21 CS
RL7-
RL0 Key
DAT SHIFT data
A
CNTR/S
RD TB
CPU SL0-SL3 Scan
Interface WR
CS
OUT A3-
A0 Display
A0 data
RESE
T
B
CLK OUT B3-
D
B0
Hình III.3: Sô ñoà Logic 8279
4). Teân caùc chaân 8279:
Teân I/O Chöùc naêng
DB7 – DB0 I/O Data Bus (Bi-direction)
CLK I Clock Input
RESET I Reset Input
+ Trong suoát thôøi gian RAM hieån thò ñang xoùa noù khoâng ñöôïc vieát
vaøo, Bit lôùn nhaát cuûa töø traïng thaùi FIFO ñöôïc ñaët leân 1 trong suoát
thôøi gian naøy. Khi maø RAM hieån thò ñöôïc söû duïng laïi thì Bit naøy
ñöôïc Reset veà 0.
+ Neáu nhö Bit CF tích cöïc (CF =1), töø traïng thaùi FIFO seõ bò xoùa vaø
ngoõ ra Interrupt bò Reset.
+ Bit CA coù chöùc naêng xoùa taát caû caùc Bit, noù coøn aûnh höôûng
bôûi Bit CD vaø CF. Noù duøng Bit CD ñeå xoùa maõ treân RAM hieån thò
vaø noù cuõng xoùa luoân traïng thaùi FIFO.
III. ÖÙNG DUÏNG CUÛA 8279:
8279 laø IC chuyeân veà giaûi maõ hieån thò Led 7 ñoaïn vaø queùt phím theo
nhieàu phöông phaùp khaùc nhau.
Döõ lieäu caàn hieån thò töø vi xöû lyù gôûi ñeán seõ ñöôïc chöùa trong 16 byte
RAM beân trong ñöôïc goïi laø boä nhôù hieån thò. Caùc tín hieäu naøy laàn löôït
gôûi ra treân 8 ñöôøng tín hieäu töø A3-0 ñeán B3-0.
Caùc ñöôøng tín hieäu SL3-0 duøng ñeå queùt, döõ lieäu treân ñöôøng naøy coù
theå ñöôïc thieát laäp theo kieåu Encode vaø Decode tuøy thuoäc vaøo kieåu thieát keá
phaàn cöùng. Caùc ñöôøng naøy coù hai chöùc naêng vöøa queùt hieän thò vöøa queùt
giaûi maõ baøn phím.
Caùc ñöôøng tín hieäu RL7-0 laø caùc ñöôøng tín hieäu input keát hôïp vôùi
caùc ñöôøng tín hieäu queùt SL3-0 taïo thaønh ma traän phím, phím ñöôïc nhaán seõ
laøm cho moät hoaëc nhieàu ngoõ RL xuoáng möùc 0, keát hôïp vôùi caùc ñöôøng tín
hieäu queùt seõ cho bieát maõ cuûa phím nhaán. Chuù yù caùc ñöôøng SL3-0 phaûi ôû
cheá ñoä Decode.
Caùc ngoû vaøo SHIFT vaø CNTL ñöôïc duøng ñeå môû roäng caùc phím toå
hôïp.
Soá löôïng caùc phím thieát keá coù theå leân tôùi 64 phím rôøi.
8279 gôûi döõ lieäu trong vuøng nhôù RAM hieån thò ra caùc Led vaø töï ñoäng
queùt baøn phím ñeå tìm phím bò taùc ñoäng vaø töï choáng doäi vaø sau ñoù thieát
laäp maõ cuûa phím bò nhaán, tröôùc khi söû duïng 8279 ngöôøi thieát keá cuõng nhö
ngöôøi söû duïng caùc töø ñieàu khieån gôûi ra 8279 khi bit A0 = 1. Döõ lieäu ñoïc
vaøo hoaëc gôûi ra 8279 khi bit A0 = 0.
Khi coù phím bò nhaán, 8279 seõ töï ñoäng choáng doäi sau 10,3 ms vaø kieåm
tra laïi moät laàn nöõa ñeå xem phím ñoù coù bò nhaán hay khoâng, neáu coøn thì
8279 seõ thieát laäp maõ cho phím naøy vaø löu tröõ maõ cuûa phím vaøo boä nhôù
RAM beân trong. Sau ñoù seõ baùo cho vi xöû lyù bieát ñaõ coù moät phím taùc
ñoäng vaø yeâu caàu vi xöû lyù nhaän maõ cuûa phím naøy baèng caùch taùc ñoäng
ñeán tín hieäu ngaét IRQ. Tín hieäu IRQ ñöôïc keát noái ñeán moät ngoõ vaøo ngaét
cuûa vi xöû lyù vaø chöông trình phuïc vuï cho ngaét naøy laø chöông trình ngaét
GROUP GROUP
A A IO
POWER +5V CONTROL PORT A PA7 – PA0
SUPPLIES
GND
GROUP
DATA A IO
BUS PORT C PC7 – PC4
BUFFER UPPER
GROUP
B IO
PORT C PC3 – PC0
LOWER
READ
WRITE
CONTROL
WR\ LOGIC GROUP IO
GROUP B
RD\ B PB7 – PB0
PORT B
A1 CONTROL
A0
RESET
CS\
Hình IV.1: Sô ñoà khoái 8255A
PA3 1 40 PA4
PA2 2 39 PA5
PA1 3 38 PA6
PA0 4 37 PA7
RD\ 5 36 WR\
CS\ 6 35 RESET
GND 7 34 D0
A1 8 33 D1
A0 9 32 D2
PC7 10 8255A 31 D3
PC6 11 30 D4 PA7-PA0
D7-D0
PC5 12 29 D5
PC4 13 28 D6 PC7-PC4
PC0 14 27 D7
PC1 15 26 VCC
PC2 16 25 PB7 RESE PC3-PC0
PC3 17 24 PB6 T
PB0 18 23 PB5 A0 PB7-PB0
PB1 19 22 PB4 A1
PB3).
2 20 Teân caùc chaân:
21 PB3
Hình IV.3: Sô ñoà Logic 8255A
HìnhD7 - D0
IV.2: Data bus (Bi-Direction)
Sô ñoà chaân 8255A
RESET Reset input (noái vôùi tín hieäu Reset toaøn boä heä)
CS\ Chip Select
WR\ Write input
RD\ Read input
A0, A1 Port Address
PA7 – PA0 Port A
PB7 – PB0 Port B
PC7 – PC0 Port C
8255A giao tieáp vôùi vi xöû lyù thoâng qua 3 bus: bus döõ lieäu 8 bit D 7-D0, bus
ñòa chæ, bus ñieàu khieån RD\; WR\; CS\; Reset.
Maõ leänh, thoâng qua traïng thaùi vaø vaø döõ lieäu ñeàu ñöôïc truyeàn
treân 8 ñöôøng döõ lieäu D7-D0. Vi xöû lyù gôûi döõ lieäu ñeán 8255A hoaëc vi xöû
lyù ñoïc döõ lieäu töø 8255A tuøy thuoäc vaøo leänh ñieàu khieån. Caùc ñöôøng tín
hieäu RD\, WR\ cuûa 8255A ñöôïc keát noái vôùi caùc ñöôøng RD\, WR\ cuûa vi xöû
lyù.
Tín hieäu Reset duøng ñeå khôûi ñoäng 8255A khi caáp ñòeän, khi bò Reset
caùc thanh ghi caùc thanh ghi beân trong 8255A ñeàu bò xoùa vaø 8255A ôû traïng
thaùi saün saøng laøm vieäc. Khi giao tieáp vôùi vi xöû lyù ngoû vaøo tín hieäu Reset
naøy ñöôïc keát noái vôùi tín hieäu Reset Out cuûa vi xöû lyù.
Tín hieäu Chip Select (CS\) duøng ñeå löïa choïn 8255A khi vi xöû lyù giao
tieáp vôùi nhieàu 8255A.
GROUP B
PORT C (LOWER)
1 = INPUT
0 = OUTPUT PORT
B
1 = INPUT
0 = OUTPUT
MODE SELECTION
0 = MODE 0
1 = MODE 1
GROUP A
PORT C (UPPER)
1 = INPUT
0 = OUTPUT PORT
A
1 = INPUT
0 = OUTPUT
MODE SELECTION
00 = MODE 0
01 = MODE 1
1X = MODE 2
MODE SET FLAG
II. CAÁU TRUÙC PHAÀN MEÀM CUÛA 8255A:
1 = ACTIVE
Do caùc port cuûa 8255A ñöôïc chia laøm hai nhoùm nhoùm A vaø nhoùm B
taùch rôøi neân töø ñieàu khieån cuûa 8255A cuõng ñöôïc chia laøm hai nhoùm.
Caùc bit D2D1D0 duøng ñeå ñònh caáu hình cho nhoùm B:
Bit D0 duøng ñeå thieát laäp 4 bit thaáp cuûa port C, D0 = 0 port C thaáp
laø port xuaát döõ lieäu (output), D0 = 1 port C thaáp laø port nhaäp döõ lieäu
(input).
Bit D1 duøng thieát laäp port B, D1 = 0 port B laø port xuaát döõ lieäu
(output), D1 = 1 port B laø port nhaäp döõ lieäu (input).
Bit D2 duøng thieát laäp Mode ñieàu khieån cuûa nhoùm B:
D2 = 0: nhoùm B hoaït ñoäng ôû Mode 0.
D2 =1: nhoùm B hoaït ñoäng ôû Mode 1.
Caùc bit D6, D5, D4, D3 duøng ñeå ñònh caáu hình cho nhoùm A:
Bit D3 duøng ñeå thieát laäp 4 bit cao cuûa port C, D3 = 0 port C laø
port xuaát döõ lieäu (output), D3 = 1 port C laø port nhaäp döõ lieäu (input).
Bit D4 duøng ñeå thieát laäp port A, D4 = 0 port A laø port xuaát döõ
lieäu(output), D4 = 1 port A laø port nhaäp döõ lieäu (input).
Bit D6D5 duøng thieát laäp Mode ñieàu khieån cuûa nhoùm A:
D6D5 = 00: nhoùm A hoaït ñoäng ôû Mode 0.
D6D5 = 01: nhoùm A hoaït ñoäng ôû Mode 1.
D6D5 = 1X: nhoùm A hoaït ñoäng ôû Mode 2.
1). Caùc nhoùm A, B ñöôïc caáu hình ôû Mode 0:
Töø ñieàu khieån nhoùm A & B hoaït ñoäng ôû Mode 0:
1 0 0 D4 D3 0 D1 D0
Ôû Mode 0 caùc port A, port B, port C thaáp vaø port C cao laø caùc port xuaát
hoaëc nhaäp döõ lieäu ñoäc laäp. Do coù 4 bit ñeå löïa choïn neân coù 16 töø ñieàu
khieån khaùc nhau cho 16 traïng thaùi xuaát nhaäp cuûa 4 port.
2). Caùc nhoùm A & B ñöôïc caáu thình ôû Mode 1:
Töø ñieàu khieån nhoùm A B hoaït ñoäng ôû Mode 1:
1 0 1 D4 D3 1 D1 D0
ÔÛ Mode 1 caùc port A & B laøm vieäc xuaát nhaäp coù choát (Stroble I/O).
ÔÛ Mode naøy hai port A & B hoaït ñoäng ñoäc laäp vôùi nhau vaø moãi port coù 1
port 4 bit ñieàu khieån/döõ lieäu. Caùc port 4 bit ñieàu khieån / döõ lieäu ñöôïc hình
thaønh töø 4 bit thaáp vaø 4 bit cao cuûa port C.
Khi 8255A ñöôïc caáu hình ôû Mode 1, thieát bò giao tieáo muoán 8255A nhaän
döõ lieäu, thieát bò ñoù phaûi taïo ra tín hieäu yeâu caàu 8255A nhaän döõ lieäu,
nguôïc laïi 8255A muoán gôûi tín hieäu ñeán thieát bò khaùc, 8255A phaûi taïo ra tín
hieäu yeâu caàu thieát bò ñoù nhaän döõ lieäu, tín hieäu yeâu caàu ñoù goïi laø tín
hieäu Strobe.
Nhoùm A laøm vieäc ôû caáu hình Mode 1:
Port A ñöôïc caáu hình laø port nhaäp döõ lieäu.
Chöùc naêng cuûa caùc ñöôøng tín hieäu ñöôïc trình baøy ôû hình veõ sau ñaây:
PC3 INTRA
RD
PC6,7 I/O
GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂ VAÊN BÌNH
Luaän vaên toát nghieäp trang48
Caùc ñöôøng tín hieäu cuûa port C trôû thaønh caùc ñöôøng ñieàu khieån/döõ lieäu
cuûa port A.
Bit PC4 trôû thaønh bit STBA (Stroble Input, taùc ñoäng möùc thaáp), ñöôïc
duøng ñeå choát döõ lieäu ôû caùc ngoû vaøo PA7 – PA0 vaøo maïch choát beân trong
8255A.
Bit PC5 trôû thaønh bit IBTA (Input Bufer Full, taùc ñoäng möùc cao), duøng
ñeå baùo cho thieát bò beân ngoaøi bieát döõ lieäu ñaõ ñöôïc choát beân trong.
Bit PC3 trôû thaønh bit INTRA (Interrupt Request, taùc ñoäng ôû möùc cao), bit
naøy coù möùc Logic 1 khi hai bit STBa = 1, IBF = 1 vaø bit INTEa (Interrupt Enable)
ôû beân trong 8255Abaèng 1. Bit INTE a ñöôïc thieát laäp möùc Logic 1 hay 0 döôùi
söï ñieàu khieån cuûa phaàn meàm duøng caáu truùc Set/Reset cuûa 8255A. ÔÛ hình
veõ treân, bit INTEa = 1 duøng ñeå cho pheùp tín hieäu IBF xuaát hieän taïi ngoõ ra
INTRA cuûa coång AND. Tín hieäu INTA taùc ñoäng ñeán ngoõ vaøo cuûa ngaét vi
xöû lyù ñeå baùo cho vi xöû lyù bieát: döõ lieäu môùi ñaõ xuaát hieän ôû port A
chöông trình phuïc vuï ngaét seõ ñoïc döõ lieäu vaøo xoùa yeâu caàu ngaét.
Caùc bit coøn laïi cuûa port C: PC 6, PC7 laø caùc bit xuaát/nhaäp bình thöôøng
tuøy thuoäc vaøo bit D3 trong töø ñieàu khieån hình treân. Caùc bit XXX ñöôïc duøng
ñeå thieát laäp cho nhoùm B.
Port A ñöôïc caáu hình laø port xuaát döõ lieäu:
Chöùc naêng cuûa ñöôøng tín hieäu ñöôïc trình baøy ôû hình sau:
Töø ñieàu khieån :
1 0 1 0 D3 X X X INT PA7-PA0
E
A PC7 OBFA
PC6 ACKA
PC3 INTRA
W
R PC4,5 I/O
Bit PC7 trôû thaønh bit OBFa (Output Buffer Full, taùc ñoäng möùc thaáp), khi
coù döõ lieäu töø vi xöû lyù gôûi ra port A, tín hieäu OBFa seõ yeâu caàu thieát bò
beân ngoaøi nhaän döõ lieäu.
Bit PC6 trôû thaønh bit ACKa (Acknowledge Input, taùc ñoäng möùc thaáp)
thieát bò nhaän döõ lieäu duøng tín hieäu naøy ñeå baùo cho 8255A bieát tín hieäu ñaõ
ñöôïc nhaän vaø saún saøng nhaän döõ lieäu tieáp theo.
Bit PC3 trôû thaønh bit INTRa (Interrupt Request, taùc ñoäng möùc cao), bit
naøy coù möùc Logic khi hai bit OBF a = 1, ACKa = 1 vaø bit INTEa (Interrupt
Enable) ôû beân trong 8255A ôû möùc 1. Tín hieäu INTRa taùc ñoäng ñeán ngoõ vaøo
ngaét cuûa vi xöû lyù ñeå baùo cho vi xöû lyù bieát: thieát bò beân ngoaøi ñaõ nhaän
döõ lieäu ôû port A.
PC0 INTRB
RD
Chöùc naêng cuûa caùc bit ñieàu khieån gioáng nhö nhoùm A hoaït ñoäng ôû
Mode 1.
Port B ñöôïc caáu hình laø port xuaát döõ lieäu:
Chöùc naêng cuûa caùc ñöôøng tín hieäu ñöôïc trình baøy ôû hình sau:
PC0 INTRB
Chöùc naêng cuûa caùc bit ñieàu khieånW gioáng nhö nhoùm A hoaït ñoäng ôû
R
Mode 1.
Caùc bit XXX ñöôïc duøng thieát laäp cho nhoùm A, bit D 0 khoâng coù taùc
duïng trong tröôøng hôïp caû hai nhoùm cuøng laøm vieäc ôû Mode 1.
3). Nhoùm A cuûa 8255A laøm vieäc ôû Mode 2: PC3 INTR
Mode 2 laø kieåu hoaït ñoäng Stoble Bi-directional IO, söï khaùc bieät A
vôùi
Mode 1 laø port coù hai chöùc naêng xuaát – nhaäp döõ lieäu.
Töø ñieàu khieån khi hai nhoùm A hoaït ñoäng ôû Mode 2:PA7-PA0
1 1 X X X X X X
Chöùc naêng cuûa caùc ñöôøng tín hieäu ñöôïc trình baøy ôû hình
PC7 sau: OBFA
Töø ñieàu khieån:
PC6 ACK
1 0 1 1 D3 X X X INTE A
INTE
RD 2 PC4 STBA
GVHD: NGUYEÃN ÑÌNH PHUÙ SVTH: NGOÂPC
VAÊN
5 BÌNH
IBFA
WR
PC2,1,0 I/O
Luaän vaên toát nghieäp trang50
Caùc ñöôøng tín hieäu cuûa port C trôû thaønh caùc ñöôøng ñieàu khieån/döõ
lieäu cuûa port A.
Bit PC7 trôû thaønh bit OBFa, PC6 trôû thaønh bit ACKa, PC4 trôû thaønh bit
STBa, PC5 trôû thaønh IBFa vaø bit PC3 trôû thaønh bit INTRa. Chöùc naêng cuûa
caùc ñöôøng tín hieäu gioáng nhö Mode 1, chæ khaùc laø tín hieäu ngoû ra INTRa =1,
INTE1 = 1 hoaëc IBFa = 1, INTE2 = 1.
Caùc bit PC 2,1,0 coøn laïi coù theå laø caùc bit I/O tuøy thuoäc vaøo bit ñieàu
khieån c3 nhoùm B.
Chuù yù khi nhoùm A laøm vieäc ôû Mode 2, nhoùm B chæ ñöôïc pheùp hoaït
ñoäng ôû Mode 0.
Caáu hình cuûa töø ñieàu khieån Set/Reset bit INTE khi 8255A hoaït ñoäng ôû
Mode 1 hoaëc Mode 2 ñöôïc trình baøy ôû hình sau:
D7D6D5D4D3D2D1D0
X X X
BIT SET / RESET
1 = SET
Don’t care
0 = RESET
BIT SELECT
0123456701010101B000110011B10000111
1B2
1. Sô ñoà khoái:
D0-D7
Soá lieäu
phaùt vaø
leänh
TxD
Reset Bieán ñoåi
Logic
CLK song song-
ñieàu
C/D\ noái tieáp
khieån
RD\ ñoïc TxRDY
WR\ ghi Ñieàu TxE
CS\ khieån TxC\
phaùt
RxRDY
Syndet/Brk
DTR\
Ñieàu RxC\
DSR\
RTS\ khieån thu
Ñieàu
CTS\ khieån RxD
modem Bieán
2. Sô ñoà chaân 8251: ñoåi
noái
tieáp-
song
Hình 4.1 song
Hình 4.2
Luaän vaên toát nghieäp trang54
TxD\
CS\
Thanh ghi truyeàn
RD\
WR\
C/D\
D0 Thanh ghi ñeäm truyeàn
D1
RXD\
D2 Thanh ghi nhaän
D3
D4
Thanh ghi ñeäm nhaän
D5
D6
D7 Thanh ghi cheá ñoä
CLK
RST
RxRDy
TxRDy Thanh ghi leänh
TxEMTy
VCC
GND
D D D D D D D D
7 6 5 4 3 2 1 0 toác ñoä truyeàn
00 ñoàng boä
01 khoâng ñoàng boä
x1
10 khoâng ñoàng boä
x16
11khoâng ñoàng boä
x64
Bit chaün leû Ñoâ daøi kyù töï
X0 khoâng kieåm
5bit
tra
01 kieåm tra leû 6bit
10 kieåm tra chaün 7bit
8bit
Ñieàu khieån
khung
00 khoâng gía trò
01 moät bit döøng
Hình 43a 10 1.5 bit döøng
11 2bit döøng
E IR RT ER RxE DT Tx
H S N
R EN
Giaûi
A 1 – A 11 maõ CS \ GND
ñiaï GND
D 0 –D 7 chæ
D 0 – D7 CRTTxD
Reset TxD
Rest CRTRxD
CLK RxD
CLK
A0 DTR
C/D\
RD \ CRT
RD \
WR \
DSR\
WR\
XöûLyùùng
aét (8259A
INTR RTS\
hai möùc)
INTA \
TxD
VXL TxD 8251 TxD
CTS\
RxRDy
RxD RxD
DTR\ DTR\
VX 8251 8251 VX
L1 DSR\ DSR\ L2
RTS\ RTS\
CTS\ CTS\
Chöông V:
THIEÁT KEÁ VAØ LÖÏA CHOÏN LINH KIEÄN
___ oOo ___
Sau khi phaân tích moâ hình heä thoáng kit 8086. Nhoùm thöïc hieän baét ñaàu
tính toaùn caùc giaù trò thöïc teá ñeå heä thoáng coù theå hoaït ñoäng ñöôïc. Vieäc
tính toaùn döïa treân cô sôû lyù thuyeát vaø caùc loaïi linh kieän thoâng duïng treân
thò tröôøng.
Nhö ta ñaõ bieát kit 8086 laø heä thoáng phaàn cöùng khoâng theå thay ñoåi
ñöôïc moät caùch deå daøng nhöng phaàn meàm coù theå thay ñoåi ñöôïc cho heä
thoáng hoaït ñoäng moät caùch toái öu. Do ñoù, vieäc thieát keá phaûi caân ñoái sao
cho phaàn meàm khoâng phöùc taïp vaø taän duïng ñöôïc heát chöùc naêng.
1). Boä vi xöû lyù trung taâm vaø maïch choát:
Boä vi xöû lyù 8086 coù taàn soá hoaït ñoäng 8Mhz, coù 20 ñöôøng ñòa chæ
neân coù theå quaûn lyù ñöôïc 1Mbyte boä nhôù vaø coù 16 ñöôøng döõ lieäu.
Do vi xöû lyù söû duïng phöông phaùp ña hôïp 20 bit ñòa chæ vôùi 16 bit döõ
lieäu vaø 4 tín hieäu ñieàu khieån. Vì vaäy nhoùm thöïc hieän choïn IC 74LH573 laø
IC choát ñòa chæ thaáp.
2). Thieát keá boä nhôù vaø giaõi maõ boä nhôù:
Do 8086 coù khaû naêng quaûn lyù 1Mbyte boä nhôù nhöng do öùng duïng thöïc
teá nhoùm chæ choïn vuøng nhôù töø 80000 ñeán FFFFF ñeå choïn vuøng nhôù RAM,
caùc IC ngoaïi vi vaø chöông trình heä thoáng.
O0 CS\ RAM
A16 A CS\ 8255
CS\ 8279
A17 B
A18 C
Vcc E3
8086 E1 O7 CS\ ROM
\
E2
\
Hình V.1: Sô ñoà keát noái vi xöû lyù vôùi giaûi maõ boä
nhôù
3). Thieát keá khoái hieån thò vaø baøn phím:
Vi maïch 8279 coù khaû naêng raát ñaëc bieät: coù khaû naêng vöøa queùt baøn
phím rôøi vöøa hieån thò ñöôïc 16 Led 7 ñoaïn. Do yeâu caàu cuûa heä thoáng kit
8086 nhaäp döõ lieäu vaøo heä thoáng thoâng qua baøn phím cuõng nhö vieäc hieån
thò caùc soá lieäu ra Led neân ôû ñaây nhoùm choïn vi maïch 8279 ñeå thöïc hieän
chöùc naêng naøy.
a). Baøn phím:
Baøn phím khoâng phaûi laø thieát bò ñieän töû maø noù laø nhöõng coâng taéc
thöôøng hôû, noù giuùp ngöôøi söû duïng giao tieáp vôùi heä thoáng. Do yeâu caàu
cuûa heä thoáng neân nhoùm khoâng söû duïng heát 64 phím maø vi maïch 8279
quaûn lyù ñöôïc, cuï theå laø 26 phím.
Ñeå 8279 laøm vieäc queùt phím tröôùc tieân ta phaûi thieát laäp caùc töø
ñieàu khieån gôûi ra 8279, caùc ñöôøng tín hieäu SL3 SL0 duøng ñeå queùt, döõ
lieäu treân ñöôøng naøy coù theå thieát laäp theo hai kieåu Encode vaø Decode. Neáu
thieát laäp theo kieåu Decode thì 4 ñöôøng SL3 SL0 coù theå queùt hieån thò 4 led 7
ñoaïn maø yeâu caàu cuûa 4 ñöôøng SL3SL0 phaûi ôû cheá ñoä Decode neân ta
phaûi choïn 8279 ôû cheá ñoä Encode sau ñoù môùi giaõi maõ 4 ñöôøng SL3 SL0
thaønh cheá ñoä Decode luùc naøy giaõi maõ töø 4 ñöôøng sang 16 ñöôøng ñeå coù
khaû naêng hieån thò ra 16 Led. Do yeâu caàu cuûa ñeà taøi laø hieån thò ra 8 Led
neân ta choïn IC 74LS138 ñeå giaõi maõ cho vi maïch 8379.
Caùc ngoõ SHIFT vaø CNTL duøng ñeå môû roäng caùc toå hôïp phím. Do
heä thoáng khoâng söû duïng heát phím neân 2 ngoõ nay ñöôïc noái Mass.
Nguyeân lyù laøm vieäc cuûa 8279 trong vieäc queùt phím:
Ñeå 8279 laøm coâng vieäc queùt phím ta choïn cheá ñoä KKK = 100
(Encode Scan Sensor Matrix) vaø gôûi caùc töø ñieàu khieån naøy 8279 ñeå khôûi taïo
cheá ñoä queùt phím. Caùc ñöôøng SL3 SL0 queùt lieân tuïc qua 74138 ñeå hieån
thò vaø phím aán. Khi coù moät phím aán, 8279 töï ñoäng choáng doäi sau 10,3 ms
vaø kieåm tra moät laàn nöõa ñeå xem phím ñoù coù aán nöõa hay khoâng, neáu coù
thì 8279 thieát laäp maõ cho phím naøy vaø löu tröõ maõ cuûa phím vaøo RAM beân
trong, sau ñoù baùo cho vi xöû lyù bieát coù moät phím taùc ñoäng vaø yeâu caàu vi
xöû lyù nhaäp maõ cho phím naøy baèng caùch taùc ñoäng ñeán tín hieäu ngaét IRQ
hoaëc baèng caùch ñoåi thanh ghi traïng thaùi FiFo laøm cho 3bit NNN seõ khaùc
möùc 000 khi coù moät phím ñöôïc aán.
SL0 A
SL1 B
SL2 C
SL3 74138
Multile
8279 OB0 Digital
Display
RL0 OB3
OA0
RL7 OA3
Haøng
7
Hình V.2: Sô ñoà ma traän queùt phím
R1
a
b
c
d
e
f
g
Ñeå cho Led ñöôïc saùng thì doøng qua noù khoaûng 10mA. Do ñoù, ñeå 7 ñoaïn
saùng thì doøng qua Transistor phaûi laø 80mA
I E max I C max 8 10mA 80mA
vì vaäy ta coù theå choïn Transistor naøy laø A564 hoaëc A1015. Trong heä
thoáng kit 8086 nhoùm choïn A564 coù heä soá khueách ñaïi ôû cheá ñoä ñoùng
ngaét khoaûng 40 ñeán 200 laàn. Do ñoù, doøng IBmax khoaûng:
I C max 80
I B max 1mA
80
Tính toaùn choïn R1: khi Transistor baûo hoøa VBE=0,7v
U R1 Vcc 0,7 5 0,7
Do ñoù: R1 4,7 k
IB IB 1
Ñeå tính toaùn cho transistor sôùm baûo hoøa ta choïn R1 nhoû hôn tính toaùn.
Vaäy R1=3,9k
Tính toaùn R2: khi Transistor daån baûo hoøa ta coù Vcc=0,2 v vaø ñeå Led
saùng thì ñoøi hoûi ñieän aùp rôi treân Led laø 2,5v.
VR 2 5 0,2 2,5 2,3V
Do ñoù: R VR 2 2,3 28
2
I C max 80
Phaàn 3
XAÂY DÖÏNG PHAÀN MEÀM HEÄ THOÁNG
___ oOo ___
I. KHAÙI NIEÄM:
Nhö ñaõ bieát, caáu taïo cuûa maùy tính ñöôïc chia laøm hai phaàn: phaàn cöùng
vaø phaàn meàm, phaàn meàm laø caùc chöông trình ñieàu khieån maùy tính ñeå giaûi
quyeát caùc yeâu caàu ñaët ra trong thöïc teá.
Kyõ thuaät xaäy döïng phaàn meàm laø kyõ thuaät laäp trình, ñaây laø moät
ngheä thuaät ñoøi hoûi kyõ naêng vaø saùng taïo nhöng daàn daàn noù ñöôïc kyõ
thuaät hoùa nhaèm ñôn giaûn vaø naâng cao hieäu suaát xaây döïng phaàn meàm.
Laäp trình laø taïo moät chöông trình ñieàu khieån thieát bò baèng moät ngoân
ngöõ naøo ñoù ñeå ñieàu khieån caùch xöû lyù döõ lieäu theo töøng yeâu caàu cuï theå
cuûa baøi toaùn. Vì vaäy, beân caïnh söï hieåu bieát veà cô cheá hoaït ñoäng cuûa
maùy tính ngöôøi laäp trình coøn phaûi naém vöõng caùch toå chöùc döõ lieäu vaø
caùch xöû lyù (thuaät giaûi) döõ lieäu ñoù ñeå ñaït ñöôïc keát quaû mong muoán. Coù
theå noùi chöông trình laø caùch toå chöùc döõ lieäu coäng vôùi thuaät giaûi, treân
thöïc teá coù nhieàu phöông phaùp laäp trình khaùc tuøy thuoäc vaøo:
- Coâng cuï söû duïng: maùy tính thoâng thöôøng, maùy chuyeân duøng, thieát
bò ñieàu khieån trong coâng nghieäp.
- Möùc ñoä chuyeân saâu: laäp trình heä thoáng, laäp trình öùng duïng.
- Ngoân ngöõ söû duïng: ngoân ngöõ maùy, ngoân ngöõ caáp cao.
- Lónh löïc öùng duïng: khoa hoïc kyõ thuaät, quaûn lyù, ñieàu khieån.
1). Thuaät giaûi:
Laø caùch giaûi quyeát vaán ñeà baèng nhöõng thao taùc cuï theå ñöôïc saép
xeáp theo moät trình töï nhaát ñònh.
Trong kyõ thuaät maùy tính, thuaät giaûi laø coát loõi mang tính saùng taïo vieäc
laäp trình. Thuaät giaûi thöôøng ñi keøm vôùi toå chöùc döõ lieäu, baûn thaân thuaät
giaûi laø moät chuyeân ngaønh ñöôïc nghieân cöùu chuyeân saâu vaø khoâng ngöøng
phaùt trieån.
2). Thao taùc:
Coøn goïi laø taùc vuï, leänh hoaëc chæ thò laø moät haønh ñoäng caàn ñöôïc
thöïc hieän bôûi cô cheá thöïc hieän thuaät giaõi. Thao taùc ñöôïc dieãn giaûi bôûi
moät nhoùm töø maø chuû yeáu laø moät ñoäng töø, caàn choïn ñoäng töø chæ daãn
chính xaùc vaø xuùc tích.
Moãi moät thao taùc caàn moät thôøi gian vaø tieâu hao vaät chaát ñeå thöïc
hieän. Thôøi gian vaø tieâu hao phuï thuoäc vaøo töøng thao taùc.
Moãi thao taùc coù theå phaân thaønh caùc thao taùc nhoû hôn. Vaán ñeà laø
choïn thao taùc ôû möùc ñoä chi tieát naøo ñeå trình baøy laø hôïp lyù nhaát. Neáu
thao taùc toång quaùt thì seõ khoù hieåu ngöôïc laïi neáu quaù chi tieát thì seõ raéc
roái deã nhaàm laãn. Caàn choïn thao taùc ôû möùc ñoä toång quaùt nhaát maø ñoái
töôïng söû duïng coù theå hieåu ñöôïc.
Cuøng moät thao taùc nhöng saép ñaët theo trình töï khaùc nhau seõ cho keát
quaû khaùc nhau. Cô caáu trình töï caàn theå hieän trong thao taùc goïi laø caáu truùc
ñieàu khieån.
S
C?
Laëp laïi A voâ ñieàu kieän khi cho ñeán khi coù leänh thoaùt.
Neáu ñieàu kieän C ñuùng thì thöïc hieän A (tuøy theo giaù trò cuûa C thao taùc
A coù theå thöïc hieän 0, 1 hoaëc nhieàu laàn).
S
A C?
Ñ
Caáu truùc löïa:
Choïn thöïc hieän hoaëc khoâng thöïc hieän moät thao taùc.
S
A C?
Ñ S
C?
Toùm laïi moät Athuaät giaûi toát toái thieåu Bcaàn coù nhöõng ñieàu kieän sau:
- Coâng vieäc phaûi cuï theå vaø thöïc hieän ñöôïc treân maùy tính.
- Soá böôùc thöïc hieän phaûi roõ raøng vaø höõu haïn.
- Coù soá lieäu vaøo.
- Coù soá lieäu ra.
Begin
Phím
Khôûi taïo chöùc
thanh ghi ngaên xeáp SS
naêng
vaø SP
RET
Luaän vaên toát nghieäp trang68
Begin
00h AL
Delay
03h CL
SoSo
saùnh
saùnh
CL=03h
Cl = 00h
?
Delay
Delay
Ret
Laáy laïi DS
So saùnh
= 40
Ret
Laáy data
Jmp x4
Laáy data
Jmp X9 Jmp X8
Löu ñoà phím key – go:
Begin
Coù phaûi
phím go
Thoaùt khoûi
chöông trình Jmp X4
Caát CX 72E3 CX
Laáy CX laïi
Ret
Call key 23
AL AH
[FE41] AL
AL and [FE41]
Keát quaû = 0
Call key 47
Keát quaû = 0
[FE41] AL
[FE41] and AL
Ret
Begin
CaátÑÌNH
GVHD: NGUYEÃN thanh ghi
PHUÙDS SVTH: NGOÂ VAÊN BÌNH
Sau khi xoùa keát
quaû = 0 chöa
Göûi töø
Laáy maõñieàu
Ñoïc
phím
Laáy
AL khieån
Call
maõ
and
DS
gôûi
Delayvaø
0Fh
phím
laïi ñoïchieån
ra ñeå traïng 0FFh AL
thaùi
Luaän vaên toát nghieäp trang74
Ret
Begin
Call 4 - X
Caát AX
Call 4 - X
Kieåm
tra BL =
40h
Call delay
Ret
Laáy laïi BX
Laáy laïi DS
Ret
JMP X4
ORG 0200H
X10:
;=========================================
;CHUONG TRINH CON CHUYEN O NHO SANG O NHO TAM
ORG 0300H
CONVERT PROC NEAR
PUSH CX
PUSH AX
MOV DI,0FE32H
MOV AL,[DI]
AND AL,0FH ;XOA 4BIT CAO
MOV CL,04H
ROL AL,CL ;XOAY 4BIT THAP SANG 4 BIT CAO
MOV AH,AL
INC DI ;DI = 0033H
MOV AL,[DI]
MOV CL,04H
ROL AL,CL
MOV [DI],AL ;4 BIT THU 2
DEC DI ;DI = 0032
AND AL,0FH ;SU LY DIGIT THU 2
OR AL,AH
MOV [DI],AL
INC DI ;
MOV AL,[DI] ;
AND AL,0F0H ;XOA LSD
MOV [DI],AL
POP AX ;LAY MA PHIM
POP CX
RET
CONVERT ENDP
Phaàn 4
THI COÂNG
Ñöôïc söï höôùng daãn cuûa thaày Nguyeãn Ñình Phuù, trong suoát thôøi
gian thi coâng toâi thöïc hieän ñöôïc moät soá phaàn vaø traûi qua caùc böôùc
sau:
- Thieát keá vaø veõ maïch in baèng phaàn meàm veõ maïch Eagle.
Qua quaù trình thi coâng maïch toâi caûm nhaän ñöôïc söï lyù thuù vaø töø ñoù
Cuøng vôùi söï tieán boä cuûa khoa hoïc kyõ thuaät, lónh vöïc ñieän töû coù
nhieàu böôùc tieán nhaûy voït vaø coâng ngheä ñoåi môùi lieân tuïc. Ngöôøi thöïc
- Heä thoáng maø toâi ñaõ thöïc hieän, vi xöû lyù 8086 chöa hoaït ñoäng
- Vôùi vieäc giao tieáp qua coång RS232 thì khoaûng caùch truyeàn ñi xa.
- Coù theå keát noái vôùi thieát bò ngoaïi vi thoâng qua giao tieáp 8255A.
PHUÏ LUÏC
MOÂ TAÛ TAÄP LEÄNH CUÛA VI XÖÛ LYÙ 8086
Coù nhieàu caùch trình baøy taäp leänh cuûa moät vi xöû lyù: trình baøy caùc
leänh theo nhoùm hoaëc theo thöù töï A, B, C. Ñeå tieän cho vieäc tìm kieáp vaø tra
cöùu cuï theå ta choïn caùch trình baøy theo thöù töï A, B, C.
AAA – ASCII Adjust after Addition (Chænh sau khi coäng hai soá ôû
daïng ASCII):
Döõ lieäu truyeàn töø caùc thieát bò ñaàu cuoái ñeán maùy tính thöôøng ôû
daïng maõ ASCII. Khi ñaõ truyeàn ñi caùc soá ASCII roài, ñoâi khi ta muoán coäng
luoân caùc soá ñoù. Boä vi xöû lyù 8086 cho pheùp ta laøm ñieàu naøy vôùi ñieàu
kieän phaûi chænh laïi keát quaû coù trong AL baèng leäng AAA ñeå thu ñöôïc keát
quaû laø soá BCD khoâng goùi.
Caäp nhaät: AF, CF.
Khoâng xaùc ñònh: OF, PF, SF, ZF.
AAD – ASCII Adjust before Division (Chænh tröôùc khi chia hai soá ôû
daïng ASCII)
Leänh naøy ñoåi hai soá BCD khoâng goùi ôû Ah vaø Al sang soá heä hai töông
ñöông ñeå taïi AL. Vieäc naøy phaûi thöïc hieän tröôùc khi laøm pheùp chia moät soá
BCD khoâng goùi (goàm hai chöõ soá) ñeå trong AX cho moät soá BCD khoâng goùi
khaùc. Keát quaû vaø soá dö cuõng laø caùc soá BCD khoâng goùi.
Khoâng xaùc ñònh taát caû caùc côø.
AAM – ASCII Adjust after Multiplication (Chænh sau khi nhaân hai soá
daïng ASCII).
Leänh naøy duøng ñeå ñoåi moät soá heä hai, laø tích cuûa hai soá BCD khoâng
goùi, coù trong AL sang soá BCD khoâng goùi ñeå taïi AX.
Caäp nhaät: PF, SF, ZP
Khoâng xaùc ñònh: AF, CF, OF.
AAS – ASCII Adjust after Subtraction (Chænh sau khi tröø hai soá daïng
ASCII)
Leänh naøy duøng ñeå ñoåi soá heä hai, laø hieäu cuûa 2 soá BCD khoâng goùi,
coù ôû Al sang soá BCD khoâng goùi.
Caäp nhaät: AF, CF.
Khoâng xaùc ñònh: OF, PF, SF, ZF.
ADC – Add With Carry (coäng coù nhôù)
Cuù phaùp: ADC Ñích, Goác
Moâ taû: Ñích Ñích + Goác + CF
Trong ñoù toaùn haïng ñích vaø goác coù theå tìm ñöôïc theo caùc cheá ñoä ñòa
chæ khaùc nhau, nhöng phaûi chöùa döõ lieäu coù cuøng ñoä daøi vaø khoâng ñöôïc
pheùp ñoàng thôøi laø hai oâ nhôù vaø cuõng khoâng ñöôïc laø thanh ghi ñoaïn. Ñieàu