You are on page 1of 53

Mc lc:

Phn I: Tm hiu v b vi iu khin 8051


1.Tng quan v b vi iu khin 8051
1.1Tng quan v 8051
1.2Cu trc bn trong ca 8051
2.Tm hiu cu trc b vi iu khin AT89C51
2.1S chn
2.2Chc nng chn

Phn II: Tm hiu v b Timer v Ngt


1. Tm hiu v ngt trong 8051
1.1Cc ngt trong 8051.
1.2Lp trnh cc ngt b nh thi
1.3Lp trnh cc ngt phn cng bn ngoi
1.4Lp trnh ngt truyn thng ni tip
1.5Cc mc u tin ngt trong 8051
2.Tm hiu v timer trong 8051
2.1B m, b nh thi.
2.2Cc ch ca timer.

Chng III.Bi tp bi vn dng


Bi 1: Vit chng trnh iu khin 16 LED n nhy 4 trng thi khc nhau?
Bi 2: Vit chng trnh iu khin LED nhy lin tc, LED xanh nhy 10 ln
mi khi nhn SW?
Bi 3: Vit chng trnh s dng ngt ngoi m phng bng truyn m sn phm
s dng nt nhn sw thay cho cm bin v hin th ln 6 LED 7 thanh?
Bi 4: Vit chng trnh to mt xung vung c tn s 5KHz s dng timer?
1|Page

Bi 5: Vit chng trnh s dng ngt to 3 xung vung c tn s khc nhau?


Bi 6: Vit chng trnh s dng timer to xung vung c rng xung thay i
t 20% n 80%?
Bi 7: Vit chng trnh qut 5 LED 7 thanh m t 12345 n 45678?
Bi 8: Vit chng trnh qut 8 LED 7 thanh m t 12345678 n 23456789?
Bi 9: Vit chng trnh qut Matrix LED 8x8 hin th ch DAI HOC THANH
DO?
Bi 10: Vit chng trnh qut Matrix LED 8x8 hin th tt c cc ch ci trong
bng ch ci ting Anh?

2|Page

PHN I: TM HIU V B VI IU KHIN 8051(AT89C51)


CHNG I: TNG QUAN V B VI IU KHIN 8051
1.Tng quan v 8051
Cc vi iu khin thuc h 8051 u t chc thnh 2 khng gian chng trnh
v d liu, hnh 1 v hnh 2 s m t iu ny. Kin trc vi x l 8 bit ca 8051
ny cho php truy nhp v tnh ton nhanh hn i vi khng gian d liu nh vic
phn chia 2 khng gian b nh chng trnh v d liu nh trn. Tuy nhin b nh
ngoi c truy nhp bi h thng 16 bit a ch vn c th thc hin nh thanh
ghi con tr.
B nh chng trnh (ROM, EPROM) l b nh ch c, c th m rng ti a
64Kbyte. Vi h vi iu khin 89xx, b nh chng trnh c tch hp sn trong
chip c kch thc nh nht l 4kByte. Vi cc vi iu khin khng tch hp sn
b nh chng trnh trn chip, buc phi thit k b nh chng trnh bn ngoi.
V d s dng EPROM: 2764 (64Kbyte), khi chn PSEN phi mc tch cc
(5V).

3|Page

Hnh 1: Cu trc vi iu khin 8051


B nh d liu (RAM) tn ti c lp so vi b nh chng trnh. H vi iu
khin 8051 c b nh d liu tch hp trn chip nh nht l 128byte v c th m
rng vi b nh d liu ngoi ln ti 64kByte. Vi nhng vi iu khin khng tch
hp ROM trn chip th vn c RAM trn chip l 128byte. Khi s dng RAM
ngoi, CPU c v ghi d liu nh tn hiu trn cc chn RD v WR. Khi s dng
c b nh chng trnh v b nh d liu bn ngoi th buc phi kt hp chn RD
v PSEN bi cng logic AND phn bit tn hiu truy xut d liu trn ROM hay
RAM ngoi.
1.1 B nh chng trnh

Hnh 2: Cu trc b nh chng trnh

4|Page

Hnh 3: a ch cc ngt trn b nh chng trnh

Hnh 2 m t cu trc b nh chng trnh. Sau khi khi ng, CPU bt u thc
hin chng trnh v tr 0000H.
Hnh 3 m t a ch ngt mc nh trn b nh chng trnh. Mi khi xy ra ngt,
con tr ca CPU s nhy n ng a ch ngt tng ng v thc thi chng trnh
ti . V d ngt ngoi 0 s c a ch l 0003H, khi xy ra ngt ngoi 0 th con
tr chng trnh s nhy n ng a ch 0003H thc thi chng trnh ti .
Nu trong chng trnh ng dng khng x dng n ngt ngoi 0 th a ch
0003H vn c th dng cho mc ch khc (s dng cho b nh chng trnh)
1.2 B nh d liu

Hnh 4: Cu trc b nh d liu


Hnh 4 m t cu trc b nh d liu trong v b nh d liu ngoi ca h vi iu
khin 8051. CPU s dng n cc chn RD v WR khi truy cp n b nh d liu
ngoi.
5|Page

Hnh 5 m t cu trc b nh d liu trong chip, c chia thnh 3 khi l 128


byte
thp,
128
byte
cao
v
128
byte
c
bit.

Hinh 5:Cu trc b nh trong


Hnh 6 m t cu trc 128 byte thp ca b nh d liu ca h vi iu khin 8051.
32 byte u tin (00H-1FH) c s dng cho 4 b 8 thanh ghi R0-R7. Hai bit ca
thanh ghi c bit PSW s la chn 1 trong 4 b thanh ghi m vi iu khin s
dng trong khi thc thi chng trnh.

Hnh 6: Cu trc 128 byte thp ca b nh d liu trong


8051 cha 210 v tr bit c nh a ch trong 128 bit cha trong cc byte
a ch t 20H n 2FH (16 byte x 8 bit = 128 bit) v phn cn li cha trong cc
thanh ghi c bit. Ngoi ra 8051 cn c cc port xut/nhp c th nh a ch
6|Page

tng bit, iu ny lm n gin vic giao tip bng phn mm vi cc thit b


xut/nhp n bit.
Vng RAM a mc ch c 80 byte t a ch t 30H n 7FH, bn di
vng ny t a ch 00H n 2FH l vng nh c th c s dng tng t. Bt
k v tr nh no trong vng RAM a mc ch u c th c truy xut t do
bng cch s dng cc kiu nh a ch trc tip hoc gin tip.
Bt k v tr nh no trong vng RAM a mc ch u c th c truy xut t
do bng cch s dng cc kiu nh a ch trc tip hoc gin tip.
Cng nh cc thanh ghi t R0 n R7, ta c 21 thanh ghi chc nng c bit
SFR chim phn trn ca Ram ni t a ch 80H n FFH. Cn lu l khng
phi tt c 128 a ch t 80H n FFH u c nh ngha m ch c 21 a ch
c nh ngha.

Hnh 7: Cu trc 128 byte cao ca b nh d liu

7|Page

2. Cu trc bn trong 8051


2.1.Cc thanh ghi
Trong b vi iu khin cc thanh ghi c dng lu ct thng tin tm thi,
nhng thng tin ny c th l mt byte d liu cn c s l hoc l mt a ch
n d liu cn c np.
Phn ln cc thanh ghi ca 8051 l cc thanh ghi 8 bit. Trong 8051 ch c mt
kiu d liu: Loi 8 bit, 8 bit ca mt thanh ghi c trnh by nh sau :
D7 D6 D5 D4 D3 D2 D1 D0
Vi MBS (Most Sigfican bit) l bit c gi tr cao nht D7 cho n LBS (Leart
Significant bit) l bit c gi tr thp nht D0. Vi mt kiu d liu 8 bit th bt k
d liu no ln hn 8 bit u phi c chia thnh cc khc 8 bit trc khi c
x l.

Thanh ghi 8 bit ca 8051

Thanh ghi 16 bit ca 8051


8|Page

