Professional Documents
Culture Documents
PE
.P
TI
T.
ED
U
.V
MC LC
Trang
1
1
1
2
3
4
4
5
7
7
10
10
10
11
ED
U
.V
PE
.P
TI
T.
2.1
14
14
15
15
15
15
15
15
16
17
18
20
21
21
25
35
36
40
43
43
44
44
48
50
54
72
ED
U
.V
.P
TI
T.
PE
56
61
62
63
64
67
72
74
74
74
78
82
82
87
87
92
92
92
93
98
99
101
101
104
106
107
110
120
120
120
120
121
130
131
131
134
134
134
136
137
138
139
ED
140
140
140
141
143
145
145
147
147
148
149
151
152
153
153
157
159
168
U
.V
173
173
173
174
175
181
181
181
189
189
191
195
195
195
196
197
198
199
200
200
201
202
203
203
204
206
210
PE
.P
TI
T.
HNG DN V P S BI TP
CC CH VIT TT
PE
.P
TI
T.
ED
212
213
214
214
214
215
225
227
229
229
232
U
.V
8.6 TRURAM
8.6.1. Khi thanh ghi ca TPU RAM.
8.6.2. Hot ng ca TPURAM
8.7 Lp trnh hp ng cho vi iu khin MC68332
8.7.1 Cc ch a ch trong chng trnh hp ng MC68332.
8.7.2 Tp lnh ca MC68332
8.7.3 Khun dng chng trnh ngun.
8.7.4 Lp trnh khi ng SIM.
8.7.5 Lp trnh nh cu hnh cho RAM ni.
8.7.6 Lp trnh cho QSM.
8.7.7 Lp trnh cho TPU.
237
246
251
1.1.
T.
ED
U
.V
Gii thiu:
Trc ht trong chng ny sinh vin cn nm c cc khi nim v b vi x l nh :
mc ch s ra i ca b vi x l, cc khi chc nng c bn ca b vi x l, nguyn tc x l
cc cng vic v bi ton ca b vi x l, lnh ca b vi x l, chng trnh m cc b vi x l
thc hin, chc nng ca phn cng v phn mm trong h thng vi x l, cc khi chc nng
phn cng trong h thng vi x l v chc nng ca chng, cc tn hiu kt ni cc khi chc
nng phn cng, phn mm pht trin ca ngn ng phn mm h thng vi x l, lnh m my,
lnh gi nh, nguyn tc hnh thnh ngn ng cp cao, cc chng trnh hp ng, cc chng
trnh ngn ng cp cao v vic thc hin cc chng trnh ny trong h thng vi x l.
Tip theo chng ny cung cp cc kin thc v b nh bn dn. Sinh vin cn nm c
nguyn tc hot ng ca b nh bn dn, s khc nhau gia cc b nh ROM v cc b nh
RAM, gia cc loi b nh ROM v gia cc loi b nh RAM, v quan trng nht l cc t chc
cc b nh trong h thng vi x l, phng php gii m a ch b nh trong cc h thng vi x
l.
Phn cui cng sinh vin cn nm c cc kin thc v vo ra, cu trc ca cc vi mch
s m, ci v nguyn tc lm vic ca chng trong cc h thng vi x l, trng thi tr khng cao
v ngha ca chng trong kt ni h thng vi x l. V cng ging nh b nh cn nm r
nguyn tc gii m a ch vo ra trong cc h thng vi x l.
PE
.P
TI
Chn hm
x l d
liu
Chn b m
cung cp d
liu
B m
B m
ED
B m
U
.V
Cc hm s c bn
B m
T.
.P
TI
PE
Cc chng trnh
phn mm
H thng mch
in t s
Cc thit b xut
nhp v chp hnh
iu khin
PE
.P
TI
T.
ED
U
.V
Chng
trnh
B
nh
CPU
I/O
Thit
b
ngoi
vi
TI
Chng trnh hp
ng
(cc lnh gi nh)
Chng trnh m
my
(tp hp cc bit 0
v 1)
H thng mch
in t s
.P
T.
ED
U
.V
T CHC B NH CA H THNG VI X L
1.2.
PE
U
.V
Gii
m a
ch
PE
A0
A1
+Vcc
.P
TI
T.
ED
A2
T3 P3 T2 P2 T1 P1 T0 P0
Multiplex
D3
D2
D1
D0
Hnh 1.5: Nguyn tc cu to ca b nh ROM.
U
.V
GN
Diode
MOS ROM
MOS ROM
PE
.P
TI
T.
ED
10
9
8
7
6
5
4
3
25
24
21
23
2
22
27
20
1
U1
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
D0
D1
D2
D3
D4
D5
D6
D7
11
12
13
15
16
17
18
19
OE
PGM
CE
VPP
2764
RL
M3
VD
RL
BL
BL
M2
U
.V
M1
M4
BL 1
PE
RWL
WWL
.P
TI
T.
ED
M1
CS
WWL
M3
BL2
M2
RWL
V DD 2 V T
X
BL 1
V DD
BL 2
V DD 2 V T
DV
M bits
S0
M bits
S0
Word 0
T bo
Nh
Word 2
A0
Word 1
A1
Word 2
A K-1
S N-2
Word N-2
S N-1
T bo
nh
Word 1
S2
Word 0
U
.V
S1
Word N-2
Word N-1
Word N-1
ED
K = log2N
Vo - Ra
( M bits)
Vo - Ra
( M bits)
T.
TI
Row Decoder
AK
Bit line
.P
2L 2 K
Word line
AK1 1
PE
AL2 1
A0
A K2 1
M.2K
Sense amplifiers / Drivers
Column decoder
Selects
word
Input-Output
(M bits)
Cc i lng c trng cho b nh l dung lng v thi gian truy xut b nh. Thi
gian truy xut b nh l khon thi gian t lc b nh nhn c a ch v cc tn hiu iu
khin cho n khi a c d liu ra tuyn d liu trong ch c v lu xong d liu vo cc
bit nh trong ch ghi. B nh c thi gian truy xut cng nh th hot ng cng nhanh.
Dung lng b nh tu thuc vo s ng d liu v s ng a ch ca n. B nh c
A ng a ch, D ng d liu s c dung lng 2A x D bit. B nh c dung lng cng ln th
cng cha c nhiu thng tin.
A 17
:
U
.V
A0
D7
:
D0
RD
WR
A 19
A 18
I1
I0
O3
256 KB
#4
CS
A 17
A 17
A0
D7
A0
D7
:
D0
RD
WR
O2
8088
Minimum
Mode
256 KB
#3
ED
D0
MEMR
MEMW
CS
A 17
:
A0
D7
T.
.P
TI
O1
O0
D0
RD
WR
256 KB
#2
CS
A 17
:
A0
D7
:
D0
RD
WR
256 KB
#1
CS
PE
1.3.
VO RA TRONG H THNG VI X L
.P
TI
T.
ED
U
.V
PE
OC
Cng m 3 trng thi
Cng ci
Vi cc cng ba trng thi, d liu s c truyn qua n khi tn hiu cho php OC trng
thi tch cc, v vy tn hiu cho php ny thng c cp t b gii m a ch, nh trn hnh
1.15 cng m 3 trng thi s m khi a ch cung co t CPU l FFFFH = 1111 1111 1111
1111B. Khi tn hiu cho php khng tch cc, ng ra ca cng m s trng thi tr khng cao,
ng vo s khng nh hng ti ng ra, nh vy BUS d liu s c ngn cch vi thit b ngoi
vi m n iu khin, lc ny CPU c th s BUS d liu lin lc vi mt thit b khc, tng
ng vi mt a ch khc.
Khc vi cng m, cng ci s gi nguyn trng thi logic ng ra ca n khi tn hiu
10
74LS244
Q0
...
D0
...
D Q
G
Q7
.P
D7
Q0
...
TI
...
OC
74LS373
T.
D0
ED
U
.V
OC
PE
Tm tt ni dung hc tp:
Trong chng ny cn nh cc khi nim:
Phn cng h thng v x l bao gm: CPU, b nh v vo ra. CPU thc hin cc chng trnh
iu khin hot ng ca ton b h thng. B nh l ni lu tr cc chng trnh, l ni
khai bo cc hng v bin trong chng trnh. Vo ra giao tip vi cc thit b bn ngoi.
11
TI
T.
ED
U
.V
.P
BI TP:
PE
EPROM (256KB)
EPROM (256KB)
EPROM (256KB)
SRAM (512KB)
SRAM (256KB)
EPROM (256KB)
SRAM (512KB)
SRAM (256KB)
EPROM (256KB)
EPROM (256KB)
SRAM (128KB)
SRAM (128KB)
SRAM (256KB)
SRAM (128KB)
SRAM (256KB)
SRAM (256KB)
SRAM (256KB)
SRAM (128KB)
SRAM (128KB)
EPROM (512KB)
EPROM (512KB)
EPROM (512KB)
12
PE
.P
TI
T.
ED
U
.V
13
TI
2.1.
T.
ED
U
.V
Gii thiu:
Ni dung chng ny trc ht gii thiu v cu trc ca b vi x l 80286 v chc nng cc
khi mch ca n nh: khi giao tip BUS (BU) tc ng mi tn hiu giao tip vi th gii
bn ngoi., khi gii m lnh (IU) thc hin chc nng to ra cc tn hiu iu khin cc khi
mch trong CPU hot ng thc hin lnh, khi EU thc hin cc lnh, khi AU to ra a ch
giao tip vi b nh v vo ra.
c th thc hin c cc chng trnh hp ng vit cho vi x l h Intel (chng 3), sinh
vin cn nh cc thanh ghi ca 80286, v cc chc nng m chng m nhn bao gm: cc thanh
ghi a nng, cc thanh ghi on, thanh ghi c trng thi v cc thanh ghi c bit. c bit ch
ti s tc ng ca cc c trng thi trong thanh ghi c.
hiu c nguyn l hot ng ca h thng vi x l cn c bit quan tm ti cc chu k
my ca CPU. Trong bn chu k my: c, ghi b nh v c ghi vo ra cn ch ti thi im
tc ng ca cc tn hiu trong h thng, v chc nng ca chng s dng lm g trong h thng.
Ngoi ra cng cn ch ti trng thi ca cc c cc thanh ghi ca 80286 sau khi khi ng
v c ch ngt ca CPU. C ch ngt c s dng rt ph bin trong cc h thng vi x l trong
cc ng dng thc t, c bit l i vi cc h thng iu khin hot ng ca my mc thit b.
Cc c ch qun l b nh o rt quan trng khi lp trnh h thng chy trong cc mi trng
a nhim, tuy nhin i vi cc chc nng ng dng nh s cha cn ch ti cc c ch ny.
Phn cui cng ca chng gii thiu v cc b vi x l th h tip theo ca 80286 vi cc
chc nng tin tin nh: b nh m, c ch pipeline, c ch siu phn lung
.P
SEGMENT
BASE
SEGMENT SEGMENT
LIMIT
SIZE
CHECK
PE
OFFSET
ADDER
ADDRESS
LATCH AND DRIVER
PHYSICAL
ADDRESS
ADDER
PROCESSOR
EXTENTION
INTERFACE
PREFETCH
BUS CONTROL
DATA
TRANSCEIVERS
6 BYTE
PREFETCH
QUEUE
BUS
UNIT (BU)
ALU
REGISTER
CONTROL
LIMIT
CHECK
INSTRUCTION
UNIT (IU)
3 DECODER INSTRUCTION
INSTRUCTION
DECODER
QUEUE
14
U
.V
TI
T.
ED
.P
PE
15
PE
.P
TI
T.
ED
U
.V
16
U
.V
Thanh ghi DX (data) l thanh ghi cha d liu cho cc lnh nhn chia 16 bit, nh trong lnh
MUL BX thanh ghi DX cha 16 phn cao ca kt qu lnh nhn. Ngoi ra thanh ghi DX cn l
thanh ghi duy nht lu tr a ch cng trong cc lnh vo ra. V d trong lnh IN CL,[DX] d
liu ti cng vo ra c a ch cha trong DX s c chuyn vo thanh ghi CL.
Thanh ghi ch s ngun SI (Source Index) v thanh ghi ch s ch DI (Destination Index), s
dng cho cc lnh x l chui d liu. V d lnh MOVSB d liu trong b nh ti a ch gi
trong SI s chuyn ti a ch gi trong DI, sau SI v DI s t ng c tng hoc gim chun
b cho ln chuyn k tip. SI v DI cn s dng lm thanh ghi a ch v a ch c s (ging nh
BX) v lm thanh ghi ch s a ch cng thm trong ch tng i ch s. V d lnh MOV
DL,[BP+SI+03] ly d liu ti nh c a ch BP+SI+03 vo thanh ghi DL.
Thanh ghi con tr c s BP (Base Pointer) gi vai tr lm thanh ghi a ch trong cc ch
truy cp b nh ging nh thanh ghi BX.
trc cc lnh PUSH
a ch cao
lastvalue
????
????
T.
????
.P
TI
????
a ch thp
ax
PUSH AX
PUSH BX
PUSH CX
????
????
lastvalue
ED
????
????
a ch cao
SP
bx
cx
SP
????
????
????
????
????
a ch thp
PE
17
D15
T.
* NT IO PL O
ED
U
.V
D0
TI
PE
.P
Cc c trng thi: Cc c trng thi tc ng theo trng thi ca kt qu cc php tnh m CPU
thc hin, cc CPU thng thng c 6 c trng thi sau:
C nh CF (Carry Flag)
C nh c s dng lm bit d tr khi kt qu cc php tnh m ALU thc hin vt ra
ngoi gii hn lu tr cho php ca thanh cha. V d khi s dng cc thanh ghi 8 bit cng
hai s 8 bit, kt qu c th l 9 bit v c C s gi bit th 9. Tng t khi cng hai s 16 bit c C
s gi bit th 17 ca kt qu.
C nh cng c thit lp mc 1 khi ALU thc hin php tr, gim hoc so snh c kt qu
m. Tc l c CF =1 khi s b tr nh hn s tr.
Ngoi ra c nh cn c s dng nh bit thm trong cc lnh quay dch, v d khi dch tri bit
MSB s b rt ra ngoi, c C s gi ly bit .
C chn l PF (Parity Flag)
C chn l c s dng thng bo s cc bit 1 trong kt qu ca php tnh logic l chn hay
l, khi PF = 1 s bit 1 trong kt qu l mt s chn. C chn l thng c s dng trong cc
chng trnh truyn cc d liu ni tip, trng thi ca c c th c pht ra bn thu c th
kim tra xem d liu nhn c ng hay sai. Ch l c chn l khng tc ng khi ALU thc
hin cc php tnh s hc.
C du SF ( Sign Flag)
Trong h thng vi x l c hai cch biu din mt s: Cch th nht n dng tt c cc bit
ca mt thanh ghi biu din mt s dng. V d mt thanh ghi 8 bit c th biu din cc s
thp phn dng t 1 ti 255. Cch th hai CPU s dng bit trng s cao nht lm bit du. V
18
PE
.P
TI
T.
ED
U
.V
19
TI
T.
ED
U
.V
C nh hng c th thit lp bng lnh STD v xo bng lnh CLD hoc x l thng qua
ngn xp bng cch ct thanh ghi c vo ngn xp, x l bit DF trong ngn xp sau lt tr li
thanh ghi c.
C ngt IF : (Interrupt Flag)
C ngt c thit lp =1 bng lnh STI (Set Interrupt ) v xa bng lnh CLI(Clear
Interrupt). Khi c ngt=1 cho php CPU ghi nhn tn hiu yu cu ngt t ng vo INTR, v thc
hin chng trnh ngt. Khi c ngt =0, mc d c tn hiu yu cu, chng trnh ngt s khng
c thc hin. Vi cc yu cu ngt khng che NMI (Non-Mask able Interrupt) c ngt khng
c ngha.
C by TF: (Trap Flag)
C by ch c th thay i gi tr thng qua ngn xp, khi c by bng 1, CPU hot ng
ch chy tng bc g ri sa sai chng trnh. C th l khi CPU thc hin xong mt lnh
n chuyn qua chng trnh con gim st (Monitor), TF c t ng ct vo ngn xp v TF
c xo v 0, cc lnh ca chng trnh con gim st s c thc hin. Chng trnh con gim
st c thc hin bi ngi s dng kim tra li kt qu ca lnh va thc hin cc nh,
cc thanh ghi, cc c. Khi kt thc chng trnh con gim st, thanh ghi c c phc hi, TF li
bng 1, iu khin c quay v lnh tip theo ca chng trnh chnh. V sau khi thc hin xong
lnh ny, chng trnh con gim st li tip tc c thc hin.
C nhim v lng nhau NT (Nested Tast)
NT cho bit lnh ang thc hin tin trin trong cng mt nhim v hay s gy ra vic chuyn
nhim v. NT ch c dng trong ch bo v ca Intel 80286.
C ch th mc c quyn vo ra (IOPL)
Hai bit ny ch th mc c quyn thp nht m tc nhim ang thc hin cn c c php
thc hin cc lnh vo ra. Hai bit ny cng ch c s dng trong ch bo v.
PE
.P
D0
TS EM MP PE
Hnh 2.6: Cu to thanh ghi trng thi my MSW.
20
82086
ED
82288
S0
S1
82284
DEN
DT/R
ALE
TI
RES
CLK
RESET
READY
MRDC
MWTC
IORC
IOWC
T.
S0
S1
Vcc
U
.V
INTA
CLK
Latch
ADDRESS BUS
DIR
G
DATA BUS
.P
A0-A23
PE
D0-D15
Transceiver
WE OE
MEMORY
WR RD
I/O
Trong qu trnh lm vic BUS h thng ca 80286 lun c 4 trng thi sau:
- Ti (Idle)
: Trng thi khng tch cc.
- Ts (Status)
: Trng thi sinh ra tn hiu xc nh chu k BUS.
- Tc (Command) : Trng thi thc hin lnh.
- Th (hold)
: Trng thi treo BUS.
Chu k my c d liu ca 80286 c th chia lm 6 pha A, B, C, D, E, F (hnh 2.8).
21
U
.V
S0
S1
15
16
11
6
PCLK
EFI
ARDY
AY EN
SRDY
SY EN
S0
S1
CLK
D0
D1
D2
D3
D4
D5
D6
D7
D8
D9
D10
D11
D12
D13
D14
D15
READY
CLK
RESET
37
2
1
38
36
39
CLK286
S0
S1
80287
HLDA
PEACK
CKM
PEACK
27
28
34
33
29
31
COD/INTA 3
S0
S1
M/IO
READY
CLK
NPRD
NPWR
NPS1
NPS2
CMD0
CMD1
COD/INTA
READY
CLK
RESET
5
4
67
68
59
57
S0
S1
M/IO
LOCK
NMI
INTR
ERROR
BUSY
PEREQ
23
22
21
20
19
18
17
16
15
14
12
11
8
7
6
5
D0
D1
D2
D3
D4
D5
D6
D7
D8
D9
D10
D11
D12
D13
D14
D15
26
25
24
ERROR
BUSY
PEREQ
ERROR
BUSY
PEREQ
PEACK
COD/INTA
53
54
61
6
66
52
HOLD
HLDA
ERROR
BUSY
PEREQ
PEACK
COD/INTA
CAP
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14
A15
A16
A17
A18
A19
A20
A21
A22
A23
BHE
D0
D1
D2
D3
D4
D5
D6
D7
D8
D9
D10
D11
D12
D13
D14
D15
80286
34
33
32
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
8
7
AA0
AA1
AA2
AA3
AA4
AA5
AA6
AA7
AA8
AA9
AA10
AA11
AA12
AA13
AA14
AA15
AA16
AA17
AA18
AA19
AA20
AA21
AA22
AA23
BHE
36
38
40
42
44
46
48
50
37
39
41
43
45
47
49
51
DD0
DD1
DD2
DD3
DD4
DD5
DD6
DD7
DD8
DD9
DD10
DD11
DD12
DD13
DD14
DD15
3
4
7
8
13
14
17
18
GND
ALE
1
11
1
2
15
14
7
6
SO
S1
M/IO
READY
CLK
82288
INTA
IORC
IOWC
MRDC
MWTC
DT/R
CEN/AEN
CENL
CMDLY
MB
DEN
ALE
MCE
13
12
11
8
9
INTA
IORC
IOWC
MRDC
MWTC
17
DT/R
16
5
4
DEN
ALE
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
2
5
6
9
12
15
16
19
A0
A1
A2
A3
A4
A5
A6
A7
2
5
6
9
12
15
16
19
A8
A9
A10
A11
A12
A13
A14
A15
2
5
6
9
12
15
16
19
A16
A17
A18
A19
A20
A21
A22
A23
OC
G
U6 74LS373
AA8
AA9
AA10
AA11
AA12
AA13
AA14
AA15
3
4
7
8
13
14
17
18
GND
ALE
1
11
AA16
AA17
AA18
AA19
AA20
AA21
AA22
AA23
3
4
7
8
13
14
17
18
GND
ALE
1
11
DD0
DD1
DD2
DD3
DD4
DD5
DD6
DD7
2
3
4
5
6
7
8
9
DEN
DT/R
19
1
D0
D1
D2
D3
D4
D5
D6
D7
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
OC
G
U7 74LS373
U4
19
3
18
D0
D1
D2
D3
D4
D5
D6
D7
D0
D1
D2
D3
D4
D5
D6
D7
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
OC
G
U9
74LS245
A1
A2
A3
A4
A5
A6
A7
A8
B1
B2
B3
B4
B5
B6
B7
B8
18
17
16
15
14
13
12
11
D0
D1
D2
D3
D4
D5
D6
D7
18
17
16
15
14
13
12
11
D8
D9
D10
D11
D12
D13
D14
D15
PE
S0
S1
40
32
35
M/IO
READY
CLK
RESET
S0
S1
13
64
65
RES
F/C
U3
63
31
29
T.
X2
READY
CLK
RESET
TI
5
1
17
2
3
READY
CLK
RESET
4
10
12
.P
U1
READY
CLK
RESET
X1
U5 74LS373
AA0
AA1
AA2
AA3
AA4
AA5
AA6
AA7
G
DIR
U10 74LS245
82284
U2
7
ED
Pha F (1 ca TS thuc chu k tip theo): chu k c kt thc cc tn hiu MRDC-, DT/Rtr v trng thi khng tch cc, b iu khin BUS 82284 a tn hiu READY- tr v
mc cao.
DD8
DD9
DD10
DD11
DD12
DD13
DD14
DD15
2
3
4
5
6
7
8
9
BHE
DT/R
19
1
A1
A2
A3
A4
A5
A6
A7
A8
B1
B2
B3
B4
B5
B6
B7
B8
G
DIR
22
PE
.P
TI
T.
ED
U
.V
23
PE
.P
TI
T.
ED
U
.V
24
ED
U
.V
PE
.P
TI
T.
2.3.2.2. Qun l b nh o
Khng gian b nh trong ch a ch o c dung lng ln hn dung lng b nh thc rt
nhiu. thc hin chc nng qun l o CPU s dng cc c cu c bit l phn n ca cc
thanh ghi qun l.
Khi qun l b nh ca 80286 thc hin vic chuyn cc gi tr a ch o (a ch logic)
thnh cc a ch thc cho b nh vt l. Nguyn tc c bn ca ch a ch o l phng thc
to ra cc mng nh, mi mng nh bao gm cc nh lin tip nhau c dung lng khng vt
qu 64KB v mng nh ny c th trao i thng tin gia b nh bn dn v b nh ngoi.
Mi mng nh c xc nh bng ba tham s: a ch c s, kch thc (dung lng) mng
nh v c quyn thm nhp vo mng nh. Mi mng nh c cu trc nh trn hnh 2.11. Nhim
v ca trong phng thc qun l a ch o c hiu l vic thc hin mt tp hp cc tin trnh
gn vi mt trng thi xc nh ca b vi x l.
Khng gian nh lun gn vi nhim v, cc khng gian nh dnh ring cho mt nhim v
c gi l khng gian nh cc b. Khng gian nh m tt c cc nhim v u c th thm nhp
c gi l khng gian nh ton cc, nguyn l ny c biu din trn hnh 2.12.
Mt a ch logic trong chng trnh chy trn vi x l 80286 gm c hai thnh phn: b chn
mng 16 bit v mt Offset 16 bit, 32 bit a ch ny s c ngha khc trong ch a ch thc
v ch bo v (hnh 2.13). Trong ch a ch thc, b chn mng cn gi l thanh ghi on
(Segment), trong ch bo v b chn mng s c ngha nh sau: hai bit thp dng th hin
mc c quyn ca cc yu cu (RPL Requested Privelege Level). Bit k tip l b ch th mng
(TI Table Indicator) c s dng xc nh loi khng gian nh, TI = 1 khng gian nh l
ton cc, TI = 0 khng gian nh l cc b. Mi ba bit cao cn li dng xc nh mng nh, n
s ch th c 213 = 8192 mng nh ton cc v 213 = 8912 mng nh cc b. Nh vu b chn
mng ch th c 214 = 16384 mng nh khc nhau.
25
PE
.P
TI
T.
ED
U
.V
26
PE
.P
TI
T.
ED
U
.V
27
PE
.P
TI
T.
ED
U
.V
B m t mng d liu: s dng quy chiu ti mng d liu v mng ngn xp c cu trc
nh hnh 2.15. Tm byte ca b m t ny cha cc thng tin v mng nh: a ch c s, dung
lng v quyn thm nhp vo mng. Hai byte u s dng cho cc b vi x l th h sau, nn
vi 80286 cn phi np gi tr 0 vo hai byte ny khi khi ng.
Byte cha quyn thm nhp bao gm cc bit sau:
Bit P (Present): Ch th mng d liu m b m t quy chiu ti nm trong b nh hay
cha, nu P = 0 mng d liu c np vo b nh, nu P = 0 mng d liu cha c np vo
b nh. Khi chng trnh truy cp ti mt mng d liu cha c np vo b nh s gy ra
ngoi l 11 hoc 12. Chng trnh x l cc ngoi l ny s np mng d liu cn truy cp t cc
a vo b nh.
Bit DPL (Descriptor Privilege Level): Cho bit mc c quyn ca mng d liu m b m
t quy chiu ti.
28
T.
ED
U
.V
PE
.P
TI
29
PE
.P
TI
T.
ED
U
.V
B m t mng h thng: s dng quy chiu ti cc mng cha thng tin cn cho h thng
nh m t trn hnh 2.17.
Nu kiu = 1, th b m t quy chiu ti mng cha trng thai1 ca nhim v TSS (Task State
Segment). Nhim v ny khng trng thi thc hin. Nu kiu = 3, b m t quy chiu ti mng
TSS ca mt nhim v ang hot ng. Nu kiu = 2, b m t quy chiu mng cha bng ca
cc b m t cc b.
Thng tin trong bng cc b m t bao gm thng tin trong GDT v LDT. Trong GDT cha
cc b m t mng tng ng vi tt c cc mng nh trong khng gian nh ton cc, cn trong
LDT cha cc b m t bng nh trong khng gian nh cc b ca nhim v.
Mi bng cc b m t cng chnh l mt mng nh c nh ngha bng mt b m t mng
c bit, thuc nhm b m t mng h thng.
30
T.
ED
U
.V
PE
.P
TI
C ch thm nhp vo mt mng nh thng qua cng giao tip c m t trn hnh 2.20.
31
ED
U
.V
PE
.P
TI
T.
Nh vy, thng qua cc thanh ghi mng, 80286 c th bit c tt c cc tnh cht ca mng
nh ang s dng, 80286 s dng ni dung ca thanh ghi ny cng 16 bit a ch Offset ca a
ch logic th6m nhp vo bn trong mng, trnh phi tm kim trong cc bng b nh.
32
.P
TI
T.
ED
U
.V
PE
2.3.2.4. Bo v b nh trong ch a ch o
Vic bo v b nh thc hin cc chc nng sau: Cc ly chng trnh h thng v chng
trnh ng dng, cc l gia cc nhim v v kim tra thi im thm nhp vo i tng.
B vi x l 80286 c 4 mc c quyn nh m t trn hnh 2.24, trong mc 0 l mc c
quyn cao nht v mc 3 l mc c quyn thp nht, mi mng s c phn b mt mc c
quyn nht nh.
Chng trnh bao gm cc mng lnh v cc mng d liu, mc c quyn phn b cho
chng trnh, cho bit chng trnh c quyn lm nhng g khi n c thc hin trong mt
nhim v. Mc c quyn ca mt nhim v thay i theo thi gian v ph thuc vo mc c
quyn ca chng trnh ang chy.
Ht nhn bao gm cc chng trnh qun l cc ti nguyn ca b vi x l v b nh. Ht
nhn phi gn, c kh nng vn hnh tt, khng b hng do phn mm ca cc mc c quyn
thp hn.
33
U
.V
PE
.P
TI
T.
ED
Mc 1 cha tt c cc min lin quan n nhim v qun l h iu hnh nh: thit lp u tin
gia cc nhim v, np thut ton trao i v qun l cc cng vo ra.
Mc 2 bao gm cc chc nng qun l cc tp tin, qun l th vin, l cc ghp ni mm
cho cc chng trnh ng dng.
Mc 3 dnh cho cc chng trnh ng dng.
Nguyn tc bo v b nh i hi mi i tng (mng) nh phi c b m t cho bit mc
c quyn ca i tng . DPL (Descriptor Privilege Level) c m ho bng 2 bit D5D6 ca
byte quyn thm nhp ca bng m t mng. i vi tt c cc b m t mng, chnh l mc
c quyn ca mng. CPL (current privilege level) l mc c quyn ang thc hin ti thi im
cho trc, chnh l cc bit CPL ca b chn mng lnh ang chy. RPT (Requested Privilege
Level) l mc c quyn yu cu c m ho trong hai bit D0D1 ca b chn.
Quy tc n gin ca qu trnh bo v b nh l:
RPT = DPL (DPL thuc b m t c nh ngha bi b chn).
EDL (Effective Privilege Level) l s cc i trong hai s CDL v RPL.
Chng trnh ang thc hin c th thm nhp mt cch t do vo cc mng lnh v cc mng
d liu cng mc c quyn vi chng trnh . Khi iu khin vt ra ngoi mc c quyn
ca chng trnh ang chy th phi tun theo cc quy tc ring.
Chng trnh ang chy ch c th thm nhp vo cc mng c mc c quyn bng hay thp
hn mc mc c quyn ca n, ngha l: CPL <= DPL.
Php kim tra mc c quyn s xy ra khi b np c chn, v d sau khi thc hin lnh
MOV DS,AX; vi AX cha b chn ca mng d liu. Quy tc thm nhp vo mng d liu c
m t trn hnh 2.25a.
Quy tc c bn gi mt mng lnh bng lnh CALL hoc bng lnh JMP l: CPL = DPL,
trong DPL thuc mng lnh ch (hnh 2.25b). Thng qua ca giao dch c th thm nhp vo
mng lnh c mc c quyn cao hn mc ang thc hin, tc l: CPL >= DPL vi DPL thuc
mng lnh ch. Nu bt c mt s xm nhp ny tri vi quy tc trn u sinh ra mt ngoi l
ca CPU.
Cc lnh c quyn ch c th thc hin mc c quyn 0 (CPL = 0). Cc lnh c quyn bao
gm:
34
T.
ED
U
.V
PE
.P
TI
Sau khi khi ng, cc trng thi ca b vi x l c xc lp theo bng di. Ngoi ra c cc
tc ng sau:
- Tn hiu INTR b che.
- B vi x l c chuyn v ch thc, khng lm vic vi b ng x l (PE=0; EM=0;
MP=0).
- Bng cc vector ngt s thit lp li a ch 000000.
- DS, ES, SS c khi ng cho php thm nhp vo 64 KB u tin ca b nh.
35
CPU
B iu khin
ngt
Cc yu cu
ngt
ED
U
.V
INTA
INTR
Hnh 2.27: Cung cp cc yu cu ngt cho CPU thng qua b iu khin ngt.
PE
.P
TI
T.
iu khin cc thit b, CPU phi thc hin cc lnh truyn d liu vi cc thit b qua
cng vo ra. Tuy nhin, phn ln cc thit b khng phi lc no cng sn sng truyn d liu vi
CPU, v d my in s khng nhn tip c cc d liu t CPU nu cc d liu n nhn trc
cha c in ht. V vy, trc khi truyn d liu CPU cn thc hin cc lnh kim tra trng
thi sn sng ca thit b. Khi h thng iu khin nhiu thit b, chng trnh iu khin c th
tun t kim tra tng thit b v truyn d liu vi cc thit b sn sng bng mt vng lp,
phng php iu khin thit b nh vy c gi l phng php qut vng.
Vi phng php qut vng, CPU ng vai tr ch ng, n i qut thng xuyn cc thit b
xem c cn phc v hay khng. Gii php ny s lm lng ph thi gian ca CPU khi cc thit b
khng c nhu cu phc v thng xuyn, m CPU vn phi thc hin chng trnh kim tra. C
mt gii php vo ra khc trnh c nhc im trn, l c ch ngt. Trong gii php ny cc
thit b c yu cu phc v s nhc chng CPU bng cch cung cp tn hiu yu cu ti CPU khi
n c yu cu phc v, lc ny CPU s tm ngng cng vic ang thc hin phc v thit b,
khi thit b c phc v xong CPU s quay v vi cng vic m n ang thc hin d dang.
Hu ht cc h vi x l u cho php ngng chng trnh bnh thng ang thc hin
chuyn qua mt chng trnh ti v tr c bit, bng mt s tn hiu cung cp t bn ngoi,
hoc mt s lnh c bit trong chng trnh. Vic chuyn iu khin ny ging nh c ch gi
chng trnh con, hot ng c chuyn t chng trnh chnh qua chng trnh con phc v
cho ngt.
Thng thng cc CPU c hai tn hiu nhn cc tn hiu yu cu ngt l: ngt khng che
(NMI - Non Mask able Interrupt), v ngt c th che c bng phn mm (INT - Interrupt). Tn
hiu yu cu ngt NMI c u tin cao hn INT, v khi nhn c tn hiu NMI th CPU bt
buc phi chuyn iu khin qua chng trnh ngt. Cn khi nhn c tn hiu INT th CPU cn
i xt c ngt, nu c ngt c lp n s chuyn iu khin qua chng trnh ngt, cn nu
c ngt cha c lp th yu cu ngt s khng c phc v. C ngt c th c lp hay xa
36
U
.V
PUSH FLAGS
CLEAR IF
CLEAR TF
PUSH CS
PUSH IP
Nhy ti chng
trnh ngt
ED
bng lnh hp ng trong chng trnh, vi cc cng vic quan trng khng cho php tm ngng
chng ta c th cm ngt bng lnh xo c ngt u chng trnh.
phc v ngt c nhiu thit b, trong cc h thng vi x l thng s dng b iu
khin ngt. Cc tn hiu yu cu s c a ti b iu khin ngt v ty theo th t u tin s
gi ti CPU nh hnh 2.27.
Nu ch c mt yu cu ngt n s c chuyn ngay ti CPU, nu c nhiu yu cu ngt
xy ra ng thi th yu cu no c u tin cao hn s c b iu khin ngt gi ti CPU
phc v trc. u tin s c lp trnh khi khi ng b iu khin ngt.
T.
POP IP
POP CS
POP FLAGS
TI
PE
.P
37
03FFH
03FCH
T.
ED
U
.V
thc hin lnh gi xa ti chng trnh phc v ngt. Lnh IRET ti cui chng trnh phc v
ngt s chuyn iu khin quay v chng trnh chnh.
Nh bit khi thc hin lnh gi xa 80286 s lp gi tr mi cho thanh ghi on CS v thanh
ghi con tr lnh IP. thc hin vic gi xa gin tip, 8086 ly gi tr mi cho CS v IP t 4
nh. Tng t nh vy khi p ng ngt 80286 cng ly a ch chng trnh ngt t 4 nh
lin tip. Trong h thng 80286, 1KB b nh t a ch 00000H ti a ch 003FFH c dnh
ring cha cc a ch ca cc chng trnh ngt c gi l bng vector ngt, hay bng con
tr ngt. Mi a ch s cha trong 4 nh, nn bng ny s cha c a ch ca 256 chng
trnh ngt. Hnh 2.29 trnh by bng vector ngt. Ch l gi tr np cho thanh ghi con tr lnh
(IP) lun t ti a ch thp, cn cho thanh ghi on lnh (CS) nm a ch cao. Mi t kp cho
mt vector ngt c nhn dng bng mt s trong khong t 0 ti 255. N c gi l s hiu
ngt hay s kiu ngt.
Trong bng 5 vector ngt u tin dnh cho cc ngt c bit, cc vector t 5 ti 31 d phng
cho cc th h vi x l sau ca Intel, cc vector t 32 ti 255 c s dng cho cc ngt cng
v cc ngt mm. Do mi vector ngt gm 4 byte, v th 80286 s xc nh a ch ca cc vector
ngt trong bng bng cch nhn s hiu ngt vi 4. Ngi s dng cng c th thay th a ch
chng trnh ca mnh vo bng vector ngt, lc ny mi ln xy ra ngt iu khin s c
chuyn ti chng trnh ca ngi s dng thay v chuyn ti chng trnh phc v ngt c.
TI
084H
080H
.P
27 vector ngt
d phng
PE
014H
5 vector
ngt dnh
ring
010H
008H
38
PE
.P
TI
T.
ED
U
.V
39
ED
U
.V
T.
2.4. CC B VI X L CA INTEL
PE
.P
TI
40
PE
.P
TI
T.
ED
U
.V
41
PE
.P
TI
T.
ED
U
.V
BI TP:
Bi 1: Mt nh c a ch vt l l 4B26DH hy cho bit:
a) a ch offset ca n nu a ch Segment l 4032H.
b) a ch Segment ca n nu a ch offset l 122AH.
Bi 2: Cho bit a ch logic ca nh l BA00H:D1AFH.
a) Hy cho bit a ch vt l ca nh ny.
b) Hy cho 5 v d v cc a ch logic khc cng truy cp ti nh vt l nu trn.
Bi 3: Cho bit gi tr trong cc thanh ghi SS = 3000H, SP = 8434H. Hy cho bit a ch vt l
ca nh ngn xp.
Bi 4: Trong ch a ch thc 80286 s phi thay i gi tr trong cc thanh ghi no khi cn
chuyn iu khin chng trnh t a ch:
a) 10500H ti 10000H.
b) 20901H ti 29A00H.
c) 40000H ti A0000H.
Bi 5: Trnh by cc c ch chuyn iu khin chng trnh trong 80286.
Bi 6: V sao khi c thanh ghi cha, di m lnh ca CPU s c rt ngn?
Bi 7: V sao khi s dng b gii m lnh chng trnh s tit kim c dung lng b nh cho
cc chng trnh?
Bi 8: Nu vector ngt l 07 th a ch ca chng trnh ngt nm ti u trong bng vector ngt.
Bi 9: Cho bit khi no th c nh bng 1, hay cho hai v d c th.
Bi 10: Cho bit khi no th c c Zero bng 1, cho v d c th v lnh cng lm c Zero bng 1.
Bi 11: Cho bit khi no th c chn l bng 1, cho v d c th.
Bi 12: Cho bit khi no th c ph bng 1, cho v d c th.
Bi 13: Cho bit khi no th c trn bng 1, cho v d c th.
Bi 14: Cho bit khi no th c du bng 1, cho v d c th.
Bi 15: Cho bit trong trng hp no s dng thanh ghi gi a ch b nh s c li hn, v c
li hn nh th no?
Bi 16: Cho bit trong trng hp no s dng ch a ch tng i (BX+d) c li hn. Ti
sao?
Bi 17: Quay v t chng trnh con thng thng khc quay v t mt chng trnh ngt nh th
no?
Bi 18: Ti sao phi s dng thm thanh ghi DX gi kt qu trong cc lnh nhn chia 16 bit
42
TI
T.
ED
U
.V
Gii thiu:
Trong chng ny trc ht sinh vin cn nm c cc ch th trong chng trnh hp ng,
cch khai bo cc hng v bin trong chng trnh hp ng, khung ca mt chng trnh hp ng.
y l cc ni dung ht sc cn thit c th thc hin c mt chng trnh hp ng chy
trn my tnh.
Tip theo cn hc thuc tn v hot ng ca cc lnh hp ng h intel, khi cng nh nhiu
lnh vic thc hin cc chng trnh hp ng s cng d dng hn. Do tp lnh kh di do cn
chia thnh cc nhm v ch ti cc lnh thng s dng trc. V d dng hn trong vic
vit cc lnh hp ng nn tm hiu v cc ch a ch s dng cho chng.
c cc giao tip gia ngi s dng v chng trnh khi chy chng trn my vi tnh cn
phi ch ti mt s hm vo ra trong ngt 21H ca DOS. Nh chc nng v cch gi cc hm
01, 02 v 09 ca ngt 21H.
Tip theo trong chng ny cn quan tm ti vic lp trnh chuyn i m, vic chuyn i
ny c ngha quan trng trong cc h thng vi x l, sinh vin cn nm r v cc loi m s
dng trong vi x l v hnh thc lu tr chng trong b nh. V d mt con s trong h thng vi
x l c th lu tr di cc dng nh: nh phn, BCD, ASCII, m LED 7 on, cn ch ti gii
thut chuyn i gia cc dng m ny.
Cui cng l phng php lp trnh iu khin thit b ngoi vi, yu t quan trng nht ca
cc chng trnh ny l cc lnh IN v OUT.
.P
3.1. CU TRC CA HP NG
PE
43
U
.V
chng trnh hp ng l nhanh nht, dung lng b nh s dng l t nht, do gim thiu c
cc bin trung gian ngoi b nh, v vy n thch hp cho cc h thng yu cu tc x l cao.
hp dch cc chng trnh hp ng trn my tnh, u tin cc chng trnh cn c son
tho bao gm cc lnh gi nh di dng vn bn, bng bt k mt phn mm son tho vn bn
no, tt nhin chng phi theo ng c php qui nh ca chng trnh hp dch. Sau tp tin
vn bn ny s c dch v lin kt bng cc chng trnh chuyn dng to ra cc tp tin nh
phn c th thc hin trn my vi tnh, hoc np vo b nh cho cc h thng vi x l khc.
Thng thng mi h vi x l c t nht mt chng trnh hp dch, cc chng trnh hp
dch khc nhau cng thng c qui nh c php khc nhau. V d cc vi x l h Zilog c phn
mm dch v lin kt l M80 v L80, h Intel c MASM, LINK v EXEC2BIN ca Microsoft v
TASM, TLINK ca Borland, h vi iu khin 8051 c M51, L51 v OH. Tuy c qui nh c
php khc nhau, nhng cu trc cc hng lnh v khung chng trnh cng tng i ging nhau,
cc li khi son tho s c thng bo khi hp dch hoc c th tm thy trong phn tr gip ca
chng trnh. Sau y chng ta s xem xt v cc son tho v cu trc ca mt chng trnh hp
ng vit cho cc chng trnh hp dch h Intel TASM v TLINK.
TI
T.
ED
PE
.P
3.1.2. Cc ch dn trong hp ng
Cc ch dn (directive) trong chng trnh hp ng cn c gi l cc lnh gi hp ng,
chng ch c chc nng thng bo cho trnh hp dch m khng to ra lnh m my vi x l
thc hin. Cc ch dn trong hp ng bao gm 4 phn:
[Tn] [Tn ch dn] [ton hng] [;ch thch]
Mi phn s c ngn cch nhau bng 1 hoc nhiu k t ngn cch.
Phn [Tn] c t bi ngi s dng, chng s khng c bt u bng k t s thp
phn, khng cha k t ngn cch v khng c trng vi cc t kho hp ng.
Phn [Tn ch dn] c quy nh trong trnh hp dch, cc ch dn thng c s dng
khai bo hng, bin, chng trnh con, cc on b nh, kt thc chng trnh
Ton hng c th l mt tn tng trng, mt hng, mt bin, mt biu thc tu thuc vo
tng ch dn c th.
Tu theo cc trnh bin dch s c cc ch th hp ng khc nhau, sau y l mt s ch th hp
ng thng dng ca cc trnh bin dch MASM v TASM. Ch c mt s ch th khng s dng
c cho c hai trnh bin dch.
Nhm ch th gn tn tng trng: EQU (Equal) v =.
EQU c chc nng gn cho [Tn] mt on vn bn hay mt gi tr. V d:
Table EQU [BX] [SI]
;gn mt ton hng
F10
EQU 68
;gn mt hng s
44
PE
.P
TI
T.
ED
U
.V
Count EQU CX
;gn mt ton hng
Move EQU MOV
;gn mt t kho
X
EQU count
;gn cho mt tn khc
RT
EQU <run time> ;gn mt chui k t
A
EQU 5*9/4
;gn mt biu thc.
Ch dn EQU khng to ra mt lnh m my, nn n c th t bt k u trong chng
trnh nhm mang li cc tn c trng d nh hn, hoc gn hn cho cc gi tr hay cc chui k
t s dng trong chng trnh
Ch dn = s dng gn gi tr cho mt tn c trng, ging nh chc nng gn gi tr ca
EQU, tuy nhin n c th gn li gi tr nhiu ln.
Dong = 10
MOV AL,Dong
Dong = 30
Nhm khai bo d liu: (Data definition directive).
Cc ch dn khai bo bin trong hp ng bao gm:
DB (define byte) : nh ngha bin kiu byte
DW (define word): nh ngha bin kiu t (hai byte)
DD (define double word): nh ngha bin t kp (4 byte)
DT (define ten byte): nh ngha bin 10 byte.
Cc bin c th gn gi tr khi ng hoc khng.
V d dng lnh: X1 DB 4 khai bo mt bin byte c tn l X1 v gi tr khi ng l 4.
Nu du ? thay vo v tr ca s 4 th bin X1 s c dnh ch trong b nh, nhng khi chng
trnh bt u hot ng n s c gi tr bt k do khng c gn gi tr khi ng. Khai bo hon
ton tng t cho cc loi bin kiu khc.
Bin mng
Bin mng hnh thnh t mt dy lin tip cc phn t cng kiu (byte, t ), s nh s
c dnh ra tng ng vi s phn t ca dy.
V d dng lnh: A1 DB 3,5,6,7,8
Khai bo mt bin mng c tn l A1 c gi tr khi ng l 3,5,6,7,8. Phn t u trong
mng l 3 c a ch trng vi A1, phn t th hai s c a ch k tip
Khi mun khi ng cc phn t ca mng vi cng mt gi tr c th s dng ton t DUP
trong lnh.
V d dng lnh A2 DB 100 DUP (0) s khai bo bin mng c mt trm phn t u c
gi tr khi ng bng 0. Khi th s 0 bng du ? th mt trm phn t ca mng s khng c
gn trc gi tr khi ng.
Cng c th khai bo mt bin mng theo kiu hn hp bao gm nhiu ton t DUP.
V d dng lnh: M DB 1,2, 2 DUP (8), 3 DUP (4), 9
S hon ton tng ng vi dng lnh: M DB 1,2,8,8,4,4,4,9
Ch trong mt s vi x l (nh ca Intel), nu c mt t trong b nh th byte thp s nm
a ch thp, byte cao nm a ch cao, cn mt s vi x l khc (Motorola) li c cch ct d
liu theo th t ngc li.
Bin kiu xu k t
Bin kiu xu k t l trng hp c bit ca bin mng, trong cc phn t ca mng l
cc k t. Mt xu k t c th nh ngha bng cc k t hoc bng m ASCII tng ng ca
45
PE
.P
TI
T.
ED
U
.V
chng. Cc dng lnh sau cng nh ngha mt xu k t nhng gn cho chng cc tn khai bo
cho chng khc nhau:
STR1
DB 'string'
STR2
DB 73h, 74h, 72h, 69h, 6Eh, 67h
STR3
DB 73h, 74h, 'r', 'i', 'n', 67h
Bin con tr
Bin con tr l bin dng cha a ch trong b nh ca mt bin khc, bin con tr NEAR
ch cha a ch Offset, bin FAR cha c a ch Segment v a ch Offset. V d:
NearNext DW next ;gn a ch offset ca bin next vo bin NearNext
FarNext DD
next ;gn a ch segment v offset vo bin FarNext.
Bin nhn
khai bo bin nhn s dng ch th Label, bin nhn c s dng c khi mun truy cp
ti cng mt vng nh nhng vi cc kiu d liu khc nhau. V d c mt mng d liu c
th truy cp bng c 3 kiu d liu Byte, Word v Doubleword c th vit:
Warray
LABEL word
Darray
LABEL dword
Barray
LABEL 100 dup (?)
Vy cng vi mt vng nh c th truy cp bng 3 tn warray nu xem n bao gm 50 t,
darray nu xem vng nh ny bao gm 25 t kp, hoc barray bao gm 100 byte.
Nhm ch th khai bo cc on
C th khai bo cc on lnh, d liu, ngn xp c th khai bo bng cc ch dn: .Code,
.Data; .Stack.
Cng c th khai bo cc on bng cc ch th SEGMENT v ENDS theo c php:
Tn
SEGMENT
[align type] [combine type] [class]
Name ENDS
Phn [Tn] nh ngha tn ca cc on, cc tham s sau SEGMENT ch c tc dng khi
chng trnh khai bo nhiu on. C th khai bo nhiu on cng tn.
[Align type] xc nh v tr u ca mng trong b nh: byte - bt u ti v tr bt k; word bt u ti cc a ch chn; para - bt u ti cc a chia ht cho 16; page - bt u ti cc a ch
chia ht cho 256. Khi khng c mc nh s l Para.
[Combine type] quy nh cch lin kt cc on c cng tn: Public ghp tt c cc cc on
cng tn thnh mt on. Stack ghp cc on cng tn thnh on c thanh ghi SS gi a ch
on. on ngn xp phi c khai bo theo kin STACK. Commond Ghp cc on cng tn
thnh mt on, vi di on bng di ln nht ca tt c cc on. At address Cc nhn
v cc bin khai bo trong on u c a ch on do address quy nh. Nu khng khai bo
[combine type] cc on cng tn s khng lin kt nhau. Mi on s c mt a ch on ring.
[Class] xc nh th t cc on khi c np ln b nh, cc mng s c np ln b nh
theo th t tng dn ca tn class.
Ch th khai bo qui m s dng b nh
Dung lng b nh dnh cho on m lnh v on d liu c xc nh nh lnh gi
'.MODEL', lnh ny phi lun t trc tt c cc lnh khc trong chng trnh.
C php lnh: .MODEL Kiu kch thc b nh
C nhiu kiu kch thc b nh cho cc chng trnh vi i hi dung lng b nh khc
nhau. Vi ngi mi lp trnh thng thng cc on m lnh v d liu u khng vt qu
46
Huge ( s)
M t
U
.V
PE
.P
TI
T.
ED
Name ENDP
Khi [type] l near th chng trnh con ch c th c gi trong cng mt on cha chng
trnh con . Cn khi type l far, chng trnh con c th c gi t mt on khc vi on
cha chng trnh con .
Nhm ch th tham chiu bn ngoi
i vi cc chng trnh ln, thng thng c vit thnh nhiu phn (module) nh, mi
phn c th nm tch ri trn mt file ngun khc nhau. Mi file ngun s c hp dch sang file
i tng (object) tng ng, sau s lin kt (LINK) cc tp tin i tng thnh mt
chng trnh duy nht cung cp cho h vi x l. cc khai bo tn bin, nhn hay tn tng
trng khai bo trong file ny c th s dng c trong mt file khc, th chng cn phi khai bo
bng ch th PUBLIC vi c php.
PUBLIC name [,name]
Vi name l tn bin, nhn hoc tn tng trng.
Khi mt file mun s dng cc tn bin, nhn hoc tn tng trng c khai bo bng ch
th PUBLIC trong mt file khc cn phi s dng ch th EXTRN vi c php:
EXTRN name: type [,name:type]
Vi name l tn bin, nhn hoc tn tng trng c khai bo trong ch th PUBLIC. Khi
name l mt bin th type c th l mt byte, word hoc dword. Khi name l mt nhn hay mt
chng trnh con th type c th l near hoc far. Nu name l mt hng th type phi l ABS.
Khi mun c ton b mt file ngun vo mt file khc khi bin dch c th s dng ch th
INCLUDE filename. Vi filename l tn file ngun mun chn.
Ch th iu khin
Ch th END kt thc mt chng trnh ngun vi c php:
47
ED
U
.V
PE
.P
TI
T.
48
PE
.P
TI
T.
ED
U
.V
49
U
.V
.Model Tiny
.Code
Org 100H
Start: Jmp Begin
; Cc nh ngha cho bin hng v cc chng trnh con ti y
Begin:
Main Proc
; Cc lnh ca chng trnh chnh ti y
INT 20H ; tr v DOS
Main Endp
; Cc chng trnh con c th ti phn ny
End Start
PE
.P
TI
T.
ED
Mt chng trnh .COM cng c np vo b nh sau vng PSP nh chng trnh .EXE.
Ngn xp ca chng trnh .COM s t ti cui on 64K dnh cho n, tc l nh ngn xp khi
chng trnh bt u thc hin s l FFFEH.
Chng trnh .COM s b cc hn ch gy ra bi dung lng cc i dnh cho ton b chng
trnh gi gn trong on 64KB, nn chng ch s dng cho cc ng dng khng ln lm. Mt
khc chng trnh cng ch c s dng mt ngn xp c dung lng hn ch, nu c qu nhiu
d liu c np vo ngn xp s lm mt cc m lnh ca chng trnh.
Cch to v thc hin mt chng trnh hp ng trn my vi tnh
My vi tnh PC l to v thc hin cc chng trnh hp ng cho h Intel. Cc bc thc
hin cng vic ny nh sau:
- Dng cc phn mm son tho vn bn (SK, NC) son tho cc chng trnh ngun
c mc nh c ui .ASM.
- Dng cc chng trnh hp dch MASM hoc TASM dch tp tin ngun .ASM ra dng m
my c ui .OBJ. Cc dng lnh di du nhc DOS nh sau:
Vi MASM: C:\MASM filename.ASM
Vi TASM: C:\TASM filename.ASM
- Dch v lin kt cc tp tin .OBJ thnh tp tin c th chy c:
Vi MASM dng LINK lin kt cc tp tin .OBJ to ra chng trnh .EXE, nu chng
trnh ngun vit di dng dch ra .EXE th tp tin ny c th thc hin c. Nu vit di dng
.COM th cn phi s dng EXE2BIN dch ra tp tin .COM mi c th chy c.
Vi TASM dng TLINK lin kt v to ra tp tin chy .EXE, nu vit di dng .COM phi
dng dng lnh TLINK/t to ra tp tin .COM.
50
OPERAND
Byte 1
ED
U
.V
Byte 2
Disp1
T.
1 0 0 0 1 0
Opcode
D W mod REG
Byte 3
Byte 4
Disp2
M/R
Direct high
TI
Direct low
PE
.P
M ho
51
000
011
001
010
100
111
101
110
01
11
00
10
U
.V
AL
BL
CL
DL
AH
BH
CH
DH
AX
BX
CX
Dx
SP
DI
BP
SI
CS
DS
ES
SS
ED
Bit D dng m ho hng truyn ca d liu trong lnh, D=1 d liu s c chuyn ti
thanh m ho bi 3 bit REG trong lnh, D=0 d liu s chuyn t thanh ghi m ho bi REG i.
Hai bit mod v 3 bit M/R (memory/register) s dng cho vic ch th cho ch a ch cho
ton hng cn li ca lnh. Ch a ch l cch ch th v tr ca d liu sau c m t trong
mc k tip. Bng sau s trnh by cch m ho ca cc ch a ch trong mt lnh.
Mod
00
[BX]+[SI] + d8
[BX]+[DI] + d8
[BP]+[SI] + d8
[BP]+[DI] + d8
[SI] + d8
[DI] + d8
[BP] + d8
[Bx] + d8
.P
TI
[BX]+[SI]
[BX]+[DI]
[BP]+[SI]
[BP]+[DI]
[SI]
[DI]
d16, direct
[BX]
000
001
010
011
100
101
110
111
01
10
T.
M/R
[BX]+[SI] + d16
[BX]+[DI] + d16
[BP]+[SI] + d16
[BP]+[DI] + d16
[SI] + d16
[DI] + d16
[BP] + d16
[Bx] + d16
11
W=0
AL
CL
DL
BL
AH
CH
DH
BH
W=1
AX
CX
DX
BX
SP
BP
SI
DI
PE
1 0 0 0 1 0 1 0 0 0 0 0 1 1 1 1
Opcode
CL
[BX]
Chuyn 1 byte
52
PE
.P
TI
T.
ED
U
.V
phn cng ngay t khi ch to. Cng mt nguyn tc nh v a ch, cc hng ch to CPU c th
t cc tn gi khc nhau. Sau y l cc ch a ch thng dng ca cc b vi x l :
Ch tc thi (immediate addressing mode)
Trong ch ny ton hng l mt hng s c m ha ngay trong lnh. Ton hng tc thi
ch c th l ton hng ngun.
V d : MOV CL,100H ; chuyn gi tr 100H vo thanh ghi CL
MOV [BX],10H ; chuyn 10H vo nh c a ch logic DS:BX.
Ch trc tip (direct)
Trong ch ny ton hng l a ch ca nh cha d liu cn x l trong lnh. Ton hng
cn li trong lnh ch c th l thanh ghi, khng th cng ng thi l nh. Trong 8088, ton
hng trc tip s l a ch lch (offset) ca d liu.
V d : MOV AL,[1000H] ;Chuyn ni dung nh DS:1000H vo AL
MOV [2009H],CX ;Chuyn ni dung CX vo hai nh lin tip
;DS:2009H v DS:200AH.
Ch trc tip thanh ghi (direct register)
Trong ch ny cc thanh ghi bn trong CPU c s dng cha d liu cn x l trong
lnh. V th cc lnh ny c tc thc hin nhanh hn nhiu so vi cc lnh s dng cc ton
hng ngoi b nh.
V d : MOV BX,DX ; chuyn gi tr t DX qua BX.
ADD BL,CL
; cng gi tr ca BL vi gi tr trong CL.
Ch gin tip thanh ghi (indirect register)
Ch ny s dng cc thanh ghi gi a ch ca nh cha d liu cn x l trong lnh,
ton hng cn li trong lnh phi l mt thanh ghi.
V d : MOV AH,[BX] ; chuyn ni dung nh c a ch DS:BX vo AH.
MOV [SI],CL ; chuyn gi tr ca CL vo nh c a ch DS:SI.
Trong h 8088/8086 ch c cc thanh ghi BX, BP, SI, DI c th s dng lm cc ton hng
gin tip thanh ghi.
Ch a ch ch s (index)
Trong ch ny a ch ca ton hng c tnh bng tng s gia 1 thanh ghi 16 bit v gi
tr di (displacement values). Phng php ch nh a ch ny rt c li khi truy cp cc bng
s liu, lc ny cc lnh truy cp ch cn cung cp gi tr di trong m lnh ca n.
Vi h Intel ch c cc thanh ghi BX, BP, SI v DI c th s dng trong ch a ch ny.
a ch on ty theo tng lnh c th nm trong cc thanh ghi DS hoc ES.
V d : MOV CX,[BX]+10
;chuyn ni dung hai nh lin tip bt u
;ti a ch DS:(BX+10) vo CX.
MOV CX,[BX+10] ; 1 cch vit khc ca lnh trn.
MOV CX,10 [BX]
; 1 cch vit khc ca lnh trn.
Ch tng i ch s
Trong ch ny a ch nh cha ton hng c ch nh bng tng ca hai thanh ghi v
mt s di. Ch ny rt tin dng trong vic a ch ho cho cc mng hai chiu.
Trong 8088, chng ta c tt c 4 cch vit ton hng trong ch a ch ny bao gm:
[BX]+[DI]+Disp ; [BX]+[SI]+Disp ; [BP]+[DI]+Disp ; [BP]+[SI]+Disp.
Ch tng i
Trong vi x l thng thng ch ny c s dng trong cc lnh nhy. Khi a ch cn
chuyn iu khin ti sau lnh nhy s c tnh bng khong cch t v tr lnh nhy ti v tr
cn chuyn iu khin n.
53
T.
ED
U
.V
.P
TI
PE
Reg
Reg
Reg
Mem
Mem
Seg.Reg
Seg.Reg
Source
Reg
Mem
Imm
Reg
Imm
Reg16
Mem16
V d
MOV AH,BH
MOV CL,[1000H]
MOV DH,10
MOV Table,BX
MOV X1,25H
MOV DS,AX
MOV ES,X2
54
Reg
Reg
Reg
U
.V
AX
Mem
Reg
Source
Dest
PE
.P
TI
T.
ED
55
U
.V
Ton hng ch trong lnh cng c th l mt ton hng b nh hoc mt thanh ghi. Phc hi
thanh ghi c t nh ngn xp s dng lnh POPF.
- Thc hin: Ly d liu t nh ngn xp ra ton hng ch v tng gi tr ca SP ln mt
lng tng ng vi s byte cha c trong ton hng ch.
9. Cc lnh truy cp cng
Lnh nhp (input):
IN Acc,Port
IN Acc,[DX]
Lnh xut (output):
OUT Port,Acc
OUT [DX],Acc
Vi: Port l a ch cng vo ra truy xut d liu.
[DX] l ton hng gin tip thanh ghi cha a ch cng.
Acc l thanh ghi cha (AX nu truy xut t, AL nu truy xut byte).
TI
T.
ED
Reg
Mem
Reg
Imm
Imm
V d
ADD AX,BX
ADD BX,VAR
ADD SUM,DX
ADD CL,09
ADD SUM,10
PE
.P
Reg
Reg
Mem
Reg
Mem
Source
56
PE
.P
TI
T.
ED
U
.V
c kt qu ng, cc ton hng s dng trong lnh cng trc DAA phi dng thp
phn nn v kt qu phi nm trong thanh ghi AL.
Chnh ASCII cho lnh cng (ASCII Adjust for Add)
- C php: AAA
- Thc hin: iu chnh li gi tr ASCII cho lnh cng ngay pha trc. c kt qu
ng, cc ton hng ca lnh cng phi di dng m ASCII.
2. Cc lnh tr (Subtract)
Hon ton tng t vi cc lnh cng, 8088 c cc lnh tr tng ng.
Tr :
SUB Dest,Source
Tr c nh : SBB Dest,Source
Gim:
DEC Dest
Ly b 2:
NEG Dest
Chnh thp phn cho php tr : DAS
Chnh ASCII cho php tr :
AAS
3. Cc lnh nhn (multiply)
Lnh nhn.
- C php: MUL Source
- Thc hin: AX AL * Source8 ; khi ton hng ngun 8 bit
DX AX AX * Source16 ; khi ton hng ngun 16 bit
Lnh nhn s nguyn c du:
- C php: IMUL Source
- Thc hin: tng t nh lnh nhn thng nhng vi cc s nguyn, kt qu s l mt s
nguyn.
Ngoi ra cn c cc lnh nhn s nguyn c du khc nh:
IMUL Reg,Imm
; Reg16 Reg16 * Imm
IMUL Reg,Source,Imm8 ; Reg16 Source16 * Imm8
Lnh chnh ASCII cho php nhn.
- C php: AAM
- Lnh ny ch thc hin ng cho php nhn s BCD nn 8 bit kt qu trong AL.
4. Cc lnh chia (Division)
Tng t nh cc lnh nhn, 8088 c cc lnh chia nh sau:
Chia: DIV Source
Vi Source 8 bit, s b chia trong AX thng s trong AL, s d trong AH.
Vi Source 16 bit, s b chia trong DX AX, thng cha trong AX, s d cha trong DX.
Chia s nguyn c du: IDIV Source
Chnh ASCII cho php chia: AAD
5. Cc lnh logic
Cc lnh logic thc hin vi cc ton hng 8 v 16 bit vi vic thc hin php logic tng bit
tng ng trong hai ton hng. Cc lnh logic bao gm:
AND Dest,Source
OR Dest,Source
XOR Dest,Source
NOT Dest
Cc ton hng s dng trong cc lnh logic trn bao gm:
57
Reg
Reg
Mem
Reg
Mem
Source
CF
Dn
T.
ED
U
.V
Ring lnh NOT ch c mt ton hng ch, ton hng ny c th l mt thanh ghi hoc mt
nh.
6. Cc lnh quay dch d liu
Trong cc lnh quay, dch ton hng ch (Dest) l b nh hoc thanh ghi s quay hoc dch
cc bit i s ln ch th bng s m (Count) ch th trong lnh. S m count ch c th bng 1
hoc cha trong CL.
Dch tri logic (Shift Logic Left).
- C php: SHL Dest,Count
- Thc hin: cc bit ca ton hng ch s c dch v pha tri count ln, sau mi ln dch
bit th i s thay th bit th (i+1), bit c trng s cao nht s c dch ra c nh (CF), v bit c
trong s thp nht s c thay th bng s 0. Php dch tri logic c th biu din trn hnh 3.4.
D0
TI
.P
PE
CF
Dn
D0
58
CF
Dn
D0
Reg
Reg
Reg
Mem
Source
Reg
Mem
Imm
Imm
T.
Dest
ED
U
.V
PE
.P
TI
59
PE
.P
TI
T.
ED
U
.V
SI SI 2
DI DI 2
Qut chui theo byte (Scan String Byte): Xc nh k t ch nh trc trong chui
- C php: SCASB
- Thc hin: AL - [DS*10H + DI]
DI DI 1
Qut chui theo t (Scan String Word)
- C php: SCASW
- Thc hin: AX - [DS*10H + DI]
DI DI 2
Np chui theo byte (Load String Byte)
- C php: LODSB
- Thc hin: AL [DS*10H + SI]
SI SI 1
Np chui theo t (Load String Word)
- C php: LODSW
- Thc hin: AX [DS*10H + SI]
SI SI 2
Lu chui theo byte (Store String Byte)
- C php: STOSB
- Thc hin: [ES*10H + DI] AL
DI DI 1
Lu chui theo t (Store String Word)
- C php: STOSW
- Thc hin: [ES*10H + DI] AX
DI DI 2
Cc lnh lp chui: Cc lnh lp chui thc hin cc lnh v chui, nhng lp li CX ln,
hoc cho n khi tho mn iu kin. Cc lnh ny bao gm:
- Cc lnh:
REP MOVSB
REP MOVSW
REP STOSB
REP STOSW ; cc lnh ny c lp li cho n khi CX = 0
- Cc lnh:
REPE CMPS hoc REPZ CMPS
REPE SCAS hoc REPZ SCAS
Lp li cho n khi ZF = 1 hoc CX = 0.
- Cc lnh:
REPNE CMPS hoc REPNZ CMPS
REPNE SCAS hoc REPNZ SCAS
Lp li cho n khi ZF = 0 hoc CX = 0.
60
PE
.P
TI
T.
ED
U
.V
61
PE
3.3.
.P
TI
T.
ED
U
.V
- G: ln hn (Great than).
- LE: nh hn hoc bng.
- GE: ln hn hoc bng.
- NLE: khng nh hn hoc bng.
- NGE: khng ln hn hoc bng.
Vi cc iu kin trn 8088 c cc lnh nhy c iu kin sau:
JB Nhn; JNAE Nhn; JC Nhn; JAE Nhn; JNB Nhn; JNC Nhn; JBE nhn; JNA Nhn;
JNBE nhn; JA Nhn; JE Nhn; JZ Nhn; JNE Nhn; JNZ Nhn; JS Nhn; JNS Nhn; JO Nhn;
JNP Nhn; JP Nhn; JPE Nhn; JNP Nhn; JPO Nhn; JCXZ Nhn; JL Nhn; JNGE Nhn; JG
Nhn; JNLE Nhn; JLE Nhn; JNG Nhn; JGE Nhn; JNL Nhn.
3. Cc lnh cho chng trnh con
Cc lnh gi chng trnh con
- C php: CALL tc_t.
- Cc tc t trong lnh tng t nh trong lnh nhy khng iu kin bao gm: Near
Proc; Far Proc; Mem16; Reg16; Mem32.
- Thc hin: ct gi tr CS v IP vo nh ngn xp (trong cc lnh gi xa, trong cc lnh
gi gn ch ct IP vo ngn xp), v chuyn iu khin chng trnh ti nhn ch th bi tc
t trong lnh.
Cc lnh tr v t chng trnh con (Return)
RET ; a ch quay v t chng trnh con c ly ti nh ngn xp.
RET Disp16; a ch quay v t chng trnh con c ly ti v tr c a ch bng nh ngn
xp cng vi s di ch th bi ton hng Disp16 trong lnh.
4. Cc lnh vng lp
LOOP Short Label; gim CX i 1 v nhy tng i ti v tr xc nh bi Short Label
nu CX0 . Nu CX = 0 lnh k tip trong chng trnh s c thc hin.
LOOPE hoc LOOPZ Short Label; gim CX i 1 v chuyn iu khin chng trnh
nu CX 0 v ZF 0.
LOOPNE hoc LOOPNZ Short Label; gim CX i 1 v chuyn iu khin chng trnh
nu CX 0 v ZF = 0.
Mt s ngt ca DOS
Khi lp trnh bng hp ng trn cc my vi tnh IBM PC, n gin c th s dng cc
chng trnh iu khin thit b sn c ca BIOS v DOS. t nht trc ht cng cn chp nhn
cc th tc c sn ny s dng c cc thit b giao tip c bn vi my tnh nh bn phm,
mn hnh trong bc u lp trnh. Cn khi c y cc kin thc v hp ng, cng nh v
cu trc phn cng my tnh chng ta hon ton c th thc hin cc chng trnh iu khin cc
thit b bng cc lnh gi nh cn bn trong tp lnh, hoc vit cc chng trnh iu khin thit
b cho cc h thng phn cng ca ring mnh.
BIOS (Base Input Output System) l chng trnh trong b nh ROM, n s c thc hin
trc tin ngay khi khi ng my. BIOS s kim tra cc thit b c bn trong h thng sau n
chuyn iu khin cho h iu hnh. H iu hnh thng dng khi my tnh mi ra i l DOS
(Disk Operation System). Trong DOS v BIOS c cc chng trnh con vit sn cho vic iu
khin cc thit b. s dng chng trong chng trnh hp ng chng ta dng li gi ngt mm
62
PE
.P
TI
T.
ED
U
.V
(INT) km theo s hiu ngt. Cc s hiu ngt c qui nh sn cho cc thit b, mi ngt s c
cc qui nh khc nhau v cc bin vo v ra khi thc hin. Sau y l m t v mt s ngt
thng s dng trong chng trnh hp ng.
- Ngt 20H dnh ring kt thc chng trnh loi .COM. Hm ny ra lnh cho h iu hnh
kt thc chng trnh ang chy v chuyn iu khin v cho chng trnh gi.
- Ngt 21H:
Hm 01H: c mt k t t bn phm
Mt k t s c c vo t bn phm v hin ln mn hnh. Nu ti thi im gi hm cha
c k t sn sng, th hm s i cho ti khi c phm c nhn.
Vo: AH = 01
Ra: AL cha m ASCII ca phm nhn
Khi nhn c cc k t c m m rng AL = 0. Lc ny c th gi hm mt ln na c
c m m rng.
Khi k t vo l Ctrl C (m ASCII l 3) ngt 23H s c gi tr iu khin v DOS.
Ngoi AL, ni dung cc thanh ghi khc khng b thay i sau khi gi hm.
V d khi gi hm ny c th vit:
MOV AH,02
INT 21H
Hm 02H: Hin mt k t ln mn hnh.
Hm ny cho php hin mt k t ln mn hnh
Vo: AH = 02
DL cha m ASCII ca k t cn hin th.
Ra: khng.
Tt c cc thanh ghi khng b thay i sau khi gi hm, cc m c bit nh Backspace (xo
k t trc), Carriage Return (v u hng) v Line Feed (xung hng) s c ghi trn mn hnh
di dng lnh.
Hm 09: Hin chui k t ln mn hnh.
Vo: AH = 09
DX cha a ch offset ca chui cn hin th.
Ra:khng
Chui k t cn t trong b nh di dng mt chui cc byte ASCII, kt thc l k t $
(m ASCII l 36). Cc m c bit nh Backspace (xo k t trc), Carriage Return (v u
hng) v Line Feed (xung hng) s c ghi trn mn hnh di dng lnh. Ch c AL b thay
i sau khi gi hm.
Hm 4CH: kt thc chng trnh loi .EXE.
Hm ny kt thc chng trnh v truyn v mt m li, chng trnh gi c th nhn c
m li ny bng cch gi hm 4DH, b nh RAM cho chng trnh chim s c gii phng.
63
ED
U
.V
.Model Tiny
.Code
Start: Jmp begin
St DB A1B2C3D4E5F6G7H8I9
Begin:
Mov es,0b800H ;ES gi a ch segment ca vng nh ch.
Mov di,0
;DI gi a ch offset ca vng nh ch.
Lea si,St
;SI gi a ch offset ca chui d liu ngun, DS gi a ch segment.
Std
;lp c nh hng DF chuyn d liu theo chiu a ch tng
Mov cx,20
;chuyn 20 k t
LoopMove:
Movsb
;chuyn mt byte d liu, tng cc thanh ghi SI v DI.
Loop LoopMove ;lp li cho n khi chuyn ht CX k t.
Int 20h
End start
PE
.P
TI
T.
64
PE
.P
TI
T.
ED
U
.V
65
ED
U
.V
;nu l k t ch A- F th tr i 37H
;ct m hex ca k t vo bin MaHex
;dch 8 ln hin th 8 bit
T.
PE
.P
TI
Ret
ASCII endp
BINATY proc near
Mov ah,09
Lea dx,Tb3
Mov al,MaAscii
Cmp al,39H
Ja CHU
Sub al,30H
Jmp BIN
CHU: Sub al,37H
BIN: Mov MaHex,al
Mov cx,8
DICH: Shl al,1
Jc bit1
Mov dl,30H
Call Hien
Jmp Lap
Bit1: Mov dl,31H
Call Hien
Lap: Loop DICH
Ret
BINARY endp
DECIMAL proc near
Mov ah,09
Lea dx,tb4
Int 21H
Mov al,MaHex
Div 10
Add al,30H
Mov dl,al
Call Hien
Add ah,30H
Mov dl,ah
Call Hien
Ret
LED7 proc near
Mov ah,09
Lea dx,Tb5
Int 21H
Mov al,MaHex
Lea dx,LedTable
Xlat
Mov MaLed,al
Shr al,4
Call Hex_Ascii
66
;hin th ln mn hnh
ED
U
.V
T.
PE
.P
TI
67
;C C = 0 tm c phm
;cha c bit bng 0 th tng DL
;c bn phm
U
.V
;so snh vi 0
;nh hn 0 th thot
;so snh vi s 7
;ln hn 7 th thot
;DX gi a ch cng iu khin Led
;BX gi a ch u bng SoHien
;ly m s tng ng vi phm nhn
;Ly m Led vo AL
;ly b bit m led tng ng vi phm nhn cc bit khc khng i
;ct m led mi
ED
Mov ah,01
Int 21h
Cmp al,30h
Jb thoat
Cmp al,37h
Ja thoat
Mov dx,378h
Lea bx,SoHien
Xlat
Mov ah,MaLed
Xor al,ah
Mov MaLed,al
Out 378h,al
ret
Thoat:
Begin:
.P
TI
LED:
T.
Cmp al,0fh
Je KhongCoPhim
Mov dl,0
Dich:
Shr al,1
Jnc CoPhim
Inc dl
Jmp Dich
CoPhim: add dl,30H
Mov ah,02
Int 21h
KhongCoPhim:Ret
Call Phim
Call LED
Int 20h
End Start
PE
Tm tt ni dung chng:
Chng trnh ngun hp ng c thc hin di dng cc tp tin vn bn trn my tnh,
chuyn thnh chng trnh c th thc hin c trn cc h thng vi x l cn phi c
cc chng trnh hp dch. C rt nhiu chng trnh hp dch c th s dng cho cc
chng trnh vit cho h vi x l Intel nh: MASM, LINK, TASM. TLINK hay c mt s
chng trnh cho php son tho v chy m phng nh EMU86.
Thnh phn ca mt cu lnh c th bao gm: Nhn, lnh, cc ton hng v li ch gii.
Cc lnh vit trong chng trnh ngun c th l cc lnh b vi x l thc hin, nhng
cng c th l cc lnh ch dn cho qu trnh hp dch gi l ch th hp ng. Mt s ch
th hp ng quan trng thng c s dng nh: DB, DW, DD hoc DT s dng cho
vic khai bo cc bin ca chng trnh, EQU khai bo cc hng s. Cc ch th .data,
.stack, .code s dng khai bo cc on b nh.
68
ED
U
.V
C th thc hin chng trnh hp ng vi nhiu khun dng chng trnh khc nhau khi
bin dch ra hai dng chng trnh .COM v .EXE.
Tp lnh ca vi x l 80286 chia thnh cc nhm: cc lnh di chuyn d liu, cc lnh s
hc logic, cc lnh iu khin chng trnh v cc lnh x l chui.
Cc lnh di chuyn d liu bao gm: MOV, XCHG, XLAT, LEA, LDS, LES, PUSH,
POP, IN, OUT.
Cc lnh s hc v logic bao gm cc nhm: Cc lnh s hc, cc lnh logic v cc
lnh quay dch.
- Lnh s hc bao gm: cc lnh nhm cng: ADD, ADC, INC, DAA, AAA. Cc lnh
nhm tr: SUB, SBB, DEC, DAS, AAS, NEG v CMP. Cc lnh nhm nhn: MUL,
IMUL, AAM. Cc lnh nhm chia: DIV, IDIV, AAD.
- Cc lnh logic bao gm: AND, OR, XOR, NOT.
- Cc lnh quay dch bao gm: SHL, SHR, SAL, SAR, ROL, ROR, RCL, RCR.
Cc lnh iu khin bao gm cc lnh nhy, cc lnh chng trnh con, cc lnh ngt.
Cc lnh nhy bao gm nhy khng iu kin JMP, v cc lnh r nhnh: JA, JE, JB,
JNA, JNB, JNE, JG, JL, JNG, JNL, JC, JNC, JZ, JNZ, JPO, JPE, JS, JNS, JO, JNO.
Cc lnh chng trnh con bao gm lnh gi chng trnh con CALL v lnh quay v
t chng trnh con RET.
Cc lnh ngt gm gi ngt INT v quay v t chng trnh ngt IRET.
T.
BI TP:
PE
.P
TI
Bi 1: Bit ni dung thanh ghi DS = 4000H, hy cho bit a chi vt l m 8088 s truy cp khi
thc hin lnh MOV AL,[3897H].
Bi 2: Bit ni dung thanh ghi DS = 7000H, hy vit dng lnh 8088 thc hin vic sao chp
d liu ca thanh ghi DL vo nh c a ch vt l 74B2CH.
Bi 3: Hy cho bit ch a ch v m t hot ng ca 8088 khi thc hin cc lnh sau:
a) MOV AX,[BX]
b) MOV CX,[1234H]
c) SUB AX,DX
d) XOR CL,BH
e) AND AH,CH
f) SHL DX,CL
g) DEC BP
h) POP DS
i) MOV BX,6783H
k) LEA CX,[BX+DI]
l) NEG AH
m) PUSH AX
n) XLAT
o) XCHG DX,CX
p) ROR BL,1
q) MUL CX
r) DIV CL
s) MOVSB
t) JAE N1
u) CALL L1
Bi 4: Vit cc lnh hp ng thc hin cc cng vic sau:
a) Np s 3654H vo thanh ghi BP.
b) Sao chp ni dung thanh ghi BP ti thanh ghi SP.
c) Sao chp ni dung thanh ghi AX ti nh c a ch offset = 9876H.
d) Tng ni dung thanh ghi CX ln 1.
e) Cng 07H vi DL.
f) Lp bit MSB ca AX ln 1 nhng khng lm nh hng ti cc bit khc.
69
PE
.P
TI
T.
ED
U
.V
70
PE
.P
TI
T.
ED
U
.V
Bi 14: Vit chng trnh nhp t bn phm mt chui k t, hin th trn dng tip theo di
dng ch in hoa.
Bi 15: Vit chng trnh nhp vo t bn phm hai chui k t (cc chui kt thc bng phm
ENTER), sau hin th trn dng tip theo cc k t cng xut hin trong c hai chui
trn.
Bi 16:Vit chng trnh nhp t bn phm mt chui k t bt k kt thc bng phm ENTER,
sau hin th m ASCII ca cc k t nhp trn dng tip theo. V d nhp 0 hin
30H, nhp A hin 41H
Bi 17: Vit chng trnh hin cc s t nhin t 1 ti 99.
Bi 18: Vit chng trnh nhp t bn phm mt s HEXA c 3 ch s, hin th trn dng tip
theo gi tr thp phn ca n.
Bi 19: Vit chng trnh gii phng trnh bc nht ax+b=c, vi a, b, c l cc s nguyn c mt
ch s.
Bi 20:Vit chng trnh nhp vo t bn phm mt lnh gi nh ca vi iu khin 8051, hin th
lnh m my ca n trn dng tip theo.
Bi 21: Vit chng trnh nhp t bn phm mt chui k t, sau hin th chng di dng
ch tri t tri qua phi.
Bi 22: Vit chng trnh tnh tng 100 s t nhin u tin.
Bi 23 : Vit chng trnh nhp t bn phm mt k t, sau hin th n di dng ma trn 5 ct
8 hng bng cc du *.
Bi 24: Vit chng trnh tnh c s chung ln nht ca hai s thp phn (c nhiu nht hai ch
s nhp t bn phm.
Bi 25: Vit chng trnh nhp v hin th mt chui k t dng u tin ca mn hnh, sau
cho cc ch ri theo chiu dc xung hng cui cng ca mn hnh nu ch c nhp
li t bn phm (ch to tr mt thng thy c ch ri).
Bi 26: Vit chng trnh hin th k t theo ng cho trn mn hnh.
Bi 27: Vit chng trnh hin th tt c cc s nguyn t c hai ch s.
Bi 28: Vit chng trnh hin th bng cu chng.
Bi 29: Vit chng trnh nhp t bn phm s nh phn 8 bit, hin th trn dng tip theo dng
HEXA ca n.
Bi 30: Vit chng trnh hin th b m thp phn 3 ch s trn mn hnh, bt u gi tr ca b
m l 000. Khi nhn phm T gi tr b m tng ln, khi nhn phm G gi tr ca b
m gim i.
Bi 31: Vit chng trnh nhp t bn phm mt s thp phn c mt ch s, hin th m LED 7
on cathode chung tng ng ca n trn dng tip theo.
71
TI
4.1.
T.
ED
U
.V
Gii thiu:
Trc ht chng ny gii thiu v trnh t thit k cc h thng vi x l chuyn dng, y l
ci nhn tng qut nht v cc bc thc hin mt h thng vi x l chuyn dng ng dng
trong thc t.
V t chc phn cng h thng vi x l cn ch n cc kha cnh la chn b vi x l,
la chn dung lng nh v loi vi mch nh, la chn cc vi mch vo ra thch hp v kh nng
pht trin ca h thng. Cng vic ny rt quan trng trong thc t, v nu la chn mt cu hnh
qu mnh so vi yu cu s tng gi thnh h thng, nu la chn cu hnh yu s khng p ng
c yu cu. V phn cng sinh vin cng cn c bit ch ti cc nguyn tc kt ni h thng
phn cng, kt ni gia CPU v cc vi mch nh, kt ni gia CPU v cc vi mch vo ra, m
bo sao cho h thng khng b xung t BUS d liu khi CPU thc hin cc chu k my truy xut
b nh v vo ra. V quan trng nht trong vic kt ni phn cng cho mt h thng vi x l l
vic gii m a ch cho cc vi mch nh v vi mch vo ra trong h thng.
V vic xy dng phn mm cho h thng vi x l, th cng vic quan trng trc tin l phi
bit chia nhim v cn thc hin ca h thng thnh cc nhim v nh, sau phi bit bin i
cc nhim v ny thnh cc gii thut lp trnh. Cn ch v cc cu trc gii thut lp trnh c
bn, nht l cc cu trc la chn v cc cu trc lp.
PE
.P
72
PE
.P
TI
T.
ED
U
.V
73
T.
ED
U
.V
4.2.1. La chn b vi x l
Vic la chn b vi x l da vo cc yu t sau:
- Tc x l ca h thng: i vi cc h thng thc hin nhiu chc nng hoc cc h
thng yu cu hot ng vi tc cao th tc ca CPU ng vi tr quan trng. Khi
cn tnh ton tc x l yu cu la chn CPU thch hp vi gi thnh thp nht.
- ln Bus d liu: ln Bus d liu ca CPU tu thuc vo cc thit b ngoi vi m h
thng cn s dng, ngoi ra ln Bus d liu ca CPU cng quyt nh ti tc hot
ng ca h thng.
- Cc cng c pht trin cho b vi x l: y l yu t ch yu tc ng ti thi gian
thc hin h thng. Khi c cc cng c h tr vic dch, g ri sa sai, m phng hot
ng, thi gian thc hin phn mm h thng s nhanh chng hn rt nhiu. C cc cc
CPU c c cc phn mm t ng to ra cc m lnh cho cc tnh nng thng dng. Trong
thc t cc CPU c cc cng c h tr mnh thng c la chn s dng nhiu hn.
- Ngoi ra yu t thng dng trn th trng cng cn phi xem xt n khi thit k h
thng vi x l.
PE
.P
TI
74
A23-A0
A23 - A0
D15 - D0
Kt ni BUS
h thng
80286
MRDC
MWTC
ED
U
.V
B nh
RD
WR
T.
TI
A 23 - A 0
.P
23 - A 0
D 15 - D 0
Kt ni BUS
h thng
80286
PE
B nh
MRDC
RD
MWTC
WR
CS
75
PE
.P
TI
T.
ED
U
.V
Khi mt chip nh chim ton b dung lng nh ca h thng khi s khng cn gii m
a ch b nh, b nh c th lun c chn (CS =0) nh hnh 4.2. Ton b dung lng nh t
a ch 000000H FFFFFFH.
Khi ch s dng mt chip nh nhng vi dung lng mt na (223 = 8MB), h thng cng
khng cn phi gii m a ch, b nh c th lun c chn (CS =0), BUS h thng cung cp
ti b nh cc a ch t A0 A22, ng A23 c th b trng. Khi h thng c gi l gii
m thiu cc a ch t 000000H ti 7FFFFFH, s trng vi cc a ch 800000H FFFFFFH,
mt nh s c hai a ch, v d a ch 000000H trng vi a ch 800000H.
Khi h thng s dng 2 chip nh 8MB, cc tn hiu A0 A22 c ni ti c hai chip nh,
khi A23 b trng v nu cc chip nh lun c chn, khi nu CPU cung cp mt a ch
truy cp b nh s c ng thi 2 nh trn 2 chip nh ng thi c truy cp, BUS d liu s
b xung t khi trng thi mt bit t 2 nh khc nhau. BUS d liu khng b xung t, vi
mt a ch CPU cung cp ch c mt trong hai b nh c php hot ng, vic ny c th thc
hin bng mt cng NOT nh trn hnh 4.3. i vi mi b nh a ch s c tnh t 000000H
7FFFFFH, cn i vi CPU cc a ch 000000H 7FFFFFH c A23 = 0 l ca b nh trn,
cn cc a 800000H FFFFFFH c A23 = 1 l ca b nh pha di. Vic s dng cc mch s
chn mt trong cc b nh ca h thng c gi l gii m a ch b nh. Khi h thng s
dng nhiu chip nh chng ta cng cn mt mch gii m cho php mt trong cc chip nh
hot ng ng vi mt a chi m CPU cung cp. Hnh 4.4 m t vic gii m a ch cho h
thng 80286 s dng dung lng nh 1MB vi 4 chip nh s dng IC gii m a ch 2 4.
76
PE
.P
TI
T.
ED
U
.V
77
ED
U
.V
T.
Hnh 4.5. Gii m a ch ring cho tng chip nh bng cng logic.
PE
.P
TI
a ch cng
MRDC
MWTC
Chn cng ch c
78
A
B
C
A0
A1
A2
Y0
ED
A0
A1
A2
U
.V
Vic gii m a ch vo ra, cng tng t nh gii m a ch cho b nh. Nhng khc vi
cc b nh (thng thng c b nh ROM ch c, b nh RAM c th c ghi c, rt t khi c
b nh ch ghi), cn cc thit b vo ra th rt nhiu thit b ch c hoc ch ghi d liu. Nn
ngoi cc kiu gii m cho php va c va ghi d liu, c th s dng thm cc tn hiu MRDC
v WRTC gii m cho cc cng vo ra ch c hoc ch ghi, khi s tng thm khng gian
a ch cho cc thit b ngoi vi (v cng mt a ch c th s dng cho hai thit b, mt ch c
v mt ch ghi).
Cc b gii m vo ra chn mt a ch nht nh no trong h thng c th thc hin bng
cc cng logic c bn. Hnh 4.6 m t cc b gii m dng cng NAND. Trong hnh v, cng vo
ra s c chn khi tt c cc a ch cung cp ti cng NAND mc 1, c cc a ch khc c
th s dng thm cc cng NOT o trng thi cc tn hiu a ch thch hp trc khi a vo
NAND.
A
B
C
Y0
A3 A7
A3 A7
G2A
IO/M
G1
Y7
G2A
IO/M
G1
.P
Gii m ch c
PE
A2 A6
A0
A1
IORC
G2B
IOWC
TI
IORC
T.
G2B
Y7
Gii m ch ghi
A
B
C
Y0
G2B
IO/M
IOWC
A7
G2A
G1
Y7
Y0 Y3 ch c, Y4 Y7 ch ghi
Hnh 4.7: Gii m vo ra bng vi mch 74LS138
79
U
.V
D Q
ED
OC
Cng ci
T.
.P
TI
D0
...
PE
...
Q0
D7
...
74LS373
D0
D Q
...
Q7
OC
Q0
OC
80
IN AL,DX
CMP AL,0FFH
JE L1
.
Nu khng c nt no nhn, thanh ghi AL s c gi tr bng 0FFH v lnh JE s quay li tip
tc nhn d liu v kim tra cho ti khi c phm c nhn.
U
.V
DIR
T.
IORC
IOWC
B0
B1
B2
B3
B4
B5
B6
B7
ED
80286
system
A0
A1
A2
A3
A4
74 LS245
A5
A6
A7
D7
D6
D5
D4
D3
D2
D1
D0
5V
A23
A22
:
A0
.P
TI
A A A A A A A A A A A A A A A A IORC
1111119876543210
543210
PE
MOV AL,55H
MOV DX, Port
OUT DX,AL
Vi cc mch vo ra c bn, d liu truyn gia CPU v thit b ngoi vi hon ton th ng.
V d, khi CPU cp a ch c d liu t mt cng no , c th cng cha sn sng lm
vic, khi CPU s nhn c mt d liu sai m khng xc nh c. vic truyn d liu
vi cc thit b c m bo hn, trong cc h thng vi x l thng s dng cc b vo ra lp
trnh. Cc vi mch vo ra lp trnh cho php cung cp cc tn hiu bt tay gia mch vo ra v
81
ED
U
.V
4.3.
T.
PE
.P
TI
82
PE
.P
TI
T.
ED
U
.V
Sai
iu kin
ng
Cng vic
83
Sai
iu kin
ng
Cng vic 2
ED
Cng vic 1
U
.V
PE
.P
TI
T.
Gi tr N: Cng vic N
END CASE
Gii thut ca cu trc biu din trn hnh 4.14. Trong cu trc ny nu biu thc c gi tr 1
th cng vic 1 c thc hin, nu biu thc c gi tr 2, cng vic 2 c thc hin . Trong
hp ng c th s dng cc lnh nhy c iu kin v khng c iu kin chuyn iu khin
ca chng trnh ti cc nhn khc nhau.
V d : Xt gi tr ca AX thc hin cc cng vic khc nhau:
- Nu AX = 1 th CX := CX+7
- Nu AX = 2 th CX:= CX+DX
- Nu AX = 3 th CX:= CX-9
on chng trnh c thc hin nh sau:
CMP AX,01
JNE @
84
ADD CX,07
JMP RA
@: CMP AX,02
JNE @@
ADD CX,DX
JMP RA
@@: CMP AX,03
JNE RA
SUB CX,09
RA:
Cng vic 1
U
.V
Biu thc
Cng vic
Cng vic N
ED
.P
TI
T.
Cu trc lp.
Cu trc FOR DO
Ng php: FOR S ln lp DO Cng vic.
Gii thut ca cu trc trnh by trn hnh 4.15. Trong cu trc ny cng vic s c thc
hin nhiu ln (bng s ln lp c khai bo). Trong hp ng cng vic ny c th dng lnh
LOOP, hoc cp lnh gim (DEC) v nhy khi cha bng 0.
V d : vit chng trnh tnh tng cc s t nhin t 1 ti 99.
MOV AX,0
;Khi ng tng bng 0
MOV DX,1
; S th nht
MOV CX,99
; Tt c bao gm 99 s
LAP: ADD AX,DX ; Tng := Tng + 1
INC DX
; Tng c s tip theo
LOOP LAP
; Lp cho ti khi ht 99 s.
PE
Khi ng b m
Cng vic
Gim b m
Sai
iu kin
ng
Cu trc lp WHILE DO
Ng php: WHILE iu kin DO Cng vic.
85
iu kin
ng
U
.V
Cng vic
Sai
PE
.P
TI
T.
ED
Cng vic
ng
iu kin
Sai
86
U
.V
PE
.P
TI
T.
ED
thc hin cc chng trnh trn cc h thng vi x l chuyn dng, trc ht cc chng
trnh cn c dch ra m my. Hin c rt nhiu phn mm h tr vic lp trnh cho cc h vi x
l khc nhau, mi loi cng c s c cc chng trnh h tr bin dch ring.
V d i vi cc h thng 80286 trc ht cn vit cc chng trnh hp ng bng mt phn
mm son tho vn bn loi Text nh Notepad. Cc chng trnh hp ng thng c ghi li
di dng .ASM.
87
PE
.P
TI
T.
ED
U
.V
88
cc h thng n gin hn, khng c chng trnh truyn nhn d liu vi my tnh, np
cc chng trnh m my vo b nh h thng, cn phi c mt b np chng trnh vo ROM
giao tip vi my tnh. Cc b np ny thng thng giao tip vi my tnh qua cc cng COM,
LPT, USB hoc cc khe cm trn my tnh. Cc b np ny cng cn c cc chng trnh vit
ring chy trn my tnh.
np cc chng trnh vo ROM, trc ht cn xo ht cc d liu trong n. i vi cc
loi ROM in, cc d liu c c th xo trc tip trn b np bng lnh t phn mm chy trn
my tnh. Cn i vi cc b nh EPROM, cn xo cc d liu c trong chng bng n tia cc
tm.
PE
.P
TI
T.
ED
U
.V
Tm tt ni dung chng:
thit k cc h thng vi x l chuyn dng cn tin hnh theo bn bc chnh l:
- Bc 1: Phn tch cc chc nng nhim v ca h thng: Trong bc ny cn phn tch
nhim v yu cu thnh cc chc nng chnh ca h thng, sau xc nh chc nng no
c thc hin bng phn cng, chc nng no s c thc hin bng phn mm.
- Bc 2: Xy dng phn cng h thng vi x l: Trong bc ny trc cn la chn cc
thnh phn ca h thng phn cng nh: CPU, b nh v vo ra. Vic la chn CPU c th
da vo cc yu t chnh nh: tc x l, hiu qu thc hin nhim v, gi thnh h thng,
cc cng c phn mm h tr v ngun cung cp tin cy trn th trng. V b nh cn la
chn dung lng cho cc loi b nh ROM v RAM, theo dung lng yu cu cho chng
trnh v d liu khai bo trong chng trnh. V ngoi vi, trc ht cn xc nh tnh nng
ca cc ngoi vi yu cu nh: ni tip, song song, ADC, DAC hay cc vi mch c bit khc,
theo yu cu ca nhim v cn thc hin. Sau cn xc nh s lng cho mi loi ngoi vi
.
Kt ni h thng phn cng vi x l bao gm vic kt ni b nh v kt ni ngoi vi. V kt
ni gia CPU v b nh, trc ht kt ni BUS d liu v cc tn hiu yu cu c ghi b nh
(MRDC, MWTC) t CPU ti tt c cc vi mch nh. Nu BUS d liu ca CPU ln hn BUS
d liu ca b nh, th cn nhiu vi mch nh kt ni ht BUS d liu. Tip theo s kt ni
cc ng a ch thp t CPU ti mi b nh. Cui cng s dng cc ng a ch cao cung
cp ti b gii m a ch, v mt ng ra ca b gii m a ch s s dng cho php chn
mch cho mt vi mch nh. V kt ni gia CPU v vo ra cng tng t nh i vi b nh,
tuy nhin cc vo ra c bn c th khng c cc ng nhn yu cu c ghi, khi n ch
truyn d liu theo mt chiu, c th khng c hoc rt t ng vo a ch.
V thit k phn mm chng ta phi bin i nhim v yu cu thnh cc cu trc lp trnh c
bn, sau da vo cc cu trc lp trnh thit k thc hin chng trnh cho h thng. Cc
cu trc lp trnh c bn bao gm cu trc tun t v cu trc iu khin. Cc cu trc iu
khin bao gm cu trc lp v cu trc la chn.
Cc cu trc la chn gm: IF . THEN ; IF THEN ELSE.; CASE.
Cc cu trc lp bao gm: FOR; WHILE, REPAET.
89
EPROM (4M)
SRAM (8M)
SRAM (4M)
EPROM (4M)
SRAM (8M)
SRAM (4M)
EPROM (4M)
EPROM (4M)
SRAM (2M)
SRAM (2M)
SRAM (2M)
SRAM (4M)
SRAM (4M)
SRAM (2M)
EPROM (8M)
EPROM (8M)
EPROM (4M)
SRAM (4M)
U
.V
SRAM (2M)
SRAM (4M)
EPROM (2M)
T.
ED
H thng vi x l
s dng CPU
8088
8 LED
n
S1
Ti cng
vo
.P
TI
8 phm
nhn
Vcc
PE
90
VCC
VCC
VCC
11
6
5
R4
U
.V
R7
MOTOR DC
4
R6
Vin
R3
R8
Q2
11
Q1
R5
R2 VCC
VCC
Q3
Q4
ED
R1
PE
.P
TI
T.
Dy 1
Dy2
Dy3
Dy4
Hexa
1
0
0
1
09
0
1
0
1
05
0
1
1
0
06
1
1
0
0
0A
Khi mun ng c quay ngc chiu kim ng h c th xut d liu vi chiu ngc li ca
bng trn. Hy vit chng trnh iu khin ng c quay 1 vng theo chiu kim ng h v 90o
theo chiu ngc li.
Bi 14: Thit k mt h thng vi x l iu khin 4 LED ma trn 8 hng 5 ct hin th cc ch
ABCD tri theo chiu t phi qua tri v ngc li.
91
TI
5.1.
T.
ED
U
.V
Gii thiu:
Ni dng chng ny gii thiu v cc IC vo ra song song v ni tip c th lp trnh c.
Trc ht cn ch ti khi nim IC lp trnh, khi c cung cp cc t iu khin khc nhau,
chng s c cc ch hot ng khc nhau.
V vi mch vo ra song song lp trnh 8255, mun s dng c cn phi nm c cch kt
ni n vi CPU trong h thng vi x l, tip theo cn tm hiu v cch lp trnh cho n, v cc
dng t iu khin c th s dng. Cui cng cn tm hiu v cc ch hot ng ca 8255 v
vic ng dng cc ch ny trong thc t nh th no.
V vi mch vo ra ni tip 8251, cng ging nh 8255 u tin cn tm hiu cc ghp ni n
trong h thng vi x l, vi vi mch ny cn c bit ch ti cch lp trnh cho n s phc tp
hn so vi 8255. Trong cc ch truyn nhn d liu cn quan tm ti cc gii thut kim tra
sn sng, kim tra li trc khi nhn d liu hoc ghi d liu ti truyn ni tip ra bn ngoi.
Trong cc vi mch vo ra lp trnh, cn ch ti cc tn hiu iu khin bt tay gia b vo ra
v thit b ngoi vi, chn chn mt d liu c truyn nhn xong trc khi thc hin vic
truyn nhn mt d liu khc. hiu c tc ng ca cc tn hiu bt tay ny c th xem xt
cc gin thi gian hot ng ca tng ch .
PE
.P
92
RD\
X
0
1
0
1
0
1
1
0
WR\
X
1
0
1
0
1
0
0
1
Ch hot ng
Khng chn mch
c PA
Ghi PA
c PB
Ghi PB
c PC
Ghi PC
Ghi t iu khin
Cm
U
.V
A1
X
0
0
1
1
0
0
1
1
ED
A0
X
0
0
0
0
1
1
1
1
T.
CS\
1
0
0
0
0
0
0
0
0
PE
.P
TI
93
ED
U
.V
PE
.P
TI
T.
Ch 1:
Trong ch 0, d liu c truyn gi 8255 v thit b mt cch th ng. V d khi CPU
ghi d liu ti 1 cng, thit b ni vi cng c nhn c d liu hay khng, CPU cng khng
bit. Trong ch 1, ngoi d liu truyn nhn gia cc cng vi thit b cn c thm cc tn hiu
bt tay chc chn rng d liu c truyn nhn.
Hnh 5.4 m t tc ng ca cc tn hiu bt tay ca mt cng truyn d liu. Cc tn hiu bt
tay cho cng truyn bao gm:
- OBF (Output Buffer Full): l tn hin ng ra tc ng mc thp thng bo b m ng ra y.
Tn hiu ny s tch cc khi CPU ghi ti cng truyn 1 byte d liu, v bn nhn cha ly d
liu ny i. CPU tc ng tn hiu WR\ ghi d liu ti cng, cnh ln ca tn hiu WR\ (ghi
xong d liu) s tc ng OBF = 0. V ng vo ACK = 0 gi ti t bn nhn d liu, thng
bo d liu c ly, s lm OBF\ tr v mc 1. Tn hiu ny s c ni ti STB ca
cng nhn, cht d liu vo cng nhn.
- ACK (acknowledge): l tn hiu ng vo tc ng mc thp s dng cho vic nhn tn hiu tr
li t cng nhn, thng bo cng truyn bit cng nhn ly xong d liu, lc ny cng
truyn c th truyn tip mt d liu khc.
- INTR (interrupt): l tn hiu ra tc ng mc cao thng bo mt byte CPU ghi ti cng truyn
c truyn xong ti thit b. Tn hiu ny c th s dng yu cu ngt CPU thc hin
vic ghi ti mt d liu khc. Mc thp t WR\ m CPU gi ti s xo INTR v 0, v khi
OBF\ v ACK\=1 (INTE c lp) tn hiu ny s tip tc c tc ng.
- INTE (Interrupt Enable): l c cho php ngt truyn bn trong 8255, n c th lp xo bng
bit PC5 cho cng A v PC6 cho cng B (khi truyn). Khi INTE b xo, yu cu s khng c
gi ti CPU khi 8255 truyn xong mt d liu.
94
U
.V
PE
.P
TI
T.
ED
Hnh 5.5: Gin thi gian cc tn hiu cho cng nhn d liu ca 8255 trong ch 1
INTR (Interrupt Request): l tn hiu yu cu ngt, thng bo cho CPU bit c mt d liu
sn sng CPU c. Tn hiu ny s c lp ln 1 khi STB\ v IBF ng thi bng 1 (INTE
bng 1), v c xo khi CPU thc hin mt chu k c ko tn hiu RD ca n xung
mc thp.
INTE (Interrupt Enable):c cho php ngt trong 8255 c lp xo thng qua vic lp xo bit
PC4.
95
U
.V
ED
T.
Hnh 5.6 trnh by chi tit cc tn hiu bt tay cho cc cng PA v PB cc ch truyn v
nhn d liu trong ch 1. Hnh 5.7 m t mt v d kt ni truyn nhn d liu gia hai cng
8255 ch 1, trong 8255 bn tri c cng A truyn, cng B nhn, ngc li 8255 bn phi
c cng A nhn, cng B truyn d liu.
D0 D7
.P
TI
PA0 PA7
INTE
PC7 OBFA
ACKA
PC6
WR
PE
INTA
INTB
STBA
IBFA
PA0 PA7
INTE
PC4
RD
PC5
PC3
INTE
PC3
PC2
PC1
STBB
IBFB
OBFB
ACKB
PC1
INTA
INTE
PC2
PC0
RD PB0 PB7
D0 D7
PC0
INTB
PB0 PB7
96
U
.V
liu (mt xung mc thp cung cp ti ng vo WR\ ca 8255), ng ra OBF\ ca cng truyn c
ko xung mc thp a ti ng vo STB ci d liu vo cng nhn. Khi nhn c d liu,
cng nhn thng bo tr li cho cng truyn bng tn hiu IBF mc cao a ti ng vo ACK\, v
ng thi yu cu CPU iu khin nhn c d liu bng tn hiu INTR mc cao. Khi CPU cha
c, b nhn vn duy tr IBF = ACK\ = 1, do OBF ca b truyn vn tc ng. CPU c d
liu ko RD ca 8255 xung mc thp xa tn hiu yu cu ngt, ng thi IBF tr v mc 0 bn
truyn s dng tc ng tn hiu OBF v yu cu ngt CPU ghi ti mt d liu mi.
Ch 2:
Trong ch 2, cng A c s dng truyn d liu theo c hai chiu km theo cc tn
hiu bt tay. Cc tn hiu bt tay trong ch 2 cng tng t nh ch 1, gin thi gian tc
ng cc tn hiu c m t trn hnh 5.8. V tr cc tn hiu trn chip trn hnh 5.9.
WR
OBF
INTR
ED
ACK
STB
IBF
T.
Data
RD
PE
.P
TI
Hnh 5.9: Cc tn hiu s dng cho vic truyn d liu trong ch 2 ca 8255
97
PA0 PA7
INTE
A
WR
PC7 OBFA
PC6
D0 D7
PA0 PA7
ACKA
STBA PC4
IBFA
RD
PC5
RD
INTE
INTEB
PC2
IBFB
OBFB
ACKB
INTEA
PC1
PC2
INTA
PC3
INTA
TI
PC3
T.
ED
PC1
STBB
U
.V
WR
PE
.P
98
U
.V
Cc tn hiu kt ni gia 8255 v h thng vi x l 80286 m t trn hnh 5.11. Bus d liu
D0-D7 c ni ti Bus d liu ca h thng. RD\ v WR\ ca 8255ni ti IORC\ v IOWC\
xc nh chiu truyn d liu. A0, A1 c th ni ti 2 ng a ch bt k ca h thng CPU
chn cng ca 8255. RESET ni ti RESET ca h thng 8255 c khi ng li cng vi
CPU. CS\ c ni ti b gii m a ch vi k ni trn hnh v, 8255 c php lm vic khi
CS\ ca n mc 0 tng ng vi A4A3A7= 001 chn ng ra Y1, A6 = 1, A5=0 v A0 = 0 cho
php 74LS138 gii m a ch.
Kt hp vi a ch chn cng A2A1 cp ti A1A0 ca 8255 cc cng s c a ch nh sau:
- Cng A: A7 A6 A5 A4 A3 A2 A1 A0 = 11000 00 0 = C0H.
- Cng B: A7 A6 A5 A4 A3 A2 A1 A0 = 11000 01 0 = C2H.
- Cng C: A7 A6 A5 A4 A3 A2 A1 A0 = 11000 10 0 = C4H.
- Cng K: A7 A6 A5 A4 A3 A2 A1 A0 = 11000 11 0 = C6H.
PE
.P
TI
T.
ED
99
U
.V
ED
T iu khin chn ch cho 8255 biu din trn hnh 5.13: bit D7 ca n lun bng 1, D6
D5 = MA1 MA0 chn ch cho nhm 1 bao gm PA v phn cao PC (00: ch 0; 01: ch 1;
1x: ch 2), D4 = A s dng chn chiu truyn d liu cho PA (1: vo; 0: ra), D3 = CH chn
chiu truyn d liu cho PC phn cao, D2 = MB chn ch cho nhm 2 gm cng PB v PC
phn thp (0: ch 0; 1: ch 1), D1 = B chn chiu truyn cho PB v D0 = CL chn chiu
truyn cho PC phn thp.
PE
.P
TI
T.
100
010100
010100
010100
010100
0
0
1
1
0
1
0
1
a ch
Hex
50H
51H
52H
53H
Cng
PA
PB
PC
K
.P
5.2.
TI
T.
A1 A0
U
.V
CS\
ED
Gii:
a ch ca cc cng nh sau:
PE
101
liu ni tip thc hin tt hn, trong h thng vi x l ngi ta thng thc hin cc khung
truyn d liu ng b v cn ng b.
Bn song cng
(Half Duplex)
B truyn
(Transmitter)
B nhn
(Receiver)
B truyn
(Transmitter)
B nhn
(Receiver)
n cng
(Simplex)
B truyn
(Transmitter)
Song cng
(Duplex)
ED
B nhn
(Receiver)
B truyn
(Transmitter)
U
.V
B nhn
(Receiver)
B nhn
(Receiver)
B truyn
(Transmitter)
.P
TI
T.
Hnh 5.16: Truyn d liu ni tip theo nguyn tc thanh ghi dch
PE
102
Start bit
Bit chn l
Stop bit
U
.V
Making
lm du
TxD
B truyn to ra khi
c lp trnh
ED
T.
TI
RxD
Stop bit
.P
Start bit
PE
103
U
.V
DATA
SYNC1
SYNC2
DATA
TI
Ng ra bo b m
truyn rng
DATA
T.
TxD
ED
c b truyn ni tip
t ng chn vo
Ly mu ti gia mi bit
.P
PE
104
cho vic giao tip vi cc thit b ngoi vi ni tip, v khi c lp trnh t CPU n c th hot
ng trong hu ht cc ch truyn d liu ni tip hin c. Theo hng truyn USART nhn
d liu song song t CPU ri chuyn chng thnh chui d liu ni tip lin tc truyn. ng
thi theo hng nhn n c th nhn cc chui d liu ni tip ri bin i thnh dng song song
chuyn ti CPU. USART s thng bo cho CPU mi khi n truyn xong mt d liu t CPU
gi ti, hoc mi khi nhn c mt d liu t thit b ngoi vi cho CPU. CPU c th c c
trng thi hot ng ca 8251 ti mi thi im, cc trng thi ny bao gm: cc li truyn d
liu, cc tn hiu iu khin nh SYNDET, TxEMPTY . 8251 c sn xut bng cng ngh
bn dn MOS knh N.
Cu to ca 8251 biu din trn hnh 5.20 vi cc khi chc nng chnh nh sau:
TI
T.
ED
U
.V
* B m d liu.
L b m 8 bit ba trng thi hai chiu s dng cho vic giao tip gia 8251 v Bus d liu
ca CPU. D liu c th truyn nhn qua b m bng cc lnh IN /OUT thng thng ca CPU,
vi cc tn hiu iu khin thch hp a ti cc chn C/D, RD,WR, CS. Cc t iu khin, cc t
lnh khi ng cho 8251, t trng thi, v cc d liu vo ra u c truyn thng qua b m
d liu.
Cc thanh ghi t iu khin v t lnh s nhn d liu t CPU nh ngha cc ch hot
ng khc nhau ca 8251.
* Khi logic iu khin c ghi.
Khi ny s nhn cc tn hiu cung cp t Bus iu khin ca h thng s to ra cc tn hiu
iu khin cho ton b hot ng ca 8251.
* Khi iu khin Modem.
To ra cc tn hiu bt tay giao tip vi modem cho php truyn d liu trn ng in thoi.
* B m truyn.
B m
truyn (P:S)
Logic iu
khin c
ghi
B iu
khin
truyn
TxRDY
TxE
TxC
B m
nhn
(S:P)
RxD
.P
B m
BUS d
liu
D0-D7
PE
RESET
CLK
C/D
RD
WR
TxD
CS
DSR
DTR
CTS
RTS
Cc tn hiu
iu khin
Modem
B iu
khin nhn
RxRDY
RxC
SYNDET
105
.P
TI
T.
ED
U
.V
Khi ny nhn d liu song song t b m d liu, chuyn i thnh chui d liu ni tip,
chn vo cc bit hoc cc k t to ra khung truyn tng ng vi cc ch truyn khc nhau.
Sau cc bit s c dch ra ng TxD mi cnh ln ca xung Clock cung cp vo TxC. B
truyn ch bt u truyn khi c cho php CTS =0. ng TxD s trng thi treo khi thc
hin Reset hoc khi CTS=1 hay khi b m truyn rng.
* B iu khin truyn
B iu khin truyn qun l tt c cc hot ng lin quan n vic truyn d liu ni tip.
N s nhn cc tn hiu c bn trong ln bn ngoi thc hin chc nng ny.
* B m nhn
B nhn ly chui d liu ni tip trn ng RxD bin i thnh dng song song, kim tra s
duy nht ca cc bit hoc cc k t ty theo cc ch thng tin v sau chuyn d liu ( loi
b cc giao thc khung) ti CPU. Cc bit trn ng RxD s c dch vo mi cnh ln ca
tn hiu RxC.
* B iu khin nhn
Khi ny c chc nng qun l tt c cc hot ng lin quan n b nhn, bao gm cc chc
nng sau:
- Ngn chn cc li nhn d liu ca 8251, nh xc nh mc thp trn ng RxD l trng thi
khng s dng (iu kin ngt) hay trng thi d liu thp. Trc khi bt u nhn cc k t
ni tip, mc 1 phi c trn ng RxD ngay sau tn hiu Reset. Sau b nhn s kim tra
pht hin bit thp (Start bit) xc nh trng thi bt u nhn d liu. Chc nng ny ch
hot ng trong ch cn ng b v ch thc hin mt ln sau mi ln Reset.
- Ngn chn sai Start bit do xung nhiu tc thi, b iu khin nhn s ly mu start bit cnh
xung v xc nhn li n mt ln na trong khong gia bit.
- Pht hin li chn l ca d liu nhn c v thit lp bit thng bo li tng ng trong
thanh ghi trng thi.
- Trong ch cn ng b s pht hin li sai khung khi khng tm thy bit stop sau byte d
liu va nhn c.
PE
106
C/D\
0
0
1
1
x
x
WR\
1
0
1
0
1
x
PE
.P
CS\
0
0
0
0
0
1
TI
T.
ED
U
.V
Ch
CPU ghi d liu ti 8251
CPU c d liu t 8251
CPU ghi cc t lnh ti 8251
CPU c t trng thi t 8251
Data bus tr khng cao
Khng chn mch data bus tr
khng cao
107
PE
.P
TI
T.
ED
U
.V
108
PE
.P
TI
T.
ED
U
.V
liu t b m nhn ca 8251. CPU cng c th kim tra trng thi ca ng vo ny bng cch
c t trng thi ca 8251 v kim tra bit RxRDY.
Khi bit RxEnable trong t lnh khng tc ng th RxRDY s b gi trng thi reset, ch
cn ng b RxRDY ch thit lp khi b nhn c lp trnh cho php hot ng, Start bit
c gi cng vi mt k t c nhn v chuyn xong sang dng song song trong b m.
Trong ch ng b RxRDY cng ch thit lp khi b nhn c cho php hot ng, v k t
d liu c chuyn vo hon chnh trong thanh ghi d liu.
Khi c mt k t mi truyn ti, m k t c cha c c ra khi b m s xy ra li
overrun, bit bo li trong thanh ghi trng thi c thit lp v k t c s b mt. Nu d liu bt
u c trong khi xy ra vic truyn d liu bn trong th li overrun cng xy ra tng t nh
trn.
* RxC: (Receiver Clock) Ng vo nhn xung nhp iu khin tc nhn d liu ni tip. Trong
ch ng b tc baud l 1x, tc l bng vi tn s ca RxC. Trong ch cn ng b tc
baud cng ty thuc vo ch chn trong khi khi ng 8251 l 1x, 16x hay 64x nh khi
truyn.
V d vi tc nhn l 300 baud th:
- trong ch 1x tn s RxC phi l 300 Hz
- trong ch 16x tn s RxC phi l 4800 Hz
- trong ch 64x tn s RxC phi l 19.2 kHz
D liu c ly mu vo mi cnh ln ca RxC.
Ch trong hu ht cc h thng s dng 8251 truyn d liu ni tip, 8251 s x l c hai
hng truyn v nhn trn mt ng truyn bn ngoi (v d nh ng dy in thoi). Do
tc truyn v nhn d liu thng l bng nhau. TxC v RxC s c ly chung t mt b to
xung nhp.
* SYNDET: (SYNC Detect/ BRKDET Break Detect) Tn hiu ny c s dng cho chc nng
pht hin ng b SYNDET, v n c th s dng nh mt ng vo, hoc mt ng ra ty thuc
vo t iu khin lp trnh cho 8251. N s b reset v mc thp khi c tn hiu Reset chip. Trong
ch ng b tn hiu ny l mt ng ra, SYNDET s tc ng mc cao khi 8251 xc nh c
k t ng b trong ch nhn. Nu 8251 c lp trnh ch c hai k t ng b (bi-sync)
th SYNDET s tc ng ti thi im gia ca bit cui cng k t ng b th hai. SYNDET s
t ng Reset khi c t trng thi.
Trong ch ng b ngoi tn hiu ny l mt ng vo, ng vo ny tc ng mc cao
thng bo rng 8251 s bt u nhn d liu vo cnh ln ca chu k RxC k tip. Khi ch
ng b ngoi c lp trnh th ch ng b trong s khng hot ng.
Trong ch truyn cn ng b tn hiu ny mang chc nng BRKDET, n s tc ng mc
cao bt c khi no b nhn pht hin ra hai bit thp lin tip sau stop bit (Trong ch cn ng
b khung d liu truyn bao gm : Start bit, cc bit d liu, bit chn l v Stop bit). Pht hin ngt
cng c th c trong t trng thi ca 8251. Tn hiu ny s b xa khi reset chip, hoc khi ng
vo RxD tr v mc cao.
Giao tip gia 8251 v bus h thng.
Hnh 5.21 m t vic ni ghp gia 8251 v bus h thng ca 80286, cc giao tip khc cng
c thc hin mt cch tng t.
a ch m CPU cung cp truy cp ti 8251 s bao gm hai phn: cc bit a ch cao s a
ti b gii m vo ra cung cp tn hiu chn mch cho 8251. a ch thp A0 s dng cho vic
xc nh vic truyn d liu gia 8251 v CPU l d liu thng thng hay cc t iu khin hay
trng thi.
109
IOWC\
Reset
D0-D7
RD\
Gii m a
ch vo ra
U
.V
C/D
CS\
Data BUS
(TTL)
WR\
CLK
ED
8251
Reset
PE
.P
TI
T.
110
S1
EP
PEN
L2
L1
B2
B1
Baud : tc baud
0
1
0
1
0
0
1
1
SYN 1X
16X 64X
U
.V
Length : chiu di k t
0
1
0
1
0
0
1
1
5 bit 6 bit 7 bit 8 bit
ED
T.
PE
.P
TI
111
PE
.P
TI
T.
ED
U
.V
- T lnh:
T lnh lp trnh cho 8251 c biu din nh hnh 5.25 bao gm 8 bit vi cc chc nng nh
sau:
Bit D0=TxEN l bit cho php b truyn d liu, khi bit c lp trnh bng 1 s cho php b
truyn ca 8251, ng ra TxRDY s tc ng mc cao khi ng vo CTS tc ng mc thp v lc
ny b m trng thi sn sng nhn mt k t t CPU truyn ra ngoi.
Bit D1=DTR l bit thng bo trng thi sn sng ca 8251, khi bit ny c lp trnh bng
1 ng ra DTR s tc ng mc thp.
Bit D2=RxE l bit s dng cho php b nhn ca 8251, khi bit ny bng 1 s cho php
ng ra RxRDY ca 8251 tc ng mc cao khi b nhn c 1 k t sn sng CPU c vo.
Bit D3=SBRK l bit cho php gi k t ngng truyn khi 8251 ht d liu. Khi bit ny bng 1
ng ra TxD s lun bng cc bit 0 khi ht d liu truyn gi l k t ngng. K t ngng ny s
dng xc nh kt thc truyn xong mt khi d liu.
Bit D4=ER l bit reset cc bit bo li trong thanh ghi trng thi ca 8251 nh: bit PE bo
li chn l, OE bo li overrun, v FE bo li sai khung truyn.
Bit D5=RTS l bit lp trnh cho ng ra RTS, khi bit ny bng 1 th ng ra RTS s tc ng
mc thp, tn hiu ny s dng hi modem sn sng nhn d liu cha.
Bit D6=IR s dng reset mm cho 8251, khi bit ny trong t lnh bng 1, tc ng s
tng ng vi vic cp xung mc cao vo chn reset ca 8251. Lc ny cn phi gi li mt t
ch mi.
112
C/D=1
K t ng b 1
C/D=1
K t ng b 2
C/D=1
T lnh
C/D=0
C/D=1
T lnh
C/D=0
ED
Ch s dng trong ch
ng b
T ch
U
.V
C/D=1
C/D=1
T lnh
T.
PE
.P
TI
Trc tin khi mi bt u hot ng, hoc ngay sau khi reset cng hoc mm cn phi gi
ti cho 8251 t ch . Cng vic ny c CPU thc hin bng lnh ghi, vi a ch cung cp
C/D=1. Sau nu t ch chn ch ng b, th cn gi ti cho 8251 mt hoc hai k t
ng b. Cc k t ng b ny c lu bn trong 8251, so snh vi cc k t ng b m
thit b bn ngoi gi ti, trong ch nhn ng b. V cc k t ng b cng c t ng
pht mi u mt chui d liu, m 8251 truyn i cho ti khi thit b bn ngoi ng b c
vi n. Tip theo l t lnh cn c gi ti cho 8251.
Trong ch cn ng b th theo sau t ch s l t lnh. Khi t lnh c np 8251
c th truyn nhn cc khi d liu ni tip nh m t trong phn trn. Khi mun thay i cc
c tnh truyn nhn c th lp trnh li cho 8251 mt t lnh mi, cn mun nh ngha li hon
ton cho 8251 th cn thc hin reset. Trong qu trnh truyn nhn d liu, CPU cng c th kim
tra li trng thi ca 8251, c mt gii thut truyn nhn hp l, m bo an ton ca vic
truyn nhn d liu. Qu trnh lp trnh cho 8251 c th m t trong hnh 5.24. V d on chng
trnh sau s dng cho vic lp trnh cho 8251 hot ng trong h thng vi x l h Intel nh sau:
D0:
D1:
MOV DX,PORT_K
MOV AL,00H
OUT DX,AL
MOV CX,02
LOOP D0
OUT DX,AL
MOV CX,02
LOOP D1
OUT DX,AL
113
SynDet
BrkDet
FE
OE
PE
TxE
RxRDY
.P
TI
T.
ED
DSR
U
.V
MOV CX,02
D2:
LOOP D2
MOV AL,40H
; Np t lnh reset mm ri to tr chuyn 8251 OUT
DX,AL
; v trng thi chun b nhn t lnh ch
MOV CX,02
D3:
LOOP D3
MOV AL,11001110B
; Np t iu khin nh ngha 8251 hot ng
OUT DX,AL
; vi ch cn ng b t s tc baud l
MOV CX,02
; 16x (d1d0=10), chiu di k t 8 bit (d3d2=11),
D4:
LOOP D4
; khng cho php kim tra chn l (d4=0), 2 stop
MOV AL,00110111B
; bit Np t lnh nh ngha c tnh ca 8251:
OUT DX,AL
; cho php truyn, tc ng ng ra DTR, cho php nhn, ch
hot ng thng thng (khng gi k t ngng truyn), xa tt c cc c li, tc ng ng ra
RTS, khng reset mm, khng cho php ch tm k t ng b.
TxRDY
Transmitter Ready
(B m sn sng)
Ch th 8251 sn sng nhn mt k
t hoc mt lnh
PE
Synchronous Detect(Pht hin ng b). Khi thit lp cho ch ng b trong ch th 8251 thc hin xong
vic ng b sn sng truyn d liu
Data Set Ready(D liu thit lp sn sng): thng s dng cho vic kim tra trng thi Modem
114
PE
.P
TI
T.
ED
U
.V
115
Control BUS
I/OR
I/OW
2
(TTL)
Reset
D0-D7
RD
U
.V
C/D
Gii m
a ch
vo ra
Data BUS
WR Reset
CS
8251
RxC
TxD
RxD
ED
TxC
CLK
i chun tn hiu
EIA qua TTL
T.
B to xung
Clock
Thit b u cui
ni tip cn ng b
CRT
TI
S hnh 5.27 biu din vic truyn d liu theo ch ng b bng 8251, trong s ny
cn thm tn hiu SYNDET thng bo vic ng b gia 8251 vi thit b.
Address BUS
PE
.P
A0
Gii m a
ch vo ra
C/D
CS
Control BUS
I/OR
2
(TTL)
I/OW
Data BUS
D0-D7
RD
WR
Reset
CLK
8251
TxC
RxC
TxD
RxD
SynDet
116
RxD
TxD
8251
Giao din
ng dy
in thoi
Modem cn
ng b
DSR
DTR
B to xung nhp
RxD
TxD
DSR
DTR
Giao din
ng dy
in thoi
ED
Modem ng b
ng dy
in thoi
U
.V
RxC
TxC
8251
CTS
RTS
CTS
RTS
Syndet
T.
RxC
TxC
ng dy in
thoi
TI
PE
.P
Tm tt ni dung chng:
Vo ra song song lp trnh 8255 c ba cng vo ra v mt thanh ghi iu khin, thanh ghi
iu khin s dng gi t iu khin lp trnh cho 8255. Tu theo t iu khin 8255
s c ba ch hot ng vo ra: vo ra c bn, vo ra mt chiu c bt tay v vo ra hai
chiu c bt tay.
T iu khin cho 8255 c hai dng: t iu khin ch vo ra c bit D7 bng 1, cc bit
cn li s nh ngha ch hot ng v chiu vo ra cho cc cng. T iu khin lp
xo bit cng C c bit D7 bng 0, c 03 bit xc nh ng cng C s c lp xo v bit
D0 xc nh bit s c lp hay c xo.
ch vo ra c bn, cc cng vo ra ca 8255 s khng c tn hiu bt tay, d liu s
c truyn mt cch th ng nh cc cng m ci thng thng. Trong ch vo ra
c bt tay, trc ht cng truyn c tn hiu OBF a ti ng vo STB ca cng nhn,
cht d liu vo cng nhn. Cng nhn c ng ra IBF a tr li ng vo ACK ca
cng truyn bo ch cng truyn d liu c nhn.
kt ni 8255 vi h thng vi x l, trc ht cp a ch ca CPU ti cc ng A1A0
xc nh cc cng vo ra v thanh ghi iu khin, cc tn hiu vo RD v WR c th
cp t IORDC v IOWTC, CS c cp t ng ra ca b gii m a ch xc nh vng
a ch cho mt 8255 ca h thng.
117
U
.V
ED
BI TP:
T.
R1
R2
R3
C0
C1
A B
C D E F
C2
34
33
32
31
30
29
28
27
RD
5
WR
36
A0
9
A1
8
Reset 35
CS1
6
.P
R0
TI
U6
D0
D1
D2
D3
D4
D5
D6
D7
D0
D1
D2
D3
D4
D5
D6
D7
PA0
PA1
PA2
PA3
PA4
PA5
PA6
PA7
RD
WR
A0
A1
RESET
CS
PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7
PC0
PC1
PC2
PC3
PC4
PC5
PC6
PC7
C3
PE
Ba n phm
4
3
2
1
40
39
38
37
a bc
de f
g dp
18
19
20
21
22
23
24
25
14
15
16
17
13
12
11
10
88888888
anode0 ti anode8
R0
R1
R2
R3
C0
C1
C2
C3
8255
118
PE
.P
TI
T.
ED
U
.V
Bi 6: Thc hin h thng vi x l 80286 iu khin b hin th LED ma trn 8 hng 8 ct bng vi
mch vo ra 8255. Vit chng trnh hin th ch A ln Led ma trn .
Bi 7: Thc hin h thng vi x l giao tip vi b ADC loi xp x lin tip bng vi mch vo ra
8255. Vit chng trnh iu khin vic c d liu t ng vo ADC hin th ln 2 LED 7
on di dng s HEX.
Bi 8: Xc nh t ch s lp trnh cho 8251 n hot ng vi cc tnh nng sau: truyn
nhn cn ng b, tc truyn nhn 1x, chiu di d liu truyn l 6 bit, s stop bit l 1.
Bi 9: Xc nh t ch ca 8251 n hot ng vi cc tnh nng sau: truyn nhn ch
ng b, chiu di d liu truyn l 7, cho php ch ng b trong, mt k t ng b.
Bi 10: Thit k hai h thng vi x l truyn d liu vi nhau bng cng vo ra ni tip 8251 vi
ch truyn cn ng b (Asynchronous). Vit cc on chng trnh truyn nhn d liu
cho hai h thng ny.
Bi 11: Thit k hai h thng vi x l truyn d liu vi nhau bng cng vo ra ni tip 8251 vi
ch truyn ng b (Synchronous). Vit cc on chng trnh truyn nhn d liu cho
hai h thng ny.
Bi 12: Thit k h thng vi x l 80286 truyn d liu vi cng COM my tnh, vit cc chng
trnh truyn nhn d liu trn my tnh v trn h thng vi x l.
119
T.
6.1.
ED
U
.V
Gii thiu:
Chng ny cung cp cc kin thc v vi iu khin 8051, trc ht cn quan tm ti cc khi
nim v s khc nhau gia vi iu khin v vi x l, hiu c cc li im ca vi iu khin so
vi vi x l khi thit k cc h thng ng dng nh.
Khi la chn cc b vi iu khin cn xem xt ti cc tnh nng sn c trong n nh: dung
lng b nh chng trnh, dung lng b nh d liu, cc loi vo ra, tc hot ng .
Cc khi chc nng vo trong vi iu khin 8051 bao gm: Cc cng vo ra song song, cng
vo ra ni tip, b nh thi v ngt.
i vi cng vo ra song song cn tm hiu v cu to, cc lnh s dng xut nhp d liu.
V cng vo ra ni tip cn tm hiu cch khi ng, cc ch hot ng ca n, v vic xc
nh tc truyn nhn d liu da theo cc yu t no.
V b nh thi trc ht cn tm hiu v cu trc v cc ng dng ca n, n c cc ch
hot ng no thch hp cho ng dng no. Tip theo cn bit cch khi ng gi tr cho thanh
ghi TMOD c cc ch hot ng khc nhau. Cch khi ng v gi tr khi ng cn thit
cho cc thanh ghi m ca b nh thi.
V ngt cn tm hiu v cc ngun yu cu ngt, cc vector ngt tng ng cho cc ngun yu
cu , cch lp trnh cho php ngt v lp trnh u tin ngt.
PE
.P
TI
Reset
Reset
control
Clocking
Clock &
timing
Control
store
Input &
I/O
port
Power
monitoring
Processor
Power
Output
pins
RAM
120
TI
T.
U
.V
ED
PE
.P
B nh chng trnh
4K ROM
0K ROM
4K EPROM
8K ROM
0K ROM
8K EPROM
4K EEROM
2K EEROM
B nh d liu
128 byte
128 byte
128 byte
256byte
256byte
256byte
256 byte
128 byte
S timer
2
2
2
3
3
3
2
0
121
4 cng vo ra 8 bit.
B nhn/chia 4 s.
PE
.P
TI
T.
ED
U
.V
122
.P
TI
T.
ED
U
.V
B iu khin Bus cung cp cc tn hiu iu khin giao tip vi bn ngoi, v kim sot hot
ng ca cc cng vo ra d liu song song. Hai trong bn cng vo ra song song (P0 v P2) c
th s dng lm cc Bus a ch v d liu trong ch giao tip b nh ngoi. Cng vo ra ni
tip c hai ng truyn v nhn d liu ni tip vi cc thit b khc.
B iu khin ngt tch hp trong chip cho php nhn hai yu cu ngt cung cp thng t bn
ngoi, hoc t cng ni tip v cc b nh thi bn trong.
Cc tn hiu ca 8051
8051 v 8951 u c 40 chn tn hiu ging nhau. Ngoi cc chn nhn cc ngun nui v cc
linh kin to dao ng, cc chn cn li hot ng ging nh cc ng vo ra. Tuy nhin, trong
c 24 chn c hai cng dng, mi ng ny c th hot ng nh ng xut nhp, hoc nh
ng iu khin, hoc l mt ng trong cc tn hiu ca BUS d liu v BUS a ch. Cc
cng vo ra song song thng c cu trc ci.
Cc thit k ca 8051 c th hai ch : ch ti thiu, hoc ch m rng b nh hoc
cc thnh phn khc. Mi cng 8 ng c th hot ng ging nh mt n v giao tip vi cc
thit b vo ra song song nh: my in, cc b bin i A/D, D/A , hoc mi ng c th iu
khin mt cch c lp c th giao tip vi cc thit b ch yu cu mt bit nh: cc cng tc,
cc LED, cc solenoid, ng m ng c. Vic giao tip theo tng bit, c th iu khin bng
cc lnh thao tc bit l mt im mnh ca cc b vi iu khin, so vi cc b vi x l thng
thng.
Cng 0: Cng 0 (cc chn 3239) l mt cng hai chc nng. Trong cc thit k ti thiu (khng
dng b nh m rng), n c chc nng nh cc ng I/O. i vi cc thit k m rng v b
nh, n l Bus a hp gia BUS a ch v BUS d liu.
Cng 1: Cng 1 (cc chn 18) l mt cng vo ra thng thng. Cc ng trong cng c k
hiu P1.0, P1.1, P1.2,. Cng1 khng c chc nng khc, v vy chng ch c dng cho giao
tip vi cc thit b ngoi.
Cng 2: Cng 2 (cc chn 2128): l mt cng c cng dng kp, n c dng nh cc ng
vo ra, hoc l byte cao ca BUS a ch i vi cc thit k dng b nh m rng.
Cng 3: Cng 3 (cc chn 1017): l mt cng cng dng kp. Cc ng ca cng ny c nhiu
chc nng. Ngoi cng dng nh cc ng vo ra thng thng, chng cn c cc cng dng
khc nh biu din bng sau:
Tn
RxD
TxD
INT0
INT1
T0
T1
WR
RD
PE
Bit
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7
a ch bit
B0H
B1H
B2H
B3H
B4H
B5H
B6H
B7H
Chc nng
Nhn d liu cho cng ni tip.
Truyn d liu cho cng ni tip.
Nhn tn hiu yu cu ngt (0) t bn ngoi.
Nhn tn hiu yu cu ngt (1) t bn ngoi.
Ng vo bn ngoi cho Timer 0.
Ng vo bn ngoi cho Timer 1.
Tn hiu iu khin ghi cho b nh bn ngoi.
Tn hiu iu khin c cho b nh bn ngoi.
123
.P
TI
T.
ED
U
.V
PE
PC
ACC
B
PSW
SP
DPTR
Cc n nh RAM khc
124
PE
.P
TI
T.
ED
U
.V
T chc b nh ca 8051
Cc h thng vi x l thng thc hin vic phn bit cc vng nh ring cho d liu v
chng trnh, v vy trong my tnh thng thng chng trnh v d liu s c np t a vo
cc vng nh khc nhau ca RAM h thng. Cc b vi iu khin thc hin vic qun l b nh
theo mt cch khc.
8051 khng c a lu tr cc chng trnh, n c dung lng nh gii hn ngay bn trong
chip. Dung lng nh ny s c s dng ring r cho chng trnh v d liu. Tuy nhin chng
c th c m rng bn ngoi ln n ti a 64 Kbytes b nh chng trnh v 64 Kbytes b
nh d liu.
B nh RAM trn chip c s dng cho rt nhiu mc ch nh: phn lu tr a dng, phn
lu tr a ch ho tng bit, cc thanh ghi a nng v cc thanh ghi chc nng c bit. C hai c
tnh ni bt trong vi iu khin l: Cc thanh ghi v cc cng vo ra c bn ho trong b nh
RAM, chng c th truy cp ging nh cc nh bt k khc. Ngn xp cng nm b nh
RAM trong chip, m khng RAM ngoi nh cc h thng vi x l thng thng
M t v b nh RAM trong chip ca 8051
RAM bn trong 8051 m t trn hnh 6.3 bao gm: 4 tp thanh c a ch 00H ti 1FH, mi
tp c 8 thanh ghi c k hiu t R0 ti R7, vic i qua cc tp thanh ghi khc nhau c thc
hin bng hai bit ca thanh ghi trng thi. Vng nh a ch ho theo bit c a ch t 20H ti
2FH, vic truy cp cc bit ny theo cc a ch t 00 ti 7FH. Vng nh a dng t 30H ti 7FH.
V cc thanh ghi chc nng c bit t 80H ti FFH, mt s thanh ghi trong vng ny cng c
a ch ho theo bit.
RAM a dng: Ngoi 80 byte RAM a dng chim cc a ch t 30H7FH, 32 byte di cng t
00H n 1FH cng c th c dng vi mc ch tng t (mc d cc a ch ny c mc
ch khc).
Mi a ch trong vng RAM a dng u c th truy xut vi ch a ch trc tip hoc
gin tip. V d, c ni dung a ch 5FH ca RAM ni vo thanh ghi tch ly, c th dng
lnh sau:
MOV A, 5FH
Lnh ny di chuyn 1 byte d liu dng nh v a ch trc tip xc nh a ch ngun
(5FH). ch nhn d liu l thanh ghi tch ly A.
RAM ni cng c th c truy xut bng nh v a ch gin tip qua R0 hay R1. V d, hai
lnh sau thi hnh cng nhim v nh lnh trn:
MOV R0, #5FH
MOV A, @R0
Lnh u dng a ch tc thi di chuyn gi tr 5FH vo thanh ghi R0, v lnh th hai
dng a ch trc tip di chuyn d liu c tr bi R0 vo thanh ghi tch ly A.
RAM a ch ho tng bit: 8051 cha 210 bit c a ch ho, trong 128 bit l cc a ch
byte 20H n 2FH, v phn cn li l trong cc thanh ghi chc nng c bit.
c tnh truy xut tng bit ring r bng phn mm l mt c tnh tin li ca vi iu khin
ni chung. Cc bit c th c lp, xa, AND, OR,... bng mt lnh. a s cc vi x l i hi
mt chui lnh c-sa-ghi t c hiu qu tng t. Ngoi ra, cc cng vo ra cng c
a ch ho tng bit, lm n gin phn mm xut nhp tng bit.
C 128 bit c a ch ho a dng cc byte 20H n 2FH. Cc a ch ny c truy xut
theo byte hoc theo bit ph thuc vo loi lnh. V d, lp bit 67H, ta dng lnh sau:
SETB 67H
125
PE
.P
TI
T.
ED
U
.V
Ch a ch bit 67H l bit c trng s ln nht (MSB) a ch byte 2CH. Lnh trn s
khng tc ng n cc bit khc a ch ny. cc vi x l cng vic tng t s phi thi hnh
nh sau:
MOV A, 2CH
; c c byte
ORL A, #10000000B
; set MSB
MOV 2CH,A
; ghi li c byte
SETB 67H
Cc tp thanh ghi (register banks): 32 byte thp ca b nh ni l dnh cho cc tp thanh ghi.
Tp lnh ca 8051 cho php truy cp 8 thanh ghi (R0 n R7), v theo mc nh (sau khi reset h
thng) cc thanh ghi ny cc a ch 00H07H. Lnh sau y s c ni dung a ch 05H ca
RAM vo thanh ghi tch ly:
MOV A, R5
126
PE
.P
TI
T.
ED
U
.V
y l lnh 1 byte dng nh v a ch trc tip thanh ghi. Tt nhin, cng vic trn cng c
th thc hin bng lnh 2 byte dng nh v a ch trc tip nm trong byte th hai:
MOV A, 05H
Cc lnh dng cc nh v trc tip thanh ghi (R0 n R7) s ngn hn v nhanh hn cc lnh
tng ng nhng dng nh v a ch trc tip. Cc d liu c s dng thng xuyn trong
chng trnh, nn dng mt trong cc thanh ghi ny.
Tp thanh ghi c th chuyn i, bng cch thay i cc bit chn tp thanh ghi trong t trng
thi (PSW). Gi s rng tp thanh ghi th 3 c chn, th lnh sau s ghi ni dung ca thanh ghi
tch ly vo a ch 18H:
MOV R0, A
tng dng cc tp thanh ghi s cho php chuyn hng chng trnh nhanh v hiu
qu, tng phn ca chng trnh s c mt b thanh ghi ring m khng ph thuc vo cc phn
cn li.
Cc thanh ghi chc nng c bit
Cc thanh ghi ni ca trong hu ht cc vi x l c truy xut ngm nh trong tp lnh. V
d lnh INC A s tng ni dung ca thanh ghi tch ly A ln 1. Tc ng ny c ngm nh
trong m lnh.
Cc thanh ghi trong 8051 l mt phn ca RAM ni. V vy mi thanh ghi s c mt a ch
ring (ngoi tr thanh ghi m chng trnh PC v thanh ghi lnh v cc thanh ghi ny t khi b
truy cp trc tip, nn chng khng c t trong RAM ni). y l l do gii thch ti sao 8051
c nhiu thanh ghi. Cng nh R0 n R7, 21 thanh ghi chc nng c bit (SFR: Special Function
Register) ca 8051 nm trong RAM ni t a ch 80H n FFH. Ch rng hu ht 128 a ch
t 80H n FFH khng c t tn, ch c 21 a ch SFR l mang tn cc thanh ghi.
Ngoi thanh ghi tch ly (A) c th c truy xut ngm nh, a s cc SFR c truy xut
bng ch a ch trc tip. Mt s SFR c th c a ch ho theo bit hoc theo byte. Ngi
lp trnh phi ch khi truy xut theo bit v theo byte.
V d lnh:
SETB 0E0H
S lp bit 0 trong thanh ghi tch ly, cc bit khc khng i. C th thy rng E0H ng thi
l a ch byte ca thanh ghi tch ly, v l a ch bit ca bit c trng s nh nht trong thanh ghi
tch ly. Nhng v lnh SETB ch tc ng trn bit, nn a ch bit s tc ng trong lnh.
T trng thi chng trnh (PSW: Program Status Word): nm a ch D0H cha cc bit trng
thi nh trong bng sau:
BIT
PSW.7
PSW.6
PSW.5
PSW.4
PSW.3
PSW.2
PSW.1
PSW.0
Tn
CY
AC
F0
RS1
RS0
OV
P
a ch
D7
D6
D5
D4
D3
D2
D1
D0
Chc nng
C nh.
C nh ph.
C Zero.
Chn tp thanh ghi.
Chn tp thanh ghi.
C trn.
D phng.
C chn l.
127
PE
.P
TI
T.
ED
U
.V
128
PE
.P
TI
T.
ED
U
.V
129
6
5
4
3
2
1
GF1
GF0
PD
IDL
Chc nng
Khi lp cho php tng gp i tc baud cng ni tip.
Khng nh ngha.
Khng nh ngha.
Khng nh ngha.
C a dng 1.
C a dng 0.
Khi lp cho php 8051 hot ng trong ch gim
ngun (Power down).
Khi lp cho php 8051 hot ng trong ch ri (Idle).
Tn k hiu
SMOD
U
.V
BIT
7
PE
6.2.
.P
TI
T.
ED
Trong ch ri CPU s khng thc hin mt lnh no khc. Lnh lp bit IDL l lnh cui
cng m CPU thc hin trc khi chuyn qua ch ri. Trong ch ri ngun xung nhp bn
trong s b ct khng cung cp ti CPU, nhng vn cung cp ti b iu khin ngt, cc b nh
thi v cng ni tip. Trng thi hin ti ca CPU v cc thanh ghi s c gi nguyn, cc cng
vo ra cng c duy tr mc logic hin ti. ALE v PSEN c gi mc cao. Ch ri s kt
thc khi c yu cu ngt (c cho php), bit IDL s c xo.
Tng t nh ch ri, lnh lp bit PD s l lnh cui cng m CPU thc hin trc khi
chuyn qua ch gim ngun. Trong ch gim ngun, b dao ng to xung nhp s ngng
hot ng, iu ny lm tt c cc khi chc nng bn trong ngng hot ng. Ni dung ca Ram
ni s c gi nguyn, mc logic ca cc cng cng c gi nguyn v ALE v PSEN s c
gi mc thp. Ch ny ch c thot khi khi reset h thng. Trong ch gim ngun,
ngun cung cp Vcc c th gim xung 2V. Ch khng c gim ngun xung 2V trc khi
chuyn qua ch gim ngun, v phi phc hi li Vcc = 5V sau 10 chu k xung nhp trc khi
tn hiu RST quay v mc thp tr li.
8051 c kh nng m rng thm 64K b nh chng trnh v 64K b nh d liu bn ngoi,
do h thng 8051 c th dng thm ROM v RAM nu cn. Cng c th s dng chc nng
m rng dung lng b nh, tng thm dung lng cng vo ra, lc ny cc cng vo ra s
c truy cp ging nh cc nh m rng.
Khi s dng b nh ngoi, cng 0 khng cn l mt cng vo ra na. N c ghp knh gia
phn thp ca BUS a ch (A0A7), v BUS d liu (D0D7). Tn hiu ALE s tc ng mc
cao khi bt u mi chu k truy cp b nh cht byte thp ca a ch. Cng 2 thng thng
c dng cho byte cao ca BUS a ch.
Trong na u ca mi chu k truy cp b nh, byte thp ca a ch c cp ra cng 0 v
c cht bng xung ALE. C th s dng mt IC cht 74HC373 (hoc tng ng) gi byte
a ch thp trong phn cn li ca chu k truy cp b nh. Trong na sau ca chu k b nh cng
0 c dng nh BUS d liu, chiu truyn d liu trn n s ty theo lnh.
130
U
.V
S1
P1
P2
P1
P2
P1
S5
P2
P1
P2
.P
PSEN
P1
S6
S1
P2
P1
P2
PCH
Port 0
P2
S4
TI
ALE
Port 2
P1
S3
T.
CK
S2
ED
Opcode
PCL
Byte 2
PE
PCL
131
S2
S3
S4
S5
S6
S1
S2
S3
S4
S5
S6
ALE
PSEN
Port 2
PCH
Port 0
DPL
Data in
ED
PCL
U
.V
RD
PE
.P
TI
T.
Gin thi gian cho lnh c b nh d liu ngoi biu din trn hnh 6.6 vi lnh c
(MOVX A, @DPTR).
132
D0 D7
Q
A0 A7
ALE
EPROM
74HC373
A8
A9
P2.0
P2.1
OE
U
.V
RD
WR
EA
WE
NC
PSEN
CS
T.
ED
PSEN
D0 D7
RD
OE
TI
WR
A0 A12
.P
A0 A12
OE
WE
A0 A12
A0 A12
CS
CS
CS
CS
CS
A15
CS
D0 D7
A14
PE
A13
C
B
VCC
0
1
2
3
G1
G2A
G2B
133
ED
U
.V
WR
RD
TI
Psen
T.
RAM
.P
PE
6.3.
HOT NG CA B NH THI (TIMER)
6.3.1. Gii thiu
134
a ch
88H
89H
8AH
8BH
8CH
8DH
TI
T.
Chc nng
iu khin
Ch
Byte thp ca timer 0
Byte thp ca timer 1
Byte cao ca timer 0
Byte cao ca timer 1
a ch theo bit
C
Khng
Khng
Khng
Khng
Khng
.P
SFR
TCON
TMOD
TL0
TL1
TH0
TH1
ED
U
.V
PE
BIT
7
6
5
4
3
2
1
0
Timer
1
1
1
1
0
0
0
0
Chc nng
Khi =1 timer ch chy khi INT1 mc cao.
1: m s kin bn ngoi; 0: nh khong thi gian
bit nh ch cho timer 1.
bit nh ch cho timer 1.
Bit cng cho timer 0
Bit chn counter/timer cho timer 0
bit nh ch cho timer 0.
bit nh ch cho timer 0.
135
Ch
0
1
2
3
Chc nng
Ch nh thi 13 bit.
Ch nh thi 16 bit.
Ch t ng np li 8 bit.
Ch nh thi tch bit:
Timer 0: TL0 l b nh thi 8 bit iu khin bi ch ca
timer 0. TH0 tng t nhng c iu khin bi ch ca
timer 1.
Timer 1: ngng hot ng.
M1
0
0
1
1
a ch
8FH
TR1
8EH
5
4
3
TF0
TR0
IE1
8DH
8CH
8BH
IT1
.P
8AH
N
IE0
IT0
PE
1
0
Chc nng
C bo trn ca timer 1, c lp bi phn cng khi xy ra
trn; c xo bng phn mm hoc phn cng khi phc v
chng trnh ngt.
Bit iu khin chy ca timer 1. c lp xo bng phn
mm iu khin timer1 on/off.
C bo trn cho timer 0.
Bit iu khin chy cho timer 0.
Cho php ngt INT1: c lp bng phn cng khi c cnh
xung ng vo INT1; c xo bng phn mm hoc phn
cng khi ph v ngt.
Chn kiu tc ng ngt INT1: c lp xo bng phn mm
chn kiu tc ng ngt bng cnh xung hoc bng mc
thp.
Cho php ngt INT0.
Chn kiu ngt cho INT0.
T.
Tn
TF1
TI
BIT
7
ED
U
.V
89H
88H
Bn bit thp ca TCON khng s dng cho cc timer, chng c s dng pht hin v
khi ng kiu tc ng cho cc ngt bn ngoi.
136
Timer
Clock
TLx
(5 bit)
ED
U
.V
TFx
T.
a) Mode 0
Timer
Clock
TFx
TI
N
PE
O
Timer
Clock
THx
(8 bit)
TLx
(8 bit)
.P
Timer
Clock
TLx
(5 bit)
TFx
Np li
THx
(5 bit)
c) Mode 2
TLx
(5 bit)
THx
(8 bit)
Timer
Clock
TL0
(8 bit)
TF0
Timer
Clock
TH0
(8 bit)
TF1
d) Mode 3
137
ED
U
.V
nh khong thi gian (interval timing): Nu C/T = 0, hot ng timer lin tc c chn v
timer c dng cho vic nh khong thi gian. Lc , timer ly xung nhp t b dao ng
trong chip. Xung nhp ng ra b to dao ng c gim tn s bng b chia 12 trc khi cp vo
timer thch hp cho phn ln cc ng dng. Nh vy vi thch anh 12 MHz, th tc xung
nhp cung cp cho timer s l1 MHz. Bo trn timer xy ra sau mt s (c nh) xung nhp, tu
thuc vo gi tr ban u c np vo cc thanh ghi timer TLx/THx.
m s kin (Event counting): Nu C/T = 1, timer ly xung nhp t ngun bn ngoi. Trong hu
ht cc ng dng, ngun bn ngoi ny cung cp cho timer mt xung khi xy ra mt s kin
timer dng m s kin. S s kin c xc nh bng phn mm bng cch c cc thanh ghi
TLx/THx, v gi tr 16 bit trong cc thanh ghi ny tng thm 1 cho mi s kin.
Ngun xung nhp ngoi c cung cp bng cc chn cng 3. Bit 4 ca cng 3 (P3.4) dng lm
ng vo to xung nhp bn ngoi cho Timer 0 v c gi l T0, cn P3.5 hay T1 l ng vo
to xung nhp cho Timer 1.
Trong cc ng dng m, cc thanh ghi timer c tng thm 1 tng ng vi s chuyn
trng thi logic t 1 xung 0 ng vo bn ngoi (Tx). Ng vo bn ngoi c ly mu trong
S5P2 ca mi chu k my. Nh vy, khi ng vo cao trong mt chu k v thp trong mt chu k
k th s m c tng thm 1. Gi tr mi xut hin trong cc thanh ghi trong S3P1 ca chu k
B to dao ng
ni
T.
theo sau chu k pht hin s chuyn trng thi. Do cn 2 chu k my (2 s) ghi nhn mt s
chuyn trng thi1 sang 0, tn s ngoi ti a l 500 KHz (gi s h thng hot ng 12 MHz).
12
TI
Tx
Timer
Clock
.P
C/T
PE
138
B to dao
ng
12 MHz). Khi INT0 xung thp, timer b ng cng v thi khong ca xung tnh bng s l s
m c trong TL0/TH0. (C th lp trnh INT0 to ra mt ngt khi n xung thp).
Hnh 6.14 minh ha Timer 1 hot ng ch 1 nh mt timer 16 bit. S ch cc kh
nng iu khin vic cp ngun to xung nhp cho timer.
12
TL1 TH1
TF1
U
.V
T1
C/T
ED
TR1
Gate
T.
INT1
TI
PE
.P
timer m ln v t c bo trn khi c s chuyn tip FFFFH sang 0000H. Mt khong 100 s
c th c nh thi bng cch khi ng tr cho TL1/TH1 l FF9CH:
MOV TL1, #9CH
MOV TH1, #0FFH
Sau cho chy timer bng cch t bit iu khin chy bng lnh:
SETB TR1
C bo trn c t ng t ln 1 sau 100 s. Phn mm c th i trong 100 s bng cch
dng lnh r nhnh c iu kin nhy n chnh n, trong khi c bo trn cha c t ln 1:
WAIT:
JNB TF1, WAIT
139
6.4.
U
.V
Khi timer trn, cn dng timer v xa c bo trn trong phn mm c th dng cc lnh nh:
CLR TR1
CLR TF1.
c timer ang chy: Trong mt s ng dng cn c gi tr trong cc thanh ghi timer khi n
ang chy. V phi c hai thanh ghi timer, sai pha c th xy ra nu byte thp trn vo byte cao
gia hai ln c. Gi tr c th c c khng ng. Gii php l c byte cao trc, k c
byte thp ri c byte cao li mt ln na. Nu byte cao thay i th lp li cc hot ng c.
Cc lnh di y c ni dung ca cc thanh ghi timer TL1/TH1 vo cc thanh ghi R6/R7:
AGAIN: MOV A, TH1
MOV R6, TL1
CJNZ A, TH1, AGAIN
MOV R7, A
PE
.P
TI
T.
ED
K hiu
SM0
SM1
SM2
a ch
9FH
9EH
9DH
Chc nng
Bit chn ch .
Bit chn ch .
Bit chn ch , cho php truyn thng tin trong ch a x l
trong ch 2 v 3; RI s khng tc ng nu nhn c bit th
9 bng 0.
140
9CH
9BH
2
1
RB8
TI
9AH
99H
RI
98H
4
3
SM1
0
1
0
1
Ch
0
1
2
3
Chc nng
Thanh ghi dch.
8bit UART
9bit UART
9bit UART
Tc baud
C nh (tn s dao ng/12).
Thay i (theo gi tr ca timer).
C nh (tn s dao ng/12 hoc 64.
Thay i (theo gi tr ca timer).
ED
SM0
0
0
1
1
U
.V
T.
Trc khi s dng cng ni tip, phi khi ng SCON chn ch thch hp. V d,
lnh: MOV SCON, #01010010B s khi ng cng ni tip ch 1 (SM0/SM1 = 0/1), cho
php b thu (REN=1) v t c ngt pht (TI=1) ch b pht sn sng hot ng.
PE
.P
TI
6.4.3. Cc ch hot ng
Cng ni tip c 4 ch hot ng, c th chn c bng cch lp trnh cho cc bit SM0 v
SM1 trong SCON. C ba ch cho php truyn cn ng b (UART), trong ch ny, mi k
t c thu (nhn) hoc pht, u nm trong mt khung c mt bit start v 1 bit stop. ch 0,
cng ni tip hot ng nh mt thanh ghi dch thng thng.
Ch 0: (Thanh ghi dch 8 bit): Ch 0 c chn bng cch ghi SM1 v SM0 ca SCON
bng 0. Trong ch ny, cng ni tip hot ng ging nh mt thanh ghi dch 8 bit. D liu ni
tip vo v ra qua RXD v TXD theo xung nhp, 8 bit c pht hoc thu vi bit u tin l LSB.
Tc baud c nh 1/12 tn s dao ng trn chip.
Vic pht c khi ng bng mt lnh ghi d liu vo SBUF. D liu c dch ra ngoi
trn ng RXD (P3.0), vi cc xung nhp dch c gi ra ng TXD (P3.1). Mi bit c
pht i (trn RXD) trong mt chu k my. Trong mi chu k my, tn hiu xung nhp dch xung
thp S3P1 v tr v mc cao S6P1. nh thi d liu pht biu din trn hnh 6.15a.
Vic thu c khi ng khi bit cho php b thu (REN) l 1, v bit ngt thu (RI) l 0. Qui tc
chung l lp REN khi bt u chng trnh khi ng cng ni tip, ri xa RI bt u nhn
d liu. Khi RI b xa, cc xung nhp c a ra ng TXD khi bt u chu k my k tip, v
d liu c a ra ng RXD theo xung nhp. Mi bit d liu c nhn vo cng ni tip
cnh ln ca xung nhp trn ng TXD nh biu din trn hnh 6.15b.
Mt ng dng ca ch thanh ghi dch l m rng kh nng xut d liu ca 8051. IC thanh
ghi dch ni tip ra song song c th c ni vo cc ng TXD v RXD ca 8051 cung cp
thm 8 ng ra nh trn hnh 6.16. C th ni ni tip thm cc thanh ghi dch m rng thm
nhiu cng vo ra khc na.
141
S3P1
S6P1
ALE
Data out
RXD
D1
D2
D3
D4
D5
D6
D7
ED
D0
U
.V
Shift clock
Data out
Shift clock
TXD
ALE
Data in
RXD
D1
D2
D3
D4
D5
D6
D7
TI
D0
T.
Shift clock
TXD
.P
PE
8051
Thanh ghi dch
RXD
TXD
CLOCK
DATA
Hnh 6.16: Tng thm cng vo ra song song s dng cng ni tip ch 0
142
PE
.P
TI
T.
ED
U
.V
143
PE
.P
TI
T.
ED
U
.V
144
ED
U
.V
P0
P1 P2 P3
8051 Slave 1
TI
Matter 8051
32 ng vo ra
T.
32 ng vo ra
.P
TXD
RXD
P0
P1 P2 P3
8051 Slave 2
RXD
PE
145
12
Tc baud
64
SMOD = 0
32
SMOD = 1
b) ch 2
32
Dao ng
trn chip
Tc baud
SMOD = 1
ED
16
SMOD = 0
Tc baud
Dao ng
trn chip
U
.V
a) ch 0
c) ch 1 v 3
Hnh 6.18: Ngun cung cp xung nhp xc nh tc baud cho cng ni tip
.P
TI
T.
S dng Timer 1 lm xung nhp tc baud: cch thng dng to tc baud l khi ng
TMOD vi ch 8 bit t ng np li (ch 2), v np gi tr thch hp vo TH1, cho tc
trn ng vi tc baud mong mun. TMOD c khi ng nh sau:
MOV TMOD, #0010xxxxB
Cc bit x l 1 hoc 0 tng ng cho timer.
Cng c th t c cc tc baud thp bng cch s dng timer ch 2 vi TMOD =
0001xxxxB. Tuy nhin, khi chng trnh phn mm s phc tp thm, v cc thanh ghi
TH1/TL1 phi c khi ng li sau mi ln trn. Vic ny c th thc hin trong chng trnh
phc v ngt. Mt cch khc l cp xung nhp cho Timer 1 t ngoi dng T1 (P3.5). V tc
baud lun l tc trn ca Timer 1 c chia cho 32 (hoc cho 16, nu SMOD = 1).
Cng thc xc nh tc baud trong cc ch 1 v 3 l:
PE
trn ca Timer 1 l 38.4 KHz v timer c cp xung nhp 1000 KHz, th cn trn sau 1000
38.4 = 26.04 xung nhp (lm trn l 26). V timer m ln v trn xy ra khi c s thay i t FFH
xung 00H b m. Nh vy gi tr ng cn np vo TH1 l 26. Cch d nht np gi tr
vo TH1 l:
MOV TH1, # 26
Trnh hp dch s thc hin chuyn i cn thit cho lnh. Trong trng hp ny 26 c
chuyn thnh 0E6H. Nh vy, lnh trn hon ton ging vi lnh:
MOV TH1, # 0E6H
Do vic lm trn nn c sai s nh trong tc baud. Tng qut th cho php dung sai 5%
trong truyn thng bt ng b (start/stop). C th c c tc baud chnh xc nu dng thch
anh 11.059 MHz. Bng sau y tm tt cc gi tr np vo TH1 cho cc tc baud thng dng
nht, dng thch anh 12 MHZ hoc 11.059 MHz:
146
6.5.
12 MHz
12 MHz
12 MHz
11,059 MHz
11,059 MHz
11,059 MHz
11,059 MHz
SMOD
1
0
0
1
0
0
0
Gi tr np cho
TH1
-7 (F9H)
-13 (F3H)
-26 (E6H)
-3 (FDH)
-3 (FDH)
-12 (F4H)
-24 (E8H)
Tc baud thc
s
8923
2404
1202
19200
9600
2400
1200
Sai s
7%
0,16%
0,16%
0
0
0
0
Tn s thch anh
U
.V
Tc
baud
9600
2400
1200
19200
9600
2400
1200
PE
.P
TI
T.
ED
ISR
Quay v
p ng ngt
Main
ISR
Main
Main
Main
147
ED
a ch
AFH
AEH
ADH
ACH
ABH
AAH
A9H
A8H
T.
K hiu
EA
ES
ET1
EX1
ET0
EX0
TI
Bit
IE7
IE6
IE5
IE4
IE3
IE2
IE1
IE0
U
.V
PE
.P
Nh vy khi mun cho php bt k ngt no cn phi lp hai bit: bit cho php ring v bit cho
php ton b. V d, cc ngt t Timer 1 c cho php nh sau:
SETB ET1
; Cho php ngt t Timer 1
SETB EA
; t bit cho php ton b.
Cng c th s dng lnh sau:
MOV IE, # 10001000B
Mc d hai cch ny c cng kt qu sau khi reset h thng, nhng chng s c kt qu s
khc nu IE c ghi gia chng trnh. Cch th nht khng nh hng n 5 bit khc trong
thanh ghi IE, tri li cch th hai s xa cc bit khc. Nn khi tr IE theo cch th hai thng s
dng u chng trnh (ngha l sau khi m my hoc reset h thng), cn khi mun cho php
v cm cc ngt ngay trong chng trnh th nn dng cch th nht, trnh nh hng n cc
bit khc trong thanh ghi IE.
u tin ngt: Mi ngun ngt c lp trnh ring vo mt trong hai mc u tin, qua thanh ghi
u tin ngt IP (Interrupt Priority), c a ch theo bit a ch B8H. Chc nng cc bit ca IP
c m t trong bng sau:
Bit
IP7
IP6
IP5
IP4
K hiu
PS
a ch
BDH
BCH
148
PT1
PX1
PT0
PX0
BBH
BAH
B9H
B8H
Ngt
IE0
IE1
TF1
TF0
TI
RI
SFR v v tr bit
TCON.1
TCON.3
TCON.7
TCON.5
SCON.1
SCON.0
PE
.P
INT0
INT1
Timer 1
Timer 0
Serial port
Serial port
TI
T.
ED
U
.V
149
INT0
IE0
IT1
IE1
High Priority
Low Priority
Interrupt polling sequence
IT0
IP
INT1
TF0
U
.V
TF1
RI
TI
Interrupt Enable
ED
Global Enable
TI
T.
ISR thc thi v p ng cc yu cu ca ngt. ISR hon tt bng lnh RETI (quay v t ngt).
iu ny lm ly li gi tr c ca PC t nh ngn xp, vic thc hin chng trnh chnh tip tc
ch m n b dng.
Khi chp nhn ngt, gi tr c np vo PC c gi l vector ngt, n l a ch bt u ca
ISR cho ngun to ngt. Cc vector ngt c cho bng sau:
C
PE
.P
Ngt
Reset
INT0
Timer 0
INT1
Timer 1
Serial port
RST
IE0
TF0
IE1
TF1
RI hoc TI
a ch vector ngt
0000H
0003H
000BH
0013H
001BH
0023H
Vector reset h thng (RST a ch 0000H) c trong bng, v n ging ngt: n ngt chng
trnh chnh v np gi tr mi cho PC.
Khi ch n mt ngt, c gy ngt t ng c xa bi phn cng. Ngoi l ch c RI v
TI ca cc ngt cng ni tip cn c xo bng phn mm. V c ti hai ngun c th xy ra cho
ngt cng ni tip, nn CPU khng xa c ngt ny. Cc bit phi c kim tra trong ISR xc
nh ngun ngt v c to ngt s c xa bng phn mm. Thng thng s c mt lnh r
nhnh thch hp tu theo ngun ngt.
V cc vector ngt phn u ca b nh chng trnh, nn lnh u tin ca chng trnh
chnh thng l lnh nhy qua vng nh ny, v d nh LJMP 0030H.
150
; im vo reset
; Cc im vo ISR
; im vo chng trnh chnh
ED
U
.V
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
T.
TI
B nh chng trnh
bn ngoi.
PE
.P
FFFF
0030
002F
LJMP main
Chng trnh
chnh
im bt u sau khi
reset v khi xy ra cc
ngt
Cc chng trnh phc v ngt c kch thc nh: Cc chng trnh phc v ngt phi bt u
gn phn u ca b nh chng trnh, di cc a ch trong bng Cc vector ngt. Mc d ch
c 8 byte gia cc im vo ngt, c th thc hin hot ng phc v ngt mong mun v
quay v chng trnh chnh.
Nu ch c mt ngun ngt c s dng, v d Timer 0, th c th s dng mt khung
chng trnh nh sau:
ORG 0000H
; Reset
LJMP MAIN
ORG 000BH
; im vo Timer 0
151
.P
TI
T.
ED
U
.V
T0ISR:
; Bt u ISR cho Timer 0
RETI
; Quay v chng trnh chnh
MAIN:
; Chng trnh chnh
Nu s dng nhiu ngt, cn phi bo m mi chng trnh phc v ngt bt u ng a ch
qui nh cho n, v khng chy qu sang ISR k. Trong v d trn, v ch c mt ngt c s
dng, chng trnh chnh c th bt u ngay sau lnh RETI.
Cc chng trnh phc v ngt c kch thc ln: Nu ISR di hn 8 byte, cn c lnh nhy
chuyn n ti ni khc trong b nh chng trnh, nu khng n s i l qua im vo ca ngt
k. Vi lnh nhy n vng nh khc, c th m rng chiu di ISR. V d ch xt Timer 0, c th
s dng khung chng trnh sau:
ORG 0000H
; im bt u sau khi reset
LJMP MAIN
ORG 000BH
; im bt u ca ngt Timer 0
LJMP T0ISR
ORG 0030H
; Di cc vector ngt tip theo
MAIN:
T0ISR:
; ISR cho Timer 0
RETI
; Quay v chng trnh chnh.
Xt mt chng trnh n gin nht khng thc hin g c, chng trnh chnh ch khi ng
cc timer, cng ni tip v cc thanh ghi ngt sau khng lm g na. Cng vic hon ton c
thc hin trong cc ISR. Sau cc lnh khi ng, chng trnh chnh cha lnh: HERE: SJMP
HERE
Hay dng vit gn nh sau:
SJMP $
Khi ngt xy ra, chng trnh chnh b ngt qung tm thi, trong khi ISR thc hin. Lnh RETI
cui ISR tr iu khin v chng trnh chnh v n tip tc khng lm g c. Trong nhiu ng
dng iu khin, nhiu cng vic tht ra c thc hin hon ton trong cc ISR.
Khi cn cc cng vic thc hin ngoi ngt, lnh SJMP $ (HERE: SJMP HERE) c th c thay
th bng cc lnh cn thc hin trong ng dng.
PE
152
ED
U
.V
Nu ngt c tch cc theo mc, th mc cao ca ngun yu cu ngt bn xo c thay cho phn
cng.
Vic chn ngt tch cc mc thp hay tch cc cnh xung c lp trnh qua cc bit IT0 v
IT1 trong TCON. V d, nu IT1 = 0, ngt ngoi 1 c kch khi bng mc thp chn INT1.
Nu IT1 = 1, ngt ngoi 1 s c kch khi bng cnh xung. Trong ch ny, nu cc mu
lin tip trn chn INT1 ch mc cao trong mt chu k v thp trong chu k k, c yu cu ngt
IE1 trong TCON c t ln 1. Ri bit c IE1 yu cu ngt.
V cc chn ngt ngoi c ly mu mt ln mi chu k my, ng vo cn c gi trong
ti thiu 12 chu k dao ng bo m ly mu ng. Nu ngt ngoi c tc ng theo cnh
xung, ngun bn ngoi phi gi chn yu cu cao ti thiu 1 chu k v gi n mc thp thm
mt chu k na bo m pht hin c cnh xung. IE0 v IE1 t ng c xa khi CPU
chuyn ti ngt.
Nu ngt ngoi c tc ng theo mc, ngun bn ngoi phi gi yu cu tc ng cho n
khi ngt c yu cu tht s c to ra. Ri n phi khng tc ng yu cu trc khi ISR c
hon tt, nu khng mt ngt khc s c lp li. Thng thng khi vo ISR ngi ta lm ngun
yu cu a tn hiu to ngt v trng thi khng tc ng.
PE
.P
TI
T.
153
n n n
Direct address
Opcode
Opcode
Direct address
Relative offset
ED
U
.V
A10 A8
Opcode
A7 A0
A15 A8
T.
Opcode
A7 A0
Acc
TI
Opcode
Effective Address
.P
PE
154
PE
.P
TI
T.
ED
U
.V
155
PE
.P
TI
T.
ED
U
.V
156
M t hot ng
Cng c nh
ED
A = A source CF
U
.V
A = A +source
Tng A
Gim A
T.
Tng DPTR
Nhn A vi B
Chia A cho B
Chnh thp phn gi tr trong A
TI
Cch vit m gi nh
Cc lnh s hc.
ADD A,source
ADD A,#data
ADDC A,#source
ADDC A,#data
SUBB A,source
SUBB A,data
INC A
INC source
DEC A
DEC source
INC DPTR
MUL AB
DIV AB
DA A
Cc lnh logic
ANL A,source
ANL A,#data
ANL direct,A
ANL direct,#data
ORL A,source
ORL A,#data
ORL direct,A
ORL direct,#data
XRL A,source
XRL A,#data
XRL direct,A
XRL direct,#data
CLR A
CPL A
RL A
RLC A
RR A
RRC A
SWAP A
PE
.P
Logic AND
Logic OR
Logic XOR
Xo A
B 1 ca A
Quay tri A
Quay tri A qua c nh
Quay phi A
Quay phi A qua c nh
Chuyn i 2 nibble ca A
157
ED
Xo bit
U
.V
Ct vo ngn xp
Ly ra khi ngn xp
Chuyn i v tr hai d liu
Lp bit
T.
B 1 bit
And bit vi c C
And bit o vi c C
Or bit vi c C
Or bit o vi c C
Chuyn bit vo c C
PE
.P
TI
Nhy nu c C = 1
Nhy nu c C = 0
Nhy nu bit = 1
Nhy nu bit = 0
Nhy nu bit lp sau xo
Gi chng trnh con
158
U
.V
ED
Vi:
- Rn: cc thanh ghi R0 R7.
- Direct: 8 bit a ch RAM ni (00 FFH).
- @Ri: nh v a ch gin tip s dng R1 v R2
- source, dest: hoc Rn hoc direct hoc @Ri
- #data: hng s 8 bit.
- #data16: hng s 16 bit.
- Bit: a ch trc tip theo bit (0 7)
- Rel: s di c du 8 bit.
- Addr11: 11 bit a ch trong trang nh 2K hin hnh.
- Addr16: 16 bit a ch.
PE
.P
TI
T.
159
PE
.P
TI
T.
ED
U
.V
ASM51 l trnh hp dch mnh, n s dng cho vic pht trin h thng vi iu khin trn cc
h thng Intel v cc my tnh h IBM PC. V cc my tnh s dng chy phn mm ny c
CPU khc 8051, nn ASM51 c gi l trnh hp dch cho (cross assembler). Chng trnh
ngun 8051 c th vit trn my tnh, bng cc trnh son tho vn bn, sau c th hp dch
thnh file i tng (object) v file lit k (listing) bng ASM51. Ch rng, my tnh vi mt
CPU khc nn n s khng hiu c cc lnh nh phn ca file i tng. V th cn mt chng
trnh c kh nng np chng trnh i tng vo h thng 8051 thc hin.
thc hin vic hp dch bng ASM51, c th nh lnh sau t du nhc h thng:
ASM51 source file {assembly controls}
Source file l tn ca file ngun cn hp dch, cn assembler controls l cc kho iu khin
to ra cc tc ng khc nhau khi hp dch. ASM51 s nhn mt file ngun lm ng vo (v d
PROGRAM.SCR) v to ra 1 file i tng (PROGRAM.OBJ) v file listing (PROGRAM.LST)
V hu ht cc trnh hp dch xem xt chng trnh ngun 2 ln trong lc dch n sang ngn
ng my, nn chng c m t qua giai on hp dch (two - pass assembler) l:
Giai on 1 (pass1): file ngun c xem xt tng ng v bng k hiu c xy dng. V tr
b m chng trnh c mc nh l 0, hoc c thit lp bng ch th ORG (origin). Khi file
c xem xt, b m c tng ln tu theo di ca mi lnh. Cc ch th nh ngha d liu
(DB hoc DW) tng b m bng vi s byte c nh ngha. Cc ch th nh lu tr (DS) tng
b m bng s byte c d tr.
Khi tm thy 1 nhn (bt u mt hng r nhnh), th n s c t trong bng k hiu theo
gi tr hin hnh ca b m. Cc k hiu c nh ngha bng ch th EQU (equal) c t
trong bng k hiu. Bng k hiu c ct gi v sau dng trong giai on hp dch th 2.
Giai on 2 (pass2): to ra cc file i tng v lit k. Cc lnh gi nh c dch thnh cc
opcode v t trong file ra. Cc ton hng c nh gi tr v t pha sau opcode. Khi cc ton
hng l cc k hiu, gi tr ca chng s c ly li t bng k hiu (c to ra trong giai on
1), v dng to thnh d liu hoc a ch ng cho cc lnh.
Vi 2 giai on c thc hin nh trn, nn chng trnh ngun c th s dng cc k hiu
trc khi n c nh ngha, v d nh cc lnh r nhnh u chng trnh m cc nhn
chuyn ti cha c nh ngha.
File i tng khi hp dch thnh cng s ch cha cc byte nh phn (00H n FFH) ca
chng trnh ngn ng my. File i tng nh v (object relocatable) s cha mt bng k hiu
v thng tin khc cn thit cho s lin kt v nh v chng trnh. File lit k l mt file vn bn
bao gm c cc lnh gi nh v m my tng ng ca n. Khi c lnh li, file lit k cng cha
c cc thng bo li.
160
PE
.P
TI
T.
ED
U
.V
161
PE
.P
TI
T.
ED
U
.V
ORL 40H,#CONSTANT
Tt c cc ton hng tc thi (tr trong lnh MOV DPTR,#DATA) u l 8 bit. Nu d liu
c vit thnh 16 bit th byte thp s c s dng. Tt c cc bit trong byte cao phi ging nhau
(00H hoc FFH). Nu khng s c thng bo li value not fit in a byte (gi tr khng nm trong
mt byte).
V d cc lnh sau ng c php:
MOV A,#0FF00H
MOV A,#00FFH
Hai lnh sau y sinh ra thng bo li:
MOV A,#0FE00H
MOV A,#01FFH
Cc hng s thp phn t -256 n +256 cng c th s dng c cho ton hng tc thi. V
d 2 lnh sau ng c php v tng ng vi nhau:
MOV A,# -256
MOV A,#0FF01H
a ch trc tip (DATA address): Nhiu lnh truy xut cc vng nh s dng nh v trc tip
v cn 1 ton hng a ch RAM ni (00H n FFH). Cc k hiu c nh ngha c th c
dng cho cc a ch SFR.
V d:
MOV A,45H
hay
MOV A,SBUF tng ng vi lnh MOV A,99H.
a ch bit (bit address): Mt trong cc im mnh ca cc b vi iu khin l kh nng truy
xut cc bit ring l. Cc lnh truy xut cc bit phi cung cp 1 a ch bit trong RAM ni (vng
00H n 7FH), hoc a ch bit trong cc SFR (vng 80H n FFH).
C 3 cch ch th a ch bit trong mt lnh: dng a ch bit trc tip, dng ch s ch th v tr
ca bit trong mt byte d liu, dng k hiu hp dch c nh ngha trc.
V d:
SETB 0E7H
; Dng a ch bit trc tip
SETB ACC.7 ; Dng ch s ch th v tr bit.
JNB TI, $
; Dng k hiu c nh ngha TI.
a ch m (code address): a ch m c dng cho ton hng ca cc lnh nhy bao gm:
nhy tng i (nh SJMP v nhy c iu kin), nhy v gi tuyt i (ACALL, AJMP), nhy
v gi di (LJMP, LCAL). a ch m thng c cho dng nhn. V d:
HERE:
_
_
_
SJMP HERE
ASM51 s xc nh m a ch ng a vo lnh: hoc l a ch di 8 bit c du, hoc
a ch trang 11 bit hoc a ch di 16 bit tu theo tng lnh.
Cc lnh nhy v gi s dng chung (generic jumps and calls): ASM51 cho php ngi lp
trnh dng cc lnh gi nh s dng chung JMP hoc CALL. Lnh JMP c th c dng
thay cho SJMP, AJMP hoc LJMP, v CALL c th c dng thay cho ACALL hoc
LCALL. Trnh hp dch bin i lnh gi nh chung thnh mt lnh thc t sau vi quy lut
n gin. Lnh gi nh chung c bin i thnh dng ngn (ch s dng cho JMP) nu ni
nhy n khng theo hng ti v trong vng -128, hoc thnh dng tuyt i nu ch chuyn
n khng theo hng ti vt qu gii hn ngn, nhng nm trong vng 2K. Nu cc dng ngn
v tuyt i khng s dng c th lnh chung s c chuyn thnh dng di.
V d :
ORG 1234H
162
Start: INC A
JMP Start
;Hp dch nh lnh SJMP
ORG Start + 200
JMP Start
; Hp dch nh lnh AJMP
JMP Finish
; Hp dch nh lnh LJMP
Finish: INC A
END
S hp dch ny khng thc hin vic la chn tt nht cho chng trnh. V d nu nhy theo
hng ti (JMP Finish) ch cch khong vi byte nhng lnh chung JMP vn c i thnh lnh
nhy di (LJMP 3 byte), m khng i thnh lnh nhy ngn (SJMP ch c 1 byte).
PE
.P
TI
T.
ED
U
.V
6.6.3.5. Biu thc tnh ton tc thi khi hp dch (assemble - time expression evaluation)
Cc gi tr v hng s trong mt ton hng c th biu din theo ba cch: biu din bng gi
tr tc thi (v d 0EFH), biu din bng k hiu c nh ngha trc (v d Acc) hoc bng
mt biu thc (v d 2 + 3).
Vic s dng biu thc cung cp mt k thut mnh cho vic thc hin cc chng trnh hp
ng c kh nng d c v mm do hn. Khi hp dch cc biu thc trong lnh gi nh s c
tnh ton thnh gi tr c th a vo lnh.
Tt c cc biu thc u c tnh ton bng cc php tnh s hc 16 bit, tuy nhin cc s 8
bit cng c th s dng khi cn thit. V d hai lnh sau l hon ton tng ng:
MOV DTPR,#04FFH + 3
MOV DPTR,#0502H
Tng qut v cc nguyn tc cho cc biu thc tnh ton trong chng trnh hp ng bao gm
cc phn nh sau:
Cc s (Number bases): Cc con s trong cc biu thc thng s dng ging nh trong cc vi
x l ca Intel. Cc hng s cn phi theo sau bi cc k t qui nh: B cho s nh phn, O
hoc Q cho cc s trong h 8, D hoc khng c g cho s h 10 v H cho s h 16. V d:
MOV
A,#15
; thp phn
MOV
A,#1111B ; nh phn
MOV
A,#0FH ; hex
MOV
A,#15D ; thp phn
MOV A,#17Q
; Octal.
Ch rng cc s trong h 16 phi lun bt u bng cc con s (v d 0AH).
Cc chui k t (character strings): cc chui 1 hoc 2 k t c th c dng nh cc ton
hng trong cc biu thc. Cc m ASCII ca k t s c bin i thnh m nh phn tng ng
ca n khi hp dch. Cc hng k t phi nm trong du ngoc kp (a). V d:
CJNE
A,#Q,AGAIN.
Cc php ton s hc (Arithmetic operations): Cc php ton s hc thc hin c trong
biu thc l:
+ : cng
- : tr
. : nhn
/ : chia
MOD : php ly d sau khi chia.
V d lnh MOV A,#10+10H v lnh MOV A,#1AH l tng ng, 2 lnh MOV A,#25
MOD 7 v MOV A,#4 cng ging nhau.
163
PE
.P
TI
T.
ED
U
.V
Cc php ton logic (logical operations): Cc php ton logic cho php trong biu thc gm:
OR, AND, XOR, NOT. Cc php ton logic c thc hin trn cc bit tng ng trong mi ton
hng. Cc php ton phi c phn cch vi nhau bng k t khong trng (space) hoc cch
qung (tab). V d 3 lnh MOV sau y ging nhau:
THERE
EQU 3
MINUS_THREE EQU_3
MOV A,# (NOT THREE) +1
MOV A,#MINUS_THREE
MOV A,#11111101B
Cc php x l c bit (special operations): Cc php x l c bit l: SHR (dch phi), SHL
(dch tri), HIGH (byte cao), LOW (byte thp)
V d 2 lnh: MOV A,#8 SHL 1 v MOV A,#10H thc hin cng mt vic ging nhau, v hai
lnh MOV A,#HIGH 1234H v lnh MOV A,12H cng tng ng.
Cc php so snh (Relation Operators): Khi thc hin php so snh 2 ton hng th kt qu
hoc sai (0000H) hoc ng (FFFFH). Cc php so snh cho php trong biu thc bao gm:
EQ = equals
bng.
NE
<> not equals
khng bng.
LT < less than
nh hn.
LE <= less than or equals to nh hn hoc bng
GT
> greater than
ln hn.
GE >=
greater than or equals to ln hn hoc bng.
Ch rng mi php so snh c th vit hai dng (v d EQ hoc =).
V d cc lnh sau u c kt qu trong A = 0FFH:
MOV A,#5=5
MOV A,#5 NE 4
MOV A,#100 GE 50
MOV A,X LT Z
MOV A,X >=X
u tin ca cc php ton (operator precedence): S u tin ca cc php ton trong mt
biu thc t cao xung thp l:
()
HIGH, LOW
*, /, MOD, SHL, SHR
+, EQ, NE, LT, LE, GT, GE, =, <>, <, <=, >, >=
NOT
AND
OR XOR
Khi s dng cc php ton c cng u tin trong mt biu thc th chng c thc hin t
tri sang phi.
6.6.3.6. Cc ch th hp dch
ASM51 cung cp cc loi ch th sau:
- iu khin trng thi hp dch (ORG, AND,USING).
- nh ngha k hiu (SEGMENT, EQU, SET, DATA, NDATA, BIT, CODE).
164
PE
.P
TI
T.
ED
U
.V
+ Ch th ORG (origin):
Dng ca ch th ORG l:
ORG expression.
Ch th ORG thay i gi tr ca b m chng trnh, n khi ng mt gi tr mi cho b
m chng trnh bng mt biu thc i sau n.
V d: sau lnh ORG 100H , gi tr ca b m chng trnh s l 100H
Sau lnh ORG ($ +1000H) AND 0F000H s thit lp b m chng trnh tr ti vng 4 K
k tip.
+ Ch th END:
Ch th END t cui cng trong file ngun.
Dng ca n l:
END
+ Ch th USING:
Dng ca ch th ny l:
USING expression
Ch th USING cho php chng trnh chuyn i tp thanh ghi tch cc hin hnh. Cc lnh
theo sau s dng cc k hiu ca a ch thanh ghi c nh ngha trc AR0 AR7, s c
trnh hp dch chuyn i thnh a ch trc tip thch hp cho tp thanh ghi ang tch cc. V d
trong chui lnh sau:
USING 3 ; tch cc tp thanh ghi th 3
PUSH AR7
; ct a ch ca R7. (a ch R7 hin hnh = 1FH)
USING 1 ; tch cc tp thanh ghi th 1
PUSH AR7
; ct a ch hin hnh ca R7 thuc bng 1 = 0FH
Ch rng ch th USING khng thc s thc hin vic chuyn tp thanh ghi tch cc, n ch
thng bo cho trnh bin dch bit tp thanh ghi tch cc. Khi mun chuyn bng thanh ghi phi
thc hin cc lnh gi nh thch hp thay i gi tr cc bit 3 v 4 ca PSW. V d trn s phi
thc hin nh sau:
MOV PSW,#00011000B ;chn tp thanh ghi th 3
USING 3
PUSH AR7
; ct gi tr 1FH vo ngn xp
MOV PSW,#00001000B ; chn tp thanh ghi th 1
USING 1
PUSH AR7
; ct gi tr 0FH vo ngn xp
nh ngha k hiu (symbol definition)
K hiu nh ngha, cho php to ra cc k hiu biu din cho cc on, cc thanh ghi, cc
hng s v cc a ch. Chng bao gm:
+ Segment:
Dng ca ch th segment nh sau: symbol SEGMENT segment_type
Trong symbol l tn ca segment. ASM51 s dng nhiu loi on hn cc trnh bin dch
khc. Cc kiu on ca n c th l: CODE (on m lnh) XDATA (on d liu ngoi),
DATA (vng d liu ni c th truy xut bng nh v trc tip t 00H n 7FH), IDATA (ton
b vng d liu ni), BIT (vng a ch theo bit, trng vi cc a ch byte t 20H n 2FH ca
RAM ni).
V d EPROM SEGMENT CODE khai bo k hiu EPROM l 1 SEGMENT kiu CODE.
165
PE
.P
TI
T.
ED
U
.V
+EQU (equal):
Dng ca ch th EQU:
symbol EQU expression
Ch th EQU gn mt gi tr bng mt tn c th, ch tn phi khc lnh gi nh, khng
trng nhau, bt u bng ch, khng c khong trng v cc i 31 k t. V d:
N27 EQU 27
HERE EQU $
CR EQU 0DH
MESSAGE: EQU This is a message
+ Cc ch th nh ngha k hiu khc:
Ch th SET tng t nh ch th EQU ch khc ch k hiu s dng trong ch th SET c
th s dng li trong mt ch th SET khc.
Cc ch th DATA, IDATA, XDATA, BIT v CODE s dng gn a ch ca cc on
tng ng cho mt k hiu. Cc ch th ny khng phi l cc ch th c bn. C th thc hin mt
cch tng t vi ch th EQU.
Khi ng gi tr/khai bo hng bin (storage initialization/reservation)
Cc ch th ny cho php khi ng gi tr cho mt bin hoc khai bo 1 vng nh (1 t, 1
byte hoc 1 bit). Cc gi tr/bin khai bo bt u ti vng nh c ch nh bi gi tr hin hnh
ca b m chng trnh. Cc ch th ny c th nm sau 1 nhn.
+ Khi ng gi tr ( DS - define storage):
Dng ca DS l:
[ label: ] DS expression.
Ch th DS khai bo bin 1 byte trong b nh. N c th c dng trong bt k kiu on
no, ngoi tr on BIT. Khi gp pht biu DS trong chng trnh, th b m chng trnh ca
segment hin hnh c tng 1 khong, bng gi khai bo. Tng ca b m chng trnh v
gi tr c khai bo, khng c vt qu gii hn ca vng a ch hin hnh.
Cc lnh sau to ra 1 vng m 40 byte trong on d liu ni:
DSEG AT 30H
; t vo segment DATA ni
LENGTH EQU 40
BUFFER: DS LENGTH
; khai bo 40 byte.
Nhn BUFFE biu din cho a ch u tin ca vng nh c khai bo. Trong v d trn
BUFFER bt u a ch 30H bi v AT 30H c ch ra trong DSEG. Vng m ny c
th xa nh sau:
MOV R7,#LENGTH
MOV R0,# BUFFER
LOOP: MOV @R0,#0
DJNZ R7,LOOP
166
PE
.P
TI
T.
ED
U
.V
MOVX @DPTR,A
; Xa ni dung ti a ch 4000H tr i
INC DPTR
; tng thm 1 (trng hp u 4001H)
MOV A, DPL
CJNE A,#LOW (XBUFFER = XLENGTH + 10),LOOP
MOV A, DPH
CJNE #HIGH (XBUFFER = XLENGTH + 1), LOOP
Gi tr
00H
01H
04H
09H
10H
19H
4C
167
6F
67
69
6E
3A
00
Gi tr
12H
34H
00H
02H
Ch thch
Byte cao ca 1234H
Byte thp ca 1234H
Byte cao ca 2
Byte thp ca 2
T.
ED
a ch
0200H
0201H
0202H
0203H
U
.V
PE
.P
TI
6.7.
168
U
.V
Cung cp a ch
nh mun lp trnh
VCC
ED
P1
P2.0
P2.3
Dont care
Dont care
VIH
VIL
ALE
T.
P2.4
P2.5
P2.6
P2.7
XTAL2
P0
Cung cp d liu cn
lp trnh
Xung lp
trnh 50 msec
Vpp
RST
VIH
TI
EA
XTAL1
PSEN
VSS
.P
Cc tn hiu s dng cho vic lp trnh 8051 c cho trong bng sau:
RST
1
PSEN
0
ALE
EA
Vpp
P2.7
1
P2.6
0
Inhibit
Verify
1
1
0
0
1
1
X
1
1
0
0
0
Vpp
PE
Mode
Program
Security
P1, P2
Address
input
Dont care
Address
input
Dont care
P0
Data input
Dont care
Data
output
Dont care
Thng thng EA c gi mc logic cao cho n ngay trc khi cp xung lp trnh ti ng
vo ALE. Sau EA c a ln mc ngun lp trnh Vpp (thng 12V hoc 21V tu thuc
vo tng loi 8051), khi ht xung ALE cn chuyn ng vo ny tr v mc logic cao. Ch rng
ng vo ny khng c vt qu mc lp trnh ch nh (12,5 V hoc 21,5V), ngay c nhng
nhiu hp trn ng ngun ny cng c th lm h hng 8051. Tn hiu xung lp trnh cng
khng c c sai s qu ln.
169
ED
U
.V
PE
.P
TI
T.
Tm tt ni dung chng:
Vi iu khin l mt h thng vi x l bao gm CPU, b nh v vo ra c tch hp vo
trong mt vi mch duy nht. V th, vic thc hin phn cng cho h thng vi iu khin s
rt n gin, nn n thch hp cho cc ng dng nh khng yu cu dung lng b nh v
vo ra ln.
V b nh ca cc vi iu khin s thay i tu theo tng loi trong h, cc thanh ghi ca
8051 c thit k nm ngay trong b nh RAM ca n, v th cc thanh ghi c th truy cp
bng a ch RAM ni hoc bng tn ca chng.
Cc thanh ghi a nng bao gm R0 R7 c th s dng lu tr d liu, R0 v R1 c th s
dng lm thanh ghi a ch. truy cp b nh ngoi s dng thanh ghi con tr d liu
DPTR. Thanh ghi con tr ngn xp 8 bit khi khi ng s mang gi tr 07 v nh ngn xp s
bt u ti nh 08. Thanh ghi cha 8 bit A s dng cho tt c cc lnh logic, s hc v thanh
ghi cha ph B s dng cng A trong cc lnh nhn chia. Cc thanh ghi cho cng song song
l P0 P3. Cc thanh ghi cho cng ni tip l SMOD khi ng cng ni tip v SBUF s
dng truyn d liu qua cng ni tip. Cc thanh ghi cho Timer l: TMOD khi ng ch
timer, TCON iu khin hot ng timer, TH1, TL1 l cc thanh ghi m cho timer 1, TH0,
TL0 l cc thanh ghi m cho timer 0. Cc thanh ghi cho vic iu khin ngt: IE l thanh ghi
cho php ngt v IP l thanh ghi lp trnh u tin cho cc ngun ngt.
i vi cc cng song song c th truy cp 8 bit ca tng cng bng lnh MOV, cng c th
truy cp tng bit ca cng bng lnh SETB hoc CLR. Ch khi mun c mt cng vo trc
tin cn phi khi ng n bng cch cp ra bit 1.
i vi cng ni tip, trc tin cn chn ch hot ng bng cch ghi gi tr ti SMOD,
sau c th truyn nhn d liu bng cch ghi hoc c thanh ghi SBUF. Ch khi chn
cc ch c tc truyn thay i, cn khi ng Timer 1 hot ng ch 2 vi gi tr
m tng ng vi tc truyn d liu mong mun. Ngoi ra tc truyn d liu trong cc
ch cn ph thuc vo trng thi SMOD trong thanh ghi PCON.
170
U
.V
i vi timer cn chn ch timer bng cch ghi gi tr ti thanh ghi TMOD, sau khi
ng gi tr cho b m timer bng cch ghi gi tr vo cc thanh ghi THx v TLx. B m
Timer s bt u m tng khi iu kin cho php (tu theo cc bit GATE, TR v ng vo
INTx), vi ch cho php bn trong (GATE=0) th lnh SETB TRx s lm b m bt u
m ln. B m s m ln ti gi tr cc i (tt c cc bit bng 1) thm mt xung n s
quay v 0 v c TFx s lp, chng trnh c th s dng lnh JNB TFx,@ gim st qu
trnh m.
i vi ngt, trc ht cn lp trnh cho php ngt bng cch ghi gi tr vo thanh ghi IE, khi
mun ngt no c u tin cao hn c th lp trnh bit tng ng cho thanh ghi IP. Cc ngt
ngoi xy ra khi tc ng cnh xung hoc mc thp ti cc ng vo INTx. Ngt cng ni tip
xy ra khi nhn xong hoc truyn xong mt byte d liu. Ngt timer xy ra khi c trn TFx
c lp. Khi xy ra mt ngt iu khin chng trnh s chuyn v mt a ch c nh c
quy nh trc.
PE
.P
TI
T.
ED
BI TP
Bi 1: Thc hin chui lnh thc hin vic OR bit ti a ch 00 vi bit ti a ch 01 kt qu ghi
vo a ch 02 trong RAM ni ca 8051.
Bi 2: Cc a ch bit no c lp sau chui lnh sau:
MOV R0,#26H
MOV @R0,#7AH
Bi 3:M t chui lnh ghi gi tr 0ABH vo a ch 9A00H ca RAM ngoi trong h thng 8051.
Bi 4: Gi s 8051 hot ng vi thch anh 18 MHz, xc nh tn s xung ca ng ra ALE khi
khng c lnh truy cp b nh ngoi no c thc hin.
Bi 5: Tn hiu iu khin no ca 8051 s dng chn cc b nh EPROM v RAM ngoi.
Bi 6: Vit lnh lp bit thp nht ca thanh ghi cha m khng nh hng ti cc bit khc.
Bi 7: Vit chui lnh chp ni dung thanh ghi R7 vo a ch 100H ca b nh RAM ngoi.
Bi 8: Gi s lnh u tin thc hin sau khi Reset h thng l mt lnh gi chng trnh con,
thanh ghi PC s c cha vo a ch no ca RAM ni trc khi iu khin c chuyn
ti chng trnh con.
Bi 9: Lnh no chuyn 8051 qua ch power down.
Bi 10: Vit chui lnh chuyn gi tr trong nh c a ch 50H ca RAM ni vo thanh ghi
cha s dng nh v a ch gin tip.
Bi 11: Tnh gi tr offset tng i cho lnh SJMP AHEAD, gi s lnh ny nm ti a ch
0400H v 0401H, v nhn AHEAD biu din cho lnh nm ti a ch 041FH.
Bi 12: Tnh gi tr offset tng i cho lnh SJMP AHEAD, gi s lnh ny nm ti a ch
A050H v A051H, v nhn AHEAD biu din cho lnh nm ti a ch 9FE0H.
Bi 13: Gi s thanh ghi A cha gi tr 5AH. Gi tr ca A s bng bao nhiu sau khi lnh XRL
A,#0FFH c thc hin.
Bi 14: Nu PSW cha gi tr 0C0H v A cha gi tr 50H, sau khi lnh RLC A thc hin thanh
cha s c gi tr l bao nhiu ?
Bi 15: Gi s 8051 hot ng vi thnh anh 12 MHz, vit on chng trnh to ra xung vung
83.3 kHz trn cng P1.7.
Bi 16: Vit chng trnh to ra xung tc ng mc cao trong 4 sec trn cng P1.7 sau mi 200
sec.
Bi 17: Vit cc on chng trnh thc hin cc hm logic nh trn hnh v sau:
171
P1.4
P1.5
P1.6
P1.7
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P2.7
U
.V
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P1.8
a
b
c
d
e
f
g
dp
T.
P3.0
P3.1
P3.2
P3.3
ED
8051
PE
.P
TI
172
TI
T.
ED
U
.V
Gii thiu:
Ni dung chng ny cung cp phng php thc hin cc h thng vi iu khin cho cc ng
dng c th, bng cc v d c th nh thit k h thng o thng s tn hiu xung v h thng
truyn d liu ni tip.
Cng ging nh vic thit k cc h thng vi x l chuyn dng, trc tin cn phn tch
nhim v m h thng cn thc hin a ra cc yu cu c th v phn cng v phn mm. Sau
t cc yu cu c th , xy dng nn s phn cng vi cc khi mch chc nng cn
thit, tip theo thc hin cc gii thut phn mm cho chng trnh iu khin, v cui cng l
vit chng trnh iu khin cho h thng.
V h thng o thng s tn hiu xung, trc ht cn hiu c ngha ca cc thng s cn
o, tip theo tm hiu v nguyn tc o cc thng s . Ch khi hiu r c nhim v cn thc
hin ca h thng, chng ta mi c th thc hin c h thng vi x l thc hin nhim v .
y cn ch ti chc nng ca timer v cch s dng n trong vic o lng rng xung.
Ngoi ra cng cn tm hiu v cc LED 7 on v nguyn tc iu khin mt b hin th LED 7
on theo kiu multiplex.
V h thng truyn d liu ni tip, trc ht cn hiu r hot ng ca cng ni tip 8051, v
vi phn cng truyn nhn ni tip c tch hp sn, trong s phn cng ch cn ch ti
vic i mc tn hiu s ph hp gia vi iu khin v my tnh. V phn mm truyn nhn
trn my tnh cn tm hiu cch s dng i tng MSCOMM trong th vin MSDN.
.P
PE
B to xung
chun
T0
AND
B m
Hin th kt
qu.
Trn hnh 7.1, cng AND s cho php cc xung T0 chuyn ti ng vo b m khi xung cn
o mc cao. S m c trong thi gian xung cn o mc 1 s tng ng vi rng ca n.
Gi tr m c s c hin th ngi s dng thy c kt qu o. Theo nguyn tc ny s
c rng xung cn o Tx = N.T0, vi T0 l chu k xung chun v N l s xung m c.
Tuy nhin o lin tc th b m cn c xo v 0 trc khi xung cn o ln mc cao tr li.
173
PE
.P
TI
T.
ED
U
.V
174
Sai
ED
P3.2 = 0 ?
U
.V
Khi ng Timer
P3.2 = input
Start
ng
T.
Lu s m c trong
Xo b m v 0
TI
Call Display
.P
PE
Hnh 7.3. Gii thut chng trnh chnh h thng o rng xung.
175
X10000 ?
?
Sai
X/10000= ChucNgan
ED
D = D1
U
.V
ng
Start
D11000 ?
?
Sai
T.
ng
D1/1000= Ngan
TI
D = D2
PE
.P
ng
D2100 ?
?
Sai
D2/100= Tram
D = D3
D310 ?
?
D2/10= Chuc
D = DonVi
Ret
Hnh 7.4. Gii thut chng trnh i HEX ra DEC.
i gi tr thp phn ra m LED 7 on c th s dng phng php tra bng d liu.
Trc ht cn nh ngha mt bng d liu vi 10 m LED 7 on tng ng vi cc s thp phn
176
U
.V
Start
i=8
Position = 00000001B
7Code=a ch u bng
hin th
i = 0?
?
ng
TI
Sai
T.
ED
Port2=Position
Port1=7Code[i]
i=i-1
Quay tri Position
.P
Ret
Vi cc gii thut xy dng chng trnh phn mm bng hp ng cho h thng c th vit
nh sau:
PE
177
PE
.P
TI
T.
ED
U
.V
MOV 0FH,#3FH
;n thp nht khi khi ng sng s 0
CONT: JB P3.2 DISP
;P3.2 = 1 hin th d liu
MOV HEX1,TL
;Lu d liu ca b m timer
MOV HEX2,TH
MOV TL,#0
;Xo b m
MOV TH,#0
ACALL HEXtoDEC
;Gi chng trnh i ra gi tr thp phn
ACALL DECtoLED7
;Gi chng trnh i ra gi tr hin th
DISP: ACALL DISPLAY
;Gi chng trnh con hin th
SJMP CONT
;Chng trnh con i s HEX ra s DEC
ChucNgan EQU 20H
Ngan
EQU 21H
Tram
EQU 22H
Chuc
EQU 23H
Donvi
EQU 24H
HEXtoDEC: MOV ChucNgan,#0
MOV Ngan,#0
MOV Tram,#0
MOV Chuc,#0
MOV DonVi,#0
TinhChucNgan: CJNE HEX2,#HIGH(10000),CN1
;Kim tra s HEX c ln hn 10000
CJNE HEX1,#LOW(10000),CN2
;Bng th tnh hng chc ngn.
TinhChucNgan1: MOV SoTruHi,#High(10000)
MOV SoTruLo,#Low(10000)
ACALL CHIA
;Tnh gi tr hng chc ngn
INC ChucNgan
;c 1 ln chc ngn
SJMP TinhChucNgan
;Tip tc so snh vi 10000.
CN2:
JNC TinhChucNgan1
;Byte cao bng byte thp ln hn HEX>10000
SJMP TinhNgan
;Byte cao bng byte thp nh hn HEX<10000
CN1:
JNC TinhChucNgan1
;byte cao ln hn th HEX>10000
TinhNgan: CJNE HEX2,#HIGH(1000),N1
;HEX<10000 th Kim tra s HEX > 1000 ?
CJNE HEX1,#LOW(1000),N2
;Bng th tnh hng ngn
TinhNgan1: MOV SoTruHi,#High(1000)
MOV SoTruLo,#Low(1000)
ACALL CHIA
;Tnh gi tr hng chc ngn
INC Ngan
;c 1 ln ngn
SJMP TinhNgan
;Tip tc so snh vi ngn.
N2:
JNC TinhNgan1
;Byte cao bng byte thp ln hn HEX>1000
SJMP TinhTram
;Byte cao bng byte thp nh hn HEX<1000
N1:
JNC TinhNgan1
;byte cao ln hn th HEX>1000
TinhTram: CJNE HEX2,#HIGH(100),T1
;HEX<1000 th Kim tra s HEX > 100 ?
CJNE HEX1,#LOW(100),T2
;Bng th tnh hng trm
TinhTram1: MOV SoTruHi,#High(100)
MOV SoTruLo,#Low(100)
ACALL CHIA
;Tnh gi tr hng trm
178
PE
.P
TI
T.
ED
U
.V
INC Tram
;c 1 ln trm
SJMP TinhTram
;Tip tc so snh trm
T2:
JNC TinhTram1
;Byte cao bng byte thp ln hn HEX>100
SJMP TinhChuc
;Byte cao bng byte thp nh hn HEX<100
T1:
JNC TinhTram1
;byte cao ln hn th HEX>100
TinhChuc: CJNE HEX2,#HIGH(10),C1
;HEX<100 th Kim tra s HEX > 10 ?
CJNE HEX1,#LOW(10),C2
;Bng th tnh hng chc
TinhChuc1: MOV SoTruHi,#High(10)
MOV SoTruLo,#Low(10)
ACALL CHIA
;Tnh gi tr hng chc
INC Chuc
;c 1 ln chc
SJMP TinhChuc
;Tip tc so snh chc
C2:
JNC TinhChuc1
;Byte cao bng byte thp ln hn HEX>10
SJMP TinhDonVi
;Byte cao bng byte thp nh hn HEX<10
C1:
JNC TinhChuc1
;byte cao ln hn th HEX>10
TinhDonVi: MOV DonVi,HEX1
;S d cui cng cn li l hng n v.
RET
;Chng trnh con chia 16 bit
CHIA:
CLR C
;Xo c C s dng lnh tr c nh
MOV A,HEX1
SUBB A,SoTruLo
;Tr byte thp trc
MOV HEX1,A
;S d cha tr li HEX1
MOV A,HEX2
SUBB A,SoTruHi
;Tr byte cao
MOV HEX2,A
RET
;Chng trnh con hin th d liu
DISPLAY: MOV R0,#00000001B
;M chn LED bit 1 D7 chn LED bn tri nht
MOV R1,#08H
;R1 gi a ch u vng nh hin th
MOV R2,#08H
;R2 m s vng lp hin th (8 led)
D1:
MOV P1,R0
;a m chn v tr LED sng ra cng 1
MOV P2,@R1
;Cp m hin th ra cng 2
MOV P2,#0
;Xo m va hin th khng sng qua LED k
RR R0
;Chn LED k tip
INC R1
;Chn m hin th k tip
DJNZ R2,D1
;Lp li khi cha ht 8 vng
RET
; Chng trnh con i gi tr thp phn ra m LED 7 on
DECtoLED7: MOV R0,#20H
;R0 gi a ch u vng nh cha gi tr s thp phn
MOV R1,#08H
;R1 cha a ch bt u vng nh cha m hin th
TIEP:
MOV A,@R0
;A cha s thp phn cn i
ACALL CONV
;Gi chng trnh con i ra m LED
MOV @R1,A
;Ct m LED i xong vo vng nh hin th
INC R0
;i s thp phn k tip
INC R1
; nh hin th k tip
CJNE R0,#25H,TIEP
;Nu cha ht s cn i th tip tc
179
VCC
VCC
U
.V
U1
40
20
R1IN
R2IN
T1OUT
T2OUT
R1OUT
1
3
4
5
2
6
C5
C8
T1IN
10
10uF
VCC
MAX232
PE
R
R
KEY5
KEY6
D1
KEY1
D2
KEY7
P37 (RD)
P36 (WR)
LED0
LED1
LED2
LED3
LED4
LED5
LED6
LED7
39
38
37
36
35
34
33
32
KEY0
KEY1
KEY2
KEY3
KEY4
KEY5
KEY6
KEY7
30
29
17
16
KEY2
D3
KEY3
D4
KEY4
D5
KEY5
D6
KEY6
D7
KEY7
D8
R
LED0
R3
LED
R
LED1
R5
LED
R
R7
LED
LED2
R
R9
LED
LED3
R
LED4
R11
LED
R
R13
LED
KEY-8
ALE
PSEN
LED
KEY0
KEY-7
R16
P3.0 (RxD)
P3.1 (TxD)
P3.2 (INT0)
P3.3 (INT1)
P3.4 (T0)
P3.5 (T1)
KEY-6
R14
XTAL2
KEY-4
KEY4
R12
10
11
12
13
14
15
KEY-5
R
R10
33pF
KEY-3
KEY3
R8
XTAL1
KEY-2
KEY2
R6
19
Y1
4MHz
18
KEY-1
KEY1
R4
C4
C6
P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7
21
22
23
24
25
26
27
28
89C51
KEY0
R2
33pF
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
11
.P
+
10uF C7
T2IN
EA
RST
1
2
3
4
5
6
7
8
R1
R
15
VCC
DB9
12
TI
10uF +
11
C1+
C1C2+
C2V+
V-
GN D
C3
10uF
31
9
T.
R2OUT
C2
P2.0
P2.1
P2.2
P2.3
P2.4
P2.5
P2.6
P2.7
ED
13
8
14
7
VC C
U2
16
C1
0.1uF
COMPORT1
1
2
3
4
5
6
7
8
9
10
VCC
GND
LED5
R
R15
LED
LED6
R
R17
LED7
180
U
.V
T.
ED
PE
.P
TI
Hnh 7.7. Gii thut chng trnh truyn nhn d liu cng ni tip.
181
TI = 1?
?
ng
Ghi d liu ti SBUF
ED
End
U
.V
Sai
Start
RI = 1?
?
ng
TI
Sai
T.
Start
End
.P
c d liu t SBUF
PE
Vi cc s gii thut trn chng trnh truyn nhn d liu cho h thng 8051 bng
hp ng nh sau:
ORG 0
MOV TH1,#0F9H
; S dng Timer 1 xc nh tc truyn 9600 baud vi
MOV TMOD,#00100000B; thnh anh 12 MHz, Timer 1 ch 2
SETB TR1
;Cho php Timer1 chy
MOV SCON,#00001001B ;Khi ng cng ni tip ch 1, UART 8 bit.
TIEP:
CALL NHAN
;Gi chng trnh nhn d liu
MOV P2,A
;Gi d liu nhn c ra cng 2.
MOV A,P0
;Ly gi tr t cng tc vo A
CALL TRUYEN
;Gi chng trnh truyn d liu
SJMP TIEP
182
ED
T.
.P
TI
Option Explicit
Dim LEDs As Integer
Dim Switches() As Byte
Dim sData As String
Dim temp As String
Dim Button As Integer
Dim PB0 As Integer
Dim PB1 As Integer
Dim PB2 As Integer
Dim PB3 As Integer
Dim PB4 As Integer
Dim PB5 As Integer
Dim PB6 As Integer
Dim PB7 As Integer
U
.V
PE
183
U
.V
.P
TI
T.
ED
PB1 = 0
Check10.BackColor = QBColor(10)
ElseIf Check10.Value = 1 Then PB1 = 2
Check10.BackColor = QBColor(12)
End If
Call Command1_Click
End Sub
PE
184
U
.V
ED
End Sub
PE
.P
TI
T.
185
U
.V
TI
T.
ED
End If
i = Mid(sResult, 7, 1)
If i = "0" Then
Shape2.FillColor = QBColor(12)
Else: Shape2.FillColor = QBColor(10)
End If
i = Mid(sResult, 6, 1)
If i = "0" Then
Shape3.FillColor = QBColor(12)
Else: Shape3.FillColor = QBColor(10)
End If
i = Mid(sResult, 5, 1)
If i = "0" Then
Shape4.FillColor = QBColor(12)
Else: Shape4.FillColor = QBColor(10)
End If
i = Mid(sResult, 4, 1)
If i = "0" Then
Shape5.FillColor = QBColor(12)
Else: Shape5.FillColor = QBColor(10)
End If
Next
Next
End Sub
PE
.P
186
ED
U
.V
PE
.P
TI
T.
Errorhandler:
If Err = 8005 Then
'if COM1 port is open then...
com2.Value = True
'check the 2th option button
MSComm1.CommPort = 2 'change to COM2 port
Resume
'return
End If
End Sub
Giao din chng trnh khi chy nh trn hnh 7.10.
Hnh 7.10: Giao din chng trnh truyn d liu ni tip trn my tnh.
187
PE
.P
TI
T.
ED
U
.V
Tm tt chng:
Nguyn tc o rng xung l dng xung cn o m cng cho mt xung chun cung
cp cho b m, v da vo s xung chun m c c th xc nh c rng xung
cn o.
Khi s dng 8051, xung chun s c cp t b dao ng ni, b m s s dng b m
timer v xung cn o s c cp ti ng vo INT cho php b m bt u m ln,
nh vy timer cn c khi ng ch cho php chy t bn ngoi (GATE=1). Xung
m c khi ng vo cho php ht mc 1 s di dng s HEX, biu din cho rng
xung tnh bng sec. hin th gi tr ny trc ht cn i ra gi tr thp phn tng
ng. Tip theo, cn phi i cc s thp phn cn hin th ra m LED 7 on cung cp
ti b hin th. i t HEX ra thp phn c th chia lin tip cho 10000, 1000, 100 v
10, cc thng s tng ng s l hng chc ngn, hng ngn, hng trm, hng chc, v
s d cui cng cn li s l hng n v. i ra m LED 7 on c th dng cch tra
bng vi ch a ch tng i ch s s dng DPTR. Chng trnh hin th s qut cc
LED theo kiu multiplex, chng trnh s tun t cung cp m chn LED (ti mt thi
im ch chn 1 LED) ra mt cng, v m hin th ln LED ra cng cn li ca 8051.
Cc LED s tun t c hin th. Nu chng trnh qut LED c gi li trong mt thi
gian ngn, ton b cc LED s sng do mt khng thy c tc sng tt rt nhanh ca
cc LED.
H thng truyn d liu ni tip thc hin vic truyn nhn d liu gia my tnh v h
thng 8051. h thng 8051 khi truyn nhn ni tip c tch hp sn, nhng mc
tn hiu truyn nhn l 0V cho mc 0, v 5V cho mc 1, vi cng COM my tnh l -12V
cho mc 0 v +12V cho mc 1. V vy cn s dng IC MAX232 chuyn i gia hai
mc logic ny. V phn mm cn phi khi ng khung truyn nhn v tc truyn
nhn d liu ca 8051 v my tnh ging nhau. Vi 8051 c th ghi gi tr thch hp vo
thanh ghi SMOD, vi my tnh dng cc lnh ca MSCOMM.
BI TP:
Bi 1: Thit k h thng m s ngi vo mt sn vn ng i qua mt ca quay. Gi s rng
cm bin ca quay c ni vi Timer1 s pht ra mt xung khi c mt ngi i qua,
cng P1.7 c ni ti 1 n bo, n s sng khi cng c cung cp mc 1. Vit
chng trnh bt sng n khi ngi th 10000 i qua cng.
Bi 2: Thit k phn cng v gii thut phn mm mt ng h in t s dng timer ca 8051
vi ngun xung chun bn trong chy vi thch anh 12 MHz.
Bi 3: Thit k giao tip bn phm ma trn 4x4 v mn hnh 8 led 7 on vi 8051 vi ch b
nh trong. Thit k mch cung cp tn hiu ngt nh thi sau mi 20 msec.
a) Vit chng trnh qut bn phm i thnh m hin th led 7 on ct vo b nh.
b) Vit chng trnh ngt hin th 8 nh ln mn hnh led 7 on.
Bi 4: Thit k h thng vi iu khin nhn tn hiu quay s trn mt in thoi hin th ln cc
LED 7 on (ti a 10 s).
Bi 5: Thit k h thng vi iu khin ng m n giao thng trn mt ng t t ng vi cc
thi gian sng n , xanh, vng nh trc.
Bi 6: Thit k h thng o v hin th nhit bng vi iu khin 8051.
Bi 7: Thit k b m sn phm chy trn mt bng ti bng vi iu khin 8051.
Bi 8: Thit k h thng vi x l o tc quay ca mt ng c vi ng vo l mt cm bin tc
(rotting encoder).
188
T.
ED
U
.V
Gii thiu:
Chng ny gii thiu v mt trong cc b vi iu khin 32 bit c cu hnh rt mnh l
MC68332. Trc ht cn quan tm ti cc tnh nng c th h tr ca vi iu khin ny, n bao
gm cc khi chc nng no v c nhim v g trong hot ng ca h thng. Cn c bit quan
tm ti cc tnh nng h tr iu khin rt mnh ca khi TPU. Cc chc nng truyn d liu ni
tip ca QSM, c bit l chc nng truyn theo chun SPI cha c cp ti trong chng
trnh. Ngoi ra v phn cng cn quan tm ti cc thanh ghi trong vi iu khin, chc nng s
dng ca chng d dng hn khi lp trnh.
Lp trnh cho vi iu khin MC68332 cng ging nh i vi 8051 hay 80286, trc ht cn
ch ti cc lnh gi nh. d dng ghi nh tp lnh cn chia thnh cc nhm lnh vi cc
chc nng chung, v c bit ch ti cch vit lnh khc so vi cc vi x l vi iu khin h
Intel, ngoi ra cn cn ch ti cch ch th di d liu trong lnh.
Khung chng trnh hp ng vit cho MCU68332, trc ht cn khi ng cho cc ngoi l
(bao gm c cc ngt). Nu khng s dng ngt t nht cng phi khi ng cc gi tr cho cc
thanh ghi SP v PC trong ngoi l reset. Sau khi khi ng ngoi l cn khi ng cn khi ng
thanh ghi trng thi ca CPU. Sau khi khi ng xong CPU, tip theo cn khi ng cho cc
thanh ghi ca SIM, cui cng c th thc hin cc lnh ca chng trnh. Tuy nhin nu s dng
cc khi chc nng ca MCU, cn phi vit cc on chng trnh khi ng chng v nu s
dng ngt cn vit cc chng trnh ngt.
TI
PE
.P
S khi phn cng MC68332 nh trn hnh 8.1 bao gm cc khi chc nng nh:
M un tch hp h thng (SIM System Integrated Module): Khi ny thc hin cc tnh
nng nh:
- H tr cc tn hiu giao tip BUS bn ngoi.
- Cung cp cc ng ra chn mch (Chip select) c th lp trnh c.
- Cung cp cc logic bo v h thng.
- C cc b nh thi Watchdog, b gim st clock v b gim st h thng.
- C khi dao ng to xung clock vi thch anh 32.768 MHz tiu th ngun thp.
- C khi chc nng chy th nghim (Test/Debug) lm cng c pht trin phn mm cho
ngi s dng h thng.
- Hai cng vo ra 8 bit hai chc nng.
- Mt cng ra 7 bit hai chc nng.
B vi x l (CPU - Central Processing Unit): MCU68332 s dng CPU 32 bit vi cc tnh
nng nh:
- C kh nng tng thch hng ln, cc phn mm khng cn sa i vn thc hin
c.
- C cc lnh mi chuyn dng cho chc nng iu khin.
- C kh nng qun l b nh o.
- C ch lp cc lnh.
- C chc nng s dng cc bng do tm (Lookup Table) v lnh a vo.
189
PE
.P
TI
T.
ED
U
.V
190
PE
.P
TI
T.
ED
U
.V
M un tch hp h thng bao gm 5 khi chc nng thc hin cc chc nng: khi ng,
khi to, cu hnh cho cc khi chc nng v truy cp BUS ngoi nh m t trn hnh 8.3.
Khi bo v v nh cu hnh cho h thng iu khin MCU thit lp cc cu hnh v cc ch
hot ng. Khi ny cn cung cp BUS v gim st cc phn mm Wachdog.
B to cclock s cung cp clock cho hot ng ca SIM, cc khi mch khc v cc thit b
bn ngoi. Ngoi ra n cn c b to chu k ngt h tr vic thc hin cc chng trnh ngt theo
gii hn thi gian nht nh.
Khi giao tip BUS ngoi x l vic truyn thng tin gia m un IBM v khng gian a ch
bn ngoi.
191
PE
.P
TI
T.
ED
U
.V
Khi chn chip cung cp 11 tn hiu chn chip a dung v 1 tn hiu chn ROM khi ng
(boot ROM). C hai nhm tn hiu chn ny u to ra cng vi cc thanh ghi a ch c s v cc
thanh ghi la chn.
Khi kim tra h thng bao gm cc khi mch phn cng cn thit cho vic chy kim tra
MCU. N thc hin cc th nghim cho cc chc nng thc hin trong nh my m khng h tr
cho cc ng dng bnh thng.
Cc thanh ghi iu khin ca SIM bao gm 128 byte nh m t trong bng 8.1. Cc thanh ghi
khng s dng (Not Use) khi c s tr v gi tr bng 0. Trong ct (ACCESS) ch S ch th thanh
ghi ch c truy cp mc gim st Suppervisor, ch S/U ch th thanh ghi c th truy xut
mc gim st Supervisor hoc mc ngi s dng User tu theo trng thi ca bit SUPV
trong thanh ghi SIMCR.
S
S
S
S
$YFFA08
$YFFA0A
$YFFA0C
$YFFA0E
Access
S
S
S
S
15
8 7
0
SIM CONFIGURATION (SIMCR)
FACTORY TEST (SIMTR)
CLOCK SYNTHESIZER CONTROL (SYNCR)
NOT USED
RESET STATUS REGISTER
(RSR)
MODULE TEST E (SIMTRE)
NOT USED
NOT USED
NOT USED
NOT USED
NOT USED
NOT USED
192
$YFFA18
$YFFA1A
$YFFA1C
$YFFA1E
$YFFA20
S
S
S
$YFFA22
$YFFA24
$YFFA26
S
S
S
S
S
S
S
S
S
S/U
$YFFA28
$YFFA2A
$YFFA2C
$YFFA2E
$YFFA30
$YFFA32
$YFFA34
$YFFA36
$YFFA38
$YFFA3A
$YFFA3C
$YFFA3E
$YFFA40
$YFFA42
$YFFA44
$YFFA46
$YFFA48
$YFFA4A
$YFFA4C
$YFFA4E
$YFFA50
$YFFA52
$YFFA54
$YFFA56
$YFFA58
$YFFA5A
.P
PE
S/U
S
S
S
S
S
S
S
S
S
S
S
S
S/U
S/U
S/U
U
.V
$YFFA16
ED
NOT USED
NOT USED
NOT USED
T.
$YFFA10
$YFFA12
$YFFA14
TI
S/U
S/U
S/U
193
U
.V
$YFFA5C
$YFFA5E
$YFFA60
$YFFA62
$YFFA64
$YFFA66
$YFFA68
$YFFA6A
$YFFA6C
$YFFA6E
$YFFA70
$YFFA72
$YFFA74
$YFFA76
$YFFA78
$YFFA7A
$YFFA7C
$YFFA7E
ED
S
S
S
S
S
S
S
S
S
S
S
S
S
S
PE
.P
TI
T.
Y = M111, vi M l trng thi ca bit bn m un (module mapping - MM) trong thanh ghi
SIMCR.
194
ED
PE
.P
TI
T.
U
.V
Khi giao tip BUS ngoi (EBI External Bus Interface) truyn cc thng tin gia BUS bn
trong MCU v cc thit b bn ngoi. BUS bn ngoi c 24 ng a ch v 16 ng d liu.
EBI c BUS d liu c th truy xut 8 hoc 16 bit. Vi cu trc ny MCU c th thc hin cc
lnh truyn d liu theo byte, t hoc t di (2 t). Cc cng c truy xut bng cc chu k cn
ng b v c iu khin bng cc tn hiu xc nh kch thc d liu truyn (SIZ1, SIZ2) v
cc tn hiu nhn bit (DSACK1, DSACK0). Khi truy xut c ghi cc cng 8 bit cng cn cc
chu k BUS.
Trong cc chu k truy xut cng vo ra, d liu lun c c ghi vi s bit ln nht. Cc
thit b bn ngoi cn tun theo cc th tc bt tay ca EBI. Cc tn hiu iu khin s ch th: bt
195
ED
U
.V
T.
PE
.P
TI
Tn hiu chn
CSBOOT
CS0
CS1
CS2
Cng ng ra
196
PC0
PC1
PC2
PC3
PC4
PC5
PC6
ECLK
FC0
FC1
FC2
ADDR19
ADDR20
ADDR21
ADDR22
ADDR23
U
.V
8.2.5 Cc ng vo ra a dng
Cc chn tn hiu ca SIM c th lp trnh to thnh 2 cng vo ra a dng E v F. Cc
thanh ghi d liu cng, nh hng truyn d liu cho cng v gn chn cho cng s cho php
iu khin vic truy cp cc cng ny.
PORTE0, PORTE1 Thanh ghi d liu cng E - a ch $YFFA11, $YFFA13
8
ED
15
TI
T.
Khi thc hin lnh ghi ti thanh ghi d liu cng E, d liu s c cha cc b ci bn
trong thanh ghi, nu chn no ca cng E c lp trnh thnh ng ra th gi tr ca bit s c
cung cp ti cc chn ng ra bn ngoi. Khi c d liu ca thanh ghi cng E s tr v gi tr ch3a
cc chn vo bn ngoi ch khi chng c lp trnh l mt ng vo, nu khng gi tr c
c ch l gi tr trong cc b ci ca thanh ghi ny.
.P
Thanh ghi d liu cng E bao gm hai a ch, a ch $YFFA11 cho cng PORTE0 v a ch
$YFFA13 cho cng PORTE1. Thanh ghi ny c th c ghi ti bt c thi im no v gi tr ca
n khng b nh hng khi RESET.
PE
15
Thanh ghi nh hng d liu cng E s dng nh ngha hng truyn d liu cho cc chn
vo ra cng E. C mt bit ca thanh ghi ny bng 1 th chn cng E tng ng vi n s l cng
ra, ngc li bit bng 0 s nh ngha chn vo. Thanh ghi ny cng c th c ghi ti mi thi
im.
PEPAR Thanh ghi gn chn cng E - $YFFA17
15
Cc bit trong thanh ghi gn chn cng E s dng iu khin chc nng mi chn ca cng
ny. Khi mt bit trong thanh ghi ny c lp, chn cng E tng ng vi n s l mt tn hiu
iu khin BUS nh trong bng 8.3. Khi bit trong thanh ghi PEPAR xo v 0, chn tng ng vi
n s l ng vo ra c iu khin bng cc thanh ghi PORTE v DDRE.
197
Tn hiu cng E
PE7
PE6
PE5
PE4
PE3
PE2
PE1
PE0
U
.V
PEPAR Bit
PEPA7
PEPA6
PEPA5
PEPA4
PEPA3
PEPA2
PEPA1
PEPA0
ED
T.
.P
TI
Cc tn hiu iu khin
PFPA7
PF7
IRQ7
PFPA6
PF6
IRQ6
PFPA5
PF5
IRQ5
PFPA4
PF4
IRQ4
PFPA3
PF3
IRQ3
PFPA2
PF2
IRQ2
PFPA1
PFPA0
PF1
PF0
IRQ1
MODCLK
PE
Cc bit PFPAR
8.2.6. RESET
Qu trnh RESET thng s dng khi ng li h thng v phc hi li h thng khi xy
198
U
.V
ra cc li nghim trng. MCU MC68332 thc hin qu trnh RESET kt hp gia phn cng v
phn mm. Khi x l RESET tch hp trong MCU s xc nh cc gi tr RESET cn thit v tn
hiu iu khin phn cng thc hin li cu hnh c bn cho MCU da theo cc ng vo chn
ch , sau tr iu khin v cho CPU.
Qu trnh RESET s xy ra khi cung cp mc thp ti ng vo RESET ca MCU. Qu trnh
RESET cn ng b xy ra khi c cc li nghim trng trong h thng ti mt cnh clock bt k.
Cn qu trnh RESET ng b s xy ra ti cui mi chu k BUS. Nu khng cung cp clock khi
RESET th qu trnh RESET s khng xy ra, iu ny trnh xung t cho cc chu k ghi xy ra
ngay ti thi im RESET.
RESET l ngt c u tin cao nht ca CPU, bt c qu trnh no cng b ngt khi xy ra
RESET v cc qu trnh s khng c thc hin li, ch c cc tc v c bit mi c thc
hin trong khi RESET, cn cc qu trnh khi ng khc cn phi thc hin bng cc chng
trnh con x l ngoi l.
PE
.P
TI
T.
ED
8.2.7. Ngt
Qu trnh cng nhn v phc v ngt l mt qu trnh x l phc tp gia CPU vi cc
module tch hp trong h thng v cc thit b hoc cc module yu cu ngt. MC68332 c 8 mc
u tin ngt (0 7), by vector ngt c t ng v 200 vector ngt c th thay i c. Tt c
cc ngt c th t u tin nh hn by c th che bng cc bit u tin ngt (IP) trong thanh ghi
trng thi. MC68332 x l cc ngt ging nh cc ngoi l cn ng b.
Vic cng nhn ngt da theo trng thi ca cc tn hiu yu cu ngt IRQ[7:1] v cc gi tr
che (IP), mi tn hiu yu cu ngt c mc u tin khc nhau, IRQ1 c mc u tin thp nht v
IRQ7 c mc u tin cao nht.
Trng u tin IP bao gm ba bit c gi tr nh phn t 000B ti 111B to ra 8 mc u tin.
Cc bit che s b qua mt yu cu ngt c th t u tin nh hn hoc bng vi gi tr che (tr
IRQ7) k t khi bt u cng nhn v thc hin qu trnh x l ngt. Khi IP cha gi tr 000B
khng c ngt no b che. Trong cc qu trnh x l ngoi l th trng u tin ngt IP c thit
lp gi tr u tin ca ngt bt u c phc v.
Tn hiu yu cu ngt c th cung cp t cc thit b bn ngoi hoc t cc module bn trong
MCU. Cc ng yu cu c ni ti cc ng vo mt cng NOR bn trong MCU. Cc yu cu
ngt tc ng bn trong MCU s khng lm nh hng ti trng thi logic cc chn tng ng
ca MCU. Cc yu cu ngt ngoi s ni ti CPU thng qua khi giao tip BUS ngoi v khi
logic iu khin ngt ca SIM, nn CPU s x l cc ngt ngoi ging nh n c cung cp t
SIM.
Cc ngt ngoi t IRQ6 ti IRQ1 tc ng mc thp, cn IRQ7 tc ng cnh xung, IRQ7
yu cu c hai tc ng cnh v mc thp ca tn hiu yu cu.
IRQ1 IRQ6 l cc ngt c th che c, cn IRQ7 khng th che c, ng vo IRQ7 tc
ng cnh trnh chng trnh ngt thc hin nhiu ln v ngn xp c th b trn. Ngt khng
che s tc ng khi ng vo IRQ7 c cnh xung v gi tr ca IP trong thanh ghi trng thi phi
nh hn 111B (trong khi IRQ7 tc ng).
Cc yu cu ngt c ly mu lin tc ti mi cnh xung ca chu k xung clock. Yu cu
ngt hp l s khng tc ng tc thi trong khi CPU x l cc ngoi l, qu trnh ch s c
thc hin cho ti khi kt thc lnh hoc cho ti khi cc yu cu ngt c u tin cao hn kt thc.
MC68332 khng ci li mc u tin ca mt yu cu ngt ang ch, nu ngt c mc u tin
cao hn yu cu phc v, trong khi mt ngt c u tin thp hn ang ch th ngt c mc u tin
199
- $YFFA30
- $YFFA32
TSTRC
CREG
DREG
U
.V
- $YFFA34
- $YFFA36
- $YFFA38
- $YFFA3A
ED
TSTSC
PE
.P
TI
T.
MC68332 s dng CPU MC68020 l loi CPU 32 bit vi hiu sut hot ng h thng cao v
cho php thc hin cc chng trnh ca cc Cpu h Motorola M68000. MC68332 c m lnh
hon ton tng thch vi h M68000, nhng n tri hn v cc gii thut tnh ton chuyn su v
h tr ngn ng bc cao. MC68332 h tr tt c cc tc v c bit M68010 v hu ht cc tc v
c bit ca M68020 nh: h tr qun l b nh o, cc ch lp, cu trc ng ng v cc
php ton 32 bit. N c cc ch a ch mnh trong hp ng v tng hiu qu lm vic i vi
cc trnh bin dch ngn ng cp cao. MC68332 cn c cc lnh c bit nh bng truy tm, ni
suy, ngng hot ng vi ngun thp, cc lnh c bit cho cc ng dng iu khin. N cng c
ch g ri nn cho php tm dng ch hot ng bnh thng nhn cc lnh gi ri cung
cp t h thng.
Vic h tr lp trnh l mt yu t kh quan trng cn xt ti khi s dng cc MCU. Tp lnh
ca MC68332 c ti u ho cho hiu sut cao. MC68332 c 8 thanh ghi d liu 32 bit s dng
cho vic thc hin cc lnh tnh ton 8, 16 hoc 32 bit. MC68332 h tr h tr kh nng kim tra
v chun on chng trnh, lm nng cao kh nng tm kim v by mc lnh.
Vic s dng ngn ng bc cao cho cc vi iu khin vi mc ch lm nng cao kh nng
pht trin phn mm, lm gim li lp trnh v d dng s i chng trnh hn. Tuy nhin khi
lp trnh bng ngn ng bc cao cho cc vi iu khin s lm cc chng trnh iu khin ln
hn, phc tp hn. Cu trc h tr ngn ng bc cao bng phn cng ca MC68332 s lm gim
ln v phc tp ca cc chng trnh iu khin khi thc hin chng bng ngn ng cp
cao.
200
ED
U
.V
.P
TI
T.
PE
201
U
.V
PE
.P
TI
T.
ED
Hai byte ca thanh ghi trng bao gm byte h thng v byte ng dng:
Byte h thng gm cc bit:
T[1:0] Trace Enable - Cho php ch tm kim.
S Supervisor/User State Bits - Bit trng thi mc Gim st/ng dng.
[12:11] Unimplemented - Khng s dng.
IP[2:0] Interrupt Priority Mask Trng che u tin ngt.
Byte ng dng (thanh hgi m iu kin) bao gm cc bit:
Bits [7:5] Unimplemented khng s dng.
X Extend M rng.
N Negative - C m tc ng khi kt qu l mt s m.
Z Zero C zero tc ng khi kt qu bng 0.
V Overflow c trn tc ng khi c s i du vi cc php tnh trn cc s dng.
C Carry - c nh tc ng khi php tnh c nh,
CPU ca MC68332 h tr su kiu d liu bao gm:
- Kiu Bits.
- S BD nn.
- Kiu s nguyn theo byte (8 bit).
- Kiu s nguyn theo t (16 bit)
- Kiu s nguyn theo t kp 932 bit)
- Kiu s nguyn 4 t (64 bit)
Cc ch a ch m CPU ca MC68332 bao gm:
- Trc tip thanh ghi.
- Gin tip thanh ghi.
- Ch gin tip thanh ghi c ch s.
- Ch gin tip b m chng trnh c di.
- Ch gin tip b m chng trnh c ch s.
- Ch tuyt i.
Ch ia ch tc thi nm trong ch a ch gi tip thanh ghi c kh nng tng trc,
gim trc v c di (offset). Ch tng i b m chng trnh cng h tr ch s v
di. Ngoi ra trong tt c cc ch a ch u c cc ch th ngm nh s dng thanh ghi trng
thi, thanh ghi con tr ngn xp hoc thanh ghi b m chng trnh.
202
Dump Memory
Block
U
.V
FILL
.P
Fill Memory
Block
ED
Write Memory
Location
M t
c d liu t thanh ghi a ch hoc d liu, tr
kt qu thng qua giao tip noi tip.
WDREG/WAREG Ghi mt d liu ti thanh ghi a ch hoc thanh
ghi d liu.
RSREG
c mt thanh ghi iu khin h thng. Tt c
cc thanh ghi c th c trong mc gim st u
c th c trong ch gi ri.
WSREG
Ghi d liu ti mt thanh ghi iu khin h
thng.
READ
c d liu t mt nh c a ch 32 bit.
Thanh ghi m chc nng ngun (Source
Function Code - SFC) s xc nh loi b nh
c truy cp.
WRITE
Ghi d liu t mt nh c a ch 32 bit. Thanh
ghi m chc nng ch (Destination Function
Code - DFC) s xc nh loi b nh c truy
cp.
DUMP
Lnh ny s dng cng vi lnh READ c
mt khi d liu.
T.
Write System
Register
Read Memory
Location
M gi nh
RDREG/RAREG
TI
Lnh
Read D/A
Register
Write D/A
Register
Read System
Register
GO
CALL
PE
Resume
Execution
Patch User Code
RST
NOP
ng ng lnh s c xo v ly y lnh
trc khi thc hin lnh ti v tr PC hin hnh.
B m chng trnh hin hnh s c ct vo
nh ngn xp. iu khin chng trnh s
chuyn qua vng nh m lnh ca ngi s
dng.
Chn thm tn hiu REST di 512 chu k xung
clock. CPU s khng bit RESET bng lnh ny.
Lnh ny khng thc hin cng vic no c.
Reset
Peripherals
No Operation
203
T.
ED
U
.V
thi gian. TPU bao gm cc khi: mt b thc thi chuyn dng, mt b nh trnh 3 mc u tin,
mt b nh RAM cha d liu, hai b nh thi c bn v mt b nh ROM cha vi lnh. TPU
iu khin 16 knh c lp nhau, mi knh c mt chn vo ra v n c kh nng thc hin cc vi
lnh thi gian. Mi knh c cc phn cng chuyn dng ring, cho php cc s kin vo v ra trn
tt c cc knh c x l ng thi.
PE
.P
TI
TPU thc hin hai thao tc c th lp trnh trc l m kt thc s kin (match) v so snh
bt s kin (capture). Khi TPU thc hin mt chui cc s kin (match v capture) th n c
gi l thc hin mt hm chc nng. Cc hm chc nng ca TPU s thay th cho cc hm chc
nng thc hin bng phn mm v n s yu cu ngt host CPU. Cc hm chc nng ca TPU bao
gm:
- Chc nng m bt/xc nh c s chuyn mc ng vo Input capture/Input Transition
Counter.
- Chc nng so snh Output compare.
- Chc nng iu rng xung PWM Pulse Width Modulation.
- Chc nng iu rng xung ng b Synchronized Pulse Width Modulation.
- Chc nng o chu k v pht hin chuyn i mc cng thm Period measurement with
addtion transition detect.
- Chc nng o chu k v pht hin chuyn i mc b mt Period measurement with
missing transition detect.
- B to xung ng b v tr Possition synchronyzed pulse generator.
- B iu khin ng c bc Step motor.
- B cha rng v chu k xung Period/pulse width accumulator.
204
ED
U
.V
TI
T.
PE
.P
205
ED
U
.V
.P
TI
T.
PE
8.4.2.6. o chu k c pht hin chuyn mc cng thm (PMA- Period Measurement with
Additional Transition Detect)
Chc nng ny s dng hiu qu cho vic o tc quay ca mt vt. Khi o chu k vi
chc nng pht hin chuyn mc tn hiu cng thm cho php vic o chu k 23 bit trong cc ng
dng c bit. N c th pht hin ra chuyn mc tn hiu cng thm gy ra bi cc tc nhn bn
ngoi khng theo chu k v ch th t l nh hn ca chu k ny so vi cc chu k o trc .
Khi pht hin ra trng thi chuyn mc khng theo chu k, cc trng thi ny c th c m
206
TI
T.
ED
U
.V
PE
.P
207
T.
ED
U
.V
PE
.P
TI
208
U
.V
8.4.2.15. Thanh cha thi gian c th lp trnh c (Programmable Time Accumulator PTA)
PTA l mt thanh ghi 32 bit cha tng thi gian mc cao, tng thi gian mc thp hoc tng
thi gian ca mt chu k ca mt tn hiu ng vo theo s chu k hoc s xung c th lp trnh
c. B cha c th bt u hot ng mt cnh ln hoc mt cnh xung, sau mt s chu k
hoc xung lp trnh trc, PTA c th to ra mt yu cu ngt hay mt kt ni ti mt knh khc.
TPU c th o t 1 ti 255 chu k v mt php o c th cng vi 1 hoc nhiu php o trc
to ra tn hiu ngt CPU, chc nng ny cho php thc hin cc php o tn s tc thi v
tn s trung bnh.
TI
T.
ED
PE
.P
209
U
.V
ED
T.
PE
.P
TI
QSM bao gm hai b giao tip ni tip: cng giao tip ni tip c hng i (queued serial
peripheral interface - QSPI) v giao tip thng tin ni tip (serial communication interface - SCI),
hai khi ny hot ng c lp nhau.
QSPI l giao tip truyn d liu ni tip ng b song cng cho php truyn d liu ni tip
vi cc thit b ngoi vi v vi cc MCU khc vi 03 ng dy: data in, data out v clock. V n
h tr thm c ch hng i cho vic truyn nhn d liu. Bn chn chn thit b vo ra lp trnh
c cho php chn ti 16 thit b vo ra. Hng i Ram ca cng ny cho php lu tr ti 16 ln
truyn ni tip, mi gi tr truyn c th 8 hoc 16 bit., hoc c th cho php truyn ti 256 bit d
liu m khng cn c s can thip iu khin ca CPU. Mt ch gim st c bit cho php ly
mu lin tc ng vo v t ng ghi li trong RAM ca QSPI, c ch ny cho php giao tip rt
hiu qu vi cc b bin i A/D.
SCI l giao tip ni tip UART n c c ch truyn d liu theo chun NRZ (non return to
zero), n c th hot ng trong ch song cng hoc bn song cng. C hai bit cho php ring
cho b truyn v b nhn d liu v hai b m d liu cho cng. Mt b to tc truyn loi
modulus cho php to ra tc truyn t 64 ti 524 Kbaud vi tn s clock ca h thng l 16.78
Mhz, hoc t 110 ti 655 Kbaud vi tn s clock ca h thng l 20.97 Mhz. Chiu di d liu
truyn c th 8 hoc 9 bit c th lp trnh c bng phn mm. Mch pht hin li c th pht
hin sai 1/16 bit trong mt chu k truyn. Chc nng nh thc (Wakeup) cho php CPU chay
khng b ngt cho ti khi c mt d liu y trn cng.
S khi ca QSM trn hnh 8.9, n c 9 chn vo ra trong 8 chn nu khng s dng
cho cc chc nng ca QSM th c th s dng ging nh cc cng vo ra thng thng, cn chn
210
TI
T.
ED
U
.V
.P
PE
Khi QSPI bao gm 7 tn hiu, khi khng s dng chc nng QSPI cc tn hiu ny tr thnh
cc ng vo ra s thng thng, hng truyn d liu trn cc ng ny s xc nh trong
thanh ghi DDRQS, ngi s dng cn phi khi ng ng gi tr ca DDRQS cc chc nng
QSPI hot ng ng.
- Cc chn PCS3 PCS0 (Pripheral Chip Select) c QSPI cung cp chn thit b vo
ra.
- SS (Slave Select)- Tn hiu ny s c tc ng chn QSPI khi n ch Slave.
- SCK (Serial Clock) Tn hiu ny c QSPI cung cp khi n ch Master, v nhn
clock t master khi n ch slave.
- MISO (Master In Slave Out): L ng nhn d liu trong ch Master v truyn d
liu trong ch slave.
- MOSI (Master Out Slave In): l ng truyn d liu trong ch master v nhn d liu
trong ch Slave.
211
S/U
S/U
S/U
S/U
S/U
$YFFC18
$YFFC1A
$YFFC1C
$YFFC1E
$YFFC20
$YFFCFF
$YFFD00
$YFFD1F
$YFFD20
$YFFD3F
$YFFD40
$YFFD4F
TI
S/U
.P
S/U
S/U
$YFFC06
$YFFC08
$YFFC0A
$YFFC0C
$YFFC0E
$YFFC10
$YFFC12
$YFFC14
$YFFC16
8 7
0
QSM MODULE CONFIGURATION (QSMCR)
QSM TEST (QTEST)
QSM INTERRUPT LEVEL QSM INTERRUPT VECTOR
(QILR)
(QIVR)
NOT USED
SCI CONTROL 0 (SCCR0)
SCI CONTROL 1 (SCCR1)
SCI STATUS (SCSR)
SCI DATA (SCDR)
NOT USED
NOT USED
NOT USED
PQS DATA (PORTQS)
PQS PIN ASSIGNMENT
PQS DATA DIRECTION
(PQSPAR)
(DDRQS)
SPI CONTROL 0 (SPCR0)
SPI CONTROL 1 (SPCR1)
SPI CONTROL 2 (SPCR2)
SPI CONTROL 3 (SPCR3)
SPI STATUS (SPSR)
NOT USED
U
.V
S/U
S/U
S/U
S/U
S/U
S/U
S/U
S/U
S/U
15
ED
Address
$YFFC00
$YFFC02
$YFFC04
T.
Access
S
S
S
PE
8.6. TPURAM
TPURAM c dung lng 2 KB SRAM tc truy xut nhanh vi hai chu k BUS (two bus
cycle), n c th s dng lm ngn xp hoc khai bo cc bin. Ngoi ra TPURAM cn c th
s dng lm b nh chy m phng ngi s dng thc hin cc gii thut thi gian mi.
TPURAM c th chim 4KB trong bn b nh, nhng khi cc thanh ghi iu khin TPU s
khng th truy xut c. D liu c ghi trong vng nh ny c th theo byte, t hoc 2 t.
212
$YFFB02
$YFFB04
$YFFB06
$YFFB3F
$YFFB00
15
U
.V
S
S
a ch
ED
Kiu
truy cp
S
T.
.P
TI
C 03 thanh ghi iu khin trong TPURAM l: thanh ghi nh cu hnh RAM (TRAMMCR),
thanh ghi kim tra RAM (TRAMTST) v thanh ghi a ch c s RAM (TRAMBAR)
C mt khi thanh ghi vi kch thc nh nht l 8 byte khng c a ch ho, khi c lun
c gi tr 0 v khi ghi khng tc ng.
Thanh ghi nh cu hnh khi TPURAM 16 bit c cu to nh sau:
PE
Bit STOP (Stop Control) = 0: RAM hot ng bnh thng, nu = 1: RAM chuyn qua ch
ngun thp (khng hot ng). Sau khi RESET trang thi bit ny s bng 0, trong ch stop
RAM s vn lu tr c cc gi tr ghi trong n nhung CPU s khng c ghi c.
RASP (RAM Array Space Field) = 0 th TPURAM s l vng truy cp khng gii hn, khi bit
ny bng 1, TPURAM s nm trong khng gian nh ch truy cp trong ch gim st.
Thanh ghi TRAMTST (TPURAM Test Register) c s dng cho vic kim tra khi
TPURAM ca nh sn xut.
Thanh ghi TRAMBAR (TPURAM Base Address and Status Register) 16 bit nh sau:
213
T.
ED
U
.V
.P
TI
6. TPURAM c th s dng chy cc vi lnh trong ROM ca TPU, chc nng ny cho
php pht trin cc on m lnh ca ngi s dng. Trong ch chy m phng, nh thi truy
cp TPURAM s ph hp vi cc vi lnh trong ROM m bo qu trnh chy m phng c
chnh xc.
PE
214
PE
.P
TI
T.
ED
U
.V
215
PE
.P
TI
T.
ED
U
.V
216
PE
.P
TI
T.
ED
U
.V
217
PE
.P
TI
T.
ED
U
.V
218
PE
.P
TI
T.
ED
U
.V
219
ED
U
.V
PE
.P
TI
T.
220
ED
operand
U
.V
operand
X/C
operand
X/C
T.
operand
X/C
TI
X/C
operand
.P
X/C
PE
operand
X/C
operand
operand
221
ED
U
.V
PE
.P
TI
T.
222
PE
.P
TI
T.
ED
U
.V
223
PE
.P
TI
T.
ED
U
.V
register): Lnh ny cng ging nh cc lnh c quyn khc cn thc hin trong trng thi gim
st (supervisor) trnh xy ra ngoi l vi phm mc c quyn. Lnh ny s dng thay i
gi tr trong thanh ghi trng thi, khi AND vi cc bit 0 ca ton hng tc thi, cc bit ca thanh
ghi trng thi s b xo, AND vi cc bit 1 s khng thay i. Cc m iu kin tc ng c lp
vi ton hng tc thi s dng.
V d ANDI #0FFFBH,SR ton hng tc thi ch c bit 0 tng ng vi c Z nn c Z s b
xo.
Lnh EORI SR: Lnh ny cng tc ng ti thanh ghi trng thi ging lnh ANDI SR,
nhng s thc hin logic XOR
V d lnh EORI #10H,SR s ly b bit X (nm v tr 4 ca thanh ghi trng thi) v khng
nh hng ti cc bit khc.
Lnh ORI SR: Lnh ny cng tc ng ti thanh ghi trng thi ging lnh ANDI SR, nhng
s thc hin logic OR
V d thit lp ngt u tin mc 6 c th thc hin lnh ORI #600H,SR cc bit 8, 9 v
10 ca SR l 110.
Lnh chuyn d liu vo thanh ghi trng thi: MOVE to SR:Lnh ny chuyn mt gi tr
16 bit vo thanh ghi trng thi.
Gi s trong mt chng trnh con, cc m iu kin c cha trong b nh ti a ch
STWORD lnh MOVE STWORD,SR s np li cc m iu kin ca chng trnh con s
dng tip.
Lnh chp ni dng SR vo b nh: MOV SR,-(A2) s gim A2 i 2 v sau np SR vo
cc nh 0C9006H v 0C9007H nu trc A2=0C9008H.
Lnh chp d liu vo con tr ngn xp ngi s dng: MOVE A3,USP s chp gi tr A3
vo USP v lnh MOVE USP,A3 s chp ni dung USP vo A3. Cc lnh ny c s dng
khi ng v lu tr con tr ngn xp ngi s dng. Tt c cc ch a ch u c th s dng
v khng c c no b tc ng.
Lnh RESET thit bit bn ngoi RESET (reset external devices): Lnh ny lm cho
ng RESET ca MCU tc ng tch cc. Khi RESET c ni ti ng vo RESET ca cc
thit b ngoi lnh ny s cung cp tn hiu RESET thit b bng phn mm.
Lnh quay v t ngoi l RTE (return from exception): Lnh ny s dng kt thc
chng trnh x l ngoi l, n phc hi li thanh ghi trng thi v b m chng trnh ging
nh lc ngoi ln xy ra.
Lnh ngng STOP (load status register and stop): Mt d liu tc thi trong lnh c
np vo thanh ghi trng thi v CPU s treo. C 03 cch CPU s x l sau lnh: nu CPU ang
trng thi d tm trc khi STOP thc hin, ngoi l d tm s c khi ng. Khi yu cu mt
tn hiu RESET bn ngoi, CPU bt u x l ngoi l Reset v thot khi trng thi treo. Nu
mt ngt ngoi xy ra khi CPU ang STOP, n s b b qua tr khi mc u tin ca n cao hn
mc u tin hin hnh. Nu ngt c mc u tin cao hn, CPU s thot khi trng thi treo v
khi ng qu trnh x l ngoi l phc v ngt.
Lnh kim tra thanh ghi khng vt qu gii hn CHK (check register against bounds):
Lnh ny s khi ng ngoi l nu thanh ghi cha gi tr nh hn 0 hoc ln hn gii hn trn.
Gii hn trn l mt s b 2, ch c ton hng word c s dng v khng c c no b tc ng.
V d D4=3E552000H, D5=400C15A9H sau lnh CHK D4,D5 s khng c ngoi l no xy
ra v 15A9H nh hn gii hn trn l 2000H v ln hn 0.
Lnh chuyn ti ngoi l TRAP (exception): Lnh ny s khi ng ngoi l c ch nh
(t 0 ti 15). Khi thc hin lnh n s ly a ch chng trnh x l ngoi ln trong bng vecter
224
U
.V
PE
.P
TI
T.
ED
8.7.3.
225
S hiu (Decimal)
ED
U
.V
0
1
2 - 15
16 - 23
24
25
26
27
28
29
30
31
32 - 47
48 - 63
64 - 255
.P
TI
a ch
$0000
$0002
$0004
$0006
T.
PE
org
DW
DW
DW
DW
on chng trnh sau c th s dng khi ng gi tr cho cc vector ngt khc. Trong
mt chng trnh thc t mi vector ngt c th tr ti mt nhn khc nhau, nhng trong v d tt
c cc vector ngt u tr ti mt nhn INT. Ti nhn INT trong chng trnh cn phi vit cc
lnh tng ng x l ngt khi n xy ra. Trong v d gi s a ch ca nhn INT nm trong
vng nh t 0 ti $10000, hay n cch khc n c t cao ca a ch l $0000.
226
$0008
$0000
INT
$0000
INT
$0000
INT
$0000
INT
$0000
INT
$0000
INT
ED
U
.V
org
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
PE
.P
TI
T.
8.7.4.
227
.P
* INCLUDE 'org00000.asm
* INCLUDE 'org00008.asm'
ORG $400
$FFFA48
$FFFA4C
$FFFA50
$FFFA54
$FFFA4A
$FFFA4E
$FFFA52
$FFFA56
$FFFA44
$FFFA22
$FFFA24
$FFFA04
$FFFA21
$FFFA00
U
.V
T.
ED
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
TI
CSBARBT
CSBAR0
CSBAR1
CSBAR2
CSORBT
CSOR0
CSOR1
CSOR2
CSPAR0
PICR
PITR
SYNCR
SYPCR
SIMCR
theo chu k - Periodic Interrupt Timer Register (PITR). Thanh ghi iu khin ngt theo chu k Periodic Interrupt Control Register (PICR). Cc thanh ghi chn chn mch - Chip-Select Pin
Assignment Registers (CSPAR0 and CSPAR1). Cc thanh ghi a ch c s chn mch - ChipSelect Base Address Registers (CSBARBT, CSBAR[0:10]). Cc thanh ghi tu chn chn CS Chip-Select Option Registers (CSORBT and CSOR[0:10]). Cc cng vo ra a dng - GeneralPurpose I/O Ports.
Sau y l on chng trnh v d v khi ng SIM: Trong v d ny gi s c hai tp tin
org00000.asm v org00008.asm. Tp tin org000000.asm khi ng con tr ngn xp v b m
chng trnh, v tp tin org00008.asm khi ng cc vector ngt nh trnh by trong phn trn.
on chng trnh sau s dng cho trnh bin dch IASM32.
PE
INITSYS:
CLR.L D0
MOVEC D0,VBR
; m bo cho VBR=0, n bng 0 sau khi reset.
; chn clock h thng l 16.78 MHz
MOVE.B #$7F,(SYNCR).L
; khng cho php watchdog bng phn mm
CLR.B (SYPCR).L
;Phn ny khi 3 ng s dng hai vi mch RAM 32Kx8 bng tn hiu Chip select.
;b nh bt u ti a ch $30000 v c th c ghi theo byte hoc theo t, trong
chng trnh ny gi s RAM c thi gian truy cp l 85ns v khng yu cu trng
thi ch. Cc bit DSACK c thanh ghi CSOR c th s dng iu chnh cho cc
b nh c tc truy cp nhanh hn hoc chm hn.
MOVE.W #$0003,(CSBARBT).L ;a ch c s l $00000 kch thc khi l
64K
MOVE.W #$7870,(CSORBT).L
;c th c ghi, c mt trng thi ch, nu on
m ny np vo ROM th gi tr khi ng l
$6B30.
; Khi ng chip select vi a ch c s l $30000 mi khi 64K
INITCS:
228
T.
ITSELF
CLKINT
ED
U
.V
INITPIT:
MOVE.W #$0303,(CSBAR0).L
;CS0 cho a ch $30000, 64K
MOVE.W #$0303,(CSBAR1).L
;CS1 cho a ch $30000, 64K
MOVE.W #$0303,(CSBAR2).L
;CS2 cho a ch $30000
MOVE.W #$5030,(CSOR0).L
;CS0 c byte cao ch ghi
MOVE.W #$3030,(CSOR1).L
;CS1 c byte thp ch ghi
MOVE.W #$6830,(CSOR2).L
;CS2 c c hai byte cao ch c
MOVE.W #$3FFF,(CSPAR0).L
;CS 0, 1, 2 ti cc cng 16 bit
; Phn chng trnh ny khi ng nh thi ngt theo chu k sau mi thi gian 1
giy.
MOVE.L #CLKINT,($0100).l
;a ch bt u cha chng trnh ngt l $100
($40x4). Gi s rng VBR = 0.
MOVE.W #$0640,(PICR).l
;Ngt mc 6 c vector l $40
MOVE.W #$0110,(PITR).l
;Chu k time out l 1 giy
ANDI.W #$F0FF,SR
;che tt c cc ngt di mc 6
ORI.W #$0500,SR
ANDI.W #$FFF0,(SIMCR).l
;thit lp cc bit phn x ngt c mt gi tr
ORI.W #$0005,(SIMCR).l
; duy nht
BRA ITSELF
; chng trnh thc hin y ch ngt.
; chng trnh ngt cho PIT
ADDI.L #$01,D0
;lnh cho chng trnh ngt ti y
RTE
PE
8.7.6.
.P
TI
8.7.5.
229
$FFFC08
$FFFC0A
$FFFC0C
$FFFC0E
$FFFA04
$FFFA21
$400
SCCR0
SCCR1
SCSR
SCDR
SYNCR
SYPCR
INIT_SIM
;tng tc clock
;khng cho php watchdog phn mm
MOVE.W #$0037,(SCCR0).L
MOVE.W #$000C,(SCCR1).L
U
.V
MOVE.B #$7F,(SYNCR).L
CLR.B (SYPCR).L
;np a ch tc ng ca (message) vo A0
T.
LEA (MESSAGE).L,A0
LOOP MOVE.W (SCSR).L,D0
ANDI.W #$0100,D0
BEQ LOOP
MOVE.B (A0)+,D0
ED
INIT_SCI
TI
.P
FINISH
MESSAGE
MOVE.W D0,(SCDR).L
CMPA.L A1,A0
BNE LOOP
BRA FINISH
FCB 12345
PE
230
ORG $400
U
.V
TI
INIT_SIM
ED
EQU $FFFC1A
EQU $FFFC15
EQU $FFFC16
EQU $FFFC17
EQU $FFFC1F
EQU $FFFC18
EQU $FFFC1C
EQU $FFFC1E
EQU $FFFA04
EQU $FFFA21
EQU $FFFD20
EQU $FFFD40
T.
SPCR1
PORTQS
PQSPAR
DDRQS
SPSR
SPCR0
SPCR2
SPCR3
SYNCR
SYPCR
TXDRAM
CMDRAM
SPIF l bit c s dng nhiu nht, n c lp khi QSPI hon tt mt chu k truyn khi a ch
tr ti cui hng i ENDQP. Nu cho php ch wrap-around bit ny s c lp khi truyn
xong mt vng hng i. Khi cho php ngt, bit SPIF tc ng s to ra yu cu ngt.
ANDI.B#$00,(SPSR).L
Lnh tip theo khi ng cho tn hiu chn mch trong PORTQS (thng gi l QPDR). Tn hiu
chn mch c th tc ng mc cao hoc mc thp. Trng thi khi ng sau khi reset trong
PORTQS l trng thi khng tch cc. Trng thi tch cc l chn trong RAM lnh. Trong v d
ny khi ng trng thi ca tn hiu chn l mc coa v SCK l mc thp. Tc l tn hiu chn
mch tc ng mc thp v SCK tc ng mc cao. Tn hiu TxD khng b tc ng.
INIT_QSPI
.P
MOVE.B #$7F,(SYNCR).L
CLR.B (SYPCR).L
ANDI.W #$7F,(SPCR1).L
MOVE.B #$7B,(PORTQS).L
MOVE.B #$7B,(PQSPAR).L
PE
MOVE.B #$7E,(DDRQS).L
MOVE.W #$8002,(SPCR0).L
;tng tc clock
;cm software watchdog
;xo bit SPE bit trong SPCR1 cm QSPI
;Gn tt c cc chn QSPI, cc chn c th gn
; lm chn vo ra a dng hoc cho QSPI.
;Chn hng truyn l ng ra tr MISO
;Cu hnh cho QSPI l master khng tch cc,
trng thi SCK l thp, ly d liu ti ccnh
ln ca SCK, tc l 4.129MHz, trng
BITS khng cn quan tm v chng c xo
v cho php truyn 8 bit d liu.
Lnh k tip thit lp cc tham s iu khin, khng cho php cc ngt, cho php ngt khi bit
SPIF tc ng, lp SPCR2 [15]. xo mt ngt, c v sau xo bit SPIF. Cho php ch
wrap-around. Xo NEWQP v ENDQP=$F QSPI truyn d liu lin tc t a ch $0 ti i
ch $F ca hng i. Cm ch wrap-around, v th QSPI truyn mt ln hng i xo bit
WREN v 0.
MOVE.W $4F00,(SPCR2).L
231
T.
ED
U
.V
PE
.P
TI
EQU
EQU
EQU
$FFFA04
$FFFA21
$FFFE12
232
EQU
EQU
EQU
EQU
ORG
$FFFE00
$FFFE16
$FFFE1A
$FFFE1E
$400
MOVE.B
CLR.B
#$7F,(SYNCR).L
(SYPCR).L
INITSYS:
#$0009,(CFSR3).L
MOVE.W
#$00C0,(TPUMCR).L
MOVE.W
#$0000,(HSQR1).L
#$0092,($FFFF00).L
MOVE.W
MOVE.W
#$2000,($FFFF04).L
#$4000,($FFFF06).L
#$0002,(HSSR1).L
#$0003,(CPR1).L
DONE
TI
MOVE.W
MOVE.W
DONE BRA
T.
MOVE.W
START:
ED
PRAM:
U
.V
MOVE.W
CNTLREG:
.P
MOVE.W #$0680,(TICR).l
MOVE.L #INT,($0210).l
;khi ng VBR =0
;cho IARB = $5
;Cho php ngt knh 4
PE
NDI.W #$F5FF,SR
CLR.L D0
MOVEC D0,VBR
ORI.W #$0005,(TMCR).l
ORI.W #$0010,(CIER).l
;quay v t ngt
233
PE
Khi ng CPU bao gm vic khi ng ngoi l reset thit lp cc gi tr ban u cho
SP v PC. Khi ng v tr t bng vector ngoi l, v gi tr cho cc vector ngoi l
trong bng. Cui cng cn khi ng cc bit mc c quyn, cc bit u tin ngt v cc
bit cho php ch tm kim g ri chng trnh.
Khi ng SIM cn khi ng gi tr cho cc thanh ghi ca n nh: SIMCR, SYNCR,
SYPCR, PITR, PICR, CSPAR0, CSPAR1, CSBARBT, CSBAR[0:10], CSORBT,
CSOR[0:10] v cc cng a dng.
khi ng RAM ni trc ht phi np gi tr a ch c s vo thanh ghi a ch c s
RAM v thanh ghi trng thi RAM. Sau xo bit RAMDS cho php RAM hot ng.
Ch khng nh cu hnh RAM trng vo a ch ca cc thanh ghi.
Lp trnh khi ng cng ni tip bao gm vic khi ng cho hai module SCI v QSPI.
.P
TI
T.
ED
U
.V
Tm tt ni dung chng:
Cc khi chc nng ca MCU 68332 bao gm: module tch hp h thng SIM cung cp
cc tnh nng giao tip vi bn ngoi v cc tnh nng h tr h thng khc nh: nh thi
bt vi iu khin (watchdog timer), cp xung nhp cho h thng. CPU 32 bit thc hin cc
lnh ca cc chng trnh yu cu. Khi x l thi gian (TPU) vi rt nhiu tnh nng h
tr iu khin nh: cc chc nng vo ra nh thi so snh, cc chc nng iu rng xung,
cc chc nng o tn s, chu k xung, cc chc nng pht xung, cc chc nng iu khin
ng c bc, ng c AC, cc chc nng o tc , xc nh v tr. Khi giao tip ni
tip hng i h tr hai chun giao tip SPI v UART. Khi b nh RAM ni bao gm
cc nh a dng, cc thanh ghi v cc vng nh c th s dng cho vic thc hin cc vi
lnh. Cc khi chc nng uc kt ni vi nhau bng h thng BUS gi l IMB.
Tp lnh ca MC68332 bao gm cc nhm lnh sau:
o Nhm di chuyn d liu: EXG, LEA, LINK, MOVE, MOVEA, MOVEM,
MOVEP, MOVEQ, PEA, SWAP, UNLK.
o Nhm lnh s hc: ADD, ADDA, ADDI, ADDQ, ADDX, CLR, CMP, CMPA,
CMPI, CMPM, DIVS, DIVU, MULS, MULU, NEG, NEGX, SUB, SUBA, SUBI,
SUBQ, SUBX, TAS, TST.
o Nhm lnh logic: AND, ANDI, OR, ORI, EOR, EORI, NOT.
o Nhm lnh quay dch: ASL, ASR, LSL, LSR, ROL, ROR, ROXL, ROXR.
o Nhm lnh x l bit: BCHG, BCLR, BSET, BTST.
o Nhm lnh vi s BCD: ABCD, NBCD, SBCD.
o Nhm lnh iu khin chng trnh: BCC, DBCC, SCC, BRA, JMP, JSR, RTR.
o Nhm iu khin h thng: ANDI SR, EORI SR, RESET, RTE, STOP, CHK,
TRAP, TRAPV, ILLEGAL, ANDI CCR, ORI CCR, EORI CCR, MOVE to CCR,
NOP.
BI TP
Bi 1: Cho bit cc ch a ch s dng trong cc lnh sau:
a)
b)
EXG D0,A2
MOVE.B #5,D1
234
MOVE.W
MOVE.W
MOVE.W
JMP
ADD.L
D6,(A0)
D6,(A0)+
D6,-(A0)
(PC)
A0,10H(A1,D1.W)
U
.V
EXG D0,A0
EXG D0,A1
MOVE.B
MOVE.B
MOVE.W
MOVE.W
MOVE.W
(A0),D2
-(A0),D2
(A0),D2
(A0)+,D2
-(A0),D2
T.
a)
b)
c)
d)
e)
ED
TI
PE
.P
MOVE.L
MOVE.L
MOVE.L
MOVE.L
(A0)+,A1
A0,(A0)
(A0),A0
-(A0),A0
235
#2CH,D5
#3C45H,D5
#789ABCDEH,D5
D5
U
.V
ANDI.B
ORI.W
EORI.L
NOT.W
ED
Bi 13: Gi s D4=C9AE23A5 cho bit kt qu cha trong thanh ghi D4 sau khi thc hin xong
hai lnh:
ASR.L #3,D4
ROL.W #5,D4
Bi 14: Cho bit D3=56789ABC v D4=00000013. Xc nh trng thi ca c Z v ni dung ca
thanh ghi D3 sau khi thc hin cc lnh:
#4,D3
D4,D3
#1,D3
D4,D3
TI
T.
BTST
BTST
BSET
BCHG
PE
.P
Bi 15: Vit chng trnh cng mt bng d liu bao gm 128 phn t d liu c di 2 byte,
sau tnh gi tr trung bnh ca n.
Bi 16: Cho mt chui d liu mt byte kt thc bng gi tr FF, vi A6 gi a ch bt u ca
chui trong b nh. Vit on chng trnh xc nh a ch ca s trong chui c gi tr
bng D6.
Bi 17: Vit cc lnh di chuyn 16K word bt u t a ch tr bi thanh ghi A3 ti v tr b nh
c a ch tr bi thanh ghi A4.
Bi 18: Vit on chng trnh khai bo 6 chng trnh con v cc lnh chuyn ti chng trnh
con tng ng vi s cha trong thanh ghi D4.
236
HNG DN V P S BI TP
CHNG 1:
ED
U
.V
Bi 1: A03FFH
Bi 2: Ghp hai b nh 256Kx4bit to thnh mt b nh 256B x 8 bng cch ni chung cc
ng a ch, cc ng iu khin v ring cc ng d liu. Sau ghp cc khi
256K x 8 to thnh b nh 1M x 8.
Bi 3: b) Gii m 2 ra 4 v s dng cng AND hai ng ra Y0 v ca b gii m cho php CS
ca b nh 512KB s 1.
Bi 4: S dng cng ci cc ng vo ni ti data bus ng ra ni ti cc LED, b ci c cho
php bng mt cng NAND vi cc ng vo l cc ng a ch cung cp thng hoc o
cho ng vi a ch F000H.
Bi 5: S dng cng m 1 chiu 8 bit vi ng vo ni ti cc phm nhn, ng ra ni ti data bus
ca h thng. Cng m cho php bng cng NAND vi cc ng vo l cc ng a ch.
Bi 6: C th s dng b gii m 2 4 vi ng vo l A1 v A0 v mi ng ra s cho php mt
cng vo ra.
T.
CHNG 2:
PE
.P
TI
237
Bi 16: Khi truy cp mt chui d liu lin tip trong b nh s c li do truy cp ti mt phn t
ca chui ch cn ch th s di trong m lnh.
Bi 17: Quay v t ngt cn phc hi thm gi tr ca cc c trng thi.
Bi 18: Khi nhn 16 bit kt qu c th ln ti 32 bit nh vy AX s gi khng cn thm thanh
ghi DX. Khi thc hin php chia 16 bit, s d c th 16 bit v vy cn thanh ghi DX gi
n.
CHNG 3:
PE
.P
TI
T.
ED
U
.V
238
PE
.P
TI
T.
ED
U
.V
Trc tip
ADD AL,[1234H]
Trc tip thanh ghi
SUB AH,BH
Gin tip thanh ghi
AND AL,[BX]
Tng i ch s
XCHG AL,[DI+01]
Tng i c s
CMP BL,[BP+08]
Tng i ch s c s SHL [BX+SI+09]
Bi 9: Ch trc tip, gin tip thanh ghi, tng i ngn -128 n 127, tng i t -216 ti 2161, tuyt i.
Bi 10: Nhp k t dng hm 01 ngt 21H, hin th ln dng tip theo dng hm 02 ngt 21H.
Bi 11: Nhp dng hm 01 ngt 21H, hin th 25 ln theo ct dc cn dng vng lp 25 ln hin
th v xung hng v u hng.
Bi 12: Lp li hm 01 ngt 21H cho n khi gp k t ESC m ASCII bng 27.
Bi 13: Nhp mt chui cn khai bo b m lu tr n. Tip theo x l chui bng cc so
snh hai s k tip nhau nu s no nh hn th i ch n ln pha trc. Lp li cho n
khi khng c s i ch no na th chui c sp xp xong.
Bi 14: i t ch thng thnh ch in hoa c th tr m ASCII ca n i 20H.
Bi 15: Trc ht nhp chui th nht ct vo b m, khi nhp mt k t ca chui th 2 s em
so snh vi ton b chui th nht, nu ging th ct vo b m hin th.
Bi 16: Trc ht nhn chui ct vo b m, sau vi tng k t c m ASCII l xyH cn i
thnh 0xH v 0yH, tip theo xt 0xH v 0yH nu ln hn 9 th cng vi 37H thnh k t
t A ti F, nu khng cng vi 30H thnh cc k t t 0 n 9 c m ASCII l 30H ti
39H.
Bi 17: Khai bo hai bin hng n v v hng chc, lp li vic tng hng n v, nu hng n
v bng 10 th xo n v 0 v tng hng chc, sau hin th hng chc v hng n v, lp
li cho n khi gp s bng 99.
Bi 18: i s HEX ra thp phn c th chia cho 10 ly s d s l hng n v, thng s cn li
tip tc chia cho 10 ly s d l hng chc v tip tc cho hng trm v hng ngn.
Bi 19: Nhp a, b, c sau tnh x = (c-b)/a
Bi 20: Khai bo bng d liu bao gm cc lnh v m lnh tng ng, khi nhp lnh vo s ly
chui k t nhp so snh tun t trong bng d liu c ly m lnh.
Bi 21: Nhp chui k t hin th ln m hnh ch mt khong thi gian mt cm nhn c,
tip theo cn o chui k t nhp, k t sau ln th ch ca k t trc n trong b nh
sau di chuyn con tr v u chui hin th v hin th chui mi.
Bi 22: Lp li php cng mt trm ln, mi ln tng s cng ln 1.
Bi 23: Khai bo bng d liu bao gm cc du * v khong trng sp thnh k t. T k t nhp
t bn phm s tra vo bng d liu khai bo ly cc d liu cn hin th.
Bi 24: Mun tnh USCLN ca hai s c th lp li vic ly s ln tr i s nh sau ly hiu v
s tr so snh tip tc tr tip cho n khi kt qu bng 0 th hai s trc khi tr chnh l
USCLN ca n.
Bi 25: ch ri cn di chuyn con tr ti v tr mi v hin ch trong thi gian ngn.
Bi 26: hin k t theo ng cho c th s dng cch hin th lin tip cc khong trong
dch con tr.
Bi 27: xt mt s c phi l s nguyn t c th ly s tun t chia cho cc s l t 3 ti s
chia 2.
Bi 28: hin th bng cu chng s tun t hin th s b nhn du x s nhn du = v tch ca 2
s di dng thp phn. S nhn tng dn sau tng s b nhn.
239
Bi 29: Nhp t bn phm s nh phn s thu c kt qu l 30H hoc 31H mun c 8 bit cn
xo (khi 30H) v lp (khi 31H) c C v quay tri vo mt thanh ghi no 8 ln. hin
th gi tr HEX c th tch gi tr thu c trong bc trn thnh hai s v i thnh s
HEX tng ng bng cch cng vi 30H nu l s v cng vi 37H nu l ch.
Bi 30: Khai bo 3 bin cha cc s hng n v, chc v trm. Khi nhn T th tng bin n v,
bin n v bng 10 th xo v 0 v tng bin chc, bin chc bng 10 th xo v 0 tng bin
trm, bin trm bng 10 th xo v 0. Ngc li khi nhn G s gim, bng 0 gim tip s
cho v 9 v gim hng k tip i 1.
Bi 31: Khai bo bng m LED7 trong b nh, sau s dng lnh XLAT vi AL l gi tr thp
phn ca k t nhp t bn phm.
U
.V
CHNG 4:
PE
.P
TI
T.
ED
240
U
.V
CHNG 5:
PE
.P
TI
T.
ED
241
PE
.P
TI
T.
ED
U
.V
MOVX @DPTR,A
Bi 4: 3MHz
Bi 5: PSEN
Bi 6: OR A,#01
Bi 7: MOV DPTR,#100H
MOVX @DPTR,R7
Bi 8: a ch 08H v 09H
Bi 9: lnh ghi bit tng ng trong thanh ghi PCON.
Bi 10: MOV R1,#50H
MOV A,@R1
Bi 11: 1EH
Bi 12: 8FH
Bi 13: A0H
Bi 14: A1H
Bi 15: Cn s dng timer to ra khong thi gian tr bng chu k xung vung, sau lt trng
thi ng ra P1.7 sau mi ln gi tr.
Bi 16: Cn to ra hai chng trnh tr 4 sec v 200 sec c lt trng thi P1.7 ln 1 sau 4 sec
li xo v 0 200 sec.
Bi 17: Thc hin cc lnh OR v NOT cho hnh a v NAND ri NOT cho hnh b.
Bi 18: A=29H
Bi 19: MOV C,PSW.5
MOV P1.5,C
Bi 20: c vo t cng P3, xo 4 bit cao v 0 sau tra bng i thnh m LED 7 on v
cp ra cng P1.
Bi 21: Timer 1 c cho php chy.
Bi 22: Timer 1 lm b m counter ch 0 cho php chy t bn ngoi, Timer 0 lm b m
ch 1 cho php chy t bn trong.
Bi 23: S dng timer 0 ch nh thi cho php t bn trong to ra thi gian tr bng chu k
xung vung 12KHz, lt trng thi P1.2 sau mi ln gi chng trnh tr.
Bi 24: Cn khi ng cng ni tip v timer1 xc nh tc truyn nhn, cc chng trnh
truyn cn kim tra TI trc khi cp d liu ti SBUF. Cc chng trnh nhn cn kim tra
RI trc khi c SBUF.
Bi 25: Chn ch thanh ghi dch cho cng ni tip, phn cng chn TxD v RxD ni ti thanh
ghi dch nh trong bi ging.
Bi 26: Dng lnh dch phi v kim tra c C xc nh khi no c bit 1.
CHNG 7:
242
ED
U
.V
T.
CHNG 8:
PE
.P
TI
Bi 1: a) Trc tip thanh ghi a ch (A2) v trc tip thanh ghi d liu (D0).
b) Tc thi #5.
c) Gin tip thanh ghi a ch (A0).
d) Gin tip thanh ghi a ch tng sau (A0)+
e) Gin tip thanh ghi a ch tr trc (A0)
f) Tng i thanh ghi PC
g) Gin tip thanh ghi a ch vi ch s.
Bi 2: A0 = D0 c; A1 = A0 c v D0 = A1 c.
Bi 3: Lnh khng thc hin c cng vic no c.
Bi 4: a) Ly gi tr nh 492 vo thanh ghi D0, D0 = B2H
b) D2=9CH
c) B278H
d) B278H
e) 0A9CH
Bi 5: a) A0=492
b) A0=491
c) A0=492
d) A0=494
e) A0=490
Bi 6: a) A1 s c np 4 byte bt u ti a ch 0028C504
b) gi tr 0028C504 s c ghi vo cc a ch t 0028C504 ti 0028C507
c) T di ti a ch 0028C504 s c chp vo A0
d) T di ti a ch 0028C500 s chp vo A1, A0 =0028C500
243
PE
128
0
0
256
VALUE,A2
D0
SUM
(A2)+,D2
D2,SUM
#1,D0
COUNT,D0
ADDLOOP
SUM,D2
D2
COUNT,D1
D1
D1,D2
D2,AVERAGE
ED
.P
TI
ADDLOOP
BYTE
WORD
WORD
BLOCK
LEA
CLR.B
CLR.W
MOV.W
ADD.W
ADDQ.B
CMP.B
BNE
MOVE.W
EXT.L
MOVE.B
EXT.W
DIVS
MOVE.W
T.
COUNT
SUM
AVERAGE
VALUES
FINAVE
U
.V
Bi 7: a) 00003810
b) 00004C00
c) FFFFD700
d) 00003A10
e) 00003984
Bi 9: 59FD0429
Bi 10: Lnh CLR.B D0 xo mt byte thp ca D0 nhng khng tc ng ti cc c ging nh
lnh SUB.B D0,D0.
Bi 11: 5555AAAB
Bi 12: 43BFFF6C
Bi 13: C9AE 048E
Bi 15: Chng trnh c th thc hin nh sau:
FOUND
MOVE.B
CMP.B
BEQ
CMP.B
ANDI
RTS
BLOCKMOVE
MOVEDATA
MOVE.W
MOVE.W
#16383,D0
(A3)+,(A4)+
SEARCH
Bi 17:
244
DBF
D0,MOVEDATA
SUBTAB
LONG
LONG
LONG
LONG
LONG
LONG
SUB0
SUB1
SUB2
SUB3
SUB4
SUB5
DISPAT
CMP.B
BCC
MOVEQ
MULU
LEA
MOVEA.L
JSR
BRA
#6,D4
ERROR
#4,D3
D3,D4
SUBTAB,A0
0(A0,D4.W),A1
(A1)
DISPAT
PE
.P
TI
T.
ED
U
.V
Bi 18:
245
ED
U
.V
AAA: Ascii adjust for add lnh chnh ASCII cho lnh cng
AAD: Ascii adjust for divide lnh chnh ASCII cho lnh chia
AAM: Ascii adjust for multiply lnh chnh ASCII cho lnh nhn
AAS: Ascii adjust for subtract lnh chnh ASCII cho lnh tr
ADD add: lnh cng.
ADC add with carry; lnh cng c nh
AF: auxiliary flag c ph.
ALE: Address latch Enable Tn hiu cho php ci a ch: s dng ci tn hiu a ch
qua b ci cung cp cho b nh v vo ra.
ALU: Arithmetic logic unit n vi s hc vo logic
AU: Address Unit Khi to a ch; s dng to ra a ch vt l cung cp cho b nh v
vo ra.
AX: accumulator thanh ghi tch lu.
TI
T.
PE
.P
CE: Chip Enable Tn hiu iu khin chn vi mch hot ng (vi mch nh hoc vi mch
vo ra).
CF: Carry flag C nh
CJNE: compare and jump if not equal lnh so snh v nha nu khng bng
CLD- clear direction flag lnh xo c nh hng
CLI: clear interupt flag lnh xo c ngt.
CLK: clock ng vo nhn tn hiu xung nhp ca cc vi mch s.
CMP: compare lnh so snh.
CPU: Central Procesing Unit: n vi x l trung tn hay cn gi l b vi x l.
CS: Chip Select Tng t CE l tn hiu chn vi mch hot ng.
CS: Code Segment thanh ghi on lnh
CX: Count thanh ghi a nng m s ln lp.
C/D: control data tn hiu ng vo phn bit d liu iu khin v d liu truyn nhn ca
8251.
DAA: decimal adjust for add Lnh chnh thp phn sau lnh cng
DAS: decimal adjust for subtract Lnh chnh thp phn sau lnh tr.
DB: define byte Ch th hp ng khai bo bin byte trong b nh.
244
ED
U
.V
TI
T.
.P
PE
245
U
.V
ED
.P
TI
T.
PE
246
U
.V
PE
.P
TI
T.
ED
TI: table indicator b ch th bng s dng phn bit khng gian nh.
TF: trap flag c by.
TPU: time processor unit m x l thi gian.
TS: task set bit chuyn nhim v trong thanh ghi trang thi my
TSM: table step motor bng iu khin ng c bc
247
PE
.P
TI
T.
ED
U
.V
248