You are on page 1of 57

cng bi ging 8051 Starter Kit

Chng I: Gii thiu h Vi iu khin 8051


Vi iu khin 8051 l mt trong nhng vi iu khin 8 bit thng dng nht hin nay. Bt u xut hin vo nm 1980, tri qua gn 30 nm, hin c ti hng trm bin th (derrivatives) c sn xut bi hn 20 hng khc nhau, trong phi k n cc i gia trong lng bn dn (Semiconductor) nh ATMEL, Texas Instrument, Philips, Analog Devices Ti Vit Nam, cc bin th ca hng ATMEL l AT89C51, AT89C52, AT89S51, AT89S52 c thi gian xut hin trn th trng kh lu v c th ni l c s dng rng ri nht trong cc loi vi iu khin 8 bit. Chng ny s tp trung m t tng i chi tit cu trc bn trong ca cc bin th ni trn (tm gi chung l AT89) ca hng ATMEL. Cu trc ca AT89 dng s khi tng qut

CPU

B nh chng trnh

B nh d liu

Vo/ra song song

Vo/ra ni tip

Ngt

B nh thi / b m

P1 P2 P3 P4

Timer0 Timer1

1 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit Cu trc bus Bus a ch ca h vi iu khin 8051 gm 16 ng tn hiu (thng gi l bus a ch 16 bit). Vi s lng bit a ch nh trn, khng gian nh ca chip c m rng ti a l 216 = 65536 a ch, tng ng 64K. Bus d liu ca h vi iu khin 8051 gm 8 ng tn hiu (thng gi l bus d liu 8 bit), l l do ti sao ni 8051 l h vi iu khin 8 bit. Vi rng ca bus d liu nh v y, cc chip h 8051 c th x l cc ton hng 8 bit trong mt chu k lnh. CPU (Central Processing Unit) CPU l n v x l trung tm, l b no ca ton b h thng vi in t c tch hp trn chip vi iu khin. CPU c cu to chnh gm mt n v x l s hc v lgic ALU (Arithmethic Logic Unit) - ni thc hin tt c cc php ton s hc v php lgic cho qu trnh x l. B nh chng trnh (Program Memory) Khng gian b nh chng trnh ca AT89 l 64K byte, tuy nhin hu ht cc vi iu khin AT89 trn th trng ch tch hp sn trn chip mt lng b nh chng trnh nht nh v chim di a ch t 0000h tr i trong khng gian b nh chng trnh. AT89C51/AT89S51 c 4K byte b nh chng trnh loi Flash tch hp sn bn trong chip. y l b nh cho php ghi/xa nhiu ln bng in, chnh v th cho php ngi s dng thay i chng trnh nhiu ln. S ln ghi/xa c thng ln ti hng vn ln. AT89C52/AT89S52 c 8K byte b nh chng trnh cng loi. B nh chng trnh ca cc chip h 8051 c th thuc mt trong cc loi: ROM, EPROM, Flash, hoc khng c b nh chng trnh bn trong chip. Tn ca tng chip th hin chnh loi b nh chng trnh m n mang bn trong, c th l vi v d sau: STT 1 2 3 4 5 6 7 8 Tn chip 8051 8052 8031 8032 87C51 87C52 AT89C51 / AT89S51 AT89C52 / AT89S52 ROM 4 Kbyte 8 Kbyte x x x x x x EPROM x x x x 4 Kbyte 8 Kbyte x x Flash x x x x x x 4 Kbyte 8 Kbyte

2 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit B nh chng trnh dng cha m ca chng trnh np vo chip. Mi lnh c m ha bi 1 hay vi byte, dung lng ca b nh chng trnh phn nh s lng lnh m b nh c th cha c. a ch u tin ca b nh chng trnh (0x0000) chnh l a ch Reset ca 8051. Ngay sau khi reset (do tt bt ngun, do mc in p ti chn RESET b ko ln 5V...), CPU s nhy n thc hin lnh t ti a ch ny trc tin, lun lun l nh vy. Phn cn trng trong khng gian chng trnh khng dng lm g c. Nu mun m rng b nh chng trnh, ta phi dng b nh chng trnh bn ngoi c dung lng nh mun. Tuy nhin khi dng b nh chng trnh ngoi, b nh chng trnh onchip khng dng c na, b nh chng trnh ngoi s chim di a ch ngay t a ch 0x0000. Hnh nh minh ha b nh chng trnh Thn chng trnh (chng trnh chnh, chng trnh con, chng trnh x l ngt, bng cc hng s ...) Vector ngt th n ... Vector ngt th 1 a ch reset 0x0003 0x0000 0x0FFF

0x0030

B nh d liu (Data Memory) Vi iu khin h 8051 c khng gian b nh d liu l 64K a ch, cng l dung lng b nh d liu ln nht m mi chip thuc h ny c th c c (nu phi ghp mt cch chnh tc, s dng cc ng tn hiu ca bus a ch v d liu). B nh d liu ca cc chip h 8051 c th thuc mt hay hai loi: SRAM hoc EEPROM. B nh d liu SRAM c tch hp bn trong mi chip thuc h vi iu khin ny, c dung lng khc nhau ty loi chip, nhng thng ch khong vi trm byte. y chnh l ni cha cc bin trung gian trong qu trnh hot ng ca chip. khi mt in, do bn cht ca SRAM m gi tr ca cc bin ny cng b mt theo. Khi c in tr li, ni dung ca cc nh cha cc bin ny cng l bt k, khng th xc nh trc. Bn cnh b nh loi SRAM, mt s chip thuc h 3 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit 8051 cn c thm b nh d liu loi EEPROM v i dung lng ti a vi Kbyte, ty tng loi chip c th. Di y l mt vi v d v b nh chng trnh ca mt s loi chip thng dng thuc h 8051. STT 1 2 3 4 5 6 Tn chip AT89C51 AT89C52 AT89C2051 AT89S51 AT89S52 AT89S8252 B nh SRAM 128 byte 256 byte 128 byte 128 byte 256 byte 256 byte B nh EEPROM 0 0 0 0 0 2048 byte

Tng qut v b nh ca 8051, ta c th thy mi chip 8051 gm c nhng b nh sau:

64 Kbyte

Phn khng gian a ch cho b nh chng trnh cn trng, bng 64 Kbyte tr i lng b nh onchip B nh chng trnh onchip

Phn khng gian a ch cho b nh d liu (hon ton trng rng 64K byte, dnh cho b nh d liu ghp thm bn ngoi nu c) B nh SRAM

Dung lng ty loi chip i v i cc chip c b nh SRAM 128 byte th a ch ca cc byte SRAM ny c nh s t 00h n 7Fh. i vi cc chip c b nh SRAM 256 byte th a ch ca cc byte SRAM c nh s t 00h n FFh. c hai loi chip, SRAM c a ch t 00h n 7Fh c gi l vng RAM thp, phn c a ch t 80h n FFh (nu c) c gi l vng RAM cao. Bn cnh cc b nh, bn trong mi chip 8051 cn c mt tp hp cc thanh ghi chc nng c bit (SFR Special Function Register). Cc thanh ghi ny lin quan n hot ng ca cc ngoi vi onchip (cc cng vo ra, timer, ngt ...). a ch ca chng trng vi di a ch ca vng SRAM cao, tc l cng c a ch t 80h n FFh.

4 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit

Vng RAM cao, c a ch t 80h n FFh

Vng SFR, cng c a ch t 80h n FFh

Vng RAM thp c a ch t 00h n 7Fh Vy khi truy cp vo mt a ch thuc di t 00h n 7Fh th s truy cp n nh thuc vng RAM thp. Tuy nhin khi truy cp n mt a ch x thuc di t 80h n FFh th xy ra vn cn gii quyt: s truy cp n thanh ghi SFR a ch x hay truy cp n nh a ch x ca vng RAM cao? Nh sn xut quy nh rng, trong trng hp ny, nu kiu truy cp s dng ch a ch trc tip th s truy cp vo vng SFR, ngc li nu kiu truy cp s dng ch a ch gin tip th s truy cp vo vng RAM cao. B nh d liu RAM onchip thng dng cha cc bin tm thi trong qu trnh vi iu khin hot ng, cng l ni dnh cho ngn xp hot ng. Khng gian d liu 64Kbyte c trng hon ton v ch dng c khi ghp ni vi b nh d liu bn ngoi. Khi ghp ni thm b nh d liu bn ngoi, dung lng ca cc b nh ny s chim dn cc v tr trong khng gian, tuy nhin khng h nh hng n 128byte RAM onchip. Ngn xp trong 8051 lin quan n mt thanh ghi tn l con tr ngn xp SP (Stack Pointer). Thanh ghi ny lun tr vo nh ca ngn xp, tc l n cha a ch ca v tr ngay st v tr c th lu a ch/d liu tip theo vo. Khi ct 1 byte a ch/d liu vo ngn xp, SP t ng tng ln 1 n v sau mi ct a ch/d liu vo nh c a ch bng vi gi tr ca SP sau khi tng. Khi ly 1 byte a ch/d liu ra khi ngn xp, gi tr s c ly ra sau SP mi t ng tr i 1 n v. Gi tr sau khi reset ca SP l 0x07, do quy nh ngn xp s ct d liu t a ch 0x08 tr i. Tuy nhin do c tnh hot ng bnh trng theo chiu tng a ch m ngn xp thng c b tr ln vng trn cng ca b nh RAM onchip trnh tranh chp vi cc bin lu trong RAM.