Cc thanh ghi c s dng rng ri nht ca 8051 l A (thanh ghi tch ly), B,
R0 R7, DPTR (con tr d liu) v PC (b m chng trnh). Tt c cc d liu
trn u l thanh ghi 8 bit, tr DPTR v PC l 16 bit.
Thanh ghi tch ly A c s dng cho tt c mi php ton s hc v logic.
2.2 Cc thanh ghi c bit.
8051 c 21 thanh ghi chc nng c bit SFR chim phn trn ca RAM ni t
a ch 80H n FFH. Cn lu l khng phi tt c 128 a ch t 80H n FFH
u c nh ngha m ch c 21 a ch c nh ngha. Hnh 8 m t cc thanh
ghi c bit trong vng nh d liu 80H n FFH v gi tr ca chng sau khi
Reset.

9|Page

Hnh 8: Cc thanh ghi c bit

Thanh ghi chnh:

Thanh ghi tnh ton chnh ca vi iu khin 8051 ACC (Accumulator). L thanh
ghi c bit ca 8051 dng thc hin cc php ton ca CPU
thng k hiu l A
10 | P a g e

Thanh ghi ph:


Thanh ghi tnh ton ph ca vi iu khin 8051 l B. Thanh ghi B a ch F0H
c dng chung vi thanh cha A trong cc php ton nhn, chia. Lnh MUL
AB nhn 2 s 8 bit khng du cha trong A v B v cha kt qu 16 bit vo cp
thanh ghi B, A (thanh cha A ct byte thp v thanh ghi B ct byte cao).

Lnh chia DIV AB chia A bi B, thng s ct trong thanh cha A v d s ct


trong thanh ghi B. Thanh ghi B cn c x l nh mt thanh ghi nhp. Cc bit
c nh a ch ca thanh ghi B c a ch t F0H n F7H.

Thanh ghi trng thi chng trnh (PSW):


Thanh ghi trng thi chng trnh PSW (a ch: D0H) l thanh ghi m t ton b
trng thi chng trnh ang hot ng ca h thng. Hai bng sau s m t thanh
ghi ny.
7

CY

AC

F0

RS1

RS0

OV

Thanh ghi trng thi chng trnh PSW

11 | P a g e

a
Ch

M t Bit

D7H

C nh (Carry Flag): c Set nu c Bit


nh t Bit 7 trong php cng hoc c Bit
mn cho Bit 7 trong php tr.

PSW.6 AC

D6H

C nh ph: c Set trong php cng nu


c Bit nh t Bit 3 sang Bit 4 hoc kt qu
trong 4 Bit thp nm trong khong 0AH>0FH.

PSW.5 FO

D5H

C O: dnh cho ngi s dng.

PSW.4 RS1

D4H

Chn dy thanh ghi (Bit 1)

Bit

K
Hiu

PSW.7 CY

Chn dy thanh ghi (Bit 0)


00=Bank 0: a ch 00H->07H
PSW.3 RS0

D3H

01=Bank 1: a ch 08H->0FH
10=Bank 2: a ch 10H->17H
11=Bank 3: a ch 18H->1FH

PSW.2 OV

D2H

C trn (Overflow Flag): c Set khi php


ton c du c kt qu > +127 hoc < -128.

PSW.1 -

D1H

Cha dng

D0H

C kim tra chn l: c Set hoc Clear


bi phn cng sau mi 1 chu k lnh, ch
ra rng c 1 s chn hoc s l Bit 1 trong
thanh cha.

PSW.0 P

Chi tit cc bit trong thanh ghi PSW

12 | P a g e

Thanh ghi ngn xp (Stack Pointer):


Con tr stack SP (stack pointer) l 1 thanh ghi 8 bit a ch 81H. SP cha a ch
ca d liu hin ang nh ca stack. Cc lnh lin quan n satck bao gm lnh
ct d liu vo stack v lnh ly d liu ra khi stack. Vic ct vo stack lm tng
SP trc khi ghi d liu v vic ly d liu ra khi stack s gim SP. Vng stack
ca 8051 c gi trong RAM ni v c gii hn n cc a ch truy xut
c bi kiu nh a ch gin tip. Cc lnh PUSH v POP s ct d liu vo
stack v ly d liu t stack, cc lnh gi chng trnh con (ACALL, LCALL) v
lnh tr v (RET, RETI) cng ct v phc hi ni dung ca b m chng trnh
PC (Program counter)

Con tr d liu DPTR:


Con tr d liu DPTR (data pointer) c dng truy xut b nh chng trnh
ngoi hoc b nh d liu ngoi. DPTR l mt thanh ghi 16 bit c a ch l 82H
(DPL, byte thp) v 83H (DPH, byte cao).

Thanh ghi cc cng P0-P3:


Cc port xut/nhp ca 8051 bao gm Port 0 ti a ch 80H, Port 1 ti a ch
90H, Port 2 ti a ch A0H v Port 3 ti a ch B0H. Tt c cc port u c
nh a ch tng bit nhm cung cp cc kh nng giao tip mnh.

Thanh ghi b m truyn thng ni tip (Serial Data Buffer):


B m truyn thng c chia thnh hai b m, b m truyn d liu v b
m nhn d liu. Khi d liu c chuyn vo thanh ghi SBUF, d liu s c
chuyn vo b m truyn d liu v s c lu gi cho n khi qu trnh
truyn d liu qua truyn thng ni tip kt thc. Khi thc hin vic chuyn d liu
t SBUF ra ngoi, d liu s c ly t b m nhn d liu ca truyn thng ni
tip.

13 | P a g e

Thanh ghi ca b nh thi/b m:


8051 c 2 b m/nh thi (counter/timer) 16 bit nh cc khong thi gian
hoc m cc s kin. Cc cp thanh ghi (TH0, TL0) v (TH1, TL1) l cc
thanh ghi ca b m thi gian. B nh thi 0 c a ch 8AH (TL0, byte thp) v
8CH (TH0, byte cao). B nh thi 1 c a ch 8BH (TL1, byte thp) v 8DH
(TH1, byte cao).
Hot ng ca b nh thi c thit lp bi thanh ghi ch nh thi TMOD
(Timer Mode Register) a ch 88H. Ch c TCON c nh a ch tng bit.

Cc thanh ghi iu khin:Cc thanh ghi iu khin c bit nh IP, IE, TMOD,
TCON, SCON v PCON l cc thanh ghi iu khin v ghi nhn trng thi ca h
thng ngt, b m/nh thi, truyn thng ni tip.

14 | P a g e

CHNG II: TM HIU CU TRC VI IU KHIN AT89C51

1.S CHN.

Hnh 1: S b tr chn ca AT89C51

15 | P a g e

Hnh 1: Ta thy rng trong 40 chn th c 32 chn dnh cho cc cng P0, P1, P2
v P3 vi mi cng c 8 chn. Cc chn cn li c dnh cho ngun VCC, t
GND, cc chn dao ng XTAL1 v XTAL2, chn Reset RST, chn cho php cht
a ch ALE, chn truy cp a ch ngoi EA, cho php ct chng trnh PSEN.
Trong 8 chn ny th 6 chn VCC , GND, XTAL1, XTAL2, RST v EA c cc
h 8051 s dng. Hay ni cch khc l chng phi c ni cho h thng lm
vic. Cn hai chn khc l PSEN v ALE c s dng ch yu trong cc h 8031.
Chn VCC:
Chn s 40 l VCC , c chc nng cp in p ngun cho chp. Ngun in p l
+5V.
Chn GND
Chn s 20 l GND, c ni vi t.
Chn XTAL1 v XTAL2
8051 c mt b dao ng trn chp nhng n yu cu c mt xung ng h ngoi
chy n. Mt b dao ng thch anh s c ni ti cc chn u vo XTAL1
(chn 19) v XTAL2 (chn 18). B dao ng thch anh c ni ti XTAL1 v
XTAL2 cng cn hai t gm gi tr khong 30pF. Mt pha ca t in c ni
xung t nh c trnh by trn hnh 2a.
Cn phi lu rng c nhiu tc khc nhau ca h 8051. Tc c coi nh
l tn s cc i ca b dao ng c ni ti chn XTAL. Mt b vi iu khin
8051 yu cu mt tinh th thch anh c tn s khng ln hn 20MHz. Khi 8051
c ni ti mt b dao ng tinh th thch anh v cp ngun th ta c th quan st
tn s trn chn XTAL2 bng my hin sng. Nu ta quyt nh s dng mt
ngun tn s khc b dao ng thch anh, chng hn nh l b dao ng TTL th
n s c ni ti chn XTAL1, cn chn XTAL2 th h khng ni nh hnh
2b.

