Professional Documents
Culture Documents
8051 - DH Cong Nghiep TP HCm-1
8051 - DH Cong Nghiep TP HCm-1
CHNG 1
GII THIU CHUNG V B VI X L
I. S PHT TRIN CA CC B VI X L:
1. Th h 1 (1971 - 1973):
c im chung ca cc vi x l th h ny:
Bus d liu: 4 bit.
Bus a ch: 12 bit.
Cng ngh ch to: PMOS.
Tc thc hin lnh: 10 60 s/lnh vi fCLOCK = 0,1 0,8 MHz.
Mt s b vi x l c trng cho th h ny: 4040 (Intel), PPS-4 (Rockwell International),
2. Th h 2 (1974 - 1977):
c im chung ca cc vi x l th h ny:
Bus d liu: 8 bit.
Bus a ch: 16 bit.
Cng ngh ch to: NMOS hoc CMOS.
Tc thc hin lnh: 1 8 s/lnh vi fCLOCK = 1 5 MHz.
Mt s b vi x l c trng cho th h ny: 6502 (Mos Technology), 6800/6809 (Motorola),
8080/8085 (Intel), Z80 (Zilog),
3. Th h 3 (1978 - 1982):
c im chung ca cc vi x l th h ny:
Bus d liu: 16 bit.
Bus a ch: 20 - 24 bit.
Cng ngh ch to: HMOS.
Tc thc hin lnh: 0,1 1 s/lnh vi fCLOCK = 5 10 MHz.
Mt s b vi x l c trng cho th h ny: 68000 / 68010 (Motorola), 8086 / 80186 / 80286
(Intel),
4. Th h 4 (1983 - nay):
c im chung ca cc vi x l th h ny:
Bus d liu: 32 - 64 bit.
Bus a ch: 32 bit.
Cng ngh ch to: HCMOS.
Tc thc hin lnh: 0,01 0,1 s vi fCLOCK = 20 100 MHz.
Mt s b vi x l c trng cho th h ny: 68020 / 68030 / 68040 / 68060 (Motorola), 80386 /
80486 / Pentium (Intel),
II. S KHI CA MT H VI X L:
nh ngha h vi x l:
Kh nng c lp trnh thao tc trn cc d liu m khng cn s can thip ca con
ngi.
Giao trnh Vi x ly.
Cch xc nh dung lng b nh bn dn 8 bit s dng cho chip vi iu khin 8051 nh sau:
Da vo s lng chn a ch:
Dung lng = 2N , vi N l s ng a ch ca b nh.
V d: B nh bn dn 8 bit c 10 ng a ch. Cho bit dung lng ca b nh l bao nhiu?
N = 10 Dung lng = 210 = 1024 = 1 KB
Da vo m s ca b nh:
M s: XX YYYY
XX: loi b nh
27: UV-EPROM
28: EEPROM
61,62: SRAM
40,41: DRAM
YYYY: dung lng b nh
Dung lng = YYYY (Kbit) hoc Dung lng = YYYY / 8 (KB)
VII. VI X L VI IU KHIN:
phn bit b vi x l v b vi iu khin ta c th da trn cc yu t nh sau:
Yu t phn loi
Cc ngdng
(Applications)
Cc c trng ca
tp lnh
(Instruction set
feature)
CPU
ROM
RAM
Mch giao tip ni
tip
Mch giao tip song
song
Mch iu khin ngt
Cc mch iu khin
khc
ng dng ln, tnh
ton phc tp
ng dng nh, tnh
ton n gin
Cc kiu nh a ch
di t d liu x
l
Vi x l
(Microprocessor)
X
Vi iu khin
(Microcontroller)
X
X
X
X
X
X
X
X
X
Nhiu
Bit, Byte
CHNG 2
PHN CNG CHIP VI IU KHIN 8051
I. TNG QUT:
1. Gii thiu chung:
MCS-51 l h vi iu khin ca hng Intel. Vi mch tng qut ca h MCS-51 l chip 8051.
Chip 8051 c mt s c trng c bn sau:
- B nh chng trnh bn trong: 4 KB (ROM).
- B nh d liu bn trong: 128 byte (RAM).
- B nh chng trnh bn ngoi: 64 KB (ROM).
- B nh d liu bn ngoi: 64 KB (RAM).
- 4 port xut nhp (I/O port) 8 bit.
- 2 b nh thi 16 bit.
- Mch giao tip ni tip.
- B x l bit (thao tc trn cc bit ring l).
- 210 v tr nh c nh a ch, mi v tr 1 bit.
- Nhn / Chia trong 4 s.
Ngoi ra, trong h MCS-51 cn c mt s chip vi iu khin khc c cu trc tng ng nh:
Chip
8031
8032
8051
8052
8751
8752
8951
8952
ROM trong
0 KB
0 KB
4 KB PROM
8 KB PROM
4 KB UV-EPROM
8 KB UV-EPROM
4 KB FLASH ROM
8 KB FLASH ROM
RAM trong
128 byte
256 byte
128 byte
256 byte
128 byte
256 byte
128 byte
256 byte
B nh thi
2
3
2
3
2
3
2
3
B vi iu khin 8031:
8031 l mt phin bn khc ca h 8051. Chip ny thng c coi l 8051 khng c ROM trn
chip. c th dng c chip ny cn phi b sung thm ROM ngoi cha chng trnh cn thit cho
8031. 8051 c chng trnh c cha ROM trn chip b gii hn n 4KB, cn ROM ngoi ca
8031 th c th ln n 64KB. Tuy nhin, c th truy cp ht b nh ROM ngoi th cn dng thm
hai cng (Port 0 v Port 2) , do vy ch cn li c hai cng (Port 1 v Port 3) s dng. Nhm khc
phc vn ny, chng ta c th b sung thm cng vo/ra cho 8031.
2.2
B vi iu khin 8052:
Gio trnh Vi x l.
8031
8051
8052
128
128
256
B nh thi
Chn vo/ra
32
32
32
Cng ni tip
Ngun ngt
Nh bng thng s trn ta thy 8051 l mt trng hp ring ca 8052. Mi chng trnh vit
cho 8051 u c th chy c trn 8052 nhng iu ngc li c th l khng ng.
2.3
B vi iu khin 8751:
Chip 8751 ch c 4KB b nh UV-EPROM trn chip. s dng chip ny cn phi c thit b
lp trnh PROM v thit b xo UV-EPROM. Do ROM trn chip ca 8751 l UV-EPROM, nn cn
phi mt khong 20 pht xo 8751 trc khi c lp trnh. V y l qu trnh mt nhiu thi gian
nn nhiu nh sn xut cho ra phin bn Flash ROM v UV-RAM.
2.4
AT8951 l phin bn 8051 c ROM trn chip l b nh Flash. Phin bn ny rt thch hp cho
cc ng dng nhanh v b nh Flash c th c xa trong vi giy. D nhin l dng AT8951 cn
phi c thit b lp trnh PROM h tr b nh Flash nhng khng cn n thit b xa ROM v b nh
Flash c xa bng thit b lp trnh PROM. tin s dng, hin nay hng Atmel ang nghin cu
mt phin bn ca AT8951 c th c lp trnh qua cng COM ca my tnh PC v nh vy s khng
cn n thit b lp trnh PROM.
K hiu
ROM
RAM
I/O
Timer
Ngt
Vcc
S chn IC
AT89C51
4KB
128
32
5V
40
AT89LV51
4KB
128
32
3V
40
AT89C1051
1KB
64
15
3V
20
AT89C2051
2KB
128
15
3V
20
AT89C52
8KB
256
32
5V
40
AT89LV52
8KB
256
32
3V
40
2.5
ROM
RAM
I/O
Timer
Ngt
Vcc
S chn IC
DS5000-8
8KB
128
32
5V
40
DS5000-32
32KB
128
32
5V
40
DS5000T-8
8KB
128
32
5V
40
DS5000T-32
32KB
128
32
5V
40
Gio trnh Vi x l.
10
Gio trnh Vi x l.
11
2.1.
Port 0:
Port 0 (P0.0 P0.7) c s chn t 32 39.
Port 0 c hai chc nng:
Port xut nhp d liu (P0.0 - P0.7) khng s dng b nh ngoi.
Bus a ch byte thp v bus d liu a hp (AD0 AD7) c s dng b nh
ngoi.
Lu : Khi Port 0 ng vai tr l port xut nhp d liu th phi s dng cc in tr ko ln
bn ngoi.
- ch mc nh (khi reset) th cc chn Port 0 (P0.0 - P0.7) c cu hnh l port xut
d liu. Mun cc chn Port 0 lm port nhp d liu th cn phi lp trnh li, bng cch ghi mc logic
cao (mc 1) n tt c cc bit ca port trc khi bt u nhp d liu t port (vn ny c trnh
by phn k tip).
- Khi lp trnh cho ROM trong chip th Port 0 ng vai tr l ng vo ca d liu (D0 D7)
(xem sch H vi iu khin 8051 trang 333-352).
-
2.2.
Port 1:
Port 1 (P1.0 P1.7) c s chn t 1 8.
Port 1 c mt chc nng:
Port xut nhp d liu (P1.0 P1.7) s dng hoc khng s dng b nh
ngoi.
- ch mc nh (khi reset) th cc chn Port 1 (P1.0 P1.7) c cu hnh l port xut
d liu. Mun cc chn Port 1 lm port nhp d liu th cn phi lp trnh li, bng cch ghi mc logic
cao (mc 1) n tt c cc bit ca port trc khi bt u nhp d liu t port (vn ny c trnh
by phn k tip).
- Khi lp trnh cho ROM trong chip th Port 1 ng vai tr l ng vo ca a ch byte thp
(A0 A7) (xem sch H vi iu khin 8051 trang 333-352).
-
2.3.
Port 2:
- Port 2 (P2.0 P2.7) c s chn t 21 28.
- Port 2 c hai chc nng:
Port xut nhp d liu (P2.0 P2.7) khng s dng b nh ngoi.
Bus a ch byte cao (A8 A15) c s dng b nh ngoi.
- ch mc nh (khi reset) th cc chn Port 2 (P2.0 P2.7) c cu hnh l port xut
d liu. Mun cc chn Port 2 lm port nhp d liu th cn phi lp trnh li, bng cch ghi mc logic
cao (mc 1) n tt c cc bit ca port trc khi bt u nhp d liu t port (vn ny c trnh
by phn k tip).
- Khi lp trnh cho ROM trong chip th Port 2 ng vai tr l ng vo ca a ch byte cao (A8
A11) v cc tn hiu iu khin (xem sch H vi iu khin 8051 trang 333-352).
2.4.
Port 3:
Port 3 (P3.0 P3.7) c s chn t 10 17.
Port 3 c hai chc nng:
Port xut nhp d liu (P3.0 P3.7) khng s dng b nh ngoi hoc cc
chc nng c bit.
Cc tn hiu iu khin c s dng b nh ngoi hoc cc chc nng c bit.
- ch mc nh (khi reset) th cc chn Port 3 (P3.0 P3.7) c cu hnh l port xut
d liu. Mun cc chn Port 3 lm port nhp d liu th cn phi lp trnh li, bng cch ghi mc logic
cao (mc 1) n tt c cc bit ca port trc khi bt u nhp d liu t port (vn ny c trnh
by phn k tip).
-
Gio trnh Vi x l.
12
Tn
a ch bit
Chc nng
P3.0
RxD
B0H
P3.1
TxD
B1H
P3.2
INT0\
B2H
Ng vo ngt ngoi 0.
P3.3
INT1\
B3H
Ng vo ngt ngoi 1.
P3.4
T0
B4H
Ng vo ca b nh thi/m 0.
P3.5
T1
B5H
Ng vo ca b nh thi/m 1.
P3.6
WR\
B6H
P3.7
RD\
B7H
2.5.
Chn PSEN\:
- PSEN (Program Store Enable): cho php b nh chng trnh, chn s 29.
- Chc nng:
L tn hiu cho php truy xut (c) b nh chng trnh (ROM) ngoi.
L tn hiu xut, tch cc mc thp.
PSEN\ = 0 trong thi gian CPU tm - np lnh t ROM ngoi.
PSEN\ = 1 CPU s dng ROM trong (khng s dng ROM ngoi).
- Khi s dng b nh chng trnh bn ngoi, chn PSEN\ thng c ni vi chn OE\ ca
ROM ngoi cho php CPU c m lnh t ROM ngoi.
2.6.
Chn ALE:
- ALE (Address Latch Enable): cho php cht a ch, chn s 30.
- Chc nng:
L tn hiu cho php cht a ch thc hin vic gii a hp cho bus a ch
byte thp v bus d liu a hp (AD0 AD7).
L tn hiu xut, tch cc mc cao.
ALE = 0 trong thi gian bus AD0 - AD7 ng vai tr l bus D0 - D7.
ALE = 1 trong thi gian bus AD0 - AD7 ng vai tr l bus A0 - A7.
- Khi lp trnh cho ROM trong chip th chn ALE ng vai tr l ng vo ca xung lp trnh
(PGM\) (xem sch H vi iu khin 8051 trang 333-352).
Lu : f ALE = fOSC c th dng lm xung clock cho cc mch khc.
6
fALE (MHz): tn s xung ti chn ALE.
fOSC (MHz): tn s dao ng trn chip (tn s thch anh).
- Khi lnh ly d liu t RAM ngoi (MOVX) c thc hin th mt xung ALE b b qua
(xem gin trang 38-39 sch H vi iu khin 8051).
2.7.
-
Chn EA\:
EA (External Access): truy xut ngoi, chn s 31.
Chc nng:
L tn hiu cho php truy xut (s dng) b nh chng trnh (ROM) ngoi.
Gio trnh Vi x l.
13
2.9.
Chn RST:
RST (Reset): thit lp li, chn s 9.
Chc nng:
L tn hiu cho php thit lp (t) li trng thi ban u cho h thng.
L tn hiu nhp, tch cc mc cao.
RST = 0 Chip 8051 hot ng bnh thng.
RST = 1 Chip 8051 c thit lp li trng thi ban u.
12
Lu :
tRe set 2 TMachine
TMachine =
f OSC
fOSC (MHz): tn s thch anh.
tRESET (s): thi gian reset.
TMACHINE (s): chu k my.
-
Gio trnh Vi x l.
14
V d: Xc nh chu k my v thi gian reset tng ng cho tng trng hp fOSC = 11,0592MHz,
fOSC = 12MHz v fOSC = 16MHz.
Gii
fOSC = 11,0592MHz TMACHINE = 1,085s v tRESET 2,17s.
fOSC = 12MHz TMACHINE = 1s v tRESET 2s.
fOSC = 16MHz TMACHINE = 0,75s v tRESET 1,5s
2.10. Chn Vcc, GND:
- Vcc, GND: ngun cp in, chn s 40 v 20.
- Chc nng:
Cung cp ngun in cho chip 8051 hot ng.
Vcc = +5V 10% v GND = 0V.
III. CU TRC CC PORT XUT NHP CHIP 8051:
Kh nng fanout (s lng ti u ra) ca cc tng chn port chip 8051 l:
Port 0: 8 ti TTL.
Port 1: 4 ti TTL.
Port 2: 4 ti TTL.
Port 3: 4 ti TTL.
Lu :
Khi Port 0 ng vai tr l port xut nhp th s khng c in tr ko ln bn trong do
ngi s dng cn thm vo in tr ko ln bn ngoi (xem Hnh III.1).
Gio trnh Vi x l.
15
Cc chn trong cng mt port khng nht thit phi c cng kiu cu hnh (port xut hoc
port nhp). Ngha l trong cng mt port c th c chn dng nhp d liu, c th c chn dng
xut d liu. iu ny l ty thuc vo nhu cu v mc ch ca ngi lp trnh.
Qu trnh ghi chn port (xut d liu ra chn port).
Gio trnh Vi x l.
16
chng trnh v d liu nm chung trn RAM trc khi a vo CPU thc thi.
-
chng trnh v d liu nm ring trn ROM v RAM trc khi a vo CPU thc thi.
-
Gio trnh Vi x l.
17
1. B nh trong:
Gio trnh Vi x l.
18
RAM nh a ch bit:
cho php x l tng bit d liu ring l m khng nh hng n cc bit khc trong c byte.
Lu : Nu trong chng trnh khng s dng cc bit trong vng RAM nh a ch bit ny, ta
c th s dng vng nh 20H 2FH cho cc mc ch khc ca ta. Ngc li, ta phi vit chng trnh
cn thn khi s dng vng nh 20H 2FH v nu s sut ta c th ghi d liu ln cc bit c s
dng.
V d: Vit lnh lm cho 8 bit trong nh c a ch 20H thuc RAM ni c gi tr l 1 (xt
trng hp a ch byte v a ch bit).
Gio trnh Vi x l.
19
Cc dy thanh ghi:
cho php truy xut d liu nhanh, lnh truy xut n gin v ngn gn.
Lu :
o
ch mc nh th dy thanh ghi tch cc (ang c s dng) l dy 0 v cc thanh
ghi trong dy ln lt c tn l R0 - R7. C th thay i dy tch cc bng cch thay i cc bit chn
dy thanh ghi RS1 v RS0 trong thanh ghi PSW (xem phn thanh ghi PSW).
o
Nu chng trnh ca ta ch s dng dy thanh ghi u tin (dy 0) th ta c th s dng
vng nh 08H 1FH cho cc mc ch khc ca ta. Nhng nu trong chng trnh c s dng cc dy
thanh ghi (dy 1, 2 hoc 3) th phi rt cn thn khi s dng vng nh t 1FH tr xung v nu s sut
ta c th ghi d liu ln cc thanh ghi R0 R7 ca ta.
V d 1: Quan h gia k hiu thanh ghi R4 vi cc nh c a ch tng ng trong dy thanh
ghi tch cc?
o
Nu dy 0 tch cc: Thanh ghi R4 nh 04H RAM ni.
o
Nu dy 1 tch cc: Thanh ghi R4 nh 0CH RAM ni.
o
Nu dy 2 tch cc: Thanh ghi R4 nh 14H RAM ni.
o
Nu dy 3 tch cc: Thanh ghi R4 nh 1CH RAM ni.
V d 2: Khi chip 8051 thc hin lnh MOV R4, #1AH th gi tr 1AH s c np vo trong
nh c a ch l bao nhiu thuc RAM ni. Xt tng ng cho tng trng hp dy thanh ghi tch
cc l Dy 0 v Dy 3?
Gio trnh Vi x l.
20
Lu :
o
Khng c php c hay ghi d liu vo cc a ch SFR m n cha c ng k
(ngha l cc a ch SFR cha c t tn). V vic c hay ghi d liu vo cc ni ny c th lm
pht sinh nhng hot ng khng mong mun v c th l nguyn nhn lm cho chng trnh ca ta
khng tng thch vi cc phin bn sau ca chip MCS-51 (c th cc phin bn cc a ch SFR
ny c s dng cho mt vi mc ch khc).
o
Ch c truy xut cc SFR bng kiu nh a ch trc tip (tuyt i khng s
dng kiu nh a ch gin tip trong trng hp ny).
V d: Cho bit trc (R0)=90H. Vit lnh dng xut (ghi) gi tr 5AH ra Port1 nh sau (xem
gii thch lnh trong Chng 3: Tp lnh ca 8051.):
S dng kiu nh a ch trc tip:
MOV P1, #5AH
hoc
MOV 90H, #5AH
S dng kiu nh a ch gin tip:
MOV @R0, #5AH
SAI
iu ny khng hp l i vi chip 8051 v phng php nh a ch gin tip nh trn
ch s dng cho vng nh RAM ni. Trong khi RAM ni ca chip 8051 ch c 128 byte (00H
7FH), cho nn khi thc hin lnh ny n s tr v kt qu khng xc nh. (Lu : nu ta dng phin
bn chip 8052 th s trnh c iu ny).
1.3.1. Thanh ghi A:
Accumulator: thanh ghi tch luy
Thanh ghi
A
E0H E7 E6 E5 E4 E3 E2 E1 E0
a ch byte: E0H
a ch bit: E0H - E7H
Cong dung: cha d lieu cua cac phep toan
ma vi ieu khien x ly
Gio trnh Vi x l.
21
(B)
x1
2
B
2 4
0 2 F
2 H
A H
4
4 H
(A) = F4H
(B) = 02H
(A)
Gio trnh Vi x l.
22
- Bit RS0, RS1 (Register Select): bit chn dy thanh ghi cho php xc nh dy thanh
ghi tch cc (hay dy thanh ghi m cc thanh ghi c tn l R0-R7).
RS1
0
0
1
1
RS0
0
1
0
1
Dy thanh ghi
Dy 0
Dy 1
Dy 2
Dy 3
R0 R7
00H 07H
08H 0FH
10H 17H
18H 1FH
Gii
Cc bc thc hin:
0000 0101
Biu din s 5 dng nh phn 8 bit.
B1:
B2:
1111 1010
Ly b 1.
1111 1011
Ly b 2.
B3:
Vy s FBH l biu din s c du dng b 2 ca s -5.
Cc bc thc hin:
0011 0100
Biu din s 34H dng nh phn 8 bit.
B1:
B2:
1100 1011
Ly b 1.
1100 1100
Ly b 2.
B3:
Vy s CCH l biu din s c du dng b 2 ca s -34H.
Gio trnh Vi x l.
23
Cc bc thc hin:
B1:
1000 0000
Biu din s -128 dng nh phn 8 bit.
B2:
0111 1111
Ly b 1.
1000 0000
Ly b 2.
B3:
Vy s 80H l biu din s c du dng b 2 ca s -128.
V d: Minh ha trng thi hot ng ca cc c CY, AC, OV v P khi thc hin php cng/tr
s hc hai gi tr vi nhau.
C nh (CY):
C nh ph (AC):
B
+
7 6 5 4 3 2 1 0 B
7 6 5 4 3 2 1 0
AC=1
Gio trnh Vi x l.
Kieu BIN
+
AC=1
H L
H L
B
7 6 5 4 3 2 1 0 B
7 6 5 4 3 2 1 0
H
H
AC=1
-
H L
H L
H
H
Kieu BIN
Kieu HEX
24
Kieu HEX
C trn (OV):
C Parity (P):
Gio trnh Vi x l.
25
Gio trnh Vi x l.
26
(SP)=49H.
Stack
memory
Stack memory
Nu ngi s dng khng khi ng thanh ghi SP (ch mc nh) th: (xem hnh bn
di, pha tri)
83H
DPH
82H
a ch byte: 83H va 82H
DPL
Gio trnh Vi x l.
27
Lu :
Trong trng hp phn cng c s dng ROM hoc RAM bn ngoi th ta khng th s
dng Port 0 v Port 2 xut nhp d liu. V khi chip 8051 s s dng hai port ny xc nh a
ch v d liu cho b nh ngoi. Khi , ta ch c th s dng Port 1 v Port 3 xut nhp d liu.
ch mc nh (khi reset) th tt c cc chn ca cc port (P0 P3) c cu hnh l
port xut d liu. Mun cc chn port ca chip 8015 lm port nhp d liu th ta cn phi c lp
trnh li, bng cch ghi mc logic cao (mc 1) n tt c cc bit (cc chn) ca port trc khi bt u
nhp d liu t port.
V d 1: Hot ng xut (ghi) v nhp (c) d liu ti cc chn port (Port 0) ca chip 8051
(xem hnh minh ha bn di).
Hnh pha tri: Minh ha trng thi hot ng ca port khi thc hin lnh xut
(ghi) d liu ra Port 0 ca chip 8051.
Hnh pha phi: Minh ha trng thi hot ng ca port khi thc hin lnh nhp
(c) d liu t Port 0 ca chip 8051.
LED sang
LED tat
CPU - 8051
CAH
WRITE
P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7
Gio trnh Vi x l.
+VCC
Nhan SW
Nha SW
10K
PORT 0
0
1
0
1
0
0
1
1
+VCC
10K
PORT 0
39
38
CPU - 8051
37
36
92H
35
READ
34
33
32
330
0
1
0
0
1
0
0
1
+VCC
P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7
39
38
37
36
35
34
33
32
(P0)=92H
28
V d 2: on chng trnh di y s cu hnh cho Port 0 lm port nhp (c) d liu. Sau
lin tc c d liu t port ny v gi d liu n Port 1 (xem gii thch lnh trong Chng 3:
Tp lnh ca 8051.):
MOV
P0, #0FFH
;Cu hnh P0 lm port nhp bng
;cch ghi 1 vo tt c cc bit.
BACK:
MOV
A, P0
;c d liu t P0.
MOV
P1, A
;Gi d liu ra P1.
SJMP
BACK
;Lp li.
V d 3: on chng trnh di y s thc hin cc thao tc sau (xem gii thch lnh trong
Chng 3: Tp lnh ca 8051.):
Lin tc kim tra bit P1.2 cho n khi bit ny bng 1.
Khi P1.2 =1, hy xut (ghi) gi tr 45H ra P0.
Gi mt xung mc cao ti P1.3.
SETB
P1.2
;Cu hnh P1.2 lm ng vo.
JNB
P1.2, $
;Kim tra lin tc nu P1.2 = 0.
MOV
P0, #45H
; Xut gi tr 45H ra P0.
SETB
P1.3
;a P1.3 ln cao ri a P1.3
CLR
P1.3
;xung thp to xung.
1.3.7. Thanh ghi port ni tip:
Gio trnh Vi x l.
29
Gio trnh Vi x l.
30
Bit SMOD (Serial Mode) cho php tng gp i tc truyn d liu ni tip (tc
baud) khi SMOD = 1.
Bit GF1, GF0 (General Function) cho php ngi lp trnh dng vi mc ch ring
(d tr cho cc phin bn chip trong tng lai).
Bit PD (Power Down) dng qui nh ch ngun gim.
Bit IDL (Idle) dng qui nh ch ngh.
Gio trnh Vi x l.
31
Lu : H thng phi phc hi Vcc = 5V trc khi thot khi ch ngun gim.
2. B nh ngoi:
-
nhm lm gim s lng chn a ra ngoi chip gim kch thc ca chip.
Gio trnh Vi x l.
32
Gio trnh Vi x l.
33
S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6
ALE
PSEN\
RD\
PCH
PORT 2
PORT 0
Gio trnh Vi x l.
PCL
Lenh
DPH
DPL
34
Data
Gio trnh Vi x l.
35
Gio trnh Vi x l.
36
V. HOT NG RESET:
Chn RST = 0 Chip 8051 hot ng bnh thng.
Chn RST = 1 Chip 8051 c reset.
Lu :
o
hon tt qu trnh reset th chn RST phi mc cao ti thiu l 2 chu k my v sau
chuyn xung mc thp.
o
Ni dung ca RAM trong chip khng b nh hng bi hot ng reset.
o
Sau khi reset, vic thc thi chng trnh lun lun bt u vi tr u tin trong b nh
chng trnh: a ch 0000H.
o
Trng thi ca cc thanh ghi sau khi reset h thng:
B m chng trnh (PC)
0000H
Thanh ghi A
00H
Thanh ghi B
00H
Thanh ghi PSW
00H
Thanh ghi SP
07H
Thanh ghi DPTR
0000H
Port 0 Port 3
FFH
Thanh ghi IP
xxx00000B
Thanh ghi IE
0xx00000B
Cc thanh ghi nh thi
00H
Thanh ghi SCON
00H
Thanh ghi SBUF
00H
Thanh ghi PCON (HMOS)
0xxxxxxxB
Thanh ghi PCON (CMOS)
0xxx0000B
VI. PHN BI TP:
Bi 1: S dng mt vi mch 74138 v cc cng cn thit thit k mch gii m a ch to ra
cc tn hiu chn chip tng ng cc vng a ch sau:
Tn hiu chn
chip
Vng a ch
CS0
0000H - 3FFFH
PSEN
CS1
4000H - 7FFFH
PSEN
CS2
6000H - 7FFFH
RD, WR
CS3
8000H - 87FFH
RD
CS4
8800H - 8FFFH
WR
Gio trnh Vi x l.
37
Vng a ch
CS0
9800H - 9BFFH
PSEN
CS1
9800H - 9BFFH
RD, WR
CS2
9C00H - 9DFFH
RD, WR
CS3
9E00H - 9EFFH
RD, WR
Bi 3: Ch dng mt vi mch 74138 (khng dng thm cng), thit k mch gii m a ch to
ra mt tn hiu chn chip /CS tng ng tm a ch F000H-F3FFH.
Gio trnh Vi x l.
38
CHNG 3
TP LNH CA 8051
I. M U:
Gio trnh Vi x l.
39
M t lnh:
Ngoi ra, mt s trng hp c bit kiu nh a ch ny cng dng truy xut d liu trong
cc thanh ghi nh: thanh ghi cha A, thanh ghi con tr d liu DPTR, thanh ghi b m chng
trnh PC, c nh C v cp thanh ghi AB.
V d:
INC A
INC DPTR
Gio trnh Vi x l.
40
V d: ADD A, P1 ADD A, 90H Lnh cng ni dung thanh ghi A vi ni dung thanh ghi
port 1 hay nh 90H. (Gi s: (A) = 05H, (P1) = (90H) = 9AH).
M lnh:
M t lnh:
3. nh a ch gin tip (Indirect Addressing):
c dng truy xut d liu trong cc nh gin tip ca b nh bn trong chip. Cc
thanh ghi R0 v R1 c dng cha a ch ca cc nh gin tip (00H - FFH) trong chip.
Lu rng, trc cc thanh ghi R0, R1 cn phi c du @.
S byte ca lnh: 1 byte.
Cu trc lnh:
V d: ADD A, @R0 Lnh cng ni dung thanh ghi A vi ni dung nh c a ch cha
trong thanh ghi R0. (Gi s: (A) = 05H, (R0) = 3BH, (3BH) = 9AH).
M lnh:
M t lnh:
4. nh a ch tc thi (Immediate Addressing):
c dng truy xut mt hng s (gi tr bit trc) thay v l mt bin (gi tr khng bit
trc) nh cc kiu nh a ch trn. Lu rng, trc d liu tc thi cn phi c du #.
Ch nh a ch tc thi c th dng np d liu vo mi nh v thanh ghi bt k (i
vi thanh ghi 8 bit: #00H - #0FFH, i vi thanh ghi 16 bit: #0000H - #0FFFFH).
S byte ca lnh: 2 byte.
Cu trc lnh:
V d: ADD A, #9AH Lnh cng ni dung thanh ghi A vi gi tr 9AH. (Gi s: (A) = 05H).
M lnh:
M t lnh:
Gio trnh Vi x l.
41
M lnh:
M t lnh: xem hnh 3.5.2.1.
V d 2: SJMP AAA Lnh nhy n nhn AAA (Gi s: nhn AAA t trc lnh a ch
203BH, lnh SJMP nm trong b nh ti a ch 2040H v 2041H).
M lnh:
M t lnh: xem hnh 3.2.5.2.
Gio trnh Vi x l.
42
V d: AJMP AAA Lnh nhy n nhn AAA (Gi s: nhn AAA t trc lnh a ch
0F46H, lnh AJMP nm trong b nh ti a ch 0900H v 0901H).
M lnh:
M t lnh:
FFFFH
F800H
F800H
0FFFH
2K trang 31
1800H
17FFH
1000H
0FFFH
0800H
07FFH
0000H
2K trang 2
32 x 2K
(64K)
AAA
0F46H
2K trang 1
0901H
0900H
2K trang 1
46H
E1H
AJMP AAA
2K trang 0
0800H
Cach
thanh lap
a ch cua
nhan se
nhay ti
A11A10
A0
5 bit xac nh
trang 2K
T 5 bit (A15...A11)
trong thanh ghi PC
7. nh a ch di (Long Addressing):
c s dng cho cc lnh LCALL v LJMP.
a ch di l mt gi tr 16 bit.
Tm nhy gii hn l: ton b khng gian nh 64K.
S byte ca lnh: 3 byte.
Cu trc lnh:
Gio trnh Vi x l.
43
V d: LJMP AAA Lnh nhy n nhn AAA (Gi s: nhn AAA t trc lnh a ch
A209H, lnh LJMP nm trong b nh ti a ch 0100H, 0101H v 0102H).
M lnh:
FFFFH
AAA
A209H
64K
0102H
0101H
0100H
09H
A2H
12H
LJMP AAA
0000H
M t lnh:
8. nh a ch ch s (Indexed Addressing):
c dng trong cc ng dng cn to cc bng nhy hay cc bng tm kim. Kiu nh a ch
ny dng mt thanh ghi nn (PC hay DPTR) kt hp vi mt offset (A) to thnh dng a
ch hiu dng cho lnh.
S byte ca lnh: 1 byte.
Cu trc lnh:
Gio trnh Vi x l.
44
c thay th bi
()
Ni dung ca
(( ))
Ni dung c cha bi
rrr
Thanh ghi ca dy thanh ghi (000 = R0, 001 = R1, , 111 = R7).
i
a ch gin tip s dng R0 (i = 0) hoc R1 (i = 1).
dddddddd Cc bit d liu.
aaaaaaaa
Cc bit a ch.
eeeeeeee
a ch tng i.
Mt s lu khi lp trnh b vi iu khin 8051:
thng bo l mt gi tr tc thi th cn phi t thm k hiu # vo trc gi tr .
Nu khng c k hiu # th gi tr c hiu l a ch ca nh.
MOV A, #12H
;Np gi tr 12H vo thanh ghi A.
MOV A, 12H
;Sao chp ni dung ca nh c a
;ch 12H vo thanh ghi A.
y ta cng nn lu rng nu thiu k hiu # th lnh trn cng khng gy ra li trong qu
trnh bin dch. V trnh dch hp ng cho l mt lnh hp l. Tuy nhin, kt qu lp trnh s khng
ng nh mun ca ngi lp trnh.
Cc gi tr tc thi nu c thnh phn ch (A, B, C, , F) ng u th cn phi thm s 0 vo
trc thnh phn ch v sau k hiu #. Vic ny bo rng thnh phn ch l mt s HEX ch
khng phi l mt k t.
MOV A, #BH
;Thiu s 0 gy li khi bin dch.
MOV A, #0BH
;Thm s 0 ng.
MOV A, #F9H
;Thiu s 0 gy li khi bin dch.
MOV A, #0F9H
;Thm s 0 ng.
Gio trnh Vi x l.
45
Gio trnh Vi x l.
46
Cc dng lnh:
ADD A, Rn
S byte
S chu k
M i tng
Hot ng
1
1
00101rrr
(A) (A) + (Rn)
ADD A, direct
S byte
S chu k
M i tng
Hot ng
2
1
00100101
aaaaaaaa
(A) (A) + (direct)
ADD A, @Ri
S byte
S chu k
M i tng
Hot ng
1
1
0010011i
(A) (A) + ((Ri))
ADD A, #data
S byte
S chu k
M i tng
Hot ng
2
1
00100100
dddddddd
(A) (A) + #data
Sau khi thc thi lnh ADD A, 90H hay ADD A, P1 th:
(A)=6DH, CY=1, AC=0, OV=1
A C3H
R0
Gio trnh Vi x l.
47H
47H D2H
47
A 95H
Cc dng lnh:
Gio trnh Vi x l.
ADDC A, Rn
S byte
S chu k
M i tng
Hot ng
1
1
00110rrr
(A) (A) + (C) + (Rn)
ADDC A, direct
S byte
S chu k
M i tng
Hot ng
2
1
00110101
aaaaaaaa
(A) (A) + (C) + (direct)
ADDC A,@Ri
S byte
S chu k
M i tng
Hot ng
1
1
0011011i
(A) (A) + (C) + ((Ri))
ADDC A, #data
S byte
S chu k
M i tng
Hot ng
2
1
00110100
dddddddd
(A) (A) + (C) + # data
48
A C3H
R0
47H
ADDC A, R0
CY
C3H + 47H + 1H = 0BH
A 0BH
Sau khi thc thi lnh ADDC A, 90H hay ADDC A, P1 th:
(A)=6DH, CY=1, AC=0, OV=1
A C3H
4EH
ADDC A, #4EH
12H
Gio trnh Vi x l.
49
Cc dng lnh:
SUBB A, Rn
S byte
S chu k
M i tng
Hot ng
1
1
10011rrr
(A) (A) (C) (Rn)
SUBB A, direct
S byte
S chu k
M i tng
Hot ng
2
1
10010101
aaaaaaaa
(A) (A) (C) (direct)
SUBB A, @Ri
S byte
S chu k
M i tng
Hot ng
1001011i
(A) (A) (C) ((Ri))
SUBB A, #data
S byte
S chu k
M i tng
Hot ng
1
1
100110100 dddddddd
(A) (A) (C) #data
1
1
Sau khi thc thi lnh SUBB A, 90H hay SUBB A, P1 th:
(A)=D8H, CY=1, AC=1, OV=0
Gio trnh Vi x l.
50
Lu :
Cc dng lnh:
INC A
S byte
S chu k
M i tng
Hot ng
1
1
00000100
(A) (A) + 1
INC Rn
S byte
S chu k
M i tng
Hot ng
1
1
00001rrr
(Rn) (Rn) + 1
INC direct
S byte
S chu k
M i tng
Hot ng
2
1
00000101
aaaaaaaa
(direct) (direct) + 1
INC @Ri
S byte
S chu k
M i tng
Hot ng
1
1
0000011i
((Ri)) ((Ri)) + 1
Sau khi thc thi lnh INC 90H hay INC P1 th: (P1)=(90H)=ABH
Gio trnh Vi x l.
51
1
2
10100011
(DPTR) (DPTR) + 1
Khng c lnh gim ni dung ca DPTR (DEC DPTR). Nu mun gim ni dung
ca DPTR ta phi vit mt on chng trnh con thc hin iu ny. Chng
trnh con c minh ha nh sau:
DEC_DPTR:
;Chng trnh con gim DPTR.
PUSH ACC
;Ct tm gi tr ACC.
DEC DPL
;Gim byte thp ca DPTR.
MOV A, DPL
;So snh byte thp ca DPTR
CJNE A,#0FFH, SKIP
;vi FFH.
DEC DPH
;Gim byte cao ca DPTR.
SKIP:
POP ACC
;Phc hi gi tr ACC.
RET
Lu :
Gio trnh Vi x l.
52
Lu :
Cc dng lnh:
DEC A
S byte
S chu k
M i tng
Hot ng
1
1
00010100
(A) (A) 1
S byte
S chu k
M i tng
Hot ng
1
1
00011rrr
(Rn) (Rn) 1
DEC Rn
DEC direct
S byte
S chu k
M i tng
Hot ng
2
1
00010101
aaaaaaaa
(direct) (direct) 1
DEC @Ri
S byte
S chu k
M i tng
Hot ng
1
1
0001011i
((Ri)) ((Ri)) 1
Sau khi thc thi lnh DEC 90H hay DEC P1 th: (P1)=(90H)=A9H
Gio trnh Vi x l.
53
1.7. MUL AB
Chc nng: Nhn (Multiply).
M t:
MUL AB nhn cc s nguyn khng du 8-bit cha trong thanh ghi A v thanh ghi
B. Tch s l mt gi tr 16 bit, byte thp (8 bit thp) c ct trong thanh ghi A
cn byte cao (8 bit cao) c ct trong thanh ghi B.
Nu tch s ln hn 255 (0FFH) th c trn OV=1. C nh CY lun lun b xa.
S byte
S chu k
M i tng
Hot ng
1
4
10100100
(B) HIGH BYTE OF (A) (B)
(A) LOW BYTE OF (A) (B)
1.8. DIV AB
Chc nng: Chia (Divide).
M t:
DIV AB chia s nguyn khng du 8-bit cha trong thanh ghi A cho s nguyn
khng du 8-bit cha trong thanh ghi B. Thng s c ct trong thanh ghi A
cn s d c ct trong thanh ghi B. C CY v c OV b xo.
Nu ban u B cha 00H, gi tr tr v trong thanh ghi A v thanh ghi B khng
c xc nh v c OV=1. C CY c xa trong mi trng hp.
S byte
S chu k
M i tng
Hot ng
Gio trnh Vi x l.
1
4
10000100
(A) QUOTIENT OF (A) / (B)
(B) REMAINDER OF (A) / (B)
54
A C3H
B
00H
DIV AB
yyH
A xxH
1.9. DA A
Chc nng: Hiu chnh thp phn ni dung ca thanh ghi A i vi php cng (Decimal-adjust
Accumulator for Addition)
M t:
Lu :
DA A khng th n gin bin i s hex trong thanh ghi A thnh s dng BCD,
DA A cng khng p dng cho php tr thp phn.
S byte
S chu k
M i tng
Gio trnh Vi x l.
1
1
11010100
55
Gio trnh Vi x l.
56
Lu :
A AND B
A OR B
A XOR B
CPL A
ANL thc hin php ton AND tng bit gia hai ton hng c ch ra trong lnh
v lu kt qu vo ton hng ch (dest-byte). Cc c khng b nh hng.
Lu :
Gio trnh Vi x l.
57
Cc dng lnh:
ANL A, Rn
S byte
S chu k
M i tng
Hot ng
1
1
01011rrr
(A) (A) AND (Rn)
ANL A, direct
S byte
S chu k
M i tng
Hot ng
2
1
01010101 aaaaaaaa
(A) (A) AND (direct)
ANL A, @Ri
S byte
S chu k
M i tng
Hot ng
1
1
0101011i
(A) (A) AND ((Ri))
ANL A, #data
S byte
S chu k
M i tng
Hot ng
2
1
01010100
dddddddd
(A) (A) AND #data
ANL direct, A
S byte
S chu k
M i tng
Hot ng
2
1
01010010
aaaaaaaa
(direct) (direct) AND (A)
3
2
01010011 aaaaaaaa dddddddd
(direct) (direct) AND #data
ANL A, R0
A 02H
11000011B
00101010B
00000010B
Gio trnh Vi x l.
58
Sau khi thc thi lnh ANL A, B0H hay ANL A, P3 th: (A)=41H
Sau khi thc thi lnh ANL B0H, A hay ANL P3, A th: (P3)=41H
Sau khi thc thi lnh ANL 2AH, #B0H th: (2AH)=10H
Gio trnh Vi x l.
59
ORL thc hin php ton OR tng bit gia hai ton hng c ch ra trong lnh v
lu kt qu vo ton hng ch (dest-byte). Cc c khng b nh hng.
Lu :
Cc dng lnh:
ORL A, Rn
S byte
S chu k
M i tng
Hot ng
1
1
01001rrr
(A) (A) OR (Rn)
ORL A, direct
S byte
S chu k
M i tng
Hot ng
2
1
01000101
aaaaaaaa
(A) (A) OR (direct)
ORL A, @Ri
S byte
S chu k
M i tng
Hot ng
1
1
0100011i
(A) (A) OR ((Ri))
ORL A, #data
S byte
S chu k
M i tng
Hot ng
2
1
01000100
dddddddd
(A) (A) OR #data
ORL direct, A
S byte
S chu k
M i tng
Hot ng
2
1
01000010
aaaaaaaa
(direct) (direct) OR (A)
3
2
01000011 aaaaaaaa dddddddd
(direct) (direct) OR #data
Gio trnh Vi x l.
60
Sau khi thc thi lnh ORL A, B0H hay ORL A, P3 th: (A)=F7H
A C3H
2AH
ORL A, #2AH
A EBH
11000011B
00101010B
11101011B
Sau khi thc thi lnh ORL B0H, A hay ORL P3, A th: (P3)=F7H
Gio trnh Vi x l.
61
Sau khi thc thi lnh ORL 2AH, #B0H th: (2AH)=F5H
2AH 55H
B0H
2AH F5H
01010101B
10110000B
11110101B
XRL thc hin php ton XOR tng bit gia hai ton hng c ch ra trong lnh
v lu kt qu vo ton hng ch (dest-byte). Cc c khng b nh hng.
Lu :
Cc dng lnh:
XRL A, Rn
S byte
S chu k
M i tng
Hot ng
XRL A, direct
S byte
S chu k
M i tng
Hot ng
1
1
01101rrr
(A) (A) (Rn)
2
1
01100101 aaaaaaaa
(A) (A) (direct)
XRL A, @Ri
S byte
S chu k
M i tng
Hot ng
1
0110011i
(A) (A) ((Ri))
XRL A, #data
S byte
S chu k
M i tng
Hot ng
2
1
01100100
dddddddd
(A) (A) #data
XRL direct, A
S byte
S chu k
M i tng
Hot ng
2
1
01100010
aaaaaaaa
(direct) (direct) (A)
Gio trnh Vi x l.
62
Sau khi thc thi lnh XRL A, B0H hay XRL A, P3 th: (A)=B6H
Sau khi thc thi lnh XRL B0H, A hay XRL P3, A th: (P3)=B6H
Gio trnh Vi x l.
63
Sau khi thc thi lnh XRL 2AH, #B0H th: (2AH)=E5H
XRL 2AH, #B0H
2AH 55H
B0H
XOR
2AH E5H
01010101B
10110000B
11100101B
2.4. CLR A
Chc nng: Xa thanh ghi A (Clear Acc).
M t:
Cc dng lnh:
S byte
S chu k
M i tng
Hot ng
1
1
11100100
(A) 0
2.5. CPL A
Chc nng: Ly b ni dung thanh ghi A (Complement Acc).
M t:
1
1
11110100
(A) NOT(A)
A 5CH
CPL A
A A3H
01011100B
10100011B
Gio trnh Vi x l.
64
2.6. RL A
Chc nng: Quay tri thanh ghi A (Rotate Acc Left).
M t:
8 bit trong thanh ghi A c quay tri 1 bit. Bit 7 c quay n v tr ca bit 0.
Cc c khng b nh hng.
S byte
S chu k
M i tng
Hot ng
1
1
00100011
(An+1) (An), n = 0 6
(A0) A7
2.7. RLC A
Chc nng: Quay tri thanh ghi A cng vi c nh.
M t:
8 bit trong thanh ghi A v c nh cng c quay tri 1 bit. Bit 7 c di chuyn
n c CY v trng thi ban u ca c CY c a n v tr ca bit 0. Cc c
khc khng b nh hng.
S byte
S chu k
M i tng
Hot ng
1
1
00110011
(An+1) (An), n = 0 6
(A0) (C), (C) A7
Gio trnh Vi x l.
65
2.8. RR A
Chc nng: Quay phi thanh ghi A (Rotate Acc Right).
M t:
8 bit trong thanh ghi A c quay phi 1 bit. Bit 0 c quay n v tr ca bit 7.
Cc c khng b nh hng.
S byte
S chu k
M i tng
Hot ng
1
1
00000011
(An) (An+1), n = 0 6
(A7) A0
2.9. RRC A
Chc nng: Quay phi thanh ghi A cng vi c nh.
M t:
8 bit trong thanh ghi A v c nh cng c quay phi 1 bit. Bit 0 c di chuyn
n c nh v trng thi ban u ca c nh c a n v tr ca bit 7. Cc c
khc khng b nh hng.
S byte
S chu k
M i tng
Hot ng
1
1
00010011
(An) (An+1), n = 0 6
(A7) (C)
(B) A0
Gio trnh Vi x l.
66
2.10. SWAP A
Chc nng: Tro i ni dung hai na thp v cao ca thanh ghi A (Swap nibble).
SWAP A tro i ni dung hai na thp v cao ca thanh ghi A (cc bit t 3 n 0
cc bit t 7 n 4). Thao tc ny cn c th c hiu nh l quay thanh ghi A
i 4 bit. Cc c khng b nh hng.
M t:
1
1
11000100
(A3 A0) (A7 A4)
S byte
S chu k
M i tng
Hot ng
V d: Cho bit trc (A)=C5H.
Sau khi thc thi lnh SWAP A th: (A)=5CH
Lu :
MOV
DIV
SWAP
ADD
B, #10
AB
A
A, B
M t:
Cc dng lnh:
MOV A, Rn
S byte
S chu k
M i tng
Hot ng
1
1
11101rrr
(A) (Rn)
MOV A, direct
S byte
S chu k
M i tng
Hot ng
2
1
11100101 aaaaaaaa
(A) (direct)
Lu :
Gio trnh Vi x l.
MOV A, @Ri
S byte
S chu k
M i tng
Hot ng
1
1
1110011i
(A) ((Ri))
MOV A, #data
S byte
S chu k
M i tng
Hot ng
2
1
01110100 dddddddd
(A) #data
MOV Rn, A
S byte
S chu k
M i tng
Hot ng
1
1
11111rrr
(Rn) (A)
2
2
10101rrr
(Rn) (direct)
2
1
01111rrr
(Rn) #data
MOV direct, A
S byte
S chu k
M i tng
Hot ng
2
1
11110101
aaaaaaaa
(direct) (A)
MOV direct, Rn
S byte
S chu k
M i tng
Hot ng
2
2
10001rrr
(direct) (Rn)
3
2
10000101 aaaaaaaa aaaaaaaa
(direct) (direct)
aaaaaaaa
dddddddd
aaaaaaaa
Gio trnh Vi x l.
68
2
2
1000011i
(direct) ((Ri))
3
2
01110101 aaaaaaaa dddddddd
(direct) #data
MOV @Ri, A
S byte
S chu k
M i tng
Hot ng
1
1
1111011i
((Ri)) (A)
2
2
1010011i aaaaaaaa
((Ri)) (direct)
2
1
0111011i dddddddd
((Ri)) #data
aaaaaaaa
Sau khi thc thi lnh MOV A, 30H th: (A)=40H, (30H)=40H
Sau khi thc thi lnh MOV A, @R0 th: (A)=40H, (R0)=30H, (30H)=40H
Gio trnh Vi x l.
69
Sau khi thc thi lnh MOV R0, A th: (A)=5FH, (R0)=5FH
Sau khi thc thi lnh MOV R0, P1 th: (R0)=CAH, (P1)=CAH
Sau khi thc thi lnh MOV R0, #90H th: (R0)=90H
Sau khi thc thi lnh MOV P1, A th: (A)=5FH, (P1)=5FH
Sau khi thc thi lnh MOV P1, R0 th: (R0)=30H, (P1)=30H
Sau khi thc thi lnh MOV P1, 30H th: (30H)=40H, (P1)=40H
Sau khi thc thi lnh MOV P1, @R0 th: (R0)=30H, (30H)=40H, (P1)=40H
Gio trnh Vi x l.
70
Sau khi thc thi lnh MOV 30H, #30H th: (30H)=30H
Sau khi thc thi lnh MOV @R0, A th: (A)=5FH, (30H)=5FH, (R0)=30H
Sau khi thc thi lnh MOV @R0, P1: (30H)=CAH, (P1)=CAH, (R0)=30H
Sau khi thc thi lnh MOV @R0, #90H th: (30H)=90H, (R0)=30H
M t:
Cc dng lnh:
MOVC A, @A+DPTR
S byte
S chu k
M i tng
Hot ng
1
2
10010011
(A) ((A)+(DPTR))
MOVC A, @A+PC
S byte
S chu k
M i tng
Hot ng
1
2
10000011
(A) ((A)+(PC))
Gio trnh Vi x l.
71
Gio trnh Vi x l.
72
M t:
Cc dng lnh:
MOVX A, @Ri
S byte
S chu k
M i tng
Hot ng
1
2
11100011i
(A) ((Ri))
MOVX A, @DPTR
S byte
S chu k
M i tng
Hot ng
1
2
11100000
(A) ((DPTR))
MOVX @Ri, A
S byte
S chu k
M i tng
Hot ng
1
2
11110011
((Ri)) (A)
MOVX @DPTR, A
S byte
S chu k
M i tng
Hot ng
1
2
11110000
((DPTR)) (A)
Gio trnh Vi x l.
73
V d: Cho bit trc (A)=AAH, (DPTR)=1234H, (R0)=34H. nh RAM ngoi 256 byte:
(34H)=12H & 64 KB: (1234H)=7FH
Sau khi thc thi lnh MOVX A, @R0 th: (A)=12H
Sau khi thc thi lnh MOVX @R0, A th: nh RAM ngoi (34H)=AAH
Gio trnh Vi x l.
74
3
2
10010000 dddddddd dddddddd
(DPTR) #data16
V d:
Sau khi thc thi lnh MOV DPTR, #1234H th:
2
2
11000000
aaaaaaaa
(SP) (SP) + 1
((SP)) (direct)
V d: Ct tm thi ni dung ca thanh ghi A, B v R0 vo ngn xp. Cho bit trc (A)=AAH,
(B)=BBH, (R0)=CCH, (SP)=5FH.
PUSH A
PUSH B
PUSH 00H
Th: (SP)=62H, (60H)=AAH, (61H)=BBH, (62H)=CCH
Sau khi thc thi chui lnh:
Gio trnh Vi x l.
75
2
2
11010000
aaaaaaaa
(direct) ((SP))
(SP) (SP) 1
Gio trnh Vi x l.
76
M t:
Cc dng lnh:
XCH A, Rn
S byte
S chu k
M i tng
Hot ng
1
1
11001rrr
(A) (Rn)
XCH A, direct
S byte
S chu k
M i tng
Hot ng
2
1
11000101
aaaaaaaa
(A) (direct)
XCH A, @Ri
S byte
S chu k
M i tng
Hot ng
1
1
1100011i
(A) ((Ri))
Sau khi thc thi lnh XCH A, 20H th: (A)=75H, (20H)=3FH
Sau khi thc thi lnh XCH A, @R0 th: (A)=75H, (20H)=3FH, (R0)=20H
Gio trnh Vi x l.
77
M t:
S byte
S chu k
M i tng
Hot ng
1
1
110101i
(A3 A0) (Ri3 Ri0)
M t:
Cc dng lnh:
CLR C
S byte
S chu k
M i tng
Hot ng
1
1
11000011
(C) 0
CLR bit
S byte
S chu k
M i tng
Hot ng
2
1
11000010
(bit) 0
bbbbbbbb
Gio trnh Vi x l.
78
Sau khi thc thi lnh CLR P1.3 th: P1.3=0 tc lm (P1)=F7H
Lu :
Cc dng lnh:
CPL C
S byte
S chu k
M i tng
Hot ng
1
1
10110011
(C) NOT(C)
CPL bit
S byte
S chu k
M i tng
Hot ng
2
1
10110010
bbbbbbbb
(bit) NOT(bit)
Sau khi thc thi lnh CPL P1.3 th: P1.3=0 tc lm (P1)=F7H
Gio trnh Vi x l.
79
M t:
Cc dng lnh:
SETB C
S byte
S chu k
M i tng
Hot ng
1
1
11010011
(C) 1
SETB bit
S byte
S chu k
M i tng
Hot ng
2
1
11010010
(bit) 1
bbbbbbbb
Sau khi thc thi lnh SETB P1.3 th: P1.3=1 tc lm (P1)=08H
M t:
Cc dng lnh:
ANL C, bit
S byte
S chu k
M i tng
Hot ng
2
2
10000010
bbbbbbbb
(C) (C) AND (bit)
ANL C, /bit
S byte
S chu k
M i tng
2
2
10110000
Gio trnh Vi x l.
80
bbbbbbbb
Bin son: Phm Quang Tr
Sau khi thc thi lnh ANL C, /ACC.7 th: c CY=1, (A)=72H
M t:
Cc dng lnh:
ORL C, bit
S byte
S chu k
M i tng
Hot ng
2
2
01110010
bbbbbbbb
(C) (C) OR (bit)
ORL C, /bit
S byte
S chu k
M i tng
Hot ng
2
2
10100000
bbbbbbbb
(C) (C) OR NOT(bit)
Gio trnh Vi x l.
81
Sau khi thc thi lnh ORL C, /ACC.7 th: c CY=1, (A)=72H
Lu :
Cc lnh trn bao gm lnh ANL v ORL nhng khng tn ti lnh XRL. Cho nn
nu ta cn XOR hai bit , BIT1 v BIT2, v kt qu c ct vo trong c nh (CY)
th ta s dng on lnh sau y:
MOV
C, BIT1
;Np BIT1 vo c nh.
JNB
BIT2, SKIP
;BIT2=0 th C = BIT1.
CPL
C
;BIT2=1 th C\ = BIT1\.
SKIP:
M t:
Cc dng lnh:
MOV C, bit
S byte
S chu k
M i tng
Hot ng
2
1
10100010
bbbbbbbb
(C) (bit)
MOV bit, C
S byte
S chu k
M i tng
Hot ng
2
2
10010010
bbbbbbbb
(bit) (C)
Gio trnh Vi x l.
82
Sau khi thc thi lnh MOV P1.3, C th: c CY=1, (P1)=CDH
3
2
00100000 bbbbbbbb eeeeeeee
(PC) (PC) + 3
IF (bit) = 1 THEN
(PC) (PC) + byte_2
Lu :
Lu :
Tm nhy ca lnh JB bit, rel b gii hn khong cch nhy t -128 byte (nhy
lui) n +127 byte (nhy ti) k t lnh k tip theo sau lnh nhy c iu kin
ny.
Sau khi thc thi chui lnh th (A)=FFH, (P0)=9CH (chng trnh thc hin lnh nhy JB P0.7, AAA).
Gio trnh Vi x l.
83
Sau khi thc thi chui lnh th (A)=00H, (P0)=9CH (chng trnh khng thc hin lnh nhy JB P0.5,
AAA).
4.8. JNB bit, rel
Chc nng: Nhy nu bit bng 0.
M t:
3
2
00110000 bbbbbbbb eeeeeeee
(PC) (PC) + 3
IF (bit) = 0 THEN
(PC) (PC) + byte_2
Lu :
Lu :
Tm nhy ca lnh JNB bit, rel b gii hn khong cch nhy t -128 byte
(nhy lui) n +127 byte (nhy ti) k t lnh k tip theo sau lnh nhy c iu
kin ny.
Gio trnh Vi x l.
84
Sau khi thc thi chui lnh th (A)=6BH, (P1)=01H (chng trnh khng thc hin lnh nhy JNB
ACC.5, AAA).
V d 3: Cho chui lnh:
MOV
P1, #10H
MOV
E0H, #6BH
; 6BH = 01101011B
JNB
E2H, AAA
MOV
P1, #01H
AAA:
Sau khi thc thi chui lnh th (A)=(E0H)=6BH, (P1)=10H (chng trnh thc hin lnh nhy JNB
E2H, AAA).
4.9. JBC bit, rel
Chc nng: Nhy nu bit bng 1 v xa bit (lm cho bit = 0).
M t:
3
2
00010000 bbbbbbbb eeeeeeee
(PC) (PC) + 3
IF (bit) = 1 THEN
(bit) 0
(PC) (PC) + byte_2
Lu :
Gio trnh Vi x l.
85
Tm nhy ca lnh JBC bit, rel b gii hn khong cch nhy t -128 byte
(nhy lui) n +127 byte (nhy ti) k t lnh k tip theo sau lnh nhy c iu
kin ny.
Khi lnh ny c dng lm thay i gi tr ca mt port xut th gi tr c
dng lm d liu ban u ca port c ly t b cht d liu xut, khng phi
c ly t cc chn nhp.
Sau khi thc thi chui lnh th (A)=76H, (P3)=98H (chng trnh thc hin lnh nhy JBC P3.2,
AAA).
V d 3: Cho chui lnh:
MOV
A, #76H
MOV
B0H, #9CH
; 9CH = 10011100B
JBC
B1H, AAA
MOV
A, #67H
AAA:
Sau khi thc thi chui lnh th (A)=67H, (P3)=(B0H)=9CH (chng trnh khng thc hin lnh nhy
JBC B1H, AAA).
4.10. JC rel
Chc nng: Nhy nu c CY = 1.
M t:
Gio trnh Vi x l.
2
2
01000000
eeeeeeee
(PC) (PC) + 2
IF (C) = 1 THEN
(PC) (PC) + byte_2
86
Lu :
Lu :
Tm nhy ca lnh JC rel b gii hn khong cch nhy t -128 byte (nhy lui)
n +127 byte (nhy ti) k t lnh k tip theo sau lnh nhy c iu kin ny.
Sau khi thc thi chui lnh th (A)=10H, (R0)=76H v c CY=1 (chng trnh thc hin lnh nhy JC
AAA).
4.11. JNC rel
Chc nng: Nhy nu c CY = 0.
M t:
Gio trnh Vi x l.
2
2
01010000
eeeeeeee
(PC) (PC) + 2
IF (C) = 0 THEN
(PC) (PC) + byte_2
87
Lu :
Lu :
Tm nhy ca lnh JNC rel b gii hn khong cch nhy t -128 byte (nhy
lui) n +127 byte (nhy ti) k t lnh k tip theo sau lnh nhy c iu
kin
ny.
Sau khi thc thi chui lnh th (A)=0BH, (R1)=25H v c CY=1 (chng trnh khng thc hin lnh
nhy JNC AAA).
Gio trnh Vi x l.
88
2
2
aaa1001
aaaaaaaa
M t:
Gio trnh Vi x l.
89
1000H
0FFFH
2K trang 31
2K trang 2
32 x 2K
(64K)
2K trang 1
Trang 2
A
2K trang 1
2K trang 0
0800H
07FFH
Trang 0
V d 1: Cho bit trc (SP)=07H, lnh ACALL v tr 0123H v nhn AAA v tr 0345H ca
b nh chng trnh. Lnh k tip lnh ACALL v tr 0125H.
Sau khi thc thi lnh ACALL AAA th: (SP)=09H, (PC)=0345H v 2 nh ca RAM ni
(08H)=23H, (09H)=01H.
V d 2: Cho bit trc (SP)=07H, lnh ACALL v tr 0800H v nhn AAA v tr 0700H ca
b nh chng trnh.
Khng th thc thi lnh ACALL AAA (li lp trnh) v lnh ACALL v nhn AAA khng nm
trong cng mt trang (lnh ACALL thuc trang 1, nhn AAA thuc trang 0).
Gio trnh Vi x l.
90
S byte
S chu k
M i tng
Lu :
M t:
LCALL AAA
64 KB
AAA:
2
RET
V d: Cho bit trc (SP)=07H, lnh LCALL v tr 0123H v nhn AAA v tr 1234H ca
b nh chng trnh. Lnh k tip lnh ACALL v tr 0126H.
Sau khi thc thi lnh LCALL AAA th: (SP)=09H, (PC)=1234H v 2 nh ca RAM ni
(08H)=26H, (09H)=01H.
Gio trnh Vi x l.
91
5.3. RET
Chc nng: Tr v t chng trnh con (Return).
M t:
1
2
00100010
(PC15 PC8) ((SP))
(SP) (SP) 1
(PC7 PC0) ((SP))
(SP) (SP) 1
Lu :
Chng trnh con c mt s qui nh sau:
o L mt chui gm nhiu lnh c kt hp li vi nhau thc hin mt cng vic no
.
o Bt u bng mt NHN, do ngi lp trnh t t ra (nhn ny chnh l tn ca chng
trnh con).
o Kt thc bng lnh RET.
o c t cui chng trnh, pha trn ch dn kt thc chng trnh END.
o Gia chng trnh con v chng trnh chnh phi c cch ly bng lnh:
SJMP $.
SJMP MAIN (MAIN: l nhn bt k thuc chng trnh chnh).
o Chng trnh con c th c gi ra nhiu ln ti bt k thi im no, ty thuc vo
ngi lp trnh yu cu (thng qua cc lnh gi ACALL, LCALL v cc tn hiu ngt).
o Trong mt chng trnh c th c mt hoc nhiu chng trnh con.
Gio trnh Vi x l.
92
Lu :
1
2
00110010
(PC15 PC8) ((SP))
(SP) (SP) 1
(PC7 PC0) ((SP))
(SP) (SP) 1
Gio trnh Vi x l.
93
2
2
aaa00001
aaaaaaaa
V d: Cho bit trc lnh AJMP v tr 0345H v nhn AAA v tr 0123H ca b nh chng
trnh.
Sau khi thc thi lnh AJMP AAA th: (PC)=0123H.
Gio trnh Vi x l.
94
3
2
00010010 aaaaaaaa aaaaaaaa
byte 2 cha cc bit a ch t A15A8
byte 3 cha cc bit a ch t A7A0
(PC) addr15 addr0
M t:
V d: Cho bit trc lnh LJMP v tr 0123H v nhn AAA v tr 1234H ca b nh chng
trnh.
Sau khi thc thi lnh LJMP AAA th: (PC)=1234H.
Gio trnh Vi x l.
95
2
2
10000000
eeeeeeee
(PC) (PC) + 2
(PC) (PC) + byte_2
M t:
Lu :
Gio trnh Vi x l.
96
1
2
01110011
(PC) (PC) + (A) + (DPTR)
th:
2
2
01100000
eeeeeeee
(PC) (PC) + 2
IF (A) = 0 THEN
(PC) (PC) + byte_2
Lu :
Gio trnh Vi x l.
97
Tm nhy ca lnh JZ rel b gii hn khong cch nhy t -128 byte (nhy lui)
n +127 byte (nhy ti) k t lnh k tip theo sau lnh nhy c iu kin ny.
2
2
01110000
eeeeeeee
(PC) (PC) + 2
IF (A) < > 0 THEN
(PC) (PC) + byte_2
Lu :
Lu :
Tm nhy ca lnh JNZ rel b gii hn khong cch nhy t -128 byte (nhy
lui) n +127 byte (nhy ti) k t lnh k tip theo sau lnh nhy c iu kin
ny.
Gio trnh Vi x l.
98
M t:
Cc dng lnh:
CJNE A, direct, rel
S byte
S chu k
M i tng
Hot ng
Gio trnh Vi x l.
3
2
10110101 aaaaaaaa eeeeeeee
(PC) (PC) + 3
IF (A) < > (direct) THEN
(PC) (PC) + a ch tng i
IF (A) < (direct) THEN
(C) 1
ELSE
(C) 0
3
2
10110100 dddddddd eeeeeeee
(PC) (PC) + 3
IF (A) < > #data THEN
(PC) (PC) + a ch tng i
IF (A) < #data THEN
(C) 1
ELSE
(C) 0
3
2
10111rrr dddddddd eeeeeeee
(PC) (PC) + 3
IF (Rn) < > #data THEN
(PC) (PC) + a ch tng i
IF (Rn) < #data THEN
(C) 1
ELSE
(C) 0
99
Lu :
Gio trnh Vi x l.
100
CJNE
A, #20H, $+3
;So snh (A) vi con s 20H.
JNC
BIG
;Nhy n BIG nu (A) #20H.
o Khi ta mun nhy n nhn SMALL nu (A) < #20H, th cc lnh sau c s dng:
CJNE
A, #20H, $+3
;So snh (A) vi con s 20H.
JC
SMALL
;Nhy n SMALL nu (A) < #20H.
M t:
Cc dng lnh:
DJNZ Rn, rel
S byte
S chu k
M i tng
Hot ng
Lu :
Gio trnh Vi x l.
2
2
11011rrr
eeeeeeee
(PC) (PC) + 2
(Rn) (Rn) 1
IF (Rn) < > 0 THEN
(PC) (PC) + byte_2
3
2
11010101 aaaaaaaa eeeeeeee
(PC) (PC) + 2
(direct) (direct) 1
IF (direct) < > 0 THEN
(PC) (PC) + byte_2
101
Lu :
Lu :
Khi lnh DJNZ c thc hin th gi tr trong thanh ghi Rn c gim (-1) trc
khi em ra so snh vi gi tr 0.
Vic thc thi chng trnh tip tc vi lnh tip theo. Khng c thanh ghi hay c
no b nh hng.
S byte
S chu k
M i tng
Hot ng
Gio trnh Vi x l.
1
1
00000000
(PC) (PC) + 1
102
Ghi ch:
X l c tng ng b nh hng.
0 l c tng ng bng 0.
1 l c tng ng bng 1.
Gio trnh Vi x l.
103
Gio trnh Vi x l.
S chu k my:
1
1
2
2
2
1
4
104
Gio trnh Vi x l.
105
TMachine =
on lnh:
12
12
=
= 1,085(s )
f OSC 11,0592MHz
S chu k my:
DELAY:
MOV R3, #250
1
HERE:
NOP
1
NOP
1
NOP
1
NOP
1
DJNZ R3, HERE
2
RET
1
Tng thi gian thc hin on lnh trn l:
t = [1 + ((1 + 1 + 1 + 1 + 2) x 250) + 1] x 1,085 (s) = 1629,67 (s)
V d 9: Vit on lnh c?t gi tr ca thanh ghi R5, R6 v A vo ngn xp. Sau ly ra v
cho ln lt vo cc thanh ghi R2, R3 v B tng ng.
Gii
PUSH
05H
;Ct R5 vo ngn xp.
PUSH
06H
;Ct R6 vo ngn xp.
PUSH
0E0H
;Ct ACC vo ngn xp.
POP
0F0H
;Ly t ngn xp cho vo B, (B) = (A).
POP
03H
;Ly t ngn xp cho vo R3, (R3) = (R6).
POP
02H
;Ly t ngn xp cho vo R2, (R2) = (R5).
V d 10: Vit on lnh chuyn gi tr trong nh c a ch 55H vo cc nh RAM ti
a ch t 40H 44H, s dng:
o Ch nh a ch trc tip.
o Ch nh a ch gin tip (khng dng vng lp).
o Ch nh a ch gin tip (dng vng lp).
Gii
Ch nh a ch trc tip:
MOV
A, #55H
MOV
40H, A
MOV
41H, A
MOV
42H, A
MOV
43H, A
MOV
44H, A
Gio trnh Vi x l.
106
Gio trnh Vi x l.
107
Gio trnh Vi x l.
108
Gio trnh Vi x l.
109
Gio trnh Vi x l.
110
Gio trnh Vi x l.
111
V d 22: Vit on lnh kim tra thanh ghi A xem c cha gi tr 99H hay khng? Nu (A) =
99H th np gi tr FFH vo thanh ghi R1, ngc li th np gi tr 00H vo thanh ghi R1.
Gii
MOV
R1, #0
;Np R0 = 00H.
CJNE
A, #99H, NEXT ;So snh A vi gi tr 99H, nu khng
;bng th nhy n NEXT.
MOV
R1, #0FFH
;Np R0 = FFH nu A = 99H.
NEXT:
V d 23: Gi s mt cm bin nhit c ni ti ng vo P1. Hy vit on lnh c nhit
v so snh vi gi tr 75. Da vo kt qu kim tra t gi tr nhit vo cc thanh ghi nh sau:
Nu t = 75OC th (A) = 75.
Nu t < 75OC th (R1) = t.
Nu t > 75OC th (R2) = t.
Gii
MOV
P1, #0FFH
;Cu hnh P1 l port nhp.
MOV
A, P1
;c d liu (t) t P1.
CJNE
A, #75, OVER ;So snh d liu (t) vi gi tr 75, nu
;khng bng th nhy n OVER.
SJMP
EXIT
;Nu A = 75 th thot chng trnh.
OVER:
;Trng hp khi d liu (t) khc 75.
JNC
NEXT
;Nhy n NEXT nu d liu (t) > 75, C=0.
MOV
R1, A
;Nu d liu (t) < 75 th np d liu vo
SJMP
EXIT
;R1 (R1 = A = t) v thot chng trnh.
NEXT:
;Trng hp khi d liu (t) > 75.
MOV
R2, A
;Np d liu vo R2 (R2 = A = t).
EXIT:
V d 24: Vit on lnh lin tc kim tra gi tr ti Port 1 nu gi tr ny khc 63H. Nu (P1) =
63H th thot on lnh khng kim tra na.
Gii
MOV
P1, #0FFH
;Cu hnh P1 l port nhp.
HERE:
MOV
A, P1
;c d liu t P1.
CJNE
A, #63H, HERE ;Duy tr kim tra n khi P1 = 63H.
Gio trnh Vi x l.
112
Gio trnh Vi x l.
113
114
Bi 6: Vit on lnh ghi (chuyn) gi tr 40H vo nh 1230H ca RAM ngoi (RAM ngoi
c dung lng > 256 byte).
Bi 7: Vit on lnh xa nh 1231H ca RAM ngoi (RAM ngoi c dung lng > 256
byte).
Bi 8: Vit on lnh ghi (chuyn) ni dung nh 1232H ca RAM ngoi vo thanh ghi A
(RAM ngoi c dung lng > 256 byte).
Bi 9: Vit on lnh ghi (chuyn) ni dung thanh ghi A vo nh 1233H ca RAM ngoi
(RAM ngoi c dung lng > 256 byte).
Bi 10: Vit on lnh chuyn d liu nh 1234H ca RAM ngoi vo nh 1235H ca
RAM ngoi (RAM ngoi c dung lng > 256 byte).
Truy xut Port:
Bi 1: Vit on lnh xut (ghi) gi tr 0FH ra Port 1.
Bi 2: Vit on lnh xut (ghi) gi tr F0H ra Port 2.
Bi 3: Vit on lnh xut (ghi) ni dung thanh ghi A ra Port 1.
Bi 4: Vit on lnh nhp (c) t Port 1 vo thanh ghi A.
Bi 5: Vit on lnh nhp (c) t Port 1 v xut ra Port 2.
Bi 6: Vit on lnh xut (ghi) ni dung nh 37H ca RAM ni ra Port 3.
Bi 7: Vit on lnh nhp (c) t Port 2 vo nh 38H ca RAM ni.
Bi 8: Vit on lnh xut mc 1 (mc logic cao) ra chn P1.0
Bi 9: Vit on lnh xut mc 0 (mc logic thp) ra chn P1.1
Truy xut RAM ni, RAM ngoi v Port:
Bi 1: Vit on lnh chuyn nh 40H (RAM ni) vo nh 2000H (RAM ngoi).
Bi 2: Vit on lnh chuyn ni dung nh 2001H (RAM ngoi) vo nh 41H (RAM ni).
Bi 3: Vit on lnh nhp (c) t Port 1 vo nh 42H (RAM ni).
Bi 4: Vit on lnh nhp (c) t Port 1 vo nh 2002H (RAM ngoi).
Bi 5: Vit on lnh xut (ghi) ni dung nh 43H (RAM ni) ra Port 1.
Bi 6: Vit on lnh xut (ghi) ni dung nh 2003H (RAM ngoi) ra Port 1.
S dng vng lp:
Bi 1: Vit on lnh xa 20 nh RAM ni c a ch bt u l 30H.
Bi 2: Vit on lnh xa cc nh RAM ni t a ch 20H n 7FH.
Bi 3: Vit on lnh xa 250 nh RAM ngoi c a ch bt u l 4000H.
Bi 4: Vit on lnh xa 2500 nh RAM ngoi c a ch bt u l 4000H.
Bi 5: Vit on lnh xa cc nh RAM ngoi t a ch 2000H n 205FH.
Bi 6: Vit on lnh xa cc nh RAM ngoi t a ch 2000H n 3FFFH.
Bi 7: Vit on lnh xa ton b RAM ngoi c dung lng 8KB, bit rng a ch u l
2000H.
Gio trnh Vi x l.
115
116
Gio trnh Vi x l.
117
Gio trnh Vi x l.
118
CHNG 4
HOT NG CA B NH THI
(TIMER)
I. M U:
Bo nh
thi
(TIMER)
119
thy tng th nht (Q0) chia 2 tn s xung clock, tng th hai (Q1) chia 4 tn s xung clock, S m
c ghi dng thp phn v c kim tra d dng bng cch kho st trng thi ca 3 flipflop. V
d, s m l 4 xut hin khi Q2 = 1, Q1 = 0, Q0 = 0. Cc flipflop trn l cc flipflop tc ng cnh
m (ngha l trng thi ca cc flipflop s thay i theo cnh m ca xung clock). Khi s m trn t
111 xung 000, ng ra Q2 c cnh m lm cho trng thi ca flipflop c i t 0 ln 1 (ng vo D ca
flipflop ny lun lun logic 1).
ng dng nh thi gian (TIMER): b nh thi c lp trnh sao cho s trn sau mt khong
thi gian qui nh v khi c trn ca b nh thi s bng 1.
ng dng m s kin (COUNTER): xc nh s ln xut hin ca mt kch thch t bn
ngoi ti mt chn ca chip 8051 (kch thch l s chuyn trng thi t 1 xung 0).
ng dng to tc baud cho port ni tip: xem thm trong chng Chng 5: Hot ng
port ni tip..
Gio trnh Vi x l.
120
Hnh 4.2.1:
Thanh ghi chon
che o nh thi.
Cc ch hot ng ca b nh thi:
Gio trnh Vi x l.
121
Phn tch:
(1): Ch 16 bit.
(2): B nh thi gian.
(3): iu khin bng phn mm.
(4): Ch 13 bit.
(5): B m xung.
(6): iu khin bng phn cng.
M1 = 0, M0 = 1.
C / T = 0.
GATE = 0.
M1 = 0, M0 = 0.
C / T = 1.
GATE = 1.
Gio trnh Vi x l.
122
Gii thch:
M1 = 1, M0 = 0.
C / T = 0.
GATE = 1.
M1 = 0, M0 = 1.
C / T = 1.
GATE = 0.
T ta c:
o Timer 0: l b m xung 16 bit, c iu khin bng phn mm (bit TR0).
o Timer 1: l b nh thi gian 8 bit t np li, c iu khin bng phn cng (chn INT 1 ).
V d 4: Cho bit (TMOD) = 21H. Hy cho bit ch hot ng ca cc Timer 0 v Timer 1.
Gii
Gii thch:
M1 = 1, M0 = 0.
C / T = 0.
GATE = 0.
M1 = 0, M0 = 1.
C / T = 0.
GATE = 0.
T ta c:
o Timer 0: l b nh thi gian 16 bit, c iu khin bng phn mm (bit TR0).
o Timer 1: l b nh thi gian 8 bit t np li, c iu khin bng phn mm (bit TR1).
Gio trnh Vi x l.
123
Lu : Cc bit IT0, IT1, IE0, IE1 khng dng iu khin cc b nh thi. Cc bit ny c
dng pht hin v khi ng cc ngt ngoi. Vic tho lun cc bit ny s c trnh by
trong Chng 6: Hot ng ngt..
Gio trnh Vi x l.
124
Ch 0 (Mode 0):
Ch nh thi 13 bit.
S dng 8 bit ca thanh ghi THx v 5 bit thp ca thanh ghi TLx to ra b nh thi.
S m: 0000H 1FFFH ngha l t 0 8191. Thi gian nh thi: t 1.TTimer 213.TTimer
ngha l t 1.TTimer 8192.TTimer.
Thanh ghi THx v TLx cha gi tr ca b nh thi.
Khi c xung clock, b nh thi bt u m ln t gi tr cha trong THx/TLx.
Xy ra trn (c trn TFx=1) khi s m chuyn t 1FFFH sang 0000H v vic m s tip tc
m ln t gi tr 0000H.
Gio trnh Vi x l.
125
Ch 1 (Mode 1):
Ch nh thi 16 bit.
S dng thanh ghi THx v TLx to ra b nh thi.
S m: 0000H FFFFH ngha l t 0 65535. Thi gian nh thi: t 1.TTimer 216.TTimer
ngha l t 1.TTimer 65536.TTimer.
Thanh ghi THx v TLx cha gi tr ca b nh thi.
Khi c xung clock, b nh thi bt u m ln t gi tr cha trong THx/TLx.
Xy ra trn (c trn TFx=1) khi s m chuyn t FFFFH sang 0000H v vic m s tip tc
m ln t gi tr 0000H.
Gio trnh Vi x l.
126
Ch 2 (Mode 2):
Ch nh thi 8 bit t np li.
S dng thanh ghi TLx to ra b nh thi.
S m: 00H FFH ngha l t 0 255. Thi gian nh thi: t 1.TTimer 28.TTimer ngha l
t 1.TTimer 256.TTimer.
Thanh ghi TLx cha gi tr ca b nh thi v thanh ghi THx cha gi tr s c dng np
li cho b nh thi.
Khi c xung clock, b nh thi bt u m ln t gi tr cha trong TLx (THx khng thay i
gi tr).
Xy ra trn (c trn TFx=1) khi s m chuyn t FFH sang 00H, ng thi gi tr trong THx
s c np vo TLx v vic m s tip tc m ln t gi tr cha trong thanh ghi TLx (gi tr
ny bng vi gi tr ca THx).
Gio trnh Vi x l.
127
TL1
Timer
clock
TF0
TL0
Timer
clock
TF1
TH0
/12FOSC
Overflow
flag
x = 0, 1: Bo nh thi 0, 1.
Timer clock: Xung clock cho bo nh thi.
Overflow flag: C tran.
Ch 3 (Mode 3) l:
Ch nh thi chia x.
B nh thi 0 c chia ra:
o B nh thi 8 bit th I:
S dng thanh ghi TL0 to ra b nh thi.
S m: 00H FFH ngha l t 0 255. Thi gian nh thi: t 1.TTimer
28.TTimer ngha l t 1.TTimer 256.TTimer.
Thanh ghi TL0 cha gi tr ca b nh thi.
Khi c xung clock, b nh thi bt u m ln t gi tr cha trong TL0.
Xy ra trn (c trn TF0=1) khi s m chuyn t FFH sang 00H v vic m s
tip tc m ln t gi tr 00H.
o B nh thi 8 bit th II:
S dng thanh ghi TH0 to ra b nh thi.
S m: 00H FFH ngha l t 0 255. Thi gian nh thi: t 1.TTimer
28.TTimer ngha l t 1.TTimer 256.TTimer.
Thanh ghi TH0 cha gi tr ca b nh thi.
Khi c xung clock, b nh thi bt u m ln t gi tr cha trong TH0.
Xy ra trn (c trn TF1=1) khi s m chuyn t FFH sang 00H v vic m s
tip tc m ln t gi tr 00H.
B nh thi 1:
o L b nh thi 16 bit.
o Khng hot ng ch 3 nhng c th hot ng cc ch khc (ch 0, 1, 2).
o Khng c c bo trn nh cc b nh thi khc.
Gio trnh Vi x l.
128
Nu C/T=0 th:
B nh thi c dng nh thi gian (Timer).
Ngun xung clock nh thi c ly t mch dao ng trn chip.
Lu :
o Tn s xung clock cung cp cho b nh thi bng 1/12 tn s ca mch dao ng trn
chip 8051.
o Thi gian nh thi l khong thi gian c tnh t lc b nh thi bt u m ln (t
gi tr cha trong cc thanh ghi THx/TLx) cho n lc b nh thi bt u trn (thi
gian ny ph thuc vo gi tr ban u c np cho cc thanh ghi THx v TLx).
Gio trnh Vi x l.
129
Gi fTIMER l tn s xung clock ca b nh thi, fOSC l tn s xung clock ca thch anh. Theo nh
trn trnh by, ta c:
f
f
11,0592(MHz )
= 11,0592(MHz ) f
= OSC =
= 921,6(KHz )
TIMER
OSC
12
12
1
1
T
=
=
= 1,085(s )
TIMER f
921,6(KHz )
TIMER
f
12(MHz )
= 12(MHz ) f
= OSC =
= 1(MHz )
TIMER
OSC
12
12
1
1
T
=
=
= 1(s )
TIMER f
1(MHz )
TIMER
f
16(MHz )
= 16(MHz ) f
= OSC =
= 1,333(MHz )
TIMER
OSC
12
12
1
1
T
=
=
= 0,75(s )
TIMER f
1,333(MHz )
TIMER
2. Trng hp m s kin:
Nu C/T=1 th:
B nh thi c dng m s kin (Counter).
Ngun xung clock nh thi c ly t xung kch thch bn ngoi ti hai chn T0 v T1 ca
chip 8051.
Lu :
o Tn s kch thch ti a cho php ti chn T0 v T1:
f
= TIMER
T 0,T 1( MAX )
2
130
OSC
= 11,0592(MHz ) f
f
921,6(KHz )
= TIMER =
= 460,8(KHz )
T 0,T 1( MAX )
2
2
f
1(MHz )
= 12(MHz ) f
= TIMER =
= 500(KHz )
OSC
T 0,T 1( MAX )
2
2
f
1,333(MHz )
= 16(MHz ) f
= TIMER =
= 666,5(KHz )
OSC
T 0,T 1( MAX )
2
2
SETB TR0
CLR TR0
Gio trnh Vi x l.
131
Gii
Ta khi ng b nh thi 0 nh sau:
Ch nh thi 16 bit (ch 1).
Gi tr trong TH0/TL0 l 0000H.
GATE = 1 v TR0 = 1 (iu khin hot ng ca Timer 0 bng phn cng, tc iu khin bng
tn hiu ti chn INT0\).
12
8051
TL1 TH1
T1
(P3.5)
0 = Up
1 = Down
C/T
TF1
0 = Up
1 = Down
TR1
GATE
INT1
(P3.3)
Gii
Ta dng lnh:
MOV TMOD, #10H
hoc
MOV TMOD, #00010000B
Gio trnh Vi x l.
132
Gii thch:
Gio trnh Vi x l.
133
Tng qut, ta c cng thc tnh gi tr cn np cho b nh thi c thi gian nh thi nh
mong mun l:
f
N = OSC t
12 DELAY
Trong :
N: gi tr cn np cho b nh thi.
fOSC (MHz): tn s thch anh.
tDELAY (s): thi gian cn nh thi.
Trong cc ng dng thc t, ta cn phi c gi tr (ni dung) cha trong cc thanh ghi nh thi
THx/TLx trong khi b nh thi vn ang hot ng. Do gi tr ca b nh thi c cha trong c hai
thanh ghi THx/TLx. Cho nn ta phi c hai thanh ghi ny bng hai dng lnh lin tip nhau (do khng
c lnh no c th c ng thi c hai thanh ghi nh thi ny). Mt s sai pha (phase error) c th
xut hin nu c s trn t byte thp chuyn sang byte cao gia hai ln c v do vy ta khng th c
ng c gi tr cn c.
V d: Minh ha v s sai pha (phase error) c th xut hin nu c s trn t byte thp chuyn
sang byte cao gia hai ln c gi tr lm cho ta khng th c ng c gi tr cn c ca THx/TLx
trong khi b nh thi ang hot ng.
Gii
Gii php a ra l trc tin ta phi c byte cao, k n c byte thp v ri c byte thp ln
na. Nu byte cao thay i gi tr, ta lp li thao tc c va nu. Lu gii thut dng c chnh
xc gi tr (ni dung) cha trong cc thanh ghi nh thi THx/TLx ca b nh thi ang hot ng:
Gio trnh Vi x l.
134
V d: c ni dung ca cc thanh ghi TH1/TL1 trong khi b nh thi 1 ang hot ng. Ni
dung sau khi c ca thanh ghi TH1 cha trong R7, ca thanh ghi TL1 cha trong R6.
AGAIN:
MOV A, TH1
MOV R6, TL1
CJNE A, TH1, AGAIN
MOV R7, A
VIII. CC KHONG THI GIAN NH THI:
Dng cc lnh.
Dng cc lnh.
o 256.TTIMER
12
OSC
fOSC (MHz): tn s thch anh.
Gio trnh Vi x l.
135
V d:
V d:
V d:
Gio trnh Vi x l.
136
2. Cc bc c bn khi ng Counter:
Chn ch hot ng cho Counter, cho bit GATE=0 v C/T=1:
MOV TMOD, #...(1)
Xo cc gi tr cha trong thanh ghi THx v TLx (ngha l cho s xung ban u bng 0):
MOV THx, #00H
MOV TLx, #00H
Cho Counter chy:
SETB TRx
Kim tra c bo trn (kim tra s m b trn) x l trng hp s m b trn.
Xa c bo trn (sau khi x l cho trng hp s m b trn):
CLR TFx
Dng Counter (sau khi hon tt qu trnh m xung):
CLR TRx
c s xung m c trong thanh ghi THx v TLx.
Lu :
x: S th t ca Counter s dng.
(1): Gi tr ny ph thuc vo Counter c chn v ch hot ng ca Counter. Gi tr ny
phi tho mn iu kin sau:
o
Gii
LOOP:
Gio trnh Vi x l.
ORG 8100H
SETB P1.0
CLR P1.0
SJMP LOOP
END
;1 chu k my
;1 chu k my
;2 chu k my
137
Gii
Phng php:
Phng php thc hin l s dng lnh vng lp DJNZ to thi gia tr tDelay nh mong mun. V
d mu:
DELAY:
;tDelay = 10 x 20 x 30 x 2.TTimer
MOV R0, #10
BBB:
MOV R1, #20
AAA:
MOV R2, #30
DJNZ R2, $
;lnh 2.TTimer
DJNZ R1, AAA
DJNZ R0, BBB
RET
Tng qut, ta c cng thc tnh thi gian tr tDelay nh sau:
t
Trong :
Delay
12
f
(1)
Osc
12
=
TTimer (s): chu k Timer T
.
Timer f
Osc
DJNZ).
Lu : Gi tr ca cc vng lp phi tha iu kin 0 [Rn] 255. c bit nu chn [Rn] = 0
th iu ny s tng ng vi trng hp ta chn [Rn] = 256 (tng t cho cc [Rm], , [Rv] khc).
Tnh ton: Tm gi tr cn np cho cc thanh ghi vng lp:
12
= [Rn ] [Rm ] ... [Rv ] 2.
Ta c: t
Delay
f
Osc
Vi tDelay = 100 s, fOsc = 12 MHz th ta chn:
[Rn] = 50
12
t
= 50 2. = 100 s
Delay
12
Gio trnh Vi x l.
138
;tDelay = 50 x 2.TTimer
;lnh 1.TTimer
;lnh 2.TTimer
;lnh 2.TTimer
Vi tDelay = 10 ms:
DELAY:
MOV R0, #20
AAA:
MOV R1, #250
DJNZ R1, $
DJNZ R0, AAA
RET
Vi tDelay = 1 s:
DELAY:
MOV R0, #10
BBB:
MOV R1, #200
AAA:
MOV R2, #250
DJNZ R2, $
DJNZ R1, AAA
DJNZ R0, BBB
RET
Lu v chnh xc ca tDelay: Khi s dng phng php to thi gian tr nh trn (phng
php dng lnh, khng dng Timer) th vic nh thi gian thng c mt sai s nht nh. V y,
n gin trong vic tnh ton m ta b qua khng tnh n thi gian cn thit thc hin tng lnh
trong chng trnh, ch quan tm n thi gian thc hin ca lnh DJNZ (2TTimer) v s ln thc hin
ca n. Cng thc trnh by trn (1) ch l cng thc tnh thi gian tDelay c chnh xc tng i,
mun tnh thi gian tDelay chnh xc th ta cn phi tnh tng thi gian thc hin (ngha l tnh s chu k
my hay s chu k Timer) ca tt c cc lnh c trong chng trnh. chnh xc ca chng trnh to
thi gian tr theo phng php tnh tng i ny ph thuc vo s ln lp li v s vng lp.
Vi tDelay = 100 s, fOsc = 12 MHz th tDelay chnh xc l:
Gio trnh Vi x l.
Delay (cx)
= 1.T
+ 2.T
50 + 2.T
= 103.T
Timer
Timer
Timer
Timer
139
Delay ( cx )
= 1.T
+ 1.T
+ 2.T
250 + 2.T
Timer Timer
Timer
Timer
20 + 2.T
= 10065 .T
Timer
Timer
Delay (cx )
200 + 2.T
= 1.T
+ 1.T
+ 1.T
+ 2.T
250 + 2.T
Timer Timer Timer
Timer
Timer
Timer
= 1006033 .T
Timer
10 + 2.T
Timer
Gio trnh Vi x l.
140
chnh xc (xt v mt thi gian) ca chng trnh: Khi s dng phng php to thi gian
tr nh trn (phng php dng Timer) th vic nh thi gian cng xut hin mt sai s. V y,
n gin trong vic tnh ton m ta b qua khng tnh n thi gian cn thit thc hin tng lnh
trong chng trnh, ch quan tm n gi tr cn phi np cho b nh thi sao cho Timer nh c
khong thi gian m ta yu cu. chnh xc ca chng trnh nh thi khi s dng phng php ny
khng ph thuc vo gi tr cn np cho Timer (N) m n ch ph thuc vo s lng lnh s dng
trong chng trnh.
Vi dng th nht (ch 2) th tDelay chnh xc l: t
Vi dng th hai (ch 1) th tDelay chnh xc l: t
Delay(cx)
Delay(cx)
= 11.T
+t
= 111(s )
Timer Delay
= 13.T
+t
= 113(s )
Timer Delay
Gio trnh Vi x l.
Delay (cx)
141
= 13.T
+t
= 10013(s )
Timer Delay
142
= 5.T
+ 11.T
+t
100 + 4.T
Delay (cx)
Timer
Timer
Timer Delay (Timer )
= 1001109(s ) = 1,001109(s )
Vi tDelay(Timer): thi gian nh thi ca Timer (10000 s).
Gio trnh Vi x l.
143
100 + 2.T
= 7.T
+ 1.T
+ 11.T
+t
60 + 6.T
Delay(cx)
Timer Timer
Timer Delay(Timer )
Timer
Timer
= 60066193(s ) = 60,066193(s )
Vi tDelay(Timer): thi gian nh thi ca Timer (10000 s).
Tnh ton:
Gio trnh Vi x l.
144
Gio trnh Vi x l.
145
Tnh ton:
8051
f = 1 KHz
P1.0
50% 50%
fOSC=12 MHz
tH
tL
T
146
SETB TR0
JNB TF0, $
CLR TR0
CLR TF0
RET
END
9. V d 9: (To sng vung)
Vit chng trnh to sng vung c tn s 100 Hz ng ra P1.0 v c chu k lm vic D=30%.
Bit rng tn s thch anh l 12 MHz v s dng b nh thi 0.
Gii
Tnh ton:
8051
f = 100 Hz
P1.0
30% 70%
fOSC=12 MHz
tH
tL
T
Gio trnh Vi x l.
147
Gio trnh Vi x l.
148
Vcc
8051
10K
SW
Vcc
P1.6
P1.7
P1.7=0 Hu coi.
P1.7=1 Im lang.
10K
fOSC=12 MHz
Gii
HUNDRED
EQU 100
;Khai bo bin
COUNT
EQU -10000
ORG 0000H
MAIN:
;Ch logic 1 ng vo P1.6.
JNB P1.6, $
JB P1.6, $
;Ch logic 0 ng vo P1.6
SETB P1.7
;Ci h.
ACALL DELAY
;Thi gian 1 giy.
CLR P1.7
;Tt ci.
SJMP MAIN
DELAY:
PUSH 00H
MOV TMOD, #10H
MOV R0, # HUNDRED
AAA:
MOV TH1, #HIGH(COUNT)
MOV TL1, #LOW(COUNT)
SETB TR1
JNB TF1, $
CLR TF1
CLR TR1
DJNZ R0, AAA
POP 00H
RET
END
Gio trnh Vi x l.
149
Gii
Tnh ton:
Theo yu cu ca bi:
o Vit chng trnh m xung Cu hnh cho Timer 0 l mt b m xung (Counter).
o S xung nm trong khong 0 255 xung Chn ch 8 bit (ch 2).
Chng trnh: Da vo nhng tnh ton trn, ta c:
MAIN:
;Ch Counter 8 bit (ch 2).
MOV
TMOD, #06H
MOV
TH0, #00H
;Gi tr ban u ca b m.
SETB
P3.4
;Cu hnh P3.4 l ng vo.
SETB
TR0
;Khi ng b m.
LOOP:
;c s xung t b m.
MOV
A, TL0
MOV
40H, A
;Ct s xung m c vo 40H.
JNB
TF0, LOOP
;Tip tc qu trnh m xung nu
;b m cha b trn.
CLR
TF0
;Xo c trn.
CLR
TR0
;Dng b m.
END
;Kt thc chng trnh.
Gio trnh Vi x l.
150
Gii
Tnh ton:
Theo yu cu ca bi:
o Vit chng trnh m xung Cu hnh cho Timer 0 l mt b m xung (Counter).
o S xung nm trong khong 0 65535 xung Chn ch 16 bit (ch 1).
Chng trnh: Da vo nhng tnh ton trn, ta c:
MAIN:
MOV
TMOD, #05H
;Ch Counter 16 bit (ch 1).
MOV
TH0, #00H
;Gi tr ban u ca b m (cao).
MOV
TL0, #00H
;Gi tr ban u ca b m (thp).
SETB
P3.4
;Cu hnh P3.4 l ng vo.
SETB
TR0
;Khi ng b m.
LOOP:
;c gi tr ca b m ang hot ng.
MOV
A, TH0
;c s xung m c (phn cao).
MOV
50H, TL0
;Ct s xung m c (phn thp).
;c s xung m c (phn cao)
CJNE
A, TH0, LOOP
;ln na kim tra.
MOV
51H, A
;Ct s xung m c (phn cao).
JNB
TF0, LOOP
;Tip tc qu trnh m xung nu
;b m cha b trn.
CLR
TF0
;Xo c trn.
CLR
TR0
;Dng b m.
END
;Kt thc chng trnh.
Gio trnh Vi x l.
151
To tr:
Bi 1: Vit chng trnh con mang tn DELAY500US c nhim v to tr 0,5ms dng Timer.
(fOSC=6MHz).
Bi 2: Vit chng trnh con mang tn DELAY10MS c nhim v to tr 10ms dng Timer.
(fOSC=12MHz).
Bi 3: Vit chng trnh con mang tn DELAY10S c nhim v to tr 10s dng Timer.
(fOSC=12MHz).
Bi 4: Vit chng trnh con mang tn DELAY1S c nhim v to tr 1s dng Timer.
(fOSC=11,0592MHz).
Bi 5: Vit chng trnh con delay 100s, bit rng fOSC dng trong h thng l:
a. 6 MHz.
b. 11,0592 MHz.
c. 12 MHz.
d. 24 MHz
Bi 6: Vit chng trnh con delay 100ms, bit rng fOSC dng trong h thng l:
a. 6 MHz.
b. 11,0592 MHz.
c. 12 MHz.
d. 24 MHz
Bi 7: Vit chng trnh con delay 1s, bit rng fOSC dng trong h thng l:
a. 6 MHz.
b. 11,0592 MHz.
c. 12 MHz.
d. 24 MHz
Bi 8: Vit on lnh to mt xung dng (
rng fOSC =12 MHz.
To xung:
Bi 1: Dng chng trnh con DELAY500US (Bi 1 phn to tr) vit on lnh to sng
vung f=1KHz ti P1.0.
Bi 2: Dng chng trnh con DELAY10MS (Bi 2 phn to tr) vit on lnh to sng
vung f=50Hz ti P1.1.
Bi 3: Dng chng trnh con DELAY500US (Bi 1 phn to tr) vit on lnh to sng
vung f=500Hz (D=25%) ti P1.2.
Bi 4: Dng chng trnh con DELAY10MS (Bi 2 phn to tr) vit on lnh to sng
vung f=20Hz (D=20%) ti P1.3.
Bi 5: Vit on lnh to chui xung vung c f = 100 KHz ti chn P1.1 (fOSC =12 MHz).
Bi 6: Vit on lnh to chui xung vung c f = 100 KHz v c chu k lm vic D = 40% ti
chn P1.2 (fOSC =12 MHz).
Bi 7: Vit on lnh to chui xung vung c f = 10 KHz ti chn P1.3 (fOSC =24 MHz).
Gio trnh Vi x l.
152
Bit iu khin
Thi gian
Xanh 1
P1.0
25s
Vng 1
P1.1
3s
P1.2
Xanh 2
P1.3
33s
Vng 2
P1.4
3s
P1.5
Gio trnh Vi x l.
153
CHNG 5
HOT NG CA PORT NI TIP
(SERIAL PORT)
I. M U:
My tnh truyn d liu theo hai phng php: truyn d liu song song v truyn d liu ni
tip.
Truyn song song: S dng nhiu dy dn truyn d liu gia cc thit b c khong cch
gn nhau (khong vi mt). Phng php ny cho php truyn d liu vi tc cao nh s dng
nhiu dy dn truyn d liu ng thi nn ti mt thi im c th truyn c nhiu bit thng tin
nhng khong cch truyn th c nhiu hn ch.
Truyn ni tip: S dng mt dy dn truyn d liu (mt dy pht i v mt dy thu v)
gia cc thit b c khong cch xa nhau (khong vi trm mt tr ln). Phng php ny s truyn d
liu vi tc chm hn (so vi phng php truyn song song) v ch s dng mt dy dn truyn
d liu nn ti mt thi im ch c th truyn c mt bit thng tin nhng khong cch truyn th
khng b hn ch nh phng php song song.
Chip 8051 c mt port ni tip (serial port) vi cc tnh nng nh sau:
i lng c trng cho tc truyn d liu nhanh hay chm l tc baud (baud rate) hay
cn gi l tn s hot ng ca port ni tip c th l gi tr c nh hay thay i ty theo yu cu ca
ngi lp trnh. Khi ch tc baud thay i c s dng, b nh thi 1 cung cp xung clock tc
baud v ta phi lp trnh sao cho ph hp. phin bn chip 8031/8052, b nh thi 2 cng c th
c lp trnh cung cp xung clock tc baud.
Gio trnh Vi x l.
154
Gio trnh Vi x l.
155
a ch bit (HEX)
Ky hieu
SM2: Serial Mode 2 Bit 2 chon che o cua port noi tiep.
Bit nay cho phep truyen thong a x ly che o 2 va 3; bit
RI se khong c tch cc neu bit th 9 nhan c la 0.
SM1: Serial Mode 1
Cc ch ca port ni tip:
Gio trnh Vi x l.
156
V d: Khi ng port ni tip ch 1, cho php port thu d liu t chn RxD v sn sng pht d
liu t chn TxD.
Gii
Ta dng lnh:
MOV SCON, #52H
Gii thch:
Gio trnh Vi x l.
ri t
e
157
ng dng: Mt ng dng kh thi ca ch 0 (ch thanh ghi dch bit) l m rng thm cc ng ra
cho chip 8051. Mt vi mch thanh ghi dch ni tip song song c th c ni vi cc chn TxD v
RxD ca chip 8051 cung cp thm 8 ng xut (xem hnh v bn di). Cc thanh ghi dch bit
khc c th ghp cascade vi thanh ghi dch bit u tin m rng thm na.
Gio trnh Vi x l.
158
Data
A1H
W
8 Extra outputs
ri t
e
D7
SBUF 10100001B
RxD
Serial port
D0
Shift Register
Data
DATA
10100001
SHIFT CLOCK
Clock
TxD
D0
START
BIT
(Mc 0)
D1
D2
D3
D4
DATA BIT
D5
D6
D7
PARITY STOP
BIT
BIT
(Mc 1)
Gio trnh Vi x l.
159
rit
e
160
Gio trnh Vi x l.
161
Recei
Trans
Receive
Transmit
Gio trnh Vi x l.
162
STOP
Bit th 9
DATA (8 bit)
V d: Truyn d liu (ch 2, 3 UART 9 bit) cha trong thanh ghi A thng qua port ni tip vi
yu cu truyn 8 bit d liu + 1 bit kim tra chn (bit P).
Chui lnh thc hin:
MOV
C, P
;Chuyn bit kim tra chn (bit P) vo TB8 v
MOV
TB8, C
;bit ny tr thnh bit th 9.
MOV
SBUF, A
;Truyn 8 bit d liu trong A thng qua port.
V d: Truyn d liu (ch 2, 3 UART 9 bit) cha trong thanh ghi A thng qua port ni tip vi
yu cu truyn 8 bit d liu + 1 bit kim tra l (ly b bit P).
Chui lnh thc hin:
MOV
C, P
;Bin i bit kim tra chn (bit P) thnh bit
CPL
C
;kim tra l, chuyn bit kim tra l vo TB8 v
MOV
TB8, C
;bit ny tr thnh bit th 9.
MOV
SBUF, A
;Truyn 8 bit d liu trong A thng qua port.
V d: Truyn d liu (ch 1 UART 8 bit) cha trong thanh ghi A thng qua port ni tip vi yu
cu truyn 7 bit d liu + 1 bit kim tra chn (bit P).
Chui lnh thc hin:
CLR
ACC.7
MOV
C, P
MOV
ACC.7, C
MOV
SBUF, A
Thng qua vic kim tra c ngt TI c th bit c chip 8051 sn sng truyn mt
byte d liu hay cha. Cn ch rng, y c TI c t (TI = 1) khi 8051 hon tt vic truyn
mt byte d liu, cn c xo (TI=0) th phi do ngi lp trnh thc hin bng lnh (CLR TI). Cng
nn nh rng, nu ghi mt byte vo thanh ghi SBUF trc khi c TI c t (TI = 1) th s c nguy
c b mt phn d liu trc do cha kp truyn i. C TI c th c kim tra bng lnh (JNB
TI,) hoc s dng phng php ngt (s c trnh by trong chng tip theo).
Gio trnh Vi x l.
163
Thng qua vic kim tra c ngt RI c th bit c chip 8051 nhn xong mt byte d
liu hay cha. Cn ch rng, y c RI c t (RI = 1) khi 8051 hon tt vic nhn mt byte
d liu, cn c xo (RI=0) th phi do ngi lp trnh thc hin bng lnh (CLR RI). Cng nn nh
rng, nu khng tin hnh ct ni dung ca thanh ghi SBUF vo ni an ton th s c nguy c b mt
d liu va nhn c do d liu tip theo c chuyn vo. C RI c th c kim tra bng lnh
(JNB RI,) hoc s dng phng php ngt (s c trnh by trong chng tip theo).
Lu v on lnh kim tra v thu mt d liu ni tip t thit b bn ngoi vo chip 8051
(cha vo A):
Lu v on lnh kim tra v pht mt d liu ni tip t chip 8051 (cha trong A) ra thit b
bn ngoi:
Gio trnh Vi x l.
164
Baud rate =
f OSC
12
2. Tc baud cho ch 1, 3:
Baud rate =
Baud rate =
3. Tc baud cho ch 2:
Baud rate =
f OSC
32
Baud rate =
f OSC
64
Lu :
o Sau khi h thng reset th bit SMOD = 0 (ch mc nh).
o V thanh ghi PCON khng c nh a ch tng bit, nn tng gp i tc baud
(tc lm cho SMOD=1) ta phi thc hin bng nhng dng lnh sau:
MOV A, PCON
;Ly gi tr t thanh ghi PCON.
SETB ACC.7
;SMOD = 1.
MOV PCON, A
;Chuyn gi tr mi vo PCON.
Gio trnh Vi x l.
165
f
Timer
M=
f
f
= Timer
Timer
12
M:
Baud rate =
f
1
M = Osc
12
Baud rate 16 (hoac 32)
Vy ta c:
f
Osc
M=
, ( SMOD = 1) hoc M =
f
Osc
, ( SMOD = 0)
MHz.
f
Osc
, ( SMOD = 0)
12.10
6
= 26,0416 -26 (lm trn s).
384 1200
Gio trnh Vi x l.
166
hoc
167
Lu :
...(1) = 52H
Mode 3:
...(1) = D2H
Mode 2:
M=
, ( SMOD = 1) hoc M =
f
Osc
, ( SMOD = 0)
Gio trnh Vi x l.
168
f
Osc
384 Baud rate
11,0592 10
6
= 3 (TH1) = -3 hay (TH1) = FDH.
384 9600
Gio trnh Vi x l.
169
11,0592 10
6
= 12 (TH1) = -12 hay (TH1) = F4H.
384 2400
Baud rate = 1200
M=
11,0592 10
6
= 24 (TH1) = -24 hay (TH1) = F8H.
384 1200
Xt trng hp SMOD=1:
Gi M l gi tr cn np cho thanh ghi TH1 c tc baud nh yu cu, ta c:
M=
f
Osc
192 Baud rate
11,0592 10
6
= 3 (TH1) = -3 hay (TH1) = FDH.
19219200
Gio trnh Vi x l.
170
M=
( SMOD = 0)
M=
12.10
6
= 13,02 -13 (lm trn s).
384 2400
hoc
Ba lnh u tin t bit kim tra l vo bit 7 ca thanh ghi A (ACC.7). Do bit P trong thanh ghi
PSW c thit lp kim tra chn cho gi tr trong thanh ghi A, cho nn bit ny phi c ly b
tr thnh bit kim tra l trc khi t vo ACC.7. Lnh JNB to ra mt vng lp ch kim tra c
ngt pht TI cho n khi c ny c set bng 1. Khi TI=1 (do vic pht k t trc va kt thc),
bit ny s c xa v sau k t trong thanh ghi A c ghi vo b m ca port ni tip SBUF v
Gio trnh Vi x l.
171
vic pht k t c bt u ln trn k ca b m to xung clock cho port ni tip. Sau cng bit
ACC.7 s c xa gi tr tr v ging nh khi m 7 bit c chuyn n chng trnh con.
Chng trnh con ny bt u bng vic ch c ngt thu RI c set bng 1 ch ra rng k t
sn sng trong b m thu SBUF ( c c). Khi RI=1, lnh JNB chuyn iu khin n lnh tip
theo sau lnh ny. C RI c xa v m trong SBUF c cha vo thanh ghi A. Do bit P trong thanh
ghi PSW c thit lp kim tra chn cho gi tr trong thanh ghi A. Cho nn bit ny s c set
bng 1 nu ni dung thanh ghi A (tc d liu va thu c) c cha bit kim tra l bit th 7 ca
thanh ghi ny v ngc li th bit ny s c xo bng 0 thng qua lnh CPL. Vic di chuyn bit P vo
trong c nh CY s lm cho CY=0 nu khng c li hoc CY=1 nu c mt li chn l . Sau cng bit
ACC.7 s c xa m bo rng ch c m 7 bit c tr v cho chng trnh gi.
5. V d 5: (Truyn d liu)
Vit chng trnh cho 8051 (fOsc=11,0592MHz) truyn lin tc mt k t A thng qua port ni
tip vi tc 4800 baud (Mode 1).
Gii
Tnh ton: Da vo nhng cng thc hc, ta c:
(SCON) = 52H
Port ni tip (Mode 1)
Timer 1 (Mode 2)
(TMOD) = 20H
(TH1) = -6 vi (SMOD) = 0
Baud rate = 4800 v fOsc=11,0592MHz
Gio trnh Vi x l.
172
6. V d 6: (Truyn d liu)
Vit chng trnh cho 8051 (fOsc=11,0592MHz) truyn lin tc chui k t TTCNDT thng
qua port ni tip vi tc 19200 baud (Mode 1).
Gii
Tnh ton:
Port ni tip (Mode 1)
Timer 1 (Mode 2)
Baud rate = 19200 v fOsc=11,0592MHz
(SCON) = 52H
(TMOD) = 20H
(TH1) = -3 vi (SMOD) = 1
Gio trnh Vi x l.
173
8. V d 8: (Nhn d liu)
Vit chng trnh cho 8051 (fOsc=11,0592MHz) nhn lin tc cc d liu thng qua port ni tip
vi tc 4800 baud (Mode 1) v gi cc d liu nhn c n P1.
Gii
Tnh ton:
Port ni tip (Mode 1)
Timer 1 (Mode 2)
Baud rate = 4800 v fOsc=11,0592MHz
(SCON) = 52H
(TMOD) = 20H
(TH1) = -6 vi (SMOD) = 0
(SCON) = 52H
(TMOD) = 20H
(TH1) = -3 vi (SMOD) = 0
Gio trnh Vi x l.
174
EXIT
OUTDATA
DPTR
NEXT
INDATA
P1, A
A, P2
OUTDATA
EXIT
RI, $
RI
A, SBUF
;(A+DPTR) tr n a vo A.
;Thot nu l k t Null.
;Pht d liu, cu thng bo.
;Tng con tr d liu.
;Lp li qu trnh pht k t k tip.
;Phn pht/thu d liu gia 8051 v PC.
;Thu d liu t PC.
;Chuyn d liu ny n P1.
;Ly d liu t P2.
;Pht d liu ny n PC.
;Lp li chu trnh lm vic.
;Chng trnh con thu d liu.
;Kim tra thu d liu hon tt?
;Xo c RI, chun b cho ln thu tip.
;Thu v ct d liu vo ACC.
READY,0
X. PHN BI TP:
Bi 1: Vit on lnh c mt chui data cha trong RAM ni t a ch 30H n 50H v xut
ra mt thit b (v d nh mn hnh tinh th lng LCD) c ni vi port ni tip ca 8051 (ch
UART 8 bit, 2400 baud). Cho fOSC=11,0592 MHz.
Bi 2: Vit on lnh nhn mt chui data t mt thit b ngoi (v d nh my c m vch)
ni vi 8051 qua port ni tip (ch UART 8 bit, 4800 baud) v ghi data vo RAM ni t a ch
40H. Bit rng chui data gm 20 byte v fOSC=11,0592 MHz.
Bi 3: Vit on lnh ly mt chui data cha trong RAM ngoi bt u t a ch 2000H v
xut ra mt thit b c ni vi port ni tip ca 8051 (ch UART 8 bit, 1200 baud). Chui kt
thc bi k t EOT (c m ASCII l 04H) v k t ny cng c xut ra (fOSC=11,0592 MHz).
Bi 4: Lm li bi 3 nhng khng xut k t EOT.
Bi 5: Vit on lnh nhn mt chui data t mt thit b ngoi ni vi 8051 qua port ni tip
(ch UART 8 bit, 9600 baud) v ghi data vo RAM ngoi bt u t a ch 4000H. Chui data bt
u bng k t STX (02H) v kt thc bng k t ETX (03H). Khng ghi hai k t ny vo RAM.
Cho fOSC=11,0592 MHz.
Bi 6: Vit chng trnh con mang tn XUAT c nhim v ly mt chui data cha trong
RAM ngoi xut ra port ni tip ch UART 9 bit. Bit th 9 l bit parity chn. Chui data kt thc
bng k t NULL (00H). on lnh gi chng trnh con XUAT s t a ch bt u ca chui vo
DPTR trc khi gi chng trnh con XUAT. Gi s port ni tip c khi ng.
Bi 7: Vit chng trnh con mang tn NHAP c nhim v nhp mt chui data gm 30 byte
t port ni tip ch UART 9 bit, bit th 9 l bit parity l. Nu data nhn c khng b li th ghi
Gio trnh Vi x l.
175
vo mt vng nh ca RAM ni, nu b li th khng ghi. on lnh gi chng trnh con NHAP s
t a ch u ca vng nh vo thanh ghi R0 trc khi gi chng trnh con NHAP. Gi s port ni
tip c khi ng.
Gio trnh Vi x l.
176
CHNG 6
HOT NG NGT
(INTERRUPT)
I. M U:
1 CPU CH THC THI C 1 LNH TI MT THI IM.
Ngt (Interrupt) l vic xy ra mt iu kin (mt s kin) lm cho chng trnh ang thc thi
(chng trnh chnh) b tm dng quay sang thc thi mt chng trnh khc (chng trnh x l
ngt) ri sau quay tr v thc thi tip chng trnh ang b tm dng. Cc ngt ng vai tr quan
trng trong vic thit k v hin thc cc ng dng ca b vi iu khin. Cc ngt cho php h thng
p ng mt s kin theo cch khng ng b v x l s kin trong khi mt chng trnh khc ang
thc thi. Mt h thng c iu khin bi ngt cho ta o tng nhiu cng vic ang c vi x l
thc hin ng thi.
CPU d nhin khng th thc thi nhiu hn mt lnh mt thi im nhng CPU c th tm
ngng vic thc thi mt chng trnh thc thi mt chng trnh khc ri sau quay v thc thi
tip tc chng trnh ang b tm ngng, iu ny th tng t nh vic CPU ri khi chng trnh gi
thc thi chng trnh con b gi ri sau quay tr v chng trnh gi.
Cn phi phn bit s ging v khc nhau gia ngt v gi chng trnh con:
Ging nhau:
Khi xy ra iu kin tng ng th CPU s tm dng chng trnh chnh ang thc thi
thc thi mt chng trnh khc (chng trnh con / chng trnh x l ngt) ri sau (sau khi x l
xong chng trnh con / chng trnh x l ngt) th CPU s quay v thc thi tip tc chng trnh
chnh ang b tm dng.
Khc nhau:
Ngt
Thi im xy ra s
kin
Nguyn nhn dn n
s kin
Chng trnh x l ngt (tc l chng trnh m CPU phi thc hin khi c mt ngt xy n)
c gi l trnh phc v ngt ISR (ISR: Interrupt Service Routine) hay trnh qun l ngt (Interrupt
Handler). ISR c thc thi nhm p ng mt ngt v trong trng hp tng qut thc hin vic xut
nhp i vi mt thit b. Khi mt ngt xut hin, vic thc thi chng trnh chnh tm thi b dng li
v CPU thc thi vic r nhnh n trnh phc v ngt ISR. CPU s thc thi ISR thc hin mt cng
vic v kt thc vic thc hin cng vic ny khi gp lnh quay v t trnh phc v ngt (lnh
RETI), sau chng trnh chnh tip tc c thc thi ti ni b tm dng. Ta c th ni chng trnh
Gio trnh Vi x l.
177
chnh c thc thi mc nn (Base level), cn ISR c thc thi mc ngt (Interrupt level).
Biu din vic thc thi chng trnh c ngt v khng c ngt:
Gio trnh Vi x l.
178
Lu :
Khi ta reset h thng th tt c cc ngt u b cm hot ng.
Cc ngun ngt ny c cho php hoc cm hot ng bng lnh do ngi lp trnh thit lp
cho tng ngt.
Vic x l cc ngt c thc hin qua 2 s :
o S u tin ngt c th thay i c v do ngi lp trnh thit lp.
o S chui vng c nh, khng thay i c.
Hai s ny gip CPU gii quyt cc vn lin quan n ngt nh: hai hay nhiu ngt xy ra
ng thi hoc mt ngt xy ra trong khi mt ngt khc ang c thc thi.
Gio trnh Vi x l.
179
Lu :
Mt ngt xy ra th c ngt tng ng s c set bng 1.
Khi ISR ca ngt c thc thi th c ngt tng ng s t ng b xa v 0 bng phn cng
(ngoi tr c ngt RI v TI phi c xa v 0 bng phn mm).
i vi ngt ngoi s c hai cch kch hot to ra mt tn hiu ngt: ngt ngoi kch hot khi
c mc thp v ngt ngoi kch hot khi c cnh m ti chn INT0\ hoc INT1\.
2. Qui nh vic chn loi kch hot cho ngt ngoi:
Vic chn la loi kch hot cho cc ngt ngoi, thuc loi kch hot cnh hay thuc loi kch
hot mc, th c lp trnh thng qua cc bit IT0 v IT1 ca thanh ghi TCON.
IT0 = 0 Ngt ngoi 0 c kch khi bi vic pht hin mc thp ti chn INT0\.
IT0 = 1 Ngt ngoi 0 c kch khi bi vic pht hin cnh m ti chn INT0\.
IT1 = 0 Ngt ngoi 1 c kch khi bi vic pht hin mc thp ti chn INT1\.
IT1 = 1 Ngt ngoi 1 c kch khi bi vic pht hin cnh m ti chn INT1\.
Lu : Khi to tn hiu ngt ti chn INT0\ hoc INT1\ ta cn phi ch n thi gian duy tr
tc ng ca tn hiu ngt.
i vi loi ngt kch hot cnh m (thi gian ti thiu):
8051
INTx
(1)
(0)
x = 0, 1
12
f OSC
Tm Tm
i vi loi ngt kch hot mc thp (thi gian ti a):
8051
INTx
(1)
(0)
(*) (**)
Gio trnh Vi x l.
x = 0, 1
181
Gio trnh Vi x l.
182
ISR c thc thi p ng cng vic ca ngt. Vic thc thi ISR kt thc khi gp lnh RET
(tr v t mt trnh phc v ngt). Lnh ny ly li gi tr c ca b m chng trnh PC t stack v
phc hi trng thi ca ngt c. Vic thc thi chng trnh chnh c tip tc ni b tm ngng.
Gio trnh Vi x l.
183
2. Cc vect ngt:
Khi mt ngt c chp nhn, gi tr c np cho b m chng trnh PC c gi l vect
ngt. Vect ngt l a ch bt u ca chng trnh phc v ngt (ISR) ca ngt tng ng.
Vect reset h thng cng c xem nh l mt ngt: chng trnh chnh b ngt v b m
chng trnh PC c np gi tr mi.
Khi mt trnh phc v ngt c tr n, c gy ra ngt s t ng b xa v 0 bi phn cng.
Cc ngoi l bao gm cc c RI v TI i vi cc ngt do port ni tip, cc nguyn nhn ngt thuc
loi ny do c hai kh nng to ra ngt nn trong thc t CPU khng xa c ngt.
Bng qui nh a ch bt u ca cc ISR (bng vect ngt):
Gio trnh Vi x l.
184
ORG 0030H
;im nhp ca chng trnh chnh.
MAIN:
END
2. Thit k cc chng trnh ISR kch thc nh:
iu kin: Khi ISR c kch thc khng qu 8 byte (k c lnh RETI).
ISR phi c vit trong phm vi im nhp tng ng ca n trong b nh chng trnh (xem
phn t chc b nh khi s dng ngt).
Lu :
Nu ch c mt nguyn nhn ngt c s dng th ISR ca n c th c vit trn
sang im nhp ca cc ISR khc (ngha l ISR c kch thc ln hn 8 byte, nhng phi nh hn 46
byte). V khi vng nh ca cc ISR khc khng c dng n nn ta c th tn dng s dng
cho ISR ny.
Nu c nhiu nguyn nhn ngt c s dng th ta phi cn thn m bo cho cc
ISR c bt u ng v tr m khng trn sang ISR k (ngha l ISR c kch thc khng qu 8 byte).
Gio trnh Vi x l.
185
;ISR ca Timer 0.
RETI
;Kt thc ISR ca Timer 0.
ORG 0013H
;im nhp cho ISR ca ngt ngoi 1.
RETI
;Kt thc ISR ca ngt ngoi 1.
ORG 0030H
;im nhp ca chng trnh chnh.
MAIN:
END
3. Thit k cc chng trnh ISR kch thc ln:
iu kin: Khi ISR c kch thc vt qu 8 byte.
ISR khng th vit vo im nhp tng ng ca n trong b nh chng trnh (v kch thc
im nhp ch c 8 byte) ta phi chuyn ISR ny n mt ni khc trong b nh chng trnh hoc
c th vit ln qua im nhp ca ISR k tip (nu ISR khng s dng).
Khung mu chng trnh: (V d: dng ngt Timer0 v ngt ngoi 1)
ORG 0000H
;im nhp ca reset h thng.
LJMP MAIN
;Lnh nhy vt qua cc ISR.
ORG 000BH
;im nhp cho ISR ca Timer 0.
LJMP T0ISR
;Lnh nhy n ISR ca Timer 0.
ORG 0013H
;im nhp cho ISR ca ngt ngoi 1.
LJMP EX1ISR ;Lnh nhy n ISR ca ngt ngoi 1.
ORG 0030H
;im nhp ca chng trnh chnh.
MAIN:
SJMP $
;Lnh cch ly chng trnh.
T0ISR:
RETI
;Kt thc ISR ca Timer 0.
EX1ISR:
RETI
;Kt thc ISR ca ngt ngoi 1.
END
Gio trnh Vi x l.
186
Gii
ORG
LJMP
ORG
0000H
MAIN
000BH
CPL
RETI
ORG
P1.0
MOV
MOV
SETB
MOV
SJMP
END
TMOD, #02H
TH0, #(-50)
TR0
IE, #82H
$
T0ISR:
0030H
MAIN:
187
50s do chng trnh chnh ang trong vng lp khng lm g. Khi ngt xut hin sau mi 50s,
chng trnh chnh b ngt v ISR cho Timer0 c thc thi. v d trn ISR ny ch n gin ly b
bit ca port v quay tr v chng trnh chnh ni vng lp khng lm g c thc thi ch mt
ngt mi sau mi 50s.
Lu l c trn TF0 khng cn c xa bi phn mm do khi cc ngt c cho php th c
ny t ng c xa bi phn cng khi CPU tr n trnh phc v ngt.
V d 2: Vit chng trnh s dng cc ngt to ng thi cc dng sng vung c tn s 7
KHz v 500 Hz ti cc chn P1.7 v P1.6 (khng quan tm n lch pha ca hai sng ny), fOsc =
12MHz.
Gii
ORG
LJMP
ORG
LJMP
ORG
LJMP
ORG
MAIN:
MOV
MOV
SETB
SETB
MOV
SJMP
T0ISR:
CPL
RETI
T1ISR:
CLR
MOV
MOV
SETB
CPL
RETI
END
0000H
MAIN
000BH
T0ISR
001BH
T1ISR
0030H
Gio trnh Vi x l.
188
Gii
ORG
LJMP
ORG
CPL
RETI
ORG
MAIN:
MOV
MOV
MOV
MOV
SETB
BACK:
MOV
MOV
SJMP
END
0000H
MAIN
000BH
P2.1
0030H
TMOD, #02H
P0, #0FFH
TH0, #(-92)
IE, #82H
TR0
A, P0
P1, A
BACK
Gio trnh Vi x l.
V d 4: Vit chng trnh lin tc nhn d liu 8 bit cng P0 v sau gi d liu ny n
cng P1. Trong thi gian ny cn to ra trn chn P2.1 mt sng vung vi yu cu: thi gian sng
mc cao l 1085s v thi gian sng mc thp l 15s. S dng Timer 1 to sng vung,
fOsc=11,0592MHz.
T
tH
1085s
tL
15s
8051
11,0592MHz
P2.1
T = 200s
P0.0
P1.0
DATA 8 BIT
DATA 8 BIT
P0.7
P1.7
Gii
ORG
LJMP
ORG
LJMP
ORG
MAIN:
MOV
MOV
MOV
MOV
MOV
SETB
BACK:
MOV
MOV
SJMP
T1ISR:
CLR
CLR
MOV
DJNZ
MOV
MOV
SETB
SETB
RETI
END
0000H
MAIN
001BH
T1ISR
0030H
TMOD, #10H
P0, #0FFH
TL1, #18H
TH1, #0FCH
IE, #88H
TR1
A, P0
P1, A
BACK
TR1
P2.1
R2, #4
R2, $
TL1, #18H
TH1, #0FCH
TR1
P2.1
Gio trnh Vi x l.
0000H
MAIN
0023H
SPISR
0030H
MOV
SCON, #42H
MOV
MOV
SETB
MOV
MOV
SJMP
TMOD, #20H
TH1, #(-24)
TR1
A, #20H
IE, #90H
$
CJNE
MOV
A, #7FH, SKIP
A, #20H
MOV
INC
CLR
RETI
END
SBUF, A
A
TI
MAIN:
SPISR:
SKIP:
;Truyn k t ra port ni tip.
;Ly m ca k t k tip.
;Xa c ngt pht.
;Kt thc ISR ca port ni tip.
;Kt thc chng trnh.
191
ch 1 (UART 8 bit c tc baud thay i) v cho TI=1 buc to ra mt ngt trc khi cc ngt
c cho php hot ng. Sau m ASCII u tin (20H) c np cho thanh ghi A v cc ngt do
port ni tip c cho php. Cui cng phn chnh ca chng trnh i vo vng lp khng lm g
(tc l lnh SJMP $).
Trnh phc v ngt ca port ni tip lm tt c cng vic mt khi chng trnh chnh thit lp
cc iu kin ban u. Hai lnh u tin kim tra thanh ghi A v nu m ASCII t n 7FH (ngha l
m va mi c pht i l 7EH) th thanh ghi A s c thit lp li vi ni dung l 20H. Sau m
ASCII c gi n b m ca port ni tip (lnh MOV SBUF,A) c pht i. Thc hin vic
tng gi tr trong thanh ghi A c m k tip, c pht c xa (lnh CLR TI) v trnh phc v ngt
kt thc (lnh RETI). iu khin s tr v chng trnh chnh v lnh SJMP $ c thc thi cho n
khi TI li c set bng 1 cho ln pht d liu k tip.
Nu ta so snh tc ca CPU vi tc truyn d liu, ta nhn thy rng lnh SJMP $ c
thc thi vi phn trm t l thi gian rt ln trong chng trnh ny. Phn trm t l ny l bao nhiu?
tc 1200 baud, mi mt bit c truyn i trong mt khong thi gian l 0,8333ms. Nh vy 8 bit
d liu cng vi 1 bit start, 1 bit stop (mt ln truyn mt d liu gm 10 bit) chim 8,333ms. Thi
gian thc thi t nht ca trnh phc v ngt SPISR l tng ca s chu k cho mi lnh nhn vi
1,085s (tc 1TMachine), thi gian ny tnh c l 8 x 1,085s = 8,68s. Do vy, vi 8333s dng
truyn mt d liu m ch c 8,68s dnh cho trnh phc vu ngt SPISR. Lnh SJMP $ thc thi trong
khong thi gian 8333s - 8,68s = 8324,32s tc l khong 99,9% thi gian. Do vy ngt cn c
s dng c th loi b c khong thi gian khng lm g ny (chim n 99,9% thi gian hot
ng ca chng trnh truyn d liu ny. Mun vy th lnh SJMP $ c th c thay bi cc lnh
khc thc hin nhng cng vic khc theo yu cu ca ng dng. Cc ngt vn xut hin v cc k
t vn c pht t port ni tip sau mi 8,333ms.
V d 2: Vit chng trnh iu khin 8051 c d liu t cng P1 v ghi lin tc ti cng P2.
ng thi a mt bn sao d liu ti port ni tip thc hin vic truyn d liu ni tip. Bit rng
tc truyn l 9600 baud v fOsc = 11,0592MHz
Gii
ORG
LJMP
ORG
LJMP
ORG
MAIN:
MOV
MOV
MOV
MOV
MOV
SETB
BACK:
MOV
MOV
SJMP
SPISR:
CLR
MOV
0000H
MAIN
0023H
SPISR
0030H
P1, #0FFH
SCON, #42H
TMOD, #20H
TH1, #(-3)
IE, #90H
TR1
A, P1
P2, A
BACK
TI
SBUF, A
Gio trnh Vi x l.
V d 3: Vit chng trnh iu khin 8051 c d liu t cng P1 v ghi lin tc ti cng P2.
Trong khi d liu nhn c t port ni tip th c gi n cng P0. Bit rng tc truyn l
9600 baud v fOsc = 11,0592MHz
Gii
ORG
LJMP
ORG
LJMP
ORG
MAIN:
MOV
MOV
MOV
MOV
MOV
SETB
BACK:
MOV
MOV
SJMP
SPISR:
CLR
MOV
MOV
RETI
END
0000H
MAIN
0023H
SPISR
0030H
P1, #0FFH
SCON, #52H
TMOD, #20H
TH1, #(-3)
IE, #90H
TR1
A, P1
P2, A
BACK
RI
A, SBUF
P0, A
V d 4: Vit chng trnh c s dng cc ngt thc hin cc cng vic sau:
Nhn d liu t cng P1, sau th gi d liu ny n port ni tip v cng P2.
0000H
MAIN
000BH
P0.1
0023H
SPISR
0030H
P1, #0FFH
Gio trnh Vi x l.
MOV
MOV
MOV
MOV
MOV
SETB
SETB
BACK:
MOV
MOV
SJMP
SPISR:
JB
SCON, #52H
TMOD, #22H
TH1, #(-6)
TH0, #(-92)
IE, #92H
TR1
TR0
A, P1
P2, A
BACK
;c d liu t P1.
;Xut d liu nhn c ra P2.
;Lp li cc thao tc trn.
TI, TRANS
CLR
MOV
MOV
RETI
TRANS:
CLR
MOV
RETI
END
RI
A, SBUF
P0, A
TI
SBUF, A
Gio trnh Vi x l.
194
ORG
LJMP
ORG
EX0ISR:
CLR
RETI
ORG
EX1ISR:
SETB
RETI
ORG
MAIN:
MOV
SETB
SETB
SETB
JB
CLR
SKIP: SJMP
END
0000H
MAIN
0003H
P1.7
;Tt l.
;Kt thc ISR ca ngt ngoi 0.
;im nhp ISR ngt ngoi 1.
0013H
P1.7
0030H
IE, #85H
IT0
IT1
P1.7
P3.2, SKIP
P1.7
$
;M l.
;Kt thc ISR ca ngt ngoi 1.
;im nhp chng trnh chnh.
;Chng trnh chnh bt u.
;Cho php ngt ngoi 0 v 1.
;Ngt ngoi kch khi cnh m.
iu khin tt/m l ty
;M l.
thuc trng thi nhit
hin ti ca l.
;Nu t > 125OC.
;Tt l.
;Khng lm g (nhy ti ch).
;Kt thc chng trnh.
Gio trnh Vi x l.
195
1s
8051
INT0
Ca ong
Ca m
Cam bien = 0
P1.7
Cam bien =
LOA
440 Hz
P1.7
2,5 ms
7404
Ca ra vao
Gii
ORG
ORG
LJMP
ORG
LJMP
000BH
LJMP
ORG
LJMP
ORG
0000H
MAIN
0003H
EX0ISR
T0ISR
001BH
T1ISR
0030H
MAIN:
SETB
MOV
MOV
SJMP
EX0ISR:
MOV
SETB
SETB
SETB
SETB
RETI
T0ISR:
CLR
DJNZ
CLR
CLR
LJMP
SKIP:
MOV
MOV
SETB
EXIT:
RETI
IT0
TMOD, #11H
IE, #81H
$
R7, #20
TF0
TF1
ET0
ET1
TR0
R7, SKIP
ET0
ET1
EXIT
Gio trnh Vi x l.
Gio trnh Vi x l.
197
V d 3: Ngt ngoi kch khi mc thp - Cho mch in nh hnh v. Chn INT0\ c ni vi
mt cng tc bnh thng mc cao, mi khi chn ny c mc thp (nhn cng tc) th iu khin bt
LED (bnh thng th LED tt). Khi LED c bt th phi sng trong mt khong thi gian (vi
trm s) trc khi tt, khi cng tc c nhn v gi th LED phi sng lin tc.
Gii
ORG
LJMP
ORG
CLR
MOV
DJNZ
SETB
RETI
ORG
MAIN:
CLR
MOV
SJMP
END
0000H
MAIN
0003H
P1.3
R3, #255
R3, $
P1.3
0030H
TCON.0
IE, #81H
$
Gio trnh Vi x l.
198
V d 4: Ngt ngoi kch khi cnh m - Cho mch in nh hnh v. Chn INT0\ c ni vi
mt cng tc bnh thng mc cao, mi khi chn ny c s chuyn trng thi t mc cao xung mc
thp (nhn cng tc) th iu khin bt LED (bnh thng th LED tt). Khi LED c bt th phi
sng trong mt khong thi gian (vi trm s) trc khi tt, khi cng tc c nhn v gi th LED
khng c sng lin tc.
Gii
ORG
LJMP
ORG
CLR
MOV
DJNZ
SETB
RETI
ORG
MAIN:
SETB
MOV
SJMP
END
0000H
MAIN
0003H
P1.3
R3, #255
R3, $
P1.3
0030H
TCON.0
IE, #81H
$
199
Bi 7: Vit on lnh ch nhn data t mt thit b ngoi gi n 8051 qua port ni tip (ch
UART 8 bit, 19200 baud). Nu nhn c k t STX (02H) th bt sng LED, nu nhn c k t
ETX (03H) th tt LED, bit rng LED c iu khin bng ng P1.3 (LED sng khi bit iu khin
bng 1). S dng ngt serial. fOSC=11,059MHz.
Bi 8: Vit on lnh ch nhn 1 xung cnh xung a vo chn /INT0 (P3.2), khi c xung th
nhp data t Port 1 v pht ra port ni tip ch UART 9 bit 4800 baud, bit th 9 l bit parity l.
fOSC=6MHz.
Bi 9: Vit on lnh m s xung a vo chn /INT1 (P3.3) v iu khin relay thng qua
chn P3.0 (relay ng khi P3.0 bng 1), ct s m vo nh 40H ca Ram ni, nu s m cha n
100 th ng relay, nu s m t 100 th ngt relay.
Gio trnh Vi x l.
200