5 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit

Hnh nh minh ha b nh d liu

0x7F Vng RAM thng (khng nh a ch bit c) 0x30 Vng RAM 16 byte c th nh a ch bit t 0x00 n 0x7F 4 bng thanh ghi mi bng c 8 thanh ghi R0..7 0x2F

0x20 0x1F 0x00

8052 c thm vng RAM cao (a ch cng t 0x80 n 0xFF) nhng truy nhp phi theo ch a ch gin tip phn bit vi vng SFR

y l vng cc thanh ghi chc nng c bit SFR (Special Function Register) c c 8051 v 8052. Truy nhp (ghi/c) vng ny l truy nhp vo cc a ch t 0x80 n 0xFF nhng phi theo ch a ch trc tip

6 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit

Bn cc thanh ghi chc nng c bit SFR

7 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit Cng vo ra song song (I/O Port) 8051 c 4 cng vo ra song song, c tn ln lt l P0, P1, P2 v P3. Tt c cc cng ny u l cng vo ra hai chiu 8bit. Cc bit ca mi cng l mt chn trn chip, nh vy mi cng s c 8 chn trn chip. Hng d liu (dng cng lm cng ra hay cng vo) l c lp gia cc cng v gia cc chn (cc bit) trong cng mt cng. V d, ta c th nh ngha cng P0 l cng ra, P1 l cng vo hoc ngc li mt cch ty , vi c 2 cng P2 v P3 cn li cng vy. Trong cng mt cng P0, ta cng c th nh ngha chn P0.0 l cng vo, P0.1 li l cng ra ty . Lin quan n mi cng vo/ra song song ca 8051 ch c mt thanh ghi SFR ( thanh ghi chc nng c bit) c tn trng vi tn ca cng. Ta c cc thanh ghi P0 dng cho cng P0, thanh ghi P1 dng cho cng P1 y l cc thanh ghi nh a ch n tng bit (bit addressable), do ta c th dng cc lnh tc ng bit i vi cc bit ca cc thanh ghi ny. Mi thanh ghi ny gm 8 bit tng ng vi cc chn (bit) ca cng . Khi mt chn (bit) cng no c dng lm cng vo th trc bit tng ng trong thanh ghi SFR phi c t mc 1. Nu mt chn (bit) cng no c dng lm cng ra th gi tr ca bit tng ng trong thanh ghi SFR s l gi tr lgic mun a ra chn cng . Nu mun a ra mc lgic cao (in p gn 5V), bit tng ng trong thanh ghi phi c t bng 1, hin nhin nu mun a ra mc lgic thp (in p gn 0V) th bit tng ng trong thanh ghi phi c t bng 0. Nh ni trn, cc bit trong thanh ghi cng c th c t bng 1/0 m khng lm nh hng n cc bit cn li trong cng bng cch dng cc lnh setb (t ln 1) hay clr (t v 0). Sau khi t mt chn cng lm cng vo, ta c th dng cc lnh kim tra bit c vo v kim tra cc mc lgic ca mch ngoi ang p vo l mc 0 hay mc 1. Cc lnh ny l jb (nhy nu bit bng 1), jnb (nhy nu bit bng 0). Mi cng c cu trc gm mt latch (chnh l cc bit ca thanh ghi cng), mch li u ra (output driver) v mch m u vo (input buffer). Ngoi chc nng vo/ra thng thng, mt s cng cn c tch hp thm chc nng ca mt s ngoi vi khc. Xem bng lit k sau:

Cc chn cng P1.0 v P1.1 c tch hp vi cc tn hiu ca timer2 trong trng hp chip l 8052. Khi dng vi cc chc nng ca cc ngoi vi, chn cng tng ng phi c t ln 1. Nu khng cc tn hiu s lun b ghim mc 0.

8 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit S ca mch ca mt chn cng:

Cng P0 khng c in tr treo cao (pullup resistor) bn trong, mch li to mc cao ch c khi s dng cng ny vi tnh nng l bus dn knh a ch/d liu. Nh v y vi chc nng ra thng thng, P0 l cng ra open drain, vi chc nng vo, P0 l cng vo cao tr (high impedance). Nu mun s dng cng P0 lm cng vo/ra thng thng, ta phi thm in tr pullup bn ngoi. Gi tr in tr pullup bn ngoi thng t 4K7 n 10K. Cc cng P1, P2 v P3 u c in tr pullup bn trong, do c th dng vi chc nng cng vo/ra thng thng m khng cn c thm in tr pullup bn ngoi. Thc cht, in tr pullup bn trong l cc FET, khng phi in tr tuyn tnh thng thng, tuy vy nhng kh nng phun dng ra ca mch li khi u ra mc cao (hoc khi l u vo) rt nh, ch khong 100 micro Ampe. Trong datasheet ca AT89S5x (mt trong nhng bin th ca h 8051 do Atmel sn xut) c thng k s liu nh sau:

9 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit Theo , nu ta thit k cc cng phi cung cp cho ti u ra mc cao mt lng dng in IOH = 60 micro Ampe th mc in p u ra VOH s b ko st xung, ch c th m bo t 2.4V tr ln bi nh sn xut, khng th cao st vi 5V nh l thuyt. Trong khi , kh nng nut dng ca mch li khi u ra mc thp li cao hn rt nhiu, c th t t vi n hng chc mili Ampe.

Nh v y, khi thit k v i cc phn t bn ngoi, ta nn n c tnh vo/ra ca cc chn cng. V d khi dng ghp ni v i LED n hoc LED 7 thanh, ta nn thit k chn cng nut dng t LED lm LED sng (cng ni vi Cathode ca LED), khng nn thit k chn cng phun dng cho LED lm LED sng (cng ni vi Anode ca LED).

Cng vo ra ni tip (Serial Port) Cng ni tip trong 8051 ch yu c dng trong cc ng dng c yu cu truyn thng vi my tnh, hoc vi mt vi iu khin khc. Lin quan n cng ni tip ch yu c 2 thanh ghi: SCON v SBUF. Ngoi ra, mt thanh ghi khc l thanh ghi PCON (khng nh a ch bit) c bit 7 tn l SMOD quy nh tc truyn ca cng ni tip c gp i ln (SMOD = 1) hay khng (SMOD = 0). D liu c truyn nhn ni tip thng qua hai chn cng P3.0(RxD) v P3.1(TxD). Thanh ghi SBUF l thanh ghi 8bit cha d liu truyn hoc nhn. V thc cht c hai thanh ghi d liu khc nhau, mt dnh cha d liu truyn i, mt cha d li nhn c. C hai thanh ghi ny u c chung mt tn l SBUF, tuy nhin CPU hon ton phn bit c mt cch d dng. Khi ta mun truyn d liu i, ta phi ghi vo thanh ghi SBUF (v d vit lnh mov SBUF,a), cn khi mun c kim tra d liu nhn v ta phi c thanh ghi SBUF (v d vit lnh mov a,SBUF). CPU s cn c vo vic thanh ghi SBUF nm v tr ton hng ch (ton hng bn tri) hay ton hng ngun (ton hng bn phi) quyt nh s truy nhp (c/ghi) thanh ghi SBUF no. Ngi lp trnh khng cn phi quan tm x l vn ny. Thanh ghi quy nh ch hot ng v iu khin cng ni tip l thanh ghi SCON (nh a ch bit). SM0 SM1 SM2 REN TB8 RB8 TI RI

Bit SM0, SM1, SM2 quy nh ch hot ng ca cng ni tip. Thng thng truyn thng gia 2 vi iu khin hoc gia 1 vi iu khin v 1 my tnh, gi tr ca bit SM2 c t bng 0. Khi truyn thng theo kiu mng a vi x l (multiprocessor communication), SM2 c t bng 1. Hai bit SM0 v SM1 thc s l cc bit quy nh ch hot ng ca cng ni tip, chng to ra 4 t hp (00,01,10 v 11) ng vi 4 ch hot ng m t trong bng sau. 10 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit

SM0 0 0 1 1

SM1 0 1 0 1

Ch 0 - ng b 1 - D b 2 - D b 3 - D b

Khung d liu 8 bit SBUF 8 bit SBUF 8bit SBUF + RB8/TB8 8bit SBUF + RB8/TB8

Baud rate Fosc/12 Thay i c Fosc/32 hoc Fosc/64 Thay i c

Ch 0: l ch truyn ng b duy nht. Chn RxD s l tn hiu truyn/nhn d liu, chn TxD l tn hiu xung nhp. Bit LSB (bit 0) ca d liu c truyn i trc tin. Tc truyn c nh v bng 1/12 gi tr thch anh. Ch 1: l ch truyn d b 8 bit. D liu 8 bit c ng khung bi mt bit Start (= 0) u v mt bit Stop (=1) cui trc khi c truyn i. Tc truyn thay i c theo ngi lp trnh. Ch 2: l ch truyn d b 9 bit. D liu 9 bit c ghp thnh bi 8bit trong thanh ghi SBUF v bit RB8 (trng hp nhn v ) hoc TB8 (trng hp truyn i) trong thanh ghi SCON. Ngoi ra cc bit Start v Stop vn c gn bnh u v cui khung truyn. Trong ch ny, tc truyn ch c th chn c 1 trong 2 mc: 1/32 hoc 1/64 gi tr ca thch anh (ty thuc vo gi tr ca bit SMOD trong thanh ghi PCON ni trn). Ch 3: cng l ch truyn d b 9 bit, khc vi ch 2 ch tc truyn c th thay i c theo ngi lp trnh nh trong ch 1. Bit REN trong thanh ghi SCON l bit cho php nhn d liu. D liu ch c nhn qua cng ni tip khi bit ny = 1. Bit TB8 l bit d liu th 9 trong trng hp truyn i 9 bit (8 bit kia trong thanh ghi SBUF). Bit RB8 l bit d liu th 9 trong trng hp nhn v 9 bit (8 bit kia trong thanh ghi SBUF). Bit TI l c ngt truyn, bo hiu vic truyn 1 khung d liu hon tt. Bit RI l c ngt nhn, bo hiu vic nhn 1 khung d liu hon tt. to ra tc truyn (Baud rate) ca cng ni tip trong 8051, phi dng n timer1 ch Auto Reload 8bit. Gi tr np li cha trong thanh ghi TH1 c tnh ton theo cng thc sau (ph thuc vo Baud rate mong mun v gi tr ca thch anh).

Tm li s dng cng ni tip ca 8051, hy thc hin cc bc sau: - Chn ch cho cng ni tip (ng b/d b, 8bit/9bit...), t chn c gi tr cho cc bit trong thanh ghi SCON. Lu xa cc bit TI v RI. 11 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit Chn tc truyn mong mun, t tnh ra gi tr ca thanh ghi TH1. Cho timer1 chy ch Auto Reload 8bit (khng dng ngt trn timer1). t mc u tin ngt v cho php ngt cng ni tip nu mun. Bt u qu trnh truyn d liu bng mt lnh ghi d liu mun truyn vo thanh ghi SBUF. Qu trnh truyn kt thc th c TI s t ng t ln 1. Khi mt khung d liu c nhn y , c RI s t ng t ln 1 v ngi lp trnh lc ny c th dng lnh c thanh ghi SBUF ly d liu nhn c ra x l.

Ngt (Interrupt) 8051 ch c mt s lng kh t cc ngun ngt (interrupt source) hoc c th gi l cc nguyn nhn ngt. Mi ngt c mt vector ngt ring, l mt a ch c nh nm trong b nh chng trnh, khi ngt xy ra, CPU s t ng nhy n thc hin lnh nm ti a ch ny. Bng tm tt cc ngt trong 8051 nh sau: STT Tn ngt C ngt Ngt ngoi 0 khi c tn IE0 hiu tch cc theo kiu chn chn P3.2 Ngt trn timer0 khi TF0 gi tr timer0 trn t gi tr max v gi tr min Ngt ngoi 1 khi c tn IE1 hiu tch cc theo kiu chn chn P3.3 Ngt trn timer1 khi TF1 gi tr timer1 trn t gi tr max v gi tr min Ngt cng ni tip khi TI, RI vi iu khin nhn hoc truyn xong mt byte bng cng ni tip M t Thanh ghi Vector ngt cha c TCON 0x0003

1 INT0

2 Timer0

TCON

0x000B

3 INT1

TCON

0x0013

4 Timer1

TCON

0x001B

5 Serial Port

SCON

0x0023

Vi 8052, ngoi cc ngt trn cn c thm ngt ca timer2 (do vi iu khin ny c thm timer2 trong s cc ngoi vi onchip). Mi ngt c dnh cho mt vector ngt ko di 8byte. V mt l thuyt, nu chng trnh ngn, m to ra cha trong 8 byte, ngi lp trnh hon ton c th t phn chng trnh x l ngt ngay ti vector ngt. Tuy nhin trong hu ht cc trng hp, chng trnh x l ngt c dung lng m to ra ln hn 8byte nn ti vector ngt, ta ch t lnh nhy ti chng trnh x l ngt nm vng nh khc. Nu khng lm v y, m chng trnh x l ngt ny s ln sang, vo vector ngt k cn. 12 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit Lin quan n ngt ch yu c hai thanh ghi l thanh ghi IE v thanh ghi IP.

cho php mt ngt, bit tng ng vi ngt v bit EA phi c t bng 1. Thanh ghi IE l thanh ghi nh a ch bit, do c th dng cc lnh tc ng bit tc ng ring r ln tng bit m khng lm nh hng n gi tr cc bit khc. C ngt hot ng c lp vi vic cho php ngt, iu c ngha l c ngt s t ng t ln bng 1 khi c s kin gy ngt xy ra, bt k s kin c c cho php ngt hay khng. Do vy, trc khi cho php mt ngt, ta nn xa c ca ngt m bo sau khi cho php, cc s kin gy ngt trong qu kh khng th gy ngt na. V d trc khi cho php ngt timer0 m timer 0 chy v trn (d l trn mt hay nhiu ln) th c TF0 s bng 1, nu sau ta cho php ngt timer0 th s gy ra ngt ngay do c trn ang bng 1 (s kin trn gy ngt trong trng hp ny l trn trong qu kh, khng phi s kin ta quan tm n). V vy hy xa c TF0 trc khi cho php ngt trn timer0. Ngoi tr c ca ca ngt ni tip (v c ca ngt timer2 trong 8052), cc c ngt khc u t ng c xa khi CPU thc hin chng trnh phc v ngt. L do l ngt cng ni tip (v ngt timer2 trong 8052) c gy ra bi 2 nguyn nhn (c 2 c cho mi ngt), khi xy ra ngt, ngi lp trnh cn phi kim tra xem c no c t bng 1 phn bit nguyn nhn gy ra ngt l nguyn nhn no x l thch hp. V d ngt cng ni tip l ngt c gy ra bi 1 trong 2 nguyn nhn: vi iu khin nhn xong hoc truyn xong mt byte d liu qua cng ni tip. Xy ra s kin no th c ngt tng ng s t ng c t ln bng 1, nu nhn xong th c RI bng 1, nu truyn xong th c TI bng 1. Trong chng trnh x l ngt, ngi lp trnh phi kim tra c TI hay c RI bng 1 quyt nh x l ngt truyn hay x l ngt nhn. Sau khi kim tra, ngi lp trnh phi vit lnh xa c v vic ny khng c CPU thc hin t ng nh cc c ngt khc.

13 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit Ni n ngt khng th khng ni n mc u tin ca ngt. Mc u tin ca ngt y c th c hiu l s phn bc, quyt nh x l ngt no khi hai hay nhiu ngt xy ra. C 2 c ch phn bc u tin. Th nht l c ch phn bc dnh cho cc ngt xy ra ng thi, hai ngt A v B xy ra cng mt thi im nhn t pha vi iu khin. Th hai l c ch phn bc dnh cho cc ngt xy ra xen k nhau, trong khi ang x l ngt A th ngt B xy ra, vy th trong tng trng hp, CPU s x l ra sao? Hy xem di y. Vi trng hp cc ngt xy ra ng thi, CPU s xem xt mc u tin ca cc ngt , t quyt nh x l ngt c mc u tin cao hn trc. Mc u tin trong trng hp ny l mc u tin cng (c quy nh bi nh sn xut, bi cu trc sn c ca 8051 v ngi lp trnh khng th thay i c).