16 | P a g e

Chn RST
RST l chn s 9 - Reset. N l mt chn u vo c mc tch cc cao (bnh
thng mc thp). Khi cp xung cao ti chn ny th b vi iu khin s c
Reset v kt thc mi hot ng. iu ny thng c coi nh l s ti bt
ngun. Khi kch hot ti bt ngun s lm mt mi gi tr trn cc thanh ghi. Hnh
3 lit k cc thanh ghi c bit ca 8051 v gi tr ca chng sau khi Reset.

Lu rng gi tr ca b m chng trnh PC l 0 khi ti lp p CPU np m


lnh u tin t b nh ROM ti v tr ngn nh 0000. iu ny c ngha l ta phi
t dng u tin ca m ngun ti v tr ngn nh 0 ca ROM v y l m m sau
khi CPU thc tnh s tm lnh u tin. Hnh 4 trnh by cch ni chn RST vi
mch Reset.

Hnh 3: Mch Reset


17 | P a g e

Nhm lm cho u vo Reset c hiu qu th xung cp cho n phi ko di ti


thiu 2 chu k my trc khi n xung thp.
Trong 8051: 1 chu k my c tnh bng 12 chu k dao ng.
Chn EA
EA c ngha l truy cp ngoi (External Access): l chn s 31 trn v kiu DIP.
N l mt chn u vo v phi c ni hoc vi Vcc hoc GND. Hay ni cch
khc l n khng c h.
Cc thnh vin h 8051 nh 8751, 98C51 hoc DS5000 u c ROM trn chp lu
ct chng trnh. Trong cc trng hp nh vy th chn EA c ni ti Vcc. i
vi cc thnh vin ca h nh 8031 v 8032 m khng c ROM trn chp th m
chng trnh c lu ct trn b nh ROM ngoi v chng c np cho
8031/32. Do vy, i vi 8031 th chn EA phi c ni t bo rng m
chng trnh c ct ngoi.
Cc chn m t trn u phi c ni m khng cn thnh phn no c s
dng. Cn hai chn di y c s dng ch yu trong h thng vi iu khin
8031.
Chn PSEN
PSEN l chn u ra cho php ct chng trnh (Program Store Enable) trong h
thng. Trn vi iu khin 8031, chng trnh c ct b nh ROM ngoi th
chn ny c ni ti chn OE ca ROM.
Chn ALE
Chn cho php cht a ch ALE l chn u ra tch cc cao. Khi ni 8031 ti b
nh ngoi th cng P0 dng trao i c a ch v d liu. Hay ni cch khc
8031 dn c a ch v d liu qua cng P0 tit kim s chn. Chn ALE c
s dng phn knh a ch v d liu.
Cc chn cng vo/ra v cc chc nng ca chng

18 | P a g e

Bn cng P0, P1, P2 v P3 u s dng 8 chn v to thnh cng 8 bt. Tt c cc


cng khi Reset u c cu hnh nh cc u ra, sn sng c s dng nh
cc cng u ra. Mun s dng cng no trong s cc cng ny lm u vo th n
phi c lp trnh.
Cng P0
Cng P0 chim tt c 8 chn (t chn 32 n 39). N c th c dng nh cng
u ra, s dng cc chn ca cng P0 va lm u ra, va lm u vo th mi
chn phi c ni ti mt in tr ko bn ngoi 10kW. iu ny l do mt thc
t l cng P0 l mt mng m khc vi cc cng P1, P2 v P3. Khi nim mng
m c s dng trong cc chp MOS v chng mc no n ging nh
collector h i vi cc chp TTL.
Trong bt k h thng no s dng 8751, 89C51 hoc DS5000 ta thng ni cng
P0 ti cc in tr ko (Xem hnh 5), bng cch ny ta c th s dng c cng
P0 cho c 2 trng hp u ra v u vo. Vi nhng in tr ko ngoi c ni,
khi Reset cng P0 c cu hnh nh mt cng u ra.

Hnh 4: Cng P0 vi cc in tr ko

Cng P0 l u vo: Vi cc in tr c ni ti cng P0 nhm to n thnh


cng u vo th n phi c lp trnh bng cch ghi 1 ti tt c cc bit ca P0.
19 | P a g e

Vai tr kp ca cng P0: Nh trn hnh 1, cng P0 c gn l cc bit a ch AD0


- AD7 cho php n c s dng va cho a ch, va cho d liu. Khi ni
8051/31 ti b nh ngoi th cng P0 cung cp c a ch v d liu, 8051 dn d
liu v a ch qua cng P0 tit kim s chn. ALE c s dng tch a ch
v d liu vi s tr gip ca IC cht d liu 74LS373.
Cng P1
Cng P1 cng chim tt c 8 chn (t chn 1 n chn 8) n c th c s dng
nh u vo hoc u ra. So vi cng P0 th cng ny khng cn n in tr ko
v n c cc in tr ko bn trong. Trong qu trnh Reset th cng P1 c cu
hnh nh mt cng u ra.
Cng P1 l u vo: Tng t P0, bin cng P1 thnh u vo th n phi c
lp trnh bng cch ghi 1 n tt c cc bit ca n.
Cng P2
Cng P2 cng chim 8 chn (cc chn t 21 n 28). N c th c s dng nh
u vo hoc u ra, ging nh cng P1, cng P2 cng khng cn in tr ko v
n c cc in tr ko bn trong. Khi Reset, th cng P2 c cu hnh nh mt
cng u ra.
Cng P2 l u vo: to cng P2 nh u vo th n phi c lp trnh bng
cch ghi cc s 1 ti tt c cc chn ca n.
Vai tr kp ca P2: Trong cc h thng 8751, 89C51 v DS5000 th P2 c dng
nh u ra. Tuy nhin trong h thng 80312 th cng P2 c th c dng cng vi
P0 to ra a ch 16 bit i vi b nh ngoi. Nh ch ra trn hnh 1 cng P2
cng c ch nh nh l cc bit a ch A8 - A15 bo chc nng kp ca n. V
mt b 8031 c kh nng truy cp 64k byte b nh ngoi, nn n cn mt ng
a ch 16 bt. Trong khi P0 cung cp 8 bit thp qua A0 - A7. Cng vic ca P2 l
cung cp cc bt a ch A8 - A15. Hay ni cch khc khi 8031 c ni ti b nh
ngoi th P2 c dng cho 8 bt cao ca a ch 16 bit v n khng th dng cho
vo/ra.

20 | P a g e

T nhng trnh by trn y ta c th kt lun rng trong cc h thng vi iu


khin 8751, 89C51 hoc DS5000 th ta c cc cng P0, P1, P2 v P3 cho cc thao
tc vo ra v nh th l c th cho cc ng dng vi hu ht cc b vi iu
khin. Ngoi ra cng P3 cn dnh cho cc chc nng c bit khc m ta s
cng bn di y.
Cng P3
Cng P3 chim tng cng l 8 chn t chn 10 n chn 17. N c th c s
dng nh u vo hoc u ra. Cng P3 khng cn cc in tr ko cng nh P1
v P2. Mc d cng P3 c cu hnh nh mt cng u ra khi Reset, nhng y
khng phi l cch n c s dng ph bin nht.
Cng P3 c b sung cc chc nng quan trng, c bit.
Bng 2 cung cp cc chc nng khc ca cng P3. Thng tin ny p dng cho c
8051 v 8031:
Bt ca cng P3

Chc nng

Chn s

P3.0

Nhn d liu (RXD)

10

P3.1

Pht d liu (TXD)

11

P3.2

Ngt 0(INT0)

12

P3.3

Ngt 1(INT1)

13

P3.4

B nh thi 0 (TO)

14

P3.5

B nh thi 1 (T1)

15

P3.6

Ghi (WR)

16

P3.7

c (RD)

17

Bng 2: Cc chc nng khc ca cng P3

21 | P a g e