Nhn vo bng trn ta thy ngt INT0 l ngt c mc u tin cao nht v ngt timer2 l ngt c mc u tin thp nht trong s cc ngt. Nh v y nu ngt ngoi 1 v ngt timer0 cng xy ra mt lc, ngt timer0 s c CPU x l trc, sau mi x l ngt ngoi 1. Vi trng hp xy ra ngt xen k, khi CPU ang x l ngt A m ngt B xy ra, CPU s gii quyt theo 2 hng: tip tc x l ngt A nu mc u tin ca ngt B khng cao hn mc u tin ca ngt A, hoc s dng vic x l ngt A li, chuyn sang x l ngt B nu mc u tin ca ngt B cao hn mc u tin ca ngt A. Mc u tin cho cc ngt trong trng hp ny khng phi l mc u tin cng do nh sn xut quy nh (tc l khng cn c vo bng trn) m l do ngi lp trnh t. Lp trnh vin c th dng thanh ghi IP quy nh mc u tin cho cc ngt mt trong hai mc: mc cao v mc thp. t mc u tin ca mt ngt (trong trng hp xy ra xen k) mc cao, ta t bit tng ng v i ngt trong thanh ghi IP bng 1, mc thp ng vi gi tr bit = 0. Thanh ghi IP (Interrupt Priority) PT2

PS

PT1

PX1

PT0

PX0

Cc bit trong thanh ghi IP tng ng vi cc ngt ng nh trong thanh ghi IE (bit PX0 dnh cho ngt ngoi 0, bit PT0 dnh cho ngt timer 0)

14 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit Mt iu d nhn ra l nu mt ngt c t mc u tin cao (bit tng ng trong thanh ghi IP bng 1) th s chng c ngt no c th xen vo qu trnh x l n c na. Ni v mc u tin ngt, c th dng mt v d tng qut sau, gi s hai ngt timer0 v ngt cng ni tip cng c cho php (cc bit tng ng v bit EA trong thanh ghi IE c t bng 1), bit PT0 = 0, bit PS = 1 th: - Nu hai ngt cng xy ra, ngt timer0 s thng th v c phc v trc. - Nu ngt cng ni tip xy ra trc v ang c x l th ngt timer0 nu c xy ra cng khng th chen vo, lm dng qu trnh x l ngt cng ni tip c. - Nu ngt timer0 xy ra trc v ang c x l m ngt cng ni tip xy ra th CPU s phi dng vic x l ngt timer0 li, chuyn sang x l ngt cng ni tip, x l xong mi quay li x l tip ngt timer0. Nh ni trn, 8051 c 2 ngt ngoi l INT0 v INT1. Ngt ngoi c hiu l ngt c gy ra bi s kin mc lgic 0 (mc in p thp, gn 0V) hoc sn xung (s chuyn mc in p t mc cao v mc thp) xy ra chn ngt tng ng (P3.2 v i ngt ngoi 0 v P3.3 v i ngt ngoi 1). Vic la chn kiu ngt c thc hin bng cc bit IT (Interrupt Type) nm trong thanh ghi TCON. y l thanh ghi iu khin timer nhng 4 bit LSB (bit0..3) c dng cho cc ngt ngoi.

Khi bit ITx = 1 th ngt ngoi tng ng c chn kiu l ngt theo sn xung, ngc li nu bit ITx = 0 th ngt ngoi tng ng c s c kiu ngt l ngt theo mc thp. Cc bit IE l cc bit c ngt ngoi, ch c tc dng trong trng hp kiu ngt c chn l ngt theo sn xung. Khi kiu ngt theo sn xung c chn th ngt s xy ra duy nht mt ln khi c sn xung ca tn hiu, sau khi tn hiu mc thp, hoc c sn ln, hoc mc cao th cng khng c ngt xy ra na cho n khi c sn xung tip theo. C ngt IE s dng ln khi c sn xung v t ng b xa khi CPU bt u x l ngt. Khi kiu ngt theo mc thp c chn th ngt s xy ra bt c khi no tn hiu ti chn ngt mc thp. Nu sau khi x l xong ngt m tn hiu v n mc thp th li ngt tip, c nh vy cho n khi x l xong ngt ln th n , tn hiu ln mc cao ri th thi khng ngt na. C ngt IE trong trng hp ny khng c ngha g c. Thng thng kiu ngt hay c chn l ngt theo sn xung.

B nh thi/B m (Timer/Counter) 8051 c 2 timer tn l timer0 v timer1. Cc timer ny u l timer 16bit, gi tr m max do bng 216 = 65536 (m t 0 n 65535).

15 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit Hai timer c nguyn l hot ng hon ton ging nhau v c lp. Sau khi cho php chy, mi khi c thm mt xung ti u vo m, gi tr ca timer s t ng c tng ln 1 n v, c nh vy cho n khi gi tr tng ln vt qu gi tr max m thanh ghi m c th biu din th gi tr m li c a tr v gi tr min (thng thng min = 0). S kin ny c hiu l s kin trn timer (overflow) v c th gy ra ngt nu ngt trn timer c cho php (bit ETx trong thanh ghi IE = 1). Vic cho timer chy/dng c thc hin bi cc bit TR trong thanh ghi TCON (nh a ch n tng bit).

Khi bit TRx = 1, timerx s m, ngc li khi TRx = 0, timerx s khng m mc d v n c xung a vo. Khi dng khng m, gi tr ca timer c gi nguyn. Cc bit TFx l cc c bo trn timer, khi s kin trn timer xy ra, c s c t ng t ln bng 1 v nu ngt trn timer c cho php, ngt s xy ra. Khi CPU x l ngt trn timerx, c ngt TFx tng ng s t ng c xa v 0. Gi tr m 16bit ca timerx c lu trong hai thanh ghi THx (byte cao) v TLx (byte thp). Hai thanh ghi ny c th ghi/c c bt k lc no. Tuy nhin nh sn xut khuyn co rng nn dng timer (cho bit TRx = 0) trc khi ghi/c cc thanh ghi cha gi tr m. Cc timer c th hot ng theo nhiu ch , c quy nh bi cc bit trong thanh ghi TMOD (khng nh a ch n tng bit).

16 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit

xc nh thi gian, ngi ta chn ngun xung nhp (clock) a vo m trong timer l xung nhp bn trong (dnh cho CPU). Ngun xung nhp ny thng rt u n (c tn s n nh), do t s m ca timer ngi ta c th nhn vi chu k xung nhp tnh ra thi gian tri qua. Timer lc ny c gi chnh xc vi ci tn timer, tc b nh thi. m cc s kin bn ngoi, ngi ta chn ngun xung nhp a vo m trong timer l tn hiu t bn ngoi ( c chun ha v dng xung vung 0V/5V). Cc tn hiu ny s c ni vi cc bit cng c dn knh thm cc tnh nng T0/T1/T2. Khi c s kin bn ngoi gy ra thay i mc xung u vo m, timer s t ng tng ln 1 n v ging nh trng hp m xung nhp bn trong. Lc ny, timer c gi chnh xc vi ci tn khc: counter, tc b m (s kin). Nhn vo bng m t thanh ghi TMOD bn trn, ta c th nhn thy c 2 b 4 bit ging nhau (gm GATEx, C/Tx, Mx0 v Mx1) dnh cho 2 timer0 v 1. ngha cc bit l nh nhau i vi mi timer. Bit GATEx quy nh vic cho php timer m (run timer). Nu GATEx = 0, timerx s m khi bit TRx bng 1, dng khi bit TRx bng 0. Nu GATEx = 1, timerx s ch m khi bit TRx = 1 v tn hiu ti chn INTx = 1, dng khi mt trong hai iu kin trn khng cn tha mn. Thng thng ngi ta dng timer v i GATE = 0, ch dng timer v i GATE = 1 trong trng hp mun o rng xung v lc timer s ch m thi gian khi xung a vo chn INTx mc cao. Bit C/Tx quy nh ngun clock a vo m trong timer. Nu C/Tx = 0, timer s c cu hnh l b nh thi, nu C/Tx = 1, timer s c cu hnh l b m s kin. Hai bit cn li (Mx0 v Mx1) to ra 4 t hp cc gi tr (00,01,10 v 11) ng vi 4 ch hot ng khc nhau ca timerx. Trong 4 ch thng ch dng ch timer/counter 16bit (Mx1 = 0, Mx0 = 1) v ch Auto Reload 8bit timer/counter (Mx1 = 1, Mx0 = 0). Trong ch timer/counter 16bit, gi tr m (cha trong hai thanh ghi THx v TLx) t ng c tng ln 1 n v mi ln nhn c thm mt xung nhp. Khi gi tr m tng v t qu gi tr max = 65535 th s trn v 0, c ngt TFx c t ng t = 1. Ch ny c dng trong cc ng dng m thi gian v m s kin. Trong ch Auto Reload 8bit, gi tr m s ch c cha trong thanh ghi TLx, cn gi tr ca thanh ghi THx bng mt s n (t 0 n 255) do ngi lp trnh a vo. Khi c thm 1 xung nhp, gi tr m trong TLx ng nhin cng tng ln 1 n v nh bnh thng. Tuy nhin trong trng hp ny, gi tr m ln nht l 255 ch khng phi 65535 nh trng hp trn v timer/counter ch cn 8bit. Do vy s kin trn lc ny xy ra nhanh hn, ch cn v t qu 255 l gi tr m s trn. C ngt TFx vn c t ng t = 1 nh trong trng hp trn 16bit. im khc bit l thay v trn v 0, gi tr THx s c t ng np li (Auto Reload) vo thanh ghi TLx, do timer/counter sau khi trn s c gi tr bng n (gi tr cha trong THx) v s m t gi tr n tr i. Ch ny c dng trong vic to Baud rate cho truyn thng qua cng ni tip.