Cc bit P3.0 v P3.1 cung cp tn hiu nhn v pht d liu trong truyn thng d
liu ni tip.
Cc bit P3.2 v P3.3 c dnh cho cc ngt ngoi.
Bit P3.4 v P3.5 c dng cho cc b nh thi 0 v 1.
Cui cng cc bit P3.6 v P3.7 ghi v c cc b nh ngoi khi c ni ti cc
h thng 8031.

22 | P a g e

PHN II: TM HIU V NGT V TIMER TRONG 8051


CHNG I: TM HIU V NGT TRONG 8051.
1.Tm hiu v ngt trong 8051
Ngt (Interrupt) - l mt s s kin khn cp bn trong hoc bn ngoi b
vi iu khin xy ra, buc vi iu khin tm dng thc hin chng trnh hin ti,
phc v ngay lp tc nhim v m ngt yu cu nhim v ny gi l trnh phc
v ngt (ISR: Interrupt Service Routine).
1.1 Cc ngt ca 8051
1.1.1 Phn bit c ch ngt vi thm d
Mt b vi iu khin c th phc v cho nhiu thit b, c 2 cch thc hin
iu ny l s dng cc ngt (Interrupts) v thm d (polling):
* Trong phng php s dng ngt: mi khi c mt thit b bt k cn c
phc v th n bo cho b vi iu khin bng cch gi mt tn hiu ngt. Khi nhn
c tn hiu ngt th b vi iu khin ngng tt c nhng g n ang thc hin
chuyn sang phc v thit b gi ngt. Chng trnh ngt c gi l trnh phc v
ngt ISR(Interrupt Service Routine) hay cn gi l trnh qun l ngt (Interrupt
handler). Sau khi phc v ngt xong, b vi x l li quay tr li im b ngt trc
v tip tc thc hin cng vic.
* Trong phng php thm d: b vi iu khin kim tra lin tc tnh trng ca
tt c cc thit b, nu thit b no c yu cu th n dng li phc v thit b .
Sau n tip tc kim tra tnh trng ca thit b k tip cho n ht. Phng php
thm d rt n gin, nhng n li rt lng ph thi gian kim tra cc thit b k
c khi thit b khng cn phc v. Trong trng hp c qu nhiu thit b th
phng n thm d t ra khng hiu qu, gy ra chm tr cho cc thit b cn phc
v.
** im mnh ca phng php ngt l:
+ B vi iu khin c th phc v c rt nhiu thit b (tt nhin l khng ti
cng mt thi im). Mi thit b c th nhn c s ch ca b vi iu khin
da trn mc u tin c gn cho n. i vi phng php thm d th khng
th gn mc u tin cho cc thit b v n kim tra tt c mi thit b theo kiu hi
vng.
23 | P a g e

Quan trng hn, trong phng php ngt th b vi iu khin cn c th che (lm
l) mt yu cu phc v ca thit b. iu ny li mt ln na khng th thc hin
c trong phng php thm d.
+ L do quan trng nht m phng php ngt c u chung l v n khng
lng ph thi gian cho cc thit b khng cn phc v. Cn phng php thm d
lm lng ph thi gian ca b vi iu khin bng cch hi d tng thit b k c khi
chng khng cn phc v.
1.1.2 Su ngt trong 8051
Thc t ch c 5 ngt dnh cho ngi dng trong 8051 nhng cc nh sn
xut ni rng c 6 ngt v h tnh c lnh RESET. Su ngt ca 8051 c phn b
nh sau:
1. RESET: Khi chn RESET c kch hot t 8051, b m chng trnh
nhy v a ch 0000H. y l a ch bt li ngun
2. 2 ngt dnh cho cc b nh thi: mt cho Timer0 v mt cho Timer1. a
ch tng ng ca cc ngt ny l 000BH v 001BH.
3. 2 ngt dnh cho cc ngt phn cng bn ngoi: chn 12 (P3.2) v 13
(P3.3) ca cng P3 l cc ngt phn cng bn ngoi INT0 v INT1 tng ng. a
ch tng ng ca cc ngt ngoi ny l 0003H v 0013H.
4. Truyn thng ni tip: c 1 ngt chhung cho c nhn v truyn d liu ni
tip. a ch ca ngt ny trong bng vector ngt l 0023H.
1.2. Lp trnh cc ngt b nh thi
Trong phn ny ta s s dng cc ngt lp trnh cho cc b nh thi
ca 8051.
C quay v 0 ca b nh thi v ngt
Chng ta bit rng c b nh thi TF c bt ln cao khi b nh thi t
gi tr cc i v quay v 0 (Roll - over). Trong khi thm d c TF th ta phi i
cho n khi c TFc bt ln. Vn vi phng php ny l b vi iu khin b
tri buc trong khi ch c TF c bt v khng th lm c bt k vic g khc.
S dng cc ngt s gii quyt c vn ny v trnh c s tri buc b
vi iu khin. Nu b ngt nh thi trong thanh ghi IE c php th mi khi n
quay tr v 0 b vi iu khin s b ngt, bt chp n ang thc hin vic g v
24 | P a g e

nhy ti bng vector ngt phc v ISR. Bng cch ny th b vi iu khin c


th lm nhng cng vic khc cho n khi n c thng bo rng b nh thi
quay v 0.
1.3 Lp trnh cc ngt phn cng bn ngoi
B vi iu khin 8051 c 2 ngt phn cng bn ngoi chn 12 (P3.2) v
chn 13 (P3.3) gi l ngt INT0 v INT1.
Nh ni trn th chng c php v b cm bng vic s dng thanh
ghi IE. Nhng cu hnh cho ngt ngoi c phn phc tp hn.C hai mc kch hot
cho cc ngt phn cng ngoi: Ngt theo mc v ngt theo sn.

Hnh 1: Ngt ngoi INT0 v INT1


Di y l m t hot ng ca cc mc.

1.3.1 Ngt theo mc


ch ngt theo mc th cc chn INT0 v INT1 bnh thng mc
cao v nu mt tn hiu mc thp c cp ti th chng ghi nhn ngt. Sau
b vi iu khin dng tt c mi cng vic n ang thc hin v nhy n bng
vector ngt phc v ngt. y l ch ngt mc nh khi cp ngun cho 8051.
Tn hiu mc thp ti chn INTx phi c ly i trc khi thc hin
lnh cui cng ca trnh phc v ngt, nu khng mt ngt khc s li c
to ra, v vi iu khin s thc hin ngt lin tc.

25 | P a g e

1.3.2:Ngt theo sn
Ngt theo sn l ngt s xy ra khi c mt sn m xut hin trn cc
chn ngt ca vi iu khin. iu ny lm cho ngt theo sn khc phc c
nhc im ca ngt theo mc nh ta thy trn.
kch hot ch ngt theo sn th chng ta phi vit chng trnh ci
t cho cc bit ca thanh ghi TCON:

Hnh 2: Thanh ghi TCON.


Cc Bit IT0 v IT1
Cc bit TCON.0 v TCON.2 c coi nh l cc bit IT0 v IT1 tng ng.
y l cc bit xc nh kiu ngt theo sn xung hay theo mc xung ca cc ngt
phn cng trn chn INT0 v INT1 tng ng. Khi bt li ngun c 2 bit ny u
c mc 0 bin chng thnh ngt theo tn hiu mc thp. Lp trnh vin c th
iu khin mt trong s chng ln cao chuyn ngt phn cng bn ngoi
thnh ngt theo sn.

Cc Bit IE0 v IE1


Cc bit TCON.1 v TCON.3 cn c gi l IE0 v IE1 tng ng. Cc bit ny
c 8051 dng bm kiu ngt theo sn xung, nu cc
bit IT0 v IT1 bng 0 th c ngha l cc ngt phn cng l ngt theo mc thp v
cc bit IE0 v IE1 s khng dng n. Cc Bit IE0 v IE1 ch c 8051 dng
cht sn xung t cao xung thp trn cc chn INT0 v INT1. Khi c chuyn
dch sn xung trn chn INT0 (hay INT1) th 8051 nh du (bt ln cao) cc
bit IEx trn thanh ghi TCON v nhy n bng vector ngt v bt u thc hin
trnh phc v ngt ISR. Trong khi 8051 thc hin ISR th khng c mt sn xung
no c ghi nhn trn chn INT0 (hay INT1) ngn mi ngt trong ngt. Ch
trong khi thc hin lnh cui ca trnh phc v ngt ISR th cc bit IEx mi c
8051 t ng xa, v cc chn ngt li hot ng bnh thng.
26 | P a g e

Ta thy rng cc bit IE0 v IE1 c 8051 s dng bn trong bo c


mt ngt ang c x l hay khng..
Cc Bit TR0 v TR1
y l nhng bit D4 v D6 (hay TCON.4 v TCON.6) ca thanh ghi TCON. Cc
bit ny c gii thiu cc bi trc, chng c dng khi ng v dng
cc b nh thi Timer0 v Timer1 tng ng.
Cc Bit TF0 v TF1
Cc bit ny l D5 (TCON.5) v D7 (TCON.7) ca thanh ghi TCON m c
gii thiu cc bi trc. Chng c s dng bi cc b Timer0 v Timer1
tng ng bo rng cc b nh thi b trn hay quay v khng.
hiu r s khc bit ca ngt theo sn m, ta xt v d 5. Ch rng s
khc nhau duy nht gia v d 5 v v d 4 l lnh chuyn ngt INT1 v
kiu ngt theo sn. Khi sn m ca tn hiu c cp n chn INT1 th n
LED s bt ln mt lc. n LED c thi gian sng ph thuc vo tr bn
trong ISR ca INT1. Trong v d 4 do bn cht ngt theo mc ca ngt th n
LED cn sng chng no tn hiu chn INT1vn cn mc thp. Nhng
trong v d 5 ny bt li n LED th xung chn INT1phi c a ln cao
ri sau b h xung thp to ra mt sn m lm kch hot ngt.

1.4 Lp trnh ngt truyn thng ni tip


1.4.1 Cc c RI v TI v cc ngt
C ngt truyn TI (Transfer interrupt) c bt ln khi bit cui cng ca khung
d liu - bit stop c truyn i, bo rng thanh ghi SBUF sn sng truyn byte k
tip. Trong trng hp c RI (Receive Interrupt) th n c bt ln khi ton b
khung d liu k c bit stop c nhn.
Chng no cn ni v truyn thng ni tip th tt c mi khi nim trn y u
p dng ging nh nhau cho d s dng phng php thm d hay s dng
phng php ngt. S khc nhau duy nht gia hai phng php ny l cch
phc v qu trnh truyn thng ni tip nh th no:
27 | P a g e

Trong phng php thm d th chng ta phi i cho c (TI hay RI) bt ln v
trong lc ch i th ta khng th lm g c c.
Cn trong phng php ngt th ta c bo khi 8051 nhn c mt byte
hoc n sn sng truyn byte k tip v ta c th lm cc cng vic khc trong khi
ch truyn thng ni tip c thc hin.
Trong 8051 ch c mt ngt dnh ring cho truyn thng ni tip. Ngt ny
c dng cho c truyn v nhn d liu. Nu bit ngt truyn thng ES IE.4 trong thanh ghi IE c php, th khi 1 trong 2 c RI hoc TI bt ln, 8051
s nhn c ngt v nhy n a ch trnh phc v ngt dnh cho truyn thng
ni tip 0023H trong bng vector ngt thc hin n. Trong trnh ISR ny chng
ta phi kim tra cc c TI v RI xem c no gy ra ngt p ng mt cch
ph hp .

Hnh 3: Ngt truyn thng c th do hai c TI v RI gi.

1.4.2 S dng cng COM ni tip trong 8051


Trong cc ng dng, ngt ni tip ch yu c s dng nhn d
liu v khng bao gi c s dng truyn d liu ni tip. iu ny ging
nh vic bo chung ta bit v nhn in thoi v ta khng th bit trc c
lc no c in thoi, cn nu mun gi in thoi th ta
khng cn chung bo trc
1.4.3 Xo c RI v TI trc khi thot khi ngt truyn thng ni tip
rng lnh cui cng trc khi tr v t ISR l lnh xo cc
c RI v TI. iu ny tng phn vi ngt ngoi v ngt b nh thi l u
c 8051 xo cc c.
28 | P a g e

1.5. Cc mc u tin ngt trong 8051


1.5.1 Cc mc u tin trong qu trnh bt li ngun
Khi 8051 c cp ngun th cc mc u tin ngt c gn theo Hnh 4.
T hnh ny ta thy v d nu cc ngt phn cng ngoi 0 v 1 c kch hot cng
mt lc th ngt ngoi 0 s c p ng trc. Ch sau khi ngt INT0 c
phc v xong th INT1 mi c phc v v INT1 c mc u tin thp hn. Trong
thc t s mc u tin ngt trong bng ch l mt quy trnh thm d, trong
8051 thm d cc ngt theo trnh t cho trong hnh 16 v p ng chng mt cch
ph hp.

Hnh 4: Mc u tin cc ngt trong khi cp li ngun.

Hnh 5: Thanh ghi mc u tin ngt IP: Bit u tin = 1 l mc u tin cao, Bit u
tin = 0 l mc u tin thp.
-

Bit D7 v D6 -- cha dng.


Bit D5 hay PT2 l Bit u tin ngt Timer2 (dng cho 8052)
Bit D4 hay PS l Bit u tin ngt cng ni tip
Bit D3 hay PT1 l Bit u tin ngt Timer1
Bit D2 hay PX1 l mc u tin ngt ngoi 1
29 | P a g e

Bit D1 hay PT0 l mc u tin ngt Timer 0


Bit D0 hay PX0 l mc u tin ngt ngoi 0

1.5.2 Thit lp mc u tin ngt vi thanh ghi IP


Chng ta c th thay i trnh t trong hnh 16 bng cch gn mc u tin
cao hn cho bt k ngt no. iu ny c thc hin bng cch lp trnh mt
thanh ghi gi l thanh ghi mc u tin ngt IP (Interrupt Priority). Trn hnh
17 l cc bit ca thanh ghi ny. Khi bt li ngun thanh thi IP cha hon ton cc
s 0 to ra trnh t u tin ngt theo Hnh 16. mt ngt no c mc u
tin cao hn ta thc hin a bit tng ng ln cao.
Mt im khc na cn c lm sng t l mc u tin ngt khi 2 hoc
nhiu bit ngt trong thanh ghi IP c t ln cao: Trong trng hp ny th
trong khi cc ngt ny c mc u tin cao hn cc ngt khc, chng s c phc
v theo trnh t cho trong Hnh 16.
1.5.3 Ngt trong ngt
iu g xy ra nu 8051 ang thc hin mt trnh phc v ngt thuc mt
ngt no th li c mt ngt khc c kch hot? Trong nhng trng hp nh
vy th 1 ngt c mc u tin cao hn c th ngt 1 ngt c mc u tin thp
hn. y gi l ngt trong ngt. Trong 8051 mt ngt u tin thp c th b ngt
bi mt ngt c mc u tin cao hn ch khng b ngt bi mt ngt c mc u
tin thp hn. Mc d tt c mi ngt u c cht v gi bn trong nhng khng
c ngt mc thp no c CPU quan tm ngay tc khc, nu 8051 cha kt thc
phc v cc ngt mc cao.

1.5.4 Thu chp ngt bng phn mm (Triggering)


C nhiu lc ta cn kim tra mt trnh phc v ngt bng con ng m
phng. iu ny c th c thc hin bng cc lnh n gin thit lp cc ngt
ln cao v bng cch buc 8051 nhy n bng vector ngt. V d, nu bit cho
php ngt Timer1trong thanh ghi IE c bt ln 1 th mt lnh nh TF1=1; s
ngt 8051 ngng thc hin cng vic ang lm bt k v buc n nhy n bng
vector ngt timer1. Hay ni cch khc, ta khng cn i cho Timer1 quay tr v 0
mi to ra ngt. Chng ta c th gy ra mt ngt bng cc lnh a cc bit ca ngt
tng ng ln cao.
30 | P a g e

Nh vy qua bi ny chng ta bit ngt l mt s kin bn trong hoc