17 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit

s dng timer ca 8051, hy thc hin cc bc sau: - Quy nh ch hot ng cho timer bng cch tnh ton v ghi gi tr cho cc bit trong thanh ghi TMOD. - Ghi gi tr m khi u mong mun vo 2 thanh ghi m THx v TLx. i khi ta khng mun timer/counter bt u m t 0 m t mt gi tr no thi im trn gn hn, hoc chn hn trong tnh ton sau ny. V d nu cho timer m t 15535 th sau 50000 xung nhp (tc 50000 micro giy v i thch anh 12MHz) timer s trn, v thi gian mt giy c th d dng tnh ra kh chnh xc = 20 ln trn ca timer (ng nhin mi ln trn li phi np li gi tr 15535). - t mc u tin ngt v cho php ngt trn timer (nu mun). - Dng bit TRx trong thanh ghi TCON cho timer chy hay dng theo mun.

18 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit

Chng II: Cc ngn ng lp trnh cho vi iu khin


Trong k thut vi x l ni chung, ngn ng lp trnh thng c chia lm 2 loi: Ngn ng bc thp v Ngn ng bc cao. Ngn ng bc thp l ngn ng my hoc ngn ng gn v i my. Ngn ng my l ngn ng bc thp nht, chnh l m my dng nh phn. Lp trnh vi ngn ng ny ng ngha vi vic lp trnh vin phi vit tng bit 0/1 cho tng m lnh c th, ng nhin l vic rt vt v v kh khn. K n l ngn ng gn vi my, chnh l hp ng (Assembly). Vi ngn ng ny, lp trnh vin c th vit cc lnh c th dng k t, tun theo mt tp hp cc k t nht nh gi l tp lnh. Ni cch khc, cp ny, lp trnh vin s vit cc lnh dng m gi nh (mnemonic) thay v phi vit cc bit 0/1 cho cc m lnh c th. Trnh hp ng (Assembler) - mt phn mm trn my tnh - s m nhim vic dch cc lnh do lp trnh vin vit dng m gi nh sang dng m my 0/1. Ngn ng bc cao l cc ngn ng gn vi ngn ng con ngi hn, do vic lp trnh bng cc ngn ng ny tr nn d dng v n gin hn. C th k n mt s ngn ng lp trnh bc cao nh C, Basic, Pascal trong C l ngn ng thng dng hn c trong k thut vi x l. V bn cht, s dng cc ngn ng ny thay cho ngn ng bc thp l s gim ti cho lp trnh vin trong vic nghin cu cc tp lnh v xy dng cc cu trc gii thut. Chng trnh vit bng ngn ng bc cao cng s c mt phn mm trn my tnh gi l trnh bin dch (Compiler) chuyn sang dng hp ng trc khi chuyn sang m my. Mi loi ngn ng c u v nhc im ring. Vi hp ng (i din cho ngn ng bc thp): u im: m my sinh ra rt ngn gn, thi gian x l ca CPU v th cng c gim thiu, trnh hp ng (Assembler) ca cc h vi iu khin u min ph i vi ngi s dng. Nhc im: kh khn trong vic tip cn vi tp lnh (tuy dng m gi nh nhng vn cha thc s gn vi ngn ng con ngi), cc cu trc gii thut (ifelse, for, switchcase) hu ht khng c sn, v vy qu trnh lp trnh kh khn, mt nhiu thi gian v cng sc, vic k tha v pht trin l gn nh khng th. Vi ngn ng C (i din cho ngn ng bc cao): u im: ngn ng gn vi ngn ng con ngi, cc cu trc gii thut c sn, do to s thun tin, d dng trong s din t thut ton, vic k tha v pht trin l kh thi, tn t thi gian.

19 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit Nhc im: m my sinh ra thng di hn so vi hp ng (tt nhin cng cn ty vo nng lc ca lp trnh vin), thi gian x l ca CPU v th cng di hn, cc trnh bin dch (Compiler) ty theo cp ti u m c thit k v bn vi gi rt cao. Trong thc t hin nay, cc vi iu khin c ti nguyn (resourse) ni chung v b nh (memory) ni ring rt phong ph v di do. Mt khc cc trnh bin dch (Compiler) cng c thit k ngy cng ti u, h tr rt nhiu cc thao tc x l gii thut, cho php trn lnh hp ng vo nhng tnh hung yu cu kht khe v mt thi gian v lng m my sinh ra. Chnh v th yu cu v ti gin m my khi lp trnh khng cn qu bc xc nh trc kia. S dng ngn ng bc cao gip rt ngn rt nhiu thi gian nghin cu, thit k sn phm trc khi a ra th trng (time to market), nng cao kh nng k tha, pht trin, ci tin cc tnh nng sn phm, t ko di chu k sng (life time) ca sn phm trn th trng. l l do ti sao ngn ng bc cao (in hnh l ngn ng C) l s la chn ca hu ht nhng ngi tc nghip trn lnh v c k thut vi x l. -

20 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit

Chng III: Hng dn s dng trnh bin dch Keil C cho h vi iu khin 8051
Trong s cc trnh bin dch C (C Compiler) cho h vi iu khin 8051, Keil C l mt trnh bin dch ti u, c s dng rng ri. Chng ny ch yu hng dn s dng trnh bin dch ny trong vic thit k phn mm cho h vi iu khin 8051. Ci t Keil C chy c trn cc H iu hnh Win98, Windows2000, WindowsME, WindowsXP. ci t, hy chy file setup.exe trong th mc Setup ca Keil C trn a CD km theo. Tip hy theo cc ch dn ca giao din ci t. To mt Project mi

Tip g tn project vo hp thoi. Chn ng dn v bm OK.

21 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit

Chn tip loi vi iu khin s s dng (trong trng hp ny l AT89S52).

Chn cu tr li No khi c hi Copy Standart Startup Code to Project Folder and Add File to Project?

22 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit To mt file mi

Sau khi Keil to cho ta mt file mc nh dng Text, hy Save File li di dng mong mun (*.c nu l file m ngun, hoc *.h nu l file header). Mt Project ch yu s dng hai loi file ni trn. Tip thc hin son tho cc file theo mun.

23 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit Cu trc mt chng trnh

Mt s lu khi lp trnh vi Keil C Khai bo cc file header Khi s dng loi vi iu khin 8051 no ( la chn trong khi to Project mi) th phi s dng file header ca loi . Trong trng hp ny ta s dng file AT89X52.H cho vi iu khi AT89S52. Cc file header c tm trong th mc C51\INC\ ca Keil C ci ra. nh ngha hng s trong b nh chng trnh unsigned char code <tn bin>; V d nh ngha mt mng 3 hng s: unsigned char code array[3] = {1,2,3}; nh ngha cc chng trnh con phc v ngt void <tn chng trnh> (void) interrupt <tn Vector ngt> <tn chng trnh> do lp trnh vin ty t. <tn Vector ngt> c tra phn cui file header (AT89X52.H). Khng nn vit lnh dng biu thc di m nn tch ra thnh tng php tnh nh thc hin ln lt.

24 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit Cc tnh nng khc ging nh ANSI C. Bin dch Project to ra file m my dng *.hex np vo chip, click chut phi nh hnh v.

Trong hp thoi hin ra, hy check vo Creat Hex File nh ch dn.

25 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit Cui cng chn theo Menu nh hnh nh, hoc bm phm F7.

File m my *.hex to ra s nm trong cng mt th mc v i cc file khc ca Project. S dng phn mm SPI Flash Programmer c sn trn a CD km theo m file m my (bng nt Open) v np xung chip (nt Program). Phn mm ny chy trc tip khng cn ci t v chy tt nht trn cc Win98, 2000 v ME, v i WindowsXP i khi khng tng thch mt s rt t cc trng hp.

26 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit

ChngIV: Hng dn thc hnh mt s bi th nghim mu vi 8051 Starter Kit


Bi 1: Ghp ni vi LED n Light Emitting Diode
Nguyn l thit k

LED n c ni trc tip v i cng vo ra ca vi iu khin AT89, s dng in tr hn dng 470 Ohm. Vi iu khin a ra mc logic 0 lm n sang, mc logic 1 lm n tt. V d: Thc hin nhp nhy LED. // Khai bao cac file header #include <AT89X52.H> #include <Kit8051.h> // Khai bao cac ham void Delay(unsigned int n); void InitSystem(void); // Dinh nghia cac ham void Delay(unsigned int n) { unsigned int i,j; for(i=0;i<n;i++) for(j=0;j<100;j++);

27 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit } void InitSystem(void) { LCD_E = 0; } // Chuong trinh chinh void main(void) { // Khoi tao he thong InitSystem(); // Vong lap vo tan while(1) { P0 = ~P0; Delay(1000); } }

28 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit

Bi 2: Ghp ni vi LED 7 thanh 7 Segment LED


Nguyn l thit k

LED 7 thanh s dng l loi Anode chung. Cc LED 7 thanh c ni chung chn d liu vi nhau v ni vi mt cng vo ra 8 bit ca vi iu khin. Vic cp in cho tng LED c thc hin bi cc transistor, iu khin bi cc chn vo ra khc ca vi iu khin AT89. Cc LED c cp ngun cho sng cc thi im khc nhau, vic qut cc LED ny c thc hin lin tc, do hin tng nh lu vng mc m con ngi nhn thy cc LED hin th mt cch lin tc. V d: Hin th 4 s 1234 4 LED 7 thanh. // Khai bao cac file header #include <AT89X52.H> #include <Kit8051.h>

29 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit // Khai bao cac bien toan cuc unsigned char code LED_code[] = {Number0, Number1, Number2, Number3, Number4, Number5, Number6, Number7, Number8, Number9}; // Khai bao cac ham void Delay(unsigned int n); void InitSystem(void); void Display(unsigned char digit1, unsigned char digit2, unsigned char digit3, unsigned char digit4);

// Dinh nghia cac ham void Delay(unsigned int n) { unsigned int i,j; for(i=0;i<n;i++) for(j=0;j<100;j++); } void Display(unsigned char digit1, unsigned char digit2, unsigned char digit3, unsigned char digit4) { // Hien thi so thu nhat LED = LED_code[digit1]; K1 = 0; Delay(1); K1 = 1;

30 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit // Hien thi so thu hai LED = LED_code[digit2]; K2 = 0; Delay(1); K2 = 1; // Hien thi so thu ba LED = LED_code[digit3]; K3 = 0; Delay(1); K3 = 1;

// Hien thi so thu tu LED = LED_code[digit4]; K4 = 0; Delay(1); K4 = 1; } void InitSystem(void) { LCD_E = 0; } // Chuong trinh chinh void main(void) { // Khoi tao he thong InitSystem(); // Vong lap vo tan while(1) { Delay(10); Display(1,2,3,4); } }

31 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit

Bi 3: S dng ngt ngoi ca vi iu khin 8051 External Interrupt


Nguyn l thit k

Ngt ngoi ca AT89 c kch hot bi mt phm bm bn ngoi. Khi phm bm, mc lgic 0 s c a vo chn ngt ca vi iu khin, khi nh phm, mc lgic tr li mc cao. T C8 c mc nhm hn ch rung phm do c kh ch to khng hon ton chnh xc ca cng tc. V d: Nhn tn hiu phm bm bn ngoi bng ngt, th hin bng vic o trng thi LED n. // Khai bao cac file header #include <AT89X52.H> #include <Kit8051.h> // Khai bao cac bien toan cuc // Khai bao cac ham void InitSystem(void); // Dinh nghia cac ham void InitSystem(void) { // Cam LCD LCD_E = 0; // Chon ngat theo suon xuong IT1 = 1; // Cho phep ngat ngoai 1 EX1 = 1; EA = 1; } void ExternalInterrupt(void) interrupt IE1_VECTOR {

32 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit // Dao trang thai cua cong P0 (trang thai cac LED) khi co ngat P0 = ~P0; } // Chuong trinh chinh void main(void) { // Khoi tao he thong InitSystem(); // Vong lap vo tan while(1); }

Bi 4: Ghp ni vi ma trn phm Button Matrix


Nguyn l thit k

Phm bm c ni thnh ma trn 3 hng x 3 ct, cc hng v ct c ni vi cc chn cng vo ra ca vi iu khin AT89. Khi mt phm c bm, n s ni mt hng v mt ct tng ng. Thut ton qut phm c s dng l ln lt tm hng v tm ct (hoc ngc li). Khi tm hng, cc hng s c t lm u vo, cc ct c t lm u ra mc thp. Sau kim tra cc hng xem c hng no mc thp hay khng (c phm no bm gy ra ni v i ct hay khng)? Sau khi xc nh c hng s t cc ct lm u vo, hng va tm c lm u ra mc

33 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit thp. Vic kim tra c tin hnh vi cc ct. Sau khi xc nh c hng v ct s suy ra phm c bm. V d: Qut ma trn phm v hin th s th t phm c bm ln LED 7 thanh. // Khai bao cac file header #include <AT89X52.H> #include <Kit8051.h> // Khai bao cac bien toan cuc unsigned char code LED_code[] = {Number0, Number1, Number2, Number3, Number4, Number5, Number6, Number7, Number8, Number9}; unsigned char stt=0; // Khai bao cac ham void Delay(unsigned int n); void InitSystem(void); void ScanMatrix(void); void Display(unsigned char number);

// Dinh nghia cac ham void Delay(unsigned int n) { unsigned int i,j; for(i=0;i<n;i++) for(j=0;j<100;j++); } void Display(unsigned char number) { // Hien thi so thu tu phim bam ra LED cuoi cung LED = LED_code[number]; K4 = 0; 34 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit Delay(1); K4 = 1; } void InitSystem(void) { // Cam LCD LCD_E = 0; // Cau hinh Timer0 o che do 16 bit TMOD = 0x01; // Cho phep ngat tran Timer 0 ET0 = 1; EA = 1; // Cho Timer 0 chay TR0 = 1; } void Timer0Interrupt(void) interrupt TF0_VECTOR { // Dung Timer 0 TR0 = 0; // Nap lai gia tri = 55536--> con 10000 clock nua la tran TH0 = (unsigned char)(55536>>8); TL0 = (unsigned char)(55536); // Tiep tuc cho chay Timer 0 TR0 = 1; Display(stt); } void ScanMatrix(void) { // Chuyen cac hang lam dau vao, cac cot lam dau ra muc thap ROW_1 = 1; ROW_2 = 1; ROW_3 = 1; COL_1 = 0; COL_2 = 0; COL_3 = 0; // Kiem tra xem co phim bam? if((!ROW_1)|(!ROW_2)|(!ROW_3)) { // Chong rung phim 35 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit Delay(100); // Kiem tra lai // Neu la hang 1 co phim bam if(!ROW_1) { // Chuyen cac cot lam dau vao COL_1 = 1; COL_2 = 1; COL_3 = 1; // Hang 1 lam dau ra muc thap ROW_1 = 0; // Kiem tra cac cot de xac dinh phim if(!COL_1) stt = 1; else if (!COL_2) stt = 2; else if (!COL_3) stt = 3; } // Neu la hang 2 co phim bam if(!ROW_2) { // Chuyen cac cot lam dau vao COL_1 = 1; COL_2 = 1; COL_3 = 1; // Hang 2 lam dau ra muc thap ROW_2 = 0; // Kiem tra cac cot de xac dinh phim if(!COL_1) stt = 4; else if (!COL_2) stt = 5; else if (!COL_3) stt = 6; } // Neu la hang 3 co phim bam if(!ROW_3) { // Chuyen cac cot lam dau vao COL_1 = 1; COL_2 = 1; COL_3 = 1; // Hang 3 lam dau ra muc thap ROW_3 = 0; 36 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit // Kiem tra cac cot de xac dinh phim if(!COL_1) stt = 7; else if (!COL_2) stt = 8; else if (!COL_3) stt = 9; } } } // Chuong trinh chinh void main(void) { // Khoi tao he thong InitSystem(); // Vong lap vo tan while(1) { ScanMatrix(); } }