bn ngoi gy ra ngt b vi iu khin bo cho n bit rng thit b cn c
phc v. Mi mt ngt c mt chng trnh i km vi n c gi l trnh phc
v ngt ISR. B vi iu khin 8051 c 6 ngt, trong c 5 ngt ngi dng c
th truy cp c. l: 2 ngt cho cc thit b phn cng bn
ngoi INT0 v INT1, 2 ngt cho cc b nh thi l TF0 vTF1 v 1 ngt dnh
cho truyn thng ni tip.
8051 c th c lp trnh cho php hoc cm mt ngt bt k cng nh
thit lp mc u tin cho n theo yu cu ca thut ton ng dng.

31 | P a g e

CHNG II. TM HIU V TIMER TRONG 8051


2.1.B m, b nh thi l g?
Cc thanh ghi lin quan
Cch thc hot ng ca b m/b nh thi
Cc bc lp trnh b m/b nh thi
Gii thiu
B m/B nh thi: y l cc ngoi vi c thit k thc hin mt
nhim v n gin: m cc xung nhp. Mi khi c thm mt xung nhp ti u
vo m th gi tr ca b m s c tng ln 01 n v (trong ch m
tin/m ln) hay gim i 01 n v (trong ch m li/m xung).
Xung nhp a vo m c th l mt trong hai loi:
Xung nhp bn trong IC: l xung nhp c to ra nh kt hp mch dao ng
bn trong IC v cc linh kin ph bn ngoi ni vi IC. Trong trng hp s dng
xung nhp loi ny, ngi ta gi l cc b nh thi (timers). Do xung nhp bn
loi ny thng u n nn ta c th dng m thi gian mt cch kh chnh
xc.
Xung nhp bn ngoi IC: l cc tn hiu logic thay i lin tc gia 02 mc 01 v khng nht thit phi l u n. Trong trng hp ny ngi ta gi l cc b
m (counters). ng dng ph bin ca cc b m l m cc s kin bn
ngoi nh m cc sn phm chy trn bng chuyn, m xe ra/vo kho bi
Mt khi nim quan trng cn phi ni n l s kin trn (overflow). N
c hiu l s kin b m m vt qu gi tr ti a m n c th biu din v
quay tr v gi tr 0. Vi b m 8 bit, gi tr ti a l 255 (tng ng vi FF
trong h Hexa) v l 65535 (FFFFH) vi b m 16 bit.
8051 c 02 b m/b nh thi. Chng c th c dng nh cc b nh
thi to mt b tr thi gian hoc nh cc b m m cc s kin xy ra
bn ngoi b VK. Trong bi ny chng ta s tm hiu v cch lp trnh cho chng
v s dng chng nh th no. Phn 1 l Lp trnh b nh thi, v phn 2 l Lp
trnh cho b m.

32 | P a g e

2.1.1. Cc b nh thi ca 8051


8051 c hai b nh thi l Timer 0 v Timer 1, phn ny chng ta bn
v cc thanh ghi ca chng v sau trnh by cch lp trnh chng nh th no
to ra cc tr thi gian.
2.1.2 Cc thanh ghi c s ca b nh thi
C hai b nh thi Timer 0 v Timer 1 u c di 16 bit c truy cp
nh hai thanh ghi tch bit byte thp v byte cao. Chng ta s bn ring v tng
thanh ghi.
1.2.1 Cc thanh ghi ca b Timer 0
Thanh ghi 16 bit ca b Timer 0 c truy cp nh byte thp v byte cao:
Thanh ghi byte thp c gi l TL0 (Timer0 Low byte).
Thanh ghi byte cao c gi l TH0 (Timer0 High byte).
Cc thanh ghi ny c th c truy cp, hoc c c nh mi thanh ghi khc
chng hn nh A, B, R0, R1, R2 v.v...

Hnh 1: Cc thanh ghi ca b Timer 0


2.1.2.2 Cc thanh ghi ca b Timer 1
Ging nh timer 0, b nh thi gian Timer 1 cng di 16 bit v thanh ghi
16 bit ca n cng c chia ra thnh hai byte l TL1 v TH1. Cc thanh ghi ny
c truy cp v c ging nh cc thanh ghi ca b Timer 0 trn.

Hnh 2: Cc thanh ghi ca b Timer 1.

33 | P a g e

2.1.2.3 Thanh ghi TMOD


C hai b nh thi Timer 0 v Timer 1 u dng chung mt thanh ghi
c gi l TMOD: thit lp cc ch lm vic khc nhau ca b nh
thi.
Thanh ghi TMOD l thanh ghi 8 bit gm c:
- 4 bit thp thit lp cho b Timer 0.
- 4 bit cao thit lp cho Timer 1.
Trong :
2 bit thp ca chng dng thit lp ch ca b nh thi.
2 bit cao dng xc nh php ton.

Hnh 3: Thanh ghi TMOD.


2.1.2.3.1 Cc bit M1, M0
L cc bit ch ca cc b Timer 0 v Timer 1. Chng chn ch ca
cc b nh thi: 0, 1, 2 v 3 nh bng di. Chng ta ch tp chung vo cc ch
thng c s dng rng ri nht l ch 1 v ch 2. Chng ta s sm
khm ph ra cc c tnh ca cc ch ny sau khi khm phn cn li ca thanh
ghi TMOD. Cc ch c thit lp theo trng thi ca M1 v M0 nh sau:
M1 M0

Ch

Ch hot ng

B nh thi 13 bit:8 bit l b nh thi/b m, 5 bit t


trc.

B nh thi 16 bit: khng c t trc.

B nh thi 8 bit: t np li.

Ch b nh thi chia tch.

34 | P a g e

Bng 1: Cc ch hot ng ca b m/b nh thi

2.1.2.3.2 Bit C/T (Counter/Timer)


Bit ny trong thanh ghi TMOD c dng quyt nh xem b nh thi
c dng nh mt my to tr hay b m s kin. Nu bit C/T = 0 th n
c dng nh mt b nh thi to tr thi gian.
2.1.2.3.3 Bit cng GATE
Mt bit khc ca thanh ghi TMOD l bit cng GATE. trn hnh 3 ta
thy c hai b nh thi Timer0 v Timer1 u c bit GATE. Vy bit GATE dng
lm g? Mi b nh thi thc hin im khi ng v dng. Mt s b nh
thi thc hin iu ny bng phn mm, mt s khc bng phn cng v mt s
khc va bng phn cng va bng phn mm. Cc b nh thi trn 8051 c c
hai:
Vic khi ng v dng b nh thi c khi ng bng phn mm bi
ccbit khi ng b nh thi TR l TR0 v TR1. iu ny c c nh cc
lnh Set bit TR0 ln 1 (khi ng b nh thi) hoc Clear bit TR0 (dng b nh
thi) i vi Timer 0, v tng t TR1 i vi Timer 1. Cc lnh ny c tc
dng khi bit GATE = 0 trong thanh ghi TMOD.
Vic khi ng v ngng b nh thi bng phn cng t ngun ngoi bng
cch t bit GATE = 1 trong thanh ghi TMOD.
Tuy nhin, trnh s ln ln ngay t by gi ta t GATE = 0 c ngha l
khng cn khi ng v dng cc b nh thi bng phn cng t bn ngoi.
2.1.2.4 Thanh ghi iu khin timer(TCON)
Thanh ghi TCON cha cc bit trng thi v cc bit diu khin cho timer0 v timer1
TF1

TR1

TF0

TR0

IT1

IE1

IT0

IE0

- Chc nng cc bt trn thanh ghi iu khin Timer (TCON)


TF1: C trn ca Timer 1 c t bi phn cng khi c trn, c xa bi
phn mm hoc phn cng khi b x l ch n trnh phc v ngt.
TR1: Bt iu khin timer1 hot ng c t/xa bng phn mm iu
khin cho timer chy/dng.
35 | P a g e

TF0: C bo trn ca timer 0 c t phn cng khi c trn , c xa


bi phn mm hoc phn cng khi b x l ch n trnh phc v ngt.
TR0: Bt iu khin timer 0 hot ng c t xa bng phn mm iu
khin cho timer chy /dng.
IT1: C ngt do timer1
IE1: C ngt ngoi 1
IT0: C ngt do timer0
IE0: C ngt ngoi 0.
2. Cc ch hot ng ca timer
2.1 Ch 0
Ch 0 l ch nh thi 13 bt, ch ny ch tng thch vi cc b v iu
khin trc kia, gi ch ny khng cn ph hp, t ngi s dng. Trong ch d
ny b nh nh thi dng 13 bit dng cha gi tr m, 3 bt thp ca TL
khng c s dng.