37 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit

Bi 5: Ghp ni vi my tnh qua giao din RS232 RS232 Communication


Nguyn l thit k

Giao thc truyn thng gia cng COM ca my tnh v cng ni tip UART ca vi iu khin AT89 l tng thch. Tuy nhin v mt in hc th c s khc bit v mc lgic gia my tnh v vi iu khin. Vi mch MAX232CPE c s dng to ra s tng thch v mt in hc, t ng chuyn i mc lgic gia vi iu khin v my tnh. V d: Thit k thit b t ng truyn tr li PC nhng d liu nhn c. // Khai bao cac file header #include <AT89X52.H> #include <Kit8051.h>

38 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit // Khai bao cac bien toan cuc // Khai bao cac ham void InitSystem(void); // Dinh nghia cac ham void InitSystem(void) { // Cam LCD LCD_E = 0; // Khoi tao cong noi tiep SCON = 0x50; // Khoi tao Timer1 dung de tao Baud Rate TMOD = 0x20; TH1 = 0xFD; TR1 = 1; // Cho phep ngat cong noi tiep ES = 1; EA = 1; } void SerialPortInterrupt(void) interrupt SIO_VECTOR { unsigned char temp; // Kiem tra xem ngat la do nhan duoc du lieu hay truyen xong du lieu? if(RI==1) { RI = 0; // Doc du lieu nhan duoc tu bo dem temp = SBUF; // Truyen tra lai may tinh SBUF = temp; } else { TI = 0; } } // Chuong trinh chinh 39 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit void main(void) { // Khoi tao he thong InitSystem(); // Vong lap vo tan while(1); }

Bi 6: Ghp ni vi LCD Liquid Crystal Display


Nguyn l thit k

40 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit LCD l thit b hin th chun, tit kim nng lng v khng i hi phi qut lin tc nh LED 7 thanh. Cc loi LCD k t (character LCD) u tun theo mt tp lnh chung.

Cc thao tc ghi c c thc hin theo biu thi gian sau:

41 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit V d: Hin th dng ch Truong CDSP HN ln dng th nht, dng ch 8051 Starter Kit ln dng th hai ca LCD. // Khai bao cac file header #include <AT89X52.H> #include <Kit8051.h> // Khai bao cac bien toan cuc unsigned char code string1[] = "Truong CDSP HN"; unsigned char code string2[] = "8051 Starter Kit"; // Khai bao cac ham void InitSystem(void); void Delay(unsigned int n); void InitLCD(void); void WriteCommand(unsigned char command); void WriteCharacter(unsigned char character); void WriteLCD(unsigned char x); void SendString2LCD(unsigned char code *p); void DisplayText(void); // Dinh nghia cac ham void InitSystem(void) { // Cam LCD LCD_E = 0; // Sang den backlight LCD_BL = 0; // Tre de LCD tu khoi tao ben trong (it nhat 15ms) Delay(100); // Tat den backlight LCD_BL = 1; InitLCD(); } void Delay(unsigned int n) { unsigned int i,j; for(i=0;i<n;i++) for(j=0;j<100;j++); } 42 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit void InitLCD(void) { WriteCommand(0x30); WriteCommand(0x30); WriteCommand(0x30); // 8 bit, 2 lines, font 5x7 WriteCommand(0x38); // Display on, hide cursor WriteCommand(0x0C); // Xoa man hinh WriteCommand(0x01); } void DisplayText(void) { // Dich con tro den vi tri thu 2, dong thu nhat WriteCommand(0x81); SendString2LCD(string1); // Dich con tro den dau dong thu hai WriteCommand(0xC0); SendString2LCD(string2); } void WriteLCD(unsigned char x) { LCD_RW = 0; LCD_DATA = x; LCD_E = 1; LCD_E = 0; Delay(5); } void WriteCommand(unsigned char command) { LCD_RS = 0; WriteLCD(command); } void WriteCharacter(unsigned char character) { 43 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit LCD_RS = 1; WriteLCD(character); } void SendString2LCD(unsigned char code *p) { unsigned char i=0; while(p[i]!=0) { WriteCharacter(p[i]); i++; Delay(200); } } // Chuong trinh chinh void main(void) { // Khoi tao he thong InitSystem(); DisplayText(); // Vong lap vo tan while(1); }

Bi 7: Ghp ni vi ADC Analog to Digital Converter


Nguyn l thit k

44 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit ADC0804 l mt trong nhng IC cho php chuyn i in p dng tng t (analog) sang gi tr dng s (digital), c ng dng trong rt nhiu cc thit b o lng. u vo in p c th trong di t 0 n +5V. Gi tr s u ra trong di t 0 n 255. Cc tn hiu D0-D7 dng a d liu chuyn i xong ti vi iu khin. Cc tn hiu CS, RD, WR (u tch cc mc thp) dng ra lnh cho ADC bt u chuyn i hoc a d liu chuyn i ra. K t khi nhn c lnh yu cu chuyn i t vi iu khin, ADC s mt mt khong thi gian thc hin nhim v. Trong khong thi gian ny tnh hiu INTR s mc cao (bo bn). Khi qu trnh chuyn i kt thc, tn hiu ny s t ng tr li mc thp thng bo rng ADC chuyn i xong v c th thc hin ln chuyn i tip theo. Lp trnh vin c th thm d tn hiu INTR bit khi no ADC bn, khi no ADC sn sng hoc n gin ch cn i mt vi mili giy trc khi c kt qu hoc ra lnh chuyn i tip theo. V d: o in p (trong di t 0 n +5V) c to ra t chit p v hin th gi tr o c ln LCD. // Khai bao cac file header #include <AT89X52.H> #include <Kit8051.h> // Khai bao cac bien toan cuc unsigned char code string1[] = "8051 Starter Kit"; unsigned char code string2[] = "Dien ap = "; unsigned char voltage,digit1,digit2; // Khai bao cac ham void InitSystem(void); void Delay(unsigned int n); void DelayShort(void); void InitLCD(void); void WriteCommand(unsigned char command); void WriteCharacter(unsigned char character); void WriteLCD(unsigned char x); void SendString2LCD(unsigned char code *p); void DisplayText(void); void DisplayVoltage(void); void Convert(); void Calculate();

45 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit // Dinh nghia cac ham void InitSystem(void) { // Cam LCD LCD_E = 0; // Sang den backlight LCD_BL = 0; // Tre de LCD tu khoi tao ben trong (it nhat 15ms) Delay(100); // Tat den backlight LCD_BL = 1; InitLCD(); } void Delay(unsigned int n) { unsigned int i,j; for(i=0;i<n;i++) for(j=0;j<100;j++); } void DelayShort(void) { unsigned char i; for(i=0;i<10;i++); } void InitLCD(void) { WriteCommand(0x30); WriteCommand(0x30); WriteCommand(0x30); // 8 bit, 2 lines, font 5x7 WriteCommand(0x38); // Display on, hide cursor WriteCommand(0x0C); // Xoa man hinh WriteCommand(0x01); } void DisplayText(void) 46 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit { // Dich con tro den dau dong thu nhat WriteCommand(0x80); SendString2LCD(string1); // Dich con tro den dau dong thu hai WriteCommand(0xC1); SendString2LCD(string2); // Dich con tro den vi tri don vi do WriteCommand(0xCE); WriteCharacter('V'); } void WriteLCD(unsigned char x) { LCD_RW = 0; LCD_DATA = x; LCD_E = 1; LCD_E = 0; Delay(5); } void WriteCommand(unsigned char command) { LCD_RS = 0; WriteLCD(command); } void WriteCharacter(unsigned char character) { LCD_RS = 1; WriteLCD(character); } void SendString2LCD(unsigned char code *p) { unsigned char i=0; while(p[i]!=0) { WriteCharacter(p[i]); i++; Delay(50); } 47 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit } void Convert(void) { ADC_CS = 0; DelayShort(); ADC_WR = 0; DelayShort(); ADC_WR = 1; DelayShort(); ADC_CS = 1; // Tre cho chuyen doi xong Delay(10); // Chuyen Port thanh cong vao de chuan bi doc du lieu ADC_DATA = 0xFF; ADC_CS = 0; DelayShort(); ADC_RD = 0; DelayShort(); // Doc du lieu vao voltage = ADC_DATA; ADC_RD = 1; DelayShort(); ADC_CS = 1; } void Calculate(void) { unsigned int temp; temp = (voltage*10); temp = temp/52; // tinh ra dien ap tu gia tri ADC dua ve // tach phan nguyen va phan thap phan digit1 = (unsigned char) (temp/10); digit2 = (unsigned char)(temp%10); // chuyen sang ma ASCII digit1 = digit1 + 0x30; digit2 = digit2 + 0x30; } void DisplayVoltage(void) 48 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit { // Dua con tro den vi tri can hien thi WriteCommand(0xCB); WriteCharacter(digit1); WriteCharacter('.'); WriteCharacter(digit2); } // Chuong trinh chinh void main(void) { // Khoi tao he thong InitSystem(); DisplayText(); // Vong lap vo tan while(1) { Convert(); Calculate(); DisplayVoltage(); } }