Nguyn l hot ng:


Ngun xung clock c a ti Timer t cc ngun khc nhau ph thuc
vo bt C/#Tx trong thanh ghiTMOD. Nu C/#Tx=1, xung clock c ly t
bn ngoi qua chn Tx. Nu C/#Tx=0 xung clock s c ly t b phn
chia tn trong chp, tn s ca xung y l 1/12 tn s ca b dao ng
thch anh.
Ngun xung clock ni trn s c iu khin a ti cc timer bng
cc bt TR,GATE vac mc logic trn cc chn INTx.
Nu TRx=0, cc Timer s b cm m khng cn quan tm n GATE v
mc logic trn cc chn INTx
Nu TRx =1cacs timer s hot ng khi hoc l bt GATE=0 hoc l bt
GATE =1 v trn chn INTx c mc logic l 1.

36 | P a g e

2.2 Ch 1
Trong ch 1, b nh thi dng c hai thanh ghi TH v TL cha gi tr m,
v th ch ny cn gi l ch nh thi 16 bt.
Vi ch d 1 gi tr ln nht m timer cha l 65535, khi m qu gi tr ny s
xy ra trn , khi c trn TF s c t bng 1.
Sau khi trn nu mun chng trnh m ta phi c lnh np gi tr kh to sau khi
dng timer bng cch xa bt TR.

2.3 Ch 2
Trong ch 2 b timer dung TL cha cc gi tr m va TH cha gi tr np
li v ch ny c gi l ch t np li 8 bt.
Sau khi m qu 225 s xy ra trn, khi TF c t bng 1 ng thi gi tr
ca timer t ng c np li bng ni dung TH.

2.4 Ch 3
Trong ch 3, Timer 0 c tch thnh 2 b timer8 bt hot ng c lp ch
ny s gip cung cp thm cho ta b timer na.

37 | P a g e

2.5 Cch tnh gi tr np vo TH v TL


Gi s chng ta bit lng thi gian tr m ta cn tm ra c cc gi tr cn
thit cho cc thanh ghi TH v TL. dnh ton cc gi tr cn c np vo cc
thanh ghi TH v TL chng ta hy nhn vo v d sau vi vic s dng tn s dao
ng XTAL=12MHz i vi h 8051.
B1: chia thi gian tr cn thit cho 1us
B2: Thc hin 65535 n vi n l gi tr thp phn nhn c t bc 1.
B3: chuyn i kt qu bc 2 sang s Hex vi yyxx l gi tr hex ban u cn
np vo cc thanh ghi b nh nh thi.
B4: t TL=xx v TH=yy.

38 | P a g e

Chng III.Bi tp bi vn dng


Bi 1: Vit chng trnh iu khin 16 LED n nhy 4 trng thi khc nhau?
#include <REGX51.H>
unsigned int i,j;
void delay()
{for(i=0;i<20000;i++);}
void TT1(){
for(j=0;j<3;j++){
P1=P2=0x00; delay();
P1=P2=0xff; delay();}}
void TT2(){
for(j=0;j<2;j++){
P2=0x80;P1=0x00; delay();
P2=0x40;P1=0x00; delay();
P2=0x20;P1=0x00; delay();
P2=0x10;P1=0x00; delay();
P2=0x08;P1=0x00; delay();
P2=0x04;P1=0x00; delay();
P2=0x02;P1=0x00; delay();
P2=0x01;P1=0x00; delay();
P1=0x80;P2=0x00; delay();
P1=0x40;P2=0x00; delay();
P1=0x20;P2=0x00; delay();

39 | P a g e

P1=0x10;P2=0x00; delay();
P1=0x08;P2=0x00; delay();
P1=0x04;P2=0x00; delay();
P1=0x02;P2=0x00; delay();
P1=0x01;P2=0x00; delay();}
}
void TT4(){
for(j=0;j<2;j++){
P1=0x01;P2=0x80; delay();
P1=0x02;P2=0x40; delay();
P1=0x04;P2=0x20; delay();
P1=0x08;P2=0x10; delay();
P1=0x10;P2=0x08; delay();
P1=0x20;P2=0x04; delay();
P1=0x40;P2=0x02; delay();
P1=0x80;P2=0x01; delay();}}
void TT3(){
for(j=0;j<2;j++){
P1=0x01;P2=0x00; delay();
P1=0x02;P2=0x00; delay();
P1=0x04;P2=0x00; delay();
P1=0x08;P2=0x00; delay();
P1=0x10;P2=0x00; delay();
P1=0x20;P2=0x00; delay();
P1=0x40;P2=0x00; delay();
40 | P a g e

P1=0x80;P2=0x00; delay();
P2=0x01;P1=0x00; delay();
P2=0x02;P1=0x00; delay();
P2=0x04;P1=0x00; delay();
P2=0x08;P1=0x00; delay();
P2=0x10;P1=0x00; delay();
P2=0x20;P1=0x00; delay();
P2=0x40;P1=0x00; delay();
P2=0x80;P1=0x00; delay();}
}
void TT5(){
for(j=0;j<3;j++){
P1=P2=0xAA; delay();
P1=P2=0x55; delay();}}
void main(){
while(1){
TT1();TT2();TT3();TT4();TT5();}}

S mch:

41 | P a g e

Bi 2: Vit chng trnh iu khin LED nhy lin tc, LED xanh nhy 10 ln
mi khi nhn SW?
#include <REG51.H>
sbit LED1=P1^0;
sbit LED2=P1^1;
sbit SW=P1^2;
unsigned int i,j;
void delay(){
for(i=0;i<30000;i++);}
void main (){
while(1){
LED2=0;
LED1=~LED1;delay();
if(SW==0){
for(j=0;j<10;j++)
{
LED2=LED1=1; delay();
LED2=LED1=0; delay();}}}}

42 | P a g e

S mch
Bi 3: Vit chng trnh s dng ngt ngoi m phng bng truyn m sn phm
s dng nt nhn sw thay cho cm bin v hin th ln 6 LED 7 thanh?