Bi 8: Thit k h giao tip t xa bng hng ngoi Infrared Communication


Nguyn l thit k

49 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit Mch pht c thit k v i mt transistor cng sut nh c th ng ct ngun cp cho LED hng ngoi tn s ~36KHz. y l tn s c dng trong cc thit b thu pht hng ngoi ph bin trong sinh hot (TV, iu ha nhit , u a CD,)

Mch thu c thit k vi mt thu hng ngoi sn c trn th trng. Mt thu ny c thit k v i b lc thng mt di, ch cho php cc tn s xp x 36KHz i qua. Do loi mt thu ny c bit nhy cm v i nhiu ngun nui nn u vo ngun nui cho mt c thit k vi mt mch lc RC thay v ni trc tip ln ngun ca mch th nghim. Bnh thng u ra ca mt thu mc cao, khi nhn c tn hiu hng ngoi tn s ~36KHz truyn ti, u ra ca mt thu s lp tc xung mc lgic thp (mc 0). Khi ht tn hiu hng ngoi, u ra li tr v mc logic cao (mc 1). Nh vo vic o khong thi gian mc thp ca u ra, ngi ta c th bit c thi gian pht xung tng ng bn pht, t suy ra m c truyn i. Trong v d sau s s dng tia hng ngoi truyn i 3 loi m, phn bit nhau bi thi gian pht i (2ms, 4ms v 6ms). Cc ngng phn bit cc m v i nhau v cc m vi nhiu l 1ms, 3ms, 5ms v 7ms. M th nht ko di 2ms tng ng vi khong 80 xung pht i tn s ~36KHz. M ny c pht i khi mch bn pht nhn c tn hiu t mt trong ba phm bm ca hng 1. M th hai ko di 4ms tng ng vi khong 160 xung pht i tn s ~36KHz. M ny c pht i khi mch bn pht nhn c tn hiu t mt trong ba phm bm ca hng 2. M th ba ko di 6ms tng ng vi khong 240 xung pht i tn s ~36KHz. M ny c pht i khi mch bn pht nhn c tn hiu t mt trong ba phm bm ca hng 3. V d: Thit k h thu pht tn hiu hng ngoi, thc hin thu pht ba loi m v hin th ln LCD loi m thu c. Code mu cho bn pht // Khai bao cac file header #include <AT89X52.H> 50 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit #include <Kit8051.h>

// Khai bao cac bien toan cuc // Khai bao cac ham void Delay(unsigned int n); void Delay12us(void); void InitSystem(void); void ScanMatrix(void); void Transmit(unsigned char n);

// Dinh nghia cac ham void Delay(unsigned int n) { unsigned int i,j; for(i=0;i<n;i++) for(j=0;j<100;j++); } void Delay12us(void) { unsigned char i; i++; i++; i++; i++; i++; i++; } void InitSystem(void) { // Cam LCD LCD_E = 0; } void ScanMatrix(void) { // Chuyen cac hang lam dau vao, cac cot lam dau ra muc thap ROW_1 = 1; ROW_2 = 1; 51 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit ROW_3 = 1; COL_1 = 0; COL_2 = 0; COL_3 = 0; // Kiem tra xem co phim bam? if((!ROW_1)|(!ROW_2)|(!ROW_3)) { // Chong rung phim Delay(100); // Kiem tra lai // Neu la hang 1 co phim bam if(!ROW_1) { Transmit(80); // Doi nha phim while(!ROW_1); } // Neu la hang 2 co phim bam if(!ROW_2) { Transmit(160); // Doi nha phim while(!ROW_2); } // Neu la hang 3 co phim bam if(!ROW_3) { Transmit(240); // Doi nha phim while(!ROW_3); } } } void Transmit(unsigned char n) { unsigned char i; for(i=0;i<n;i++) { IR_LED = 0; 52 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit Delay12us(); IR_LED = 1; Delay12us(); } } // Chuong trinh chinh void main(void) { // Khoi tao he thong InitSystem(); // Vong lap vo tan while(1) { ScanMatrix(); } } Code mu cho bn thu // Khai bao cac file header #include <AT89X52.H> #include <Kit8051.h> // Khai bao cac bien toan cuc unsigned char code string1[] = "8051 Starter Kit"; unsigned char code string2[] = "Ma nhan duoc = "; // Khai bao cac ham void InitSystem(void); void Delay(unsigned int n); void InitLCD(void); void WriteCommand(unsigned char command); void WriteCharacter(unsigned char character); void WriteLCD(unsigned char x); void SendString2LCD(unsigned char code *p); void DisplayText(void); // Dinh nghia cac ham void InitSystem(void) { // Cam LCD 53 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit LCD_E = 0; // Tre de LCD tu khoi tao ben trong (it nhat 15ms) Delay(100); InitLCD(); // Khoi tao Timer0 o che do 16bit TMOD = 0x01; // Cau hinh ngat ngoai 0 theo suon xuong IT0 = 0; // Cho phep ngat ngoai 0 EX0 = 1; EA = 1; } void Delay(unsigned int n) { unsigned int i,j; for(i=0;i<n;i++) for(j=0;j<100;j++); } void InitLCD(void) { WriteCommand(0x30); WriteCommand(0x30); WriteCommand(0x30); // 8 bit, 2 lines, font 5x7 WriteCommand(0x38); // Display on, hide cursor WriteCommand(0x0C); // Xoa man hinh WriteCommand(0x01); } void DisplayText(void) { // Dich con tro den vi tri thu 2, dong thu nhat 54 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit WriteCommand(0x80); SendString2LCD(string1); // Dich con tro den dau dong thu hai WriteCommand(0xC0); SendString2LCD(string2); } void WriteLCD(unsigned char x) { LCD_RW = 0; LCD_DATA = x; LCD_E = 1; LCD_E = 0; Delay(5); } void WriteCommand(unsigned char command) { LCD_RS = 0; WriteLCD(command); } void WriteCharacter(unsigned char character) { LCD_RS = 1; WriteLCD(character); } void SendString2LCD(unsigned char code *p) { unsigned char i=0; while(p[i]!=0) { WriteCharacter(p[i]); i++; Delay(100); } } void ExternalInterrupt0(void) interrupt IE0_VECTOR { unsigned char temp; // Xoa Timer 0 55 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit TH0 = 0; TL0 = 0; // Cho Timer 0 chay TR0 = 1; // Doi cho den khi tin hieu nhan duoc ket thuc while(!P3_2); // Dung Timer 0 TR0 = 0; // So sanh gia tri cua Timer voi cac nguong de xac dinh ma nhan duoc temp = TH0; if((temp>THRESHOLD_1)&&(temp<THRESHOLD_2)) { // Dua con tro den vi tri mong muon WriteCommand(0xCF); // Hien thi ma nhan duoc WriteCharacter('1'); } else if((temp>THRESHOLD_2)&&(temp<THRESHOLD_3)) { // Dua con tro den vi tri mong muon WriteCommand(0xCF); // Hien thi ma nhan duoc WriteCharacter('2'); } else if((temp>THRESHOLD_3)&&(temp<THRESHOLD_4)) { // Dua con tro den vi tri mong muon WriteCommand(0xCF); // Hien thi ma nhan duoc WriteCharacter('3'); } } // Chuong trinh chinh void main(void) { // Khoi tao he thong InitSystem(); DisplayText(); // Vong lap vo tan 56 PDF created with pdfFactory Pro trial version www.pdffactory.com

cng bi ging 8051 Starter Kit while(1); }

File header cho ton b cc chng trnh mu trn bao gm file AT89X52.H c sn ca trnh bin dch Keil. Ngoi ra cn c thm mt file header khc tn l Kit8051.h do ngi s dng t to ra nhm nh ngha cc hng s, cc tn gi khc ca cc tn hiu giao tip, iu khin. Chi tit xin tham kho trong a CD km theo.

57 PDF created with pdfFactory Pro trial version www.pdffactory.com

You might also like