#include <REGX51.H>
unsigned char so;
unsigned int i,s1,s2,s3,s4,s5,s6;
unsigned char M[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
//Hien thi cac so tu 0 - 9
//Ham tao tre
void delay(unsigned int i){
for(i=0;i<=121;i++){
;}}
//Chuong trinh hien thi
void hienthi(){
s1=(so/100000)

%10;

s2=(so/10000)

%10;

s3=(so/1000)

%10;

s4=(so/100)

%10;

s5=(so/10) %10;
s6= so

%10;

for(i=0;i<=9;i++){
P0=M[s1]; P2_0=1; delay(10); P2_0=0;
P0=M[s2]; P2_1=1; delay(10); P2_1=0;
P0=M[s3]; P2_2=1; delay(10); P2_2=0;

43 | P a g e

P0=M[s4]; P2_3=1; delay(10); P2_3=0;


P0=M[s5]; P2_4=1; delay(10); P2_4=0;
P0=M[s6]; P2_5=1; delay(10); P2_5=0;
}}
void ngat(void) interrupt 0 {

//Ham ngat

EA=0;
so++;
if(so==1000000) so=0;
EA=1;
void main(){
IE=0x81;
IT0=1;

}
//ham chinh
//co ngat ngoai
//Co ngat do timer 0

while(1){
hienthi();
}}
Bi 4: Vit chng trnh to mt xung vung c tn s 5KHz s dng timer?
#include<reg52.h>
sbit F=P1^1;
void main(void)
{TMOD=0x02;//tiemr 0 che do 2
TH0=-20;// he so chia la 100
TR0=1;
while(1)//vonglap vo han
{

while(!TF0);//cho co
TF0=0;//xoa co tran
44 | P a g e

F=~F;//dao muc
}}

S mch:

Bi 5: Vit chng trnh s dng ngt to 3 xung vung c tn s khc nhau?


// viet chuong trinh su dung ngat tao 3 xung vuong co tan so khac nhau?

#include<reg52.h>

sbit xung1=P1^0;
sbit xung2=P1^1;
sbit xung3=P1^2;

void main(void)
{ TMOD=0x02;
RCAP2H=-250;
TR2=1;
IE=0xaa;
IP=0;
TMOD=0x22;
TH0=-50;
TR0=1;
TH1=-150;
45 | P a g e

TR1=1;

}
void ngat_T0(void) interrupt 1
{xung1=~xung1;}
void ngat_T1(void) interrupt 3
{xung2=~xung2;}
void ngat_T2(void) interrupt 5
{xung3=~xung3;}

Bi 6: Vit chng trnh s dng timer to xung vung c rng xung thay i
t 20% n 80%?

#include <REGX51.H>
sbit xung=P1^1;
unsigned int x,dem;i;
void delay(){
for(i=0;i<1000;i++);}
void Ngat_T0(void) interrupt 1{
dem++;
if(dem>=255)
dem=0;
if(dem<x)
xung=1;
else
46 | P a g e

xung=0;}
void main(void){
IE=0x82;
TMOD=0x02;
IP=0;
TR0=1;
TH0=-50;
while(1){
for(x=51;x<204;x++)
{delay();}}}

S mch

Bi 7: Vit chng trnh qut 5 LED 7 thanh m t 12345 n 45678?

47 | P a g e

#include <REGX51.H>
char M[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
long i,s1,s2,s3,s4,s5,s6,j,n;
void delay(void) {
for(n=0;n<100;n++);}
void hienthi(long s)
{ s1=s/100000;
s2=(s%100000)/10000;
s3=(s%10000)/1000;
s4=(s%1000)/100;
s5=(s%100)/10;
s6=s%10 ;
P3=0x01;P2=M[s1]; delay();
P3=0x02;P2=M[s2]; delay();
P3=0x04;P2=M[s3]; delay();
P3=0x08;P2=M[s4]; delay();
P3=0x10;P2=M[s5]; delay();
P3=0x20;P2=M[s6]; delay();}
void main(void){
while(1){
for(i=12345;i<45678;i++) {
hienthi(i);

}}}

Bi 8: Vit chng trnh qut 8 LED 7 thanh m t 12345678 n 23456789?


// viet chuong trinh guet 8 led 7 thanh dem tu 12345678 - 23456789?
48 | P a g e

#include <reg52.h>
unsigned int i,k;
unsigned long S1,S2,S3,S4,S5,S6,S7,S8,j;
unsigned long M[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
void delay(void)
{for(i=0;i<300;i++);}
void hienthi(unsigned long S0)
{ S1= S0/10000000;
S2=(S0%10000000)/1000000;
S3=(S0%1000000)/100000;
S4=(S0%100000)/10000;
S5=(S0%10000)/1000;
S6=(S0%1000)/100;
S7=(S0%100)/10;
S8=S0%10;
P2=0x01;P1=M[S1]; delay();
P2=0x02;P1=M[S2]; delay();
P2=0x04;P1=M[S3]; delay();
P2=0x08;P1=M[S4]; delay();
P2=0x10;P1=M[S5]; delay();
P2=0x20;P1=M[S6]; delay();
P2=0x40;P1=M[S7]; delay();
P2=0x80;P1=M[S8]; delay(); }
void main (void)
{ while (1)
49 | P a g e

{for(j=12345678;j<23456789;j++)
{for(k=0;k<10;k++)
{hienthi(j);}}}}

S mch:

Bi 9: Vit chng trnh qut Matrix LED 8x8 hin th ch DAI HOC THANH
DO?
#include<reg52.h>
#include<delay.h>
unsigned int i,n,j,k,m;
unsigned char code h[13][8]={
0xff,0x00,0x00,0x3c,0x3c,0x00,0x81,0xff , // D
0xff,0x03,0x01,0xcc,0xcc,0x01,0x03,0xff , // A
0xff,0x3c,0x3c,0x00,0x00,0x3c,0x3c,0xff , // I
0xff,0x00,0x00,0xe7,0xe7,0x00,0x00,0xff , //H
0xff,0x81,0x00,0x3c,0x3c,0x00,0x81,0xff , // O
50 | P a g e

0xff,0x81,0x00,0x3c,0x3c,0x3c,0x3c,0xff ,//C
0xff,0xfc,0xfc,0x00,0x00,0xfc,0xfc,0xff , // T
0xff,0x00,0x00,0xe7,0xe7,0x00,0x00,0xff , //H
0xff,0x03,0x01,0xcc,0xcc,0x01,0x03,0xff , // A
0xff,0x00,0x00,0xf9,0xf3,0x00,0x00,0xff , //N
0xff,0x00,0x00,0xe7,0xe7,0x00,0x00,0xff , //H
0xff,0x00,0x00,0x3c,0x3c,0x00,0x81,0xff , // D
0xff,0x81,0x00,0x3c,0x3c,0x00,0x81,0xff // O
};

void main(void)
{
while(1)
{
for(j=0;j<13;j++)
for(m=0;m<30;m++)
for(k=0;k<8;k++)
{ P3=0xff;
P2=1<<k;
P3=h[j][k];
delay_us(150);}}}

S mch:

51 | P a g e

Bi 10: Vit chng trnh qut Matrix LED 8x8 hin th tt c cc ch ci trong
bng ch ci ting Anh?
#include<reg52.h>
#include<delay.h>
unsigned int i,j,k,m;
unsigned char code h[26][8]={
0xff,0x03,0x01,0xcc,0xcc,0x01,0x03,0xff , // A
0xff,0x00,0x00,0x24,0x24,0x81,0xff,0xff , //B
0xff,0x81,0x00,0x3c,0x3c,0x3c,0x3c,0xff ,//C
0xff,0x00,0x00,0x3c,0x3c,0x00,0x81,0xff , // D
0xff,0x00,0x00,0x24,0x24,0x24,0x24,0xff , // E
0xff,0x00,0x00,0xe4,0xe4,0xe4,0xe4,0xff , // F
0xff,0x81,0x00,0x3c,0x2c,0x0c,0x8d,0xff , // G
0xff,0x00,0x00,0xe7,0xe7,0x00,0x00,0xff , //H
0xff,0x3c,0x3c,0x00,0x00,0x3c,0x3c,0xff , // i
0xff,0x3c,0x3c,0x00,0x80,0xfc,0xfc,0xff , // J
0xff,0x00,0x00,0xc3,0x99,0x3c,0x7e,0xff , // K
0xff,0x00,0x00,0x3f,0x3f,0x3f,0x3f,0xff , // L
0xff,0x00,0x00,0xf9,0xf3,0xf9,0x00,0x00 , // M
0xff,0x00,0x00,0xf9,0xf3,0x00,0x00,0xff , //N
0xff,0x81,0x00,0x3c,0x3c,0x00,0x81,0xff , // O
0xff,0x00,0x00,0xe4,0xe4,0xe0,0xf1,0xff , // P
0xff,0x81,0x00,0x3c,0x1c,0x00,0x81,0xbf , // Q
0xff,0x00,0x00,0xe4,0xc4,0x90,0x39,0xff , // R
0xff,0x20,0x20,0x24,0x04,0x04,0xff,0xff , // S
0xff,0xfc,0xfc,0x00,0x00,0xfc,0xfc,0xff , // T
0xff,0x00,0x00,0x3f,0x3f,0x00,0x00,0xff , // U
0xff,0xc0,0x80,0x3f,0x3f,0x80,0xc0,0xff , // V
0xc0,0x80,0x1f,0x80,0x80,0x1f,0x80,0xc0 , // W
0x7c,0x39,0x93,0xc7,0xc7,0x93,0x39,0x7c , // X
0xff,0xf0,0xe0,0x07,0x07,0xe0,0xf0,0xff , // Y
0xff,0x3c,0x1c,0x0c,0x24,0x30,0x38,0xff }; // Z

52 | P a g e

void main(void)
{
while(1)
{
for(j=0;j<26;j++)
for(m=0;m<30;m++)
for(k=0;k<8;k++)
{ P3=0xff;
P2=1<<k;
P3=h[j][k];
delay_us(100);}}}

S mch:

53 | P a g e

You might also like