You are on page 1of 87

Chng 1 : n li v ngn ng C theo chun ANSI

1.1. Cu trc c bn ca mt chng trnh C Trc tin ta xt v du: Vit chng trnh C hin dng thng bo Cho cc bn n vi chng trnh C ra mn hnh. C th chng trnh /* Chng trnh th d*/ // my first program in C #include <stdio.h> #include <conio.h> void main() { clrscr();/* Cu lnh xo mn hnh*/ printf(Cho cc bn n vi chng trnh C!); getch(); } Khai bo tp tiu Trong ngn ng lp trnh C khi s dng cc hm chun trong cc th vin chun chng ta phi khai bo tp tiu (header file) cha cc hm nguyn mu tng ng cc hm , cc lnh c bt u bng #include theo sau l tp tiu C hai cch vit nh sau: Cch 1: #include <[ng dn\] tentep> V d: #include <a:\Baitap\Bai1.C> #include <stdio.h> Cch 2: #include [ng dn\]tentep V d: #include a:\Baitap\Bai2.C #include <conio.h> Cch 1 t ng tm tentep trong th mc INCLUDE Cch 2 t ng tm tentep trong th mc hin thi nu khng c th tm trong th mc INCLUDE Trong th d trn chng ta c s dng hm printf(...) l hm chun c khai bo trong tp tiu stdio.h v hm getch(), clrscr() c khai bo trong tp tiu
http://www.ebook.edu.vn 1

conio.h. Do trong chng trnh c hai dng khai bo sau u chng trnh: #include <stdio.h> #include <conio.h> Ch thch v du kt thc cu lnh Trong ngn ng lp trnh C nhng phn c vit trong /*...*/ c gi l phn ch thch. Mi k t nm trong /*...*/ khi dch chng trnh dich b qua, ta c php dng chng minh ho cho cc thnh phn chng trnh lm cho chng trnh d hiu, mch lc. Li ch thch c th xut hin bt k u trong chng trnh v c th tri trn nhiu dng khc nhau trong chng trnh. Trong chng trnh vit bng ngn ng C mi cu lnh c th vit trn mt hay nhiu dng v phi kt thc bng du chm phy(;). 1.2. Cc yu t c bn ca ngn ng C - ANSI 1.2.1 B ch vit Ngn ng C c xy dng trn b k t sau: Cc ch ci hoa: A B C .... Z Cc ch ci thng:a b c ... z Cc ch s:0 1 2... 9 Cc du chm cu: , . ; : / ? [ ] { } @ # $ % ^ * & ( ) + - = < > ... Cc du ngn cch khng nhn thy nh du cch, du nhy cch tab, du xung dng Du gch ni di _ 1.2.2 T kho L nhng t c mt ngha hon ton xc nh trong chng trnh: V d: void struct class while .... Khng c dng t kho t tn cho cc hng, bin, mng, hm .... T kho phi vit bng ch thng V d t kho vit ng: struct V d t kho vit sai: Struct

http://www.ebook.edu.vn

1.2.3 Tn L mt dy k t c dng ch tn hng, tn bin, tn mng, tn hm...Tn c to thnh t cc ch ci a..z, A..Z, ch s 0..9, du gch di. Tn khng c bt u bng ch s, cha cc k t c bit nh du cch, du php ton... Tn khng c t trng vi t kho. V d: Giai_Phuong_Trinh_Bac2 abc123 Ch : -Trong ngn ng lp trnh C tn c phn bit ch hoa v ch thng -Thng thng ch hoa thng c dng t tn cho cc hng, cn cc i lng khc th dng ch thng. 2.1.4 Mt s kiu d liu c bn - Kiu k t (Char) Mt gi tr kiu char chim mt byte v biu din c mt k t trong bng m ASCII. - Kiu s nguyn Mt gi tr kiu s nguyn l mt phn t ca mt tp cc s nguyn m my tnh c th biu din. Trong ngn ng lp trnh C c nhiu kiu d liu s nguyn vi di gi tr khc nhau c th: Kiu Char Unsigned char Int Unsigned int Short int Unsigigned Short Long Int Unsigigned Long - Kiu s thc Mt gi tr kiu s thc l mt phn t ca mt tp cc s thc m my tnh c th
http://www.ebook.edu.vn 3

Phm vi biu din -128 -> 127 0->255 -32768->32767 0->65535 -32768->32767 0-> 32767 -2147483648->-2147483647 0-> 4294967295

Kch thc(byte) 1 1 2 2 2 2 4 4

biu din. Trong ngn ng lp trnh C c nhiu kiu d liu s thc vi di gi tr khc nhau c th: Kiu Float Double Long double + Khai bo hng + Hng s thc c vit theo hai cch sau: - Dng thp phn gm:Phn nguyn, du chm thp phn, phn thp phn V d:34.2 -344.122 - Dng khoa hc(dng m) gm: Phn nh tr v phn m. Phn nh tr l s nguyn hay s thc dng thp phn, phn m bt u bng E hay e theo sau l s nguyn V d: 1234.54E-122 + Hng s nguyn - H thp phn bnh thng VD: 545 - H c s 8(Octal) Bt u bng s 0 v ch biu din s dng V d: 024=2010 - H c s 16(Hecxa) Bt u bng 0x V d: 0xAB = 16310 + Hng k t L mt k t ring bit c t trong hai du nhy n V d: a 9 ..... Ch : Hng k t biu th m ca k t trong bng m ASCII. Do vy mt hng k t cng c th tham gia vo cc php ton. V d: A+10 c gi tr (65+10=75)
http://www.ebook.edu.vn 4

Phm vi biu din 3.4E-38 -> 3.4E+38 1.7E-311 -> 1.7E3+311 3.4E-4932->3.4E+4932

Kch thc(byte) 4 8 10

- Khai bo hng, bin, mng

+ Hng xu k t - L mt dy cc k t t trong hay du nhy ...... - Xu k c lu tr trong mt mng nh lin nhau song cn thm nh cui cng cha m l 0(k hiu l \0 ) V d: Nguyen Van Anh + Cch khai bo mt hng Cch 1:#define Tenhang Giatri V d: #define MAX 100 Cch 2: const kieu_du_kieu ten_hang=gia_tri_hang; V d: const int n=20; S khc nhau gia nh ngha hng s dng #define v const ch: * Vi const y l hng s c nh, mt hng s thc s v ch c mt hng s cha trong nh. * Vi #define khi gp hng s ny chng trnh dch s lp gi tr hng s ny vo trong biu thc cn tnh vi s ln thoi mi. iu c ngha l mi khi gp hng ny my s lp nh cha hng s ny vo . + Khai bo bin - Cc bin trc khi s dng phi khai bo theo mu sau: kieu_du_lieu danh_sach_cac_bien_can_khai_bao; V d: int x,y; float a; - Khi khai bo mt bin ta c th khi u gi tr cho n theo mu sau: kieu_du_lieu ten_bien = gia_tri; V d: float x=5.; int n=10; - ly a ch ca mt bin ta dng ton t & c th nh sau: &ten_bien V d: &x ly a ch ca bin a &n ly a ch ca bin n + Khai bo xu k t. char str[10] + Cc phn t ca mng l mt k t
http://www.ebook.edu.vn 5

+ Xu bao gi cng kt thc bng phn t k hiu l NUL(\0) Mt hng xu k t c t trong du nhy kp VD: DHSPKT lu gi xu ny th h thng phi dng 1 mng c 7 nh. D k t n a xu k t a - Khai bo mng Mng l mt dy bin lin tip cng tn nhng khc nhau bi ch s. Tt c cc bin ny c cng mt kiu l kiu ca mng. + Cch khi bo mng - i vi mng mt chiu kieu_du_lieu ten_mang[kich_thuc_mang]; - i vi mng hai chiu kieu_du_lieu ten_mang[kich_thuc_hang][kich_thuoc_cot]; - i vi mng nhiu chiu kieu_du_lieu ten_mang[kich_thuc_1][kich_thuoc_2]...[kich_thuoc_n]; V d: int a[10]; float x[3][5]; char x[30]; + Cch thc truy nhp cc phn t ca mng Mi phn t ca mng c truy nhp thng qua tn v ch s tng ng, phn t u tin c ch s l 0. Cch truy nhp - Mng mt chiu: - Mang hai chiu: V d: m[0] m[5]
http://www.ebook.edu.vn 6

\0

a a \0

VD: char ch[10]=DHSPKT

tenmang[chiso] tenmang[chisodong][chisocot]

- bin con tr Ta c th s dng tn con tr hoc dng khai bo ca n trong cc biu thc V d: float *px; y: px l tn con tr *px dng khai bo ca con tr - S dng tn con tr: Con tr cng l mt bin nn khi tn ca n xut hin trong cc biu thc th gi tr ca n s c s dng trong biu thc ny. Ch c mt iu cn lu y: gi tr ca mt con tr l da ch ca bin no . V d: float a,*p,*h; p=&a;/* Gn a ch ca bin a cho p hay ni cch khc cho con tr p tr ti bin a */ h=p;/* Gn con tr p cho con tr h */ *p=5;// a=5 Cc php ton trn con tr C bn nhm php ton lin quan n con tr v a ch: Php gn, php tng gim a ch, php truy nhp b nh v php so snh. + Php gn V d: int x,y,*trox,*troy; char z; trox=&x; troy=&y; trox=(int *)(&z); p kiu + Php tng gim a ch Mt con tr c th cng vi mt gi tr nguyn (int, long) cho kt qu l mt con tr cng kiu. V d: int a[10], *tro1, *tro2, *tro3; tro1=a; tng ng vi tro1=a[0]; tro2=tro1+1; tro3=tro1+9; C th my s cung cp cc khong nh lin tip ca mng a nh sau: a[0] a[1]
7

a[9]

http://www.ebook.edu.vn

tro1 tro2 tro3 + Hiu hai con tr Hai con tr cng kiu tr i nhau cho ta mt s nguyn V d: float x[10],*trox,*troy; int z; trox=x+1; tng ng trox=&x[1] troy=&x[5]; z=troy-trox;/* z c gi tr l 4 */ x[0] x[1] - Khi lnh - L mt dy cc cu lnh c bao bi cc du { v } - My coi mt khi lnh tng t nh mt lnh ring l, ch no vit c mt lnh ring l cng c quyn t vo mt khi lnh. Vic bt u mt khi lnh { v kt thc mt khi lnh } tng t nh cu lnh hp thnh trong Pascal s dng cp t kho begin...end. - u mi khi lnh c th t cc khai bo bin, mng... - Cc khi lnh c th lng nhau - Cc bin c khai bo trong khi lnh no th ch c hiu lc trong khi . - Khi my kt thc phin lm vic vi khi lnh no th tt c cc bin cc b bn trong khi lnh u b gii phng. 2.3 Biu thc v Cc php ton 2.3.1 Php ton s hc hai ngi Cc php ton s hc hai ngi c thng k bng sau: Php ton + * / %
http://www.ebook.edu.vn

x[9]

Ch : Khng c ly tng, hiu, tch, thng, % hai con tr

ngha Php cng Php tr Php nhn Php chia Php ly phn d 2+4=6 2-3=-1 4*2=8 5/3=1 6/2=0

V d

Ch : - Nu php chia hai ton hng u nguyn th php chia cho kt qu l phn nguyn ca thng hai ton hng . - Nu mt trong hai ton hng l kiu thc th lc ny kt qu ca php chia cho ta gi tr ng. - Php ton ly phn d % ch p dng cho trng hp hai ton hng l s nguyn. 2.3.2.Php quan h v logic Trong ngn ng lp trnh C coi mi gi tr khc khng l ng(TRUE) v mi gi tr bng khng l sai(FALSE) Cc php ton quan h sau y cho kt qu l 1 nu iu khin c tho mn v bng 0 trong trng hp ngc li: Php ton quan h > >= < <= == != ngha Php so snh ln hn Php so snh ln hn hoc bng Php so snh nh hn Php so snh nh hn hoc bng Php so snh bng nhau Php so snh khc nhau 1>2 2>=2 3<3 4<2 4==5 2!=7 V d 0 1 0 0 0 1 Kt qu

Cc php ton logic c th hin di bng sau: Php ton logic ! && || ngha Php ph nh(not) Php v (and) Php hoc(or) !(3>1) (2>1)&&(5=2) (4>3)||(1>8) V d 0 0 1 Kt qu

2.3.3. S chuyn i kiu Vic chuyn i kiu d liu trong C thng din ra t ng trong cc trng hp sau: - Khi ton hng trong mt php ton c kiu khc nhau th kiu thp hn c chuyn thnh kiu cao hn: int->long->float->double
http://www.ebook.edu.vn 9

- Khi gn mt gi tr kiu ny cho mt bin(hoc phn t mng) kiu kia. V d: int c; c=2.45;/* c s nhn gi tr l 2*/ - Khi truyn gi tr cho cc i s ca hm, trong cu lnh return ca hm. Ngoi ra ta c th chuyn t mt kiu gi tr ny sang mt kiu gi tr khc bt k ta mun bng cch p kiu theo mu sau: (Kii_d_liu)biu_thc V d: float c=7.4; int n; n=(int)c*3;/* khi n c gi tr 21*/ 2.3.4 Php tng gim Trong ngn ng lp trnh C a ra hai php ton mt ngi tng v gim cc bin (nguyn v thc). Ton t tng ++ s thm 1 vo ton hng ca n, ton t gim s tr i 1. V d: n ang c gi tr l 5 th Sau php ton ++ n c gi tr l 6 Sau php ton n c gi tr l 4 Du php ton ++ v -- c th ng trc hoc ng sau ton hng. Nh vy ta c th vit: ++n, n++, --n, n-S khc nhau ca ++n v n++ ch: Trong php ton n++ th n tng sau khi gi tr ca n c s dng, cn trong ++n th gi tr ca n tng trc khi gi tr ca n c s dng. Trong php ton n-- th n gim sau khi gi tr ca n c s dng, cn trong --n th gi tr ca n gim trc khi gi tr ca n c s dng. V d:int x=2,y=4,n=4,m=5; x+=n++;/* cho kt qu x c ga tr 6*/ y*=++m;/* cho kt qu y c gi tr 24*/ 2.3.5 Cu lnh gn * Trong ngn ng lp trnh C dng du = l du php gn. V d: a=a+3;
10

http://www.ebook.edu.vn

2.3.6. Biu thc iu kin Biu thc iu kin c dng: e1?e2:e3 Trong e1,e2,e3 l cc biu thc no . Gi tr ca biu thc bng e2 nu e1 c gi tr khc khng, gi tr ca biu thc bng e3 nu e1 c gi tr bng khng. Kiu ca biu thc iu kin l kiu cao nht gia e2 v e3. V d:int kq=3,x=5,y=2,z=1; kq*=(x>y?x+z:y-z);/* cho kt qu kq c gi tr 18*/ 2.4 Cc ton t iu khin chng trnh 2.4.1 Cu trc iu khin if 2.4.1.2 Cu trc r nhnh if dng khuyt C php cu lnh if (bt) cng_vic; Trong : - if l t kho - bt l mt biu thc - Cng_vic c th l mt lnh n hay mt khi lnh 2.4.1.2. Cu trc r nhnh if dng dy C php cu lnh if (bt) cng_vic1; else cng_vic2; Trong : - if, else l t kho - bt l mt biu thc - Cng_vic1,Cng_vic2 c th l mt lnh n hay mt khi lnh 2.4.2 Cu trc iu khin switch C php cu lnh
http://www.ebook.edu.vn 11

switch ( bieu_thuc) { case e1:Khi_lnh_1;[break;] case e2: Khi_lnh_2;[break;] ....................... case e2: Khi_lnh_n;[break;] [default: Khi_lnh_n+1;] } Trong : *switch, case, default l cc t kho * bieu_thuc: l mt biu thc nguyn bt k * ei:l gi tr nguyn m biu thc c th nhn c. C th l kiu char v n c th c chuyn i thnh kiu int * Nhng phn t trong hai du [ v ] c th c hoc khng 2.4.3 Cu trc lp while C php cu lnh while(bt) Cng_vic; Trong : - while l t kho - bt l mt biu thc - Cng_vic c th l mt lnh n hay mt khi lnh 2.4.4 Cu trc lp do...while C php cu lnh do Cng_vic; while(bt); Trong : - while ,do l t kho - bt l mt biu thc - Cng_vic lit k cc cu lnh cn phi thc hin 2.4.5 Cu trc lp for
http://www.ebook.edu.vn 12

C php cu lnh for(bt1;bt2;bt3) Cng_vic; Trong : - for l t kho - bt1,bt2,bt3 l cc biu thc - Cng_vic c th l mt lnh n hay mt khi lnh 2.5 Hm, lp trnh hng hm 2.5.1 Cch xy dng mt hm: Cu trc: [kiu_gi_tr_tr_v] tn_hm([danh sch tham s]); { Cc khai bo ............ Cc cu lnh } Trong : tn_hm l bt k tn hp l no, [kiu_gi_tr_tr_v] l kiu d liu ca kt qu tr li cho hm gi n. [danh sch tham s] m t kiu d liu cng th t ca cc tham s hm nhn c khi n c gi. Cc khai bo v cc cu lnh trong cp du {} to thnh phn thn ca hm(khi). 2.5.2 S hot ng ca mt hm - Cp pht b nh cho cc i v bin ton cc - Gn gi tr ca cc tham s thc s cho cc i tng ng. - Thc hin cc cu lnh trong thn hm. - Khi gp cu lnh return hoc du } cui cng ca thn hm th my s xo cc i v cc bin cc b khi b nh v hm kt thc. - Nu hm kt thc bi cu lnh return c cha biu thc th my s tnh ton gi tr ca biu thc chuyn i kiu ph hp v gn cho tn hm.

http://www.ebook.edu.vn

13

2.5.2.1 Bin mng ng Cc bin, mng dc khai bo bn trong thn ca mt hm gi l bin, mng t ng. Chng ch c hiu lc trong phm vi hm m chng c khai bo. Khi hm kt thc phin lm vic th chng b xo khi b nh v tr li nh cho my. Ch : V chng trnh bt u lm vic t cu lnh u tin ca hm main() v kt thc khi hm ny kt thc. Do cc bin t ng c khai bo bn trong hm main() s tn ti trong sut thi gian lm vic ca chng trnh. 2.5.2.2 Bin mng ngoi L cc bin, mng c khai bo bn ngoi cc hm, chng tn ti trong sut thi gian lm vic ca chng trnh. Phm vi s dng t v tr c khai bo n cui chng trnh( k c trng hp chng trnh gm nhiu tp ghp ni bng ton t #include). 2.5.2.3 Bin mng tnh Cch khai bo static khieu_du_lieu ten_bien; V d: static int a,b,x; Dng khai bo c th t trong(bin, mng tnh trong) hay ngoi(bin, mng tnh ngoi) - Cc bin, mng tnh ging bin, mng ngoi ch: Chng u tn ti trong sut thi gian lm vic ca chng trnh. - Cc bin, mng tnh khc bin, mng ngoi ch: * Phm vi hot ng ca bin, mng tnh trong ch gii hn bn trong hm m n c khai bo. Tuy nhin gi tr ca n vn c lu gi khi ra khi hm v gi tr ny c th s dng mi khi hm c thc hin tr li. * Phm vi hot ng ca bin, mng tnh ngoi l t v tr khai bo n cui tp v khng bao gm cc tp c kt ni bng ton t #include.

http://www.ebook.edu.vn

14

Chng 2: n li v vi iu khin AT89C51


2.1. S chn tn hiu ca 80C51/AT89C51.

Chc nng ca cc chn tn hiu nh sau: - P0.0 n P0.7 l cc chn ca cng 0. - P1.0 n P1.7 l cc chn ca cng 1. - P2.0 n P2.7 l cc chn ca cng 2 - P3.0 n P3.7 l cc chn ca cng 3 - RxD: Nhn tn hiu kiu ni tip. - TxD: Truyn tn hiu kiu ni tip. - /INT0: Ngt ngoi 0. - /INT1: Ngt ngoi 1. - T0: Chn vo 0 ca b Timer/Counter 0. - T1: Chn vo 1 ca b Timer/Counter 1.
http://www.ebook.edu.vn 15

- /Wr: Ghi d liu vo b nh ngoi. - /Rd: c d liu t b nh ngoi. - RST: Chn vo Reset, tch cc mc logic cao trong khong 2 chu k my. - XTAL1: Chn vo mch khuych a dao ng - XTAL2: Chn ra t mch khuych a dao ng. - EA: Truy cp b nh ngoi. - /PSEN : Chn cho php c b nh chng trnh ngoi (ROM ngoi). - ALE (/PROG): Chn tn hiu cho php cht a ch truy cp b nh ngoi, khi On-chip xut ra byte thp ca a ch. Tn hiu cht c kch hot mc cao, tn s xung cht = 1/6 tn s dao ng ca b VK. N c th c dng cho cc b Timer ngoi hoc cho mc ch to xung Clock. y cng l chn nhn xung vo np chng trnh cho Flash (hoc EEPROM) bn trong On-chip khi n mc thp. - /EA/Vpp: Cho php On-chip truy cp b nh chng trnh ngoi khi /EA=0, nu /EA=1 th On-chip s lm vic vi b nh chng trnh ni tr (trng hp cn truy cp vng nh ln hn dung lng b nh chng trnh ni tr, th b nh chng trnh ngoi cng c s dng). Khi chn ny c cp ngun in p 12V (Vpp) th On-chip m nhn chc nng np chng trnh cho Flash bn trong n. - Vcc: Cung cp dng ngun cho On-chip (+ 5V). - GND: ni Mass. 2.2. S khi

http://www.ebook.edu.vn

16

Ex-interrupt Interrupt control


On-Chip Flash ROM 4 K Bytes On-Chip Data RAM 256 Bytes

Register Timer 0 Timer 1


Counter Input

CPU
OSC
Bus control

PORT
P0 P1 P2 P3
ADDRESS/DATA

Serial port

TxD RxD

Cc thnh phn chnh:


http://www.ebook.edu.vn 17

2.3. Cc thanh ghi chc nng c bit. SFR m nhim cc chc nng khc nhau trong On-chip. Chng nm RAM bn trong On-chip, chim vng khng gian nh 128 Byte c nh a ch t 80h n FFh. Cu trc ca SFR bao gm cc chc nng th hin bng 2.3 v bng 2.4. Thanh ghi IE IP PSW TMOD TCON SCON PCON P1 P3 Symbol * ACC *B * PSW SP DP0L DP0H * P0 * P1 Symbol * P2 * P3 * IP * IE TMOD MSB EA CY GATE TF1 SM0 SMOD T2 RXD AC TR1 SM1 T2EX TXD /INT0 /INT1 ET2 PT2 FO TF0 SM2 ES PS RS1 M0 TR0 REN ET1 PT1 RS0 GATE IE1 TB8 GF1 /SS T0 EX1 PX1 OV IT1 RB8 GF0 ET0 PT0 IE0 TI PD Ni dung LSB EX0 PX0 P M0 IT0 RI IDL SCK /RD

C/(/T) M1

C/(/T) M1

MOSI MISO T1 /WR

Name Thanh ghi tch lu Thanh ghi B T trng thi chng trnh Con tr ngn xp Byte cao ca con tr d liu 0 Byte thp ca con tr d liu 0 Cng 0 Cng 1 Name Cng 2 Cng 3 TG iu khin ngt u tin TG iu khin cho php ngt iu khin kiu Timer/Counter

Address 0E0h 0F0h 0D0h 81h 82h 83h 80h 90h Address 0A0h 0B0h 0B8h 0A8h 89h

Reset Values 00000000b 00000000b 00000000b 00000111b 00000000b 00000000b 11111111b 11111111b Reset Values 11111111b 11111111b xxx00000b 0xx00000b 00000000b
18

http://www.ebook.edu.vn

* TCON TH0 TL0 TH1 TL1 * SCON SBUF PCON

TG iu khin Timer/Counter Byte cao ca Timer/Counter 0 Byte thp ca Timer/Counter 0 Byte cao ca Timer/Counter 1 Byte thp ca Timer/Counter 1 Serial Control Serial Data Buffer Power Control

88h 8Ch 8Ah 8Dh 8Bh 98h 99h 87h

00000000b 00000000b 00000000b 00000000b 00000000b 00000000b indeterminate 0xxx0000b

* : c th nh a ch bit, x: khng nh ngha a ch, ngha v gi tr ca cc SFR sau khi Reset

- Thanh ghi ACC: l thanh ghi tch lu, dng lu tr cc ton hng v kt qu ca php tnh. Thanh ghi ACC di 8 bits. Trong cc tp lnh ca On-chip, n thng c quy c n gin l A. - Thanh ghi B : Thanh ghi ny c dng khi thc hin cc php ton nhn v chia. i vi cc lnh khc, n c th xem nh l thanh ghi m tm thi. Thanh ghi B di 8 bits. N thng c dng chung vi thanh ghi A trong cc php ton nhn hoc chia. - Thanh ghi SP: Thanh ghi con tr ngn xp di 8 bit. SP cha a ch ca d liu hin ang hin hnh nh ca ngn xp hay ni khc l SP lun tr ti ngn nh s dng cui cng (gi l nh ngn xp). Gi tr ca n c t ng tng ln khi thc hin lnh PUSH trc khi d liu c lu tr trong ngn xp. SP s t ng gim xung khi thc hin lnh POP. - Thanh ghi DPTR: Thanh ghi con tr d liu (16 bit) bao gm 1 thanh ghi byte cao (DPH-8bit) v 1 thanh ghi byte thp (DPL-8bit). DPTR c th c dng nh thanh ghi 16 bit hoc 2 thanh ghi 8 bit c lp. Thanh ghi ny c dng truy cp RAM ngoi.

http://www.ebook.edu.vn

19

- Ports 0 to 3: P0, P1, P2, P3 l cc cht ca cc cng 0, 1, 2, 3 tng ng. Mi cht gm 8 bit. Khi ghi mc logic 1 vo mt bit ca cht, th chn ra tng ng ca cng mc logic cao. Cn khi ghi mc logic 0 vo mi bit ca cht th chn ra tng ng ca cng mc logic thp. Khi cc cng m nhim chc nng nh cc u vo th trng thi bn ngoi ca cc chn cng s c gi bit cht tng ng. Tt c 4 cng ca on-chip u l cng I/O hai chiu, mi cng u c 8 chn ra, bn trong mi cht bit c b Pullup-tng cng do nng cao kh nng ni ghp ca cng vi ti (c th giao tip vi 4 n 8 ti loi TTL). - Thanh ghi SBUF: m d liu ni tip gm 2 thanh ghi ring bit, mt thanh ghi m pht v mt thanh ghi m thu. Khi d liu c chuyn ti SBUF, n s i vo b m pht, v c gi y ch bin thnh dng truyn tin ni tip. Khi d liu c truyn i t SBUF, n s i ra t b m thu. - Cc Thanh ghi Timer: Cc i thanh ghi (TH0, TL0), (TH1, TL1) l cc thanh ghi m 16 bit tng ng vi cc b Timer/Counter 0 v 1. - Cc thanh ghi iu khin: Cc thanh ghi chc nng c bit: IP, IE, TMOD, TCON, SCON, v PCON bao gm cc bit trng thi v iu khin i vi h thng ngt, cc b Timer/Counter v cng ni tip. Chng s c m t phn sau. - Thanh ghi PSW: T trng thi chng trnh dng cha thng tin v trng thi chng trnh. PSW c di 8 bit, mi bit m nhim mt chc nng c th. Thanh ghi ny cho php truy cp dng mc bit. CY AC FO RS1 RS0 OV P

* CY: C nh. Trong cc php ton s hc, nu c nh t php cng bit 7 hoc c s mn mang n bit 7 th CY c t bng 1. * AC: C nh ph (i vi m BCD). Khi cng cc gi tr BCD, nu c mt s nh c to ra t bit 3 chuyn sang bit 4 th AC c t bng 1. Khi gi tr c cng l BCD, lnh cng phi c thc hin tip theo bi lnh DA A (hiu chnh thp phn thanh cha A) a cc kt qu ln hn 9 v gi tr ng.
http://www.ebook.edu.vn 20

* F0:

C 0 (C hiu lc vi cc mc ch chung ca ngi s dng)

* RS1: Bit 1 iu khin chn bng thanh ghi. * RS0: Bit 0 iu khin chn bng thanh ghi. Lu : RS0, RS1 c t/xo bng phn mm xc nh bng thanh ghi ang hot ng (Chn bng thanh ghi bng cch t trng thi cho 2 bit ny) RS1 (PSW. 4) Bank 0 Bank 1 Bank 2 Bank 3 0 0 1 1 Bng Chn bng thanh ghi * OV: C trn. Khi thc hin cc php ton cng hoc tr m xut hin mt trn s hc, th OV c t bng 1. Khi cc s c du c cng hoc c tr, phn mm c th kim tra OV xc nh xem kt qu c nm trong tm hay khng. Vi php cng cc s khng du, OV c b qua. Kt qu ln hn +128 hoc nh hn 127 s t OV=1. * -: * P: Bit dnh cho ngi s dng t nh ngha(Nu cn). C chn l. c t ng t/ xo bng phn cng trong mi chu trnh RS0 (PSW. 3) 0 1 0 1

lnh ch th s chn hay l ca bit 1 trong thanh ghi tch lu. S cc bit 1 trong A cng vi bit P lun lun l s chn. - Thanh ghi PCON: Thanh ghi iu khin ngun. SMOD GF1 GF0 PD IDL

* SMOD: Bit to tc Baud gp i. Nu Timer 1 c s dng to tc baud v SMOD=1, th tc Baud c tng ln gp i khi cng truyn tin ni tip c dng bi cc kiu 1, 2 hoc 3. * -: Khng s dng, cc bit ny c th c dng cc b VXL trong tng lai. Ngi s dng khng c php t nh ngha cho cc bit ny. * GF0, GF1: C dng cho cc mc ch chung (a mc ch). * PD: bit ngun gim. t bit ny mc tch cc vn hnh ch ngun gim trong AT89C51. Ch c th ra khi ch bng Reset.
http://www.ebook.edu.vn 21

* IDL: bit chn ch ngh. t bit ny mc tch cc vn hnh kiu Idle (Ch khng lm vic) trong AT89C51. Lu : Nu PD v IDL cng c kch hot cng 1 lc mc tch cc, th PD c u tin thc hin trc. Ch ra khi ch bng 1 ngt hoc Reset li h thng. - Thanh ghi IE: Thanh ghi cho php ngt EA ET2 ES ET1 EX1 ET0 EX0

* EA: Nu EA=0, khng cho php bt c ngt no hot ng. Nu EA=1, mi ngun ngt ring bit c php hoc khng c php hot ng bng cch t hoc xo bit Enable ca n. * -: Khng dng, ngi s dng khng nn nh ngha cho Bit ny, bi v n c th c dng cc b AT89 trong tng lai. * ET2: Bit cho php hoc khng cho php ngt b Timer 2. * ES: Bit cho php hoc khng cho php ngt cng ni tip (SPI v UART). * ET1: Bit cho php hoc khng cho php ngt trn b Timer 1 * EX1: Bit cho php hoc khng cho php ngt ngoi 1. * ET0: Bit cho php hoc khng cho php ngt trn b Timer 0 * EX0: Bit cho php hoc khng cho php ngt ngoi 0. - Thanh ghi IP: Thanh ghi u tin ngt. PT2 PS PT1 PX1 PT0 PX0

* - : Khng dng, ngi s dng khng nn ghi 1 vo cc Bit ny. * PT2: Xc nh mc u tin ca ngt Timer 2. * PS: nh ngha mc u tin ca ngt cng ni tip. * PT1: nh ngha mc u tin ca ngt Timer 1. * PX1: nh ngha mc u tin ca ngt ngoI 1. * PT0: nh ngha mc u tin ca ngt Timer 0. * PX0: nh ngha mc u tin ca ngt ngoI 0. - Thanh ghi TCON : Thanh ghi iu khin b Timer/Counter
http://www.ebook.edu.vn 22

TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0

* TF1: C trn Timer 1. c t bi phn cng khi b Timer 1 trn. c xo bi phn cng khi b vi x l hng ti chng trnh con phc v ngt. * TR1: Bit iu khin b Timer 1 hot ng. c t/xo bi phn mm iu khin b Timer 1 ON/OFF * TF0: C trn Timer 0. c t bi phn cng khi b Timer 0 trn. c xo bi phn cng khi b vi x l hng ti chng trnh con phc v ngt. * TR0: Bit iu khin b Timer 0 hot ng. c t/xo bi phn mm iu khin b Timer 0 ON/OFF. * IE1: C ngt ngoi 1. c t bi phn cng khi sn xung ca ngt ngoi 1 c pht hin. c xo bi phn cng khi ngt c x l. * IT1: Bit iu khin ngt 1 to ra ngt ngoi. c t/xo bi phn mm. * IE0: C ngt ngoi 0. c t bi phn cng khi sn xung ca ngt ngoi 0 c pht hin. c xo bi phn cng khi ngt c x l. * IT0: Bit iu khin ngt 0 to ra ngt ngoi. c t/xo bi phn mm. - Thanh ghi TMOD: Thanh ghi iu khin kiu Timer/Counter GATE C/(/T) M1 Dnh cho Timer 1 M0 GATE C/(/T) M1 Dnh cho Timer 0 M0

* GATE: Khi GATE=1 v TRx =1, b TIMER/COUTERx hot ng ch khi chn INTx mc cao. Khi GATE=0, b TIMER/COUNTERx s hot ng ch khi TRx=1. * C/(/T): Bit ny cho php chn chc nng l Timer hay Counter. - Bit ny =0 th thc hin chc nng Timer - Bit ny =1 th thc hin chc nng Counter * M0, M1: Bit chn Mode, xc nh trng thi v kiu Timer/Counter: - M1=0, M0=0: Chn kiu b Timer 13 bit. Trong THx di 8 bit, cn TLx di 5 bit. - M1=0, M0=1: Chn kiu b Timer 16 bit. THx v TLx di 16 bit c ghp tng. - M1=1, M0=0: 8 bit Auto reload. Cc thanh ghi t ng np li mi khi b trn. Khi b Timer b trn, THx di 8 bit c gi nguyn gi tr, cn gi tr np li c a
http://www.ebook.edu.vn 23

vo TLx. - M1=1, M0=1: Kiu phn chia b Timer. TL0 l 1 b Timer/Counter 8 bit, c iu khin bng cc bit iu khin b Timer 0, Cn TH0 ch l b Timer 8 bit, c iu khin bng cc bit iu khin Timer 1. - M1=1, M0=1: Timer/Counter 1 Stopped - Thanh ghi SCON: SM0 SM1 SM2 REN TB8 RB8 TI RI SCON l thanh ghi trng thi v iu khin cng ni tip. N khng nhng cha cc bit chn ch , m cn cha bit d liu th 9 dnh cho vic truyn v nhn tin (TB8 v RB8) v cha cc bit ngt cng ni tip. * SM0, SM1: L cc bit cho php chn ch cho cng truyn ni tip. SM0 0 0 1 1 SM1 0 1 0 1 Mode 0 1 2 3 c im Thanh ghi dch 8 bit UART 9 bit UART 9 bit UART Tc Baud Fosc /12 C th thay i (c t bi b Timer) Fosc /64 hoc Fosc /32 C th thay i (c t bi b Timer) Bng 2.6. Chn Mode trong SCON * SM2: Cho php truyn tin a x l, th hin Mode 2 v 3. ch 2 hoc 3, nu t SM2 = 1 th RI s khng c kch hot nu bit d liu th 9 (RB8) nhn c gi tr bng 0. Mode 1, nu SM2=1 th RI s khng c kch hot nu bit dng c hiu lc khng c nhn. ch 0, SM2 nn bng 0 * REN: Cho php nhn ni tip. c t hoc xo bi phn mm cho php hoc khng cho php nhn. * TB8: L bit d liu th 9 m s c truyn Mode 2 v 3. c t hoc xo bi phn mm. * RB8: L bit d liu th 9 c nhn Mode 2 v 3. Mode 1, nu SM2=0 th RB8 l bit dng c nhn. Mode 0, RB8 khng c s dng. * TI: C ngt truyn. c t bi phn cng ti cui thi im ca bit th 8 trong Mode 0, hoc u thi im ca bit dng trong cc Mode khc. bt k qu trnh
http://www.ebook.edu.vn 24

truyn ni tip no, n cng phi c xo bng phn mm. * RI: C ngt nhn. c t bi phn cng ti cui thi im ca bit th 8 trong Mode 0, hoc gia thi im ca bit dng trong cc Mode khc. bt k qu trnh nhn ni tip no (tr trng hp ngoi l, xem SM2), n cng phi c xo bng phn mm. 2.4. Khi to thi gian v b m (Timer/Counter). On-chip AT89C51 c 2 thanh ghi Timer/Counter di 16 bit, l: Timer 0 v Timer 1. Trong On-chip AT89C52, ngoi Timer 0 v Timer 1 n cn c thm b Timer 2. C 3 b Timer ny u c th c iu khin thc hin chc nng thi gian hay b m, thng qua thanh ghi TMOD. Khi thanh ghi Timer/Counter lm vic kiu Timer, th sau mi chu k my ni dung trong thanh ghi c gia tng thm 1 n v. V vy thanh ghi ny m s chu k my. Mt chu k my c 12 chu k dao ng, do tc m ca thanh ghi l 1/12 tn s dao ng. Khi thanh ghi Timer/Counter lm vic kiu Counter, xung nhp bn ngoi c a vo m T0 hoc T1. Ni dung thanh ghi c tng ln khi c s chuyn trng thi t 1 v 0 ti chn u vo ngoi T0 hoc T1. Do xung nhp bn ngoi c tn s bt k nn cc b Timer (0 v 1) c 4 ch lm vic khc nhau lu chn: (13 bit Timer, 16 bit Timer, 8 bit auto-reload(t lp lai), split Timer(nh thi chia tch)). Timer 0 v Timer 1: Trong AT89C51 v AT89C52 u c cc b Timer 0 v 1. Chc nng Timer hay Counter c chn la bi cc bit iu khin C/(/T) trong thanh ghi TMOD. Hai b Timer/Counter ny c 4 ch hot ng, c la chn bi cp bit (M0, M1) trong TMOD. Ch 0, 1 v 2 ging nhau cho cc chc nng Timer/Counter, nhng ch 3 th khc. Bn ch hot ng c m t nh sau: + Ch 0: C 2 b Timer 0 v 1 ch 0 c cu hnh nh mt thanh ghi 13 bit, bao gm 8 bit ca thanh ghi THx v 5 bit thp ca TLx. 3 bit cao ca TLx khng xc nh chc chn, nn c lm ng. Khi thanh ghi c xo v 0, th c ngt thi gian TFx c thit lp. B Timer/Counter hot ng khi bit iu khin TRx c
http://www.ebook.edu.vn 25

thit lp (TRx=1) v, hoc Gate trong TMOD bng 0, hoc /INTx=1. Nu t GATE=1 th cho php iu khin Timer/ Counter bng ng vo ngoi /INTx, d dng xc nh rng xung. Khi hot ng chc nng thi gian th bit C/(/T)=0, do vy xung nhp t b dao ng ni, qua b chia tn cho ra tn s f=fosc/12 c a vo m trong
OSC /12 C/ T=0 T1 PIN TR1 1 1 TL1 5 bits C/ T=1 Control GATE & Ch 0 c a Timer 1 TH1 8 bits TF 1 Interrupt

/INT1 PIN

thanh ghi Timer/Counter. Khi hot ng chc nng b m th bit C/(/T)=1, lc xung nhp ngoi a vo s c m. + Ch 1: hot ng tng t nh ch 0, ch khc l thanh ghi Timer/Counter c s dng c 16 bit. Xung nhp c dng kt hp vi cc thanh ghi thi gian byte thp v byte cao (TH1 v TL1). Khi xung Clock c nhn, b Timer s m tng ln: 0000h, 0001h, 0002, Khi hin tng trn xy ra, c trn s chuyn FFFFh v 0000h, v b Timer tip tc m. C trn ca Timer 1 l bit TF1 trong TCON, n c c hoc ghi bi phn mm, xem hnh 2.5 (Timer/Counter 1 Mode 1: 16 bit Counter).
Timer Clock TL1 8 bits TH1 8 bits TF1 Ch Overlow Flag 1 c a Timer 1

+ Ch 2: Ch ny ca thanh ghi Timer cng hot ng tng t nh 2 ch trn, nhng n c t chc nh b m 8 bit (TL1) vi ch t ng np li, nh hnh 2.6. Khi xy ra hin tng trn TL1, khng ch thit lp bit TF1 m cn t ng np li cho TL1 bng ni dung ca TH1, c thit lp bi phn mm. Qu trnh np li cho php ni dung ca TH1 khng b thay i. Ch 2 ca Timer/Counter 0 cng tng t nh Timer/Counter 1.

OSC

/12
C/ T=0 TL1 8 bits TF 1 26

http://www.ebook.edu.vn T1 PIN

+ Ch 3: ch ny, chc nng Timer/Counter 0 v chc nng Timer/Counter 1 khc nhau. B Timer 1 ch 3 ch cha chc nng m ca n, kt qu ging khi t TR1=0. B Timer 0 ch 3 thit lp TH0, TL0 nh l 2 b m ring bit. Mch Logic i vi ch 3 ca Timer 0 th hin hnh 2.7. B m TL0 c iu khin bi cc bit: C/(/T), GATE, TR0, /INT0 v khi m trn n thit lp c ngt TF0. B m TH0 ch c iu khin bi bit TR1, v khi m trn n thit lp c ngt TF1. Vy, TH0 iu khin ngt Timer/Counter 1.
Ch OSC /12 C/ T=0 TL0 8 bits T0 PIN TR0 GATE 1 1 C/ T=1 & Control TH0 8 bits /12 TR1 TF1 TF 0 Interrupt Interrupt 3 c a Timer 0

/INT0 PIN OSC

2.5. B nh chng trnh v b nh d liu ni tr. Tt c cc b Flash Microcontrollers ca Atmel u t chc cc vng a ch tch bit i vi b nh chng trnh v b nh d liu, c m t hnh di y. Cc vng nh chng trnh v d liu tch bit cho php b nh d liu c truy cp bi a ch 8 bit, c th c lu tr vi tc cao v c vn hnh bi mt b CPU 8 bit. Tuy nhin, a ch b nh d liu 16 bit cng c th c to ra thng qua thanh ghi con tr d liu (DPTR).

http://www.ebook.edu.vn

27

Program Memory (Read Only)


FFFFh

Data Memory (Read/ Write)


FFFFh

External Internal
FFh 89C52 0FFF

External

Only /EA=1 Internal


7Fh 00

SFR

/EA=0 External

0000

000

/PSEN

Cu trc b nh ca AT89C51

/RD /WR

- B nh chng trnh ni tr. B nh chng trnh ca AT89C51 c t chc nh th hin hnh trn. Khng gian nh cc i ca b nh ny chim 64 Kbyte, c nh a ch t 0000h n FFFFh, trong c 4 Kbyte Flash ni tr bn trong n v c nh a ch t 0000h n 0FFFh. Do c th m rng thm 60 Kbyte b nh chng trnh bn ngoi, c nh a ch t 1000h n FFFFh. Tuy nhin b VK ny cng c th s dung ton b b nh chng trnh ngoi bao gm 64 Kbyte c nh a ch t 0000h n FFFFh. Cng t hnh trn ta thy, thng qua vic chn mc logic cho bit /EA c th la chn truy cp b nh chng trnh ni tr (4Kb), b nh chng trnh m rng ngoi tr (60Kb), hoc ton b b nh chng trnh ngoi tr bn ngoi On-chip (64Kb). C th, khi /EA = 1 th b VK s dng c b nh chng trnh ni tr v ngoi tr. Ngc li, khi /EA = 0 th b VK ch s dng b nh chng trnh ngoi tr. Mi khi c Reset, b VK s truy cp b nh chng trnh ti a ch khi u l 0000h, sau nu c ch ngt c s dng th n s truy cp ti a ch quy nh trong bng vecter ngt. - B nh d liu ni tr. C th truy cp bng a ch gin 128 Byte cao http://www.ebook.edu.vn tip 80h FFh C th truy cp bng a ch trc tip (SFR) FFh
28

80h

AT89C51 c b nh d liu chim mt khong khng gian b nh c lp vi b nh chng trnh. Dung lng ca RAM ni tr h VK ny l 128 Byte, c nh a ch t 00h n 7Fh. Phm vi a ch t 80h n FFh dnh cho SFR. Tuy nhin b VK cng c th lm vic vi RAM ngoi tr c dung lng cc i l 64 Kbyte c nh a ch t 0000h n FFFFh. - Vng nh 128 Byte thp Vng nh 128 Byte thp c nh a ch t 00h n 7Fh, c chia thnh 3 vng con nh th hin hnh 2.10. - Vng th nht c ln 32 Byte c nh a ch t 00h n 1Fh bao gm 4 bng thanh ghi ( bng 0...bng 3), mi bng c 8 thanh ghi 8 bit. Cc thanh ghi trong mi bng c tn gi t R0 n R7. Vng RAM ny c truy cp bng a ch trc tip mc Byte, v qu trnh chn s dung bng thanh ghi no l ty thuc vo vic la chon gi tr cho RS1 v RS0 trong PSW. - Vng th 2 c ln 16 Byte c nh a ch t 20h n 2Fh, cho php truy cp trc tip bng a ch mc bit. B VK cung cp cc lnh c kh nng truy cp ti vng nh 128 bit ny (nu truy cp dng mc bit th vng ny c a ch c nh t 00h n 7Fh) mc bit.. - Vng nh cn li gm 80 Byte c a ch t 30h n 7Fh c dnh ring cho ngi s dng lu tr d liu. y c th xem l vng RAM a mc ch. C th truy cp vng nh ny bng a ch trc tip hoc gin tip thng qua cc thanh ghi (R0 hoc R1) dng mc Byte. - Vng nh 128 Byte cao (dnh cho SFR) Vng nh ny c nh a ch t 80h n FFh, v c truy cp bng a ch trc
http://www.ebook.edu.vn 29

tip.

B nh d liu RAM (Data Menmory)

C th chn bank bng bit RS1,RS0 trong thanh ghi PSW

2.6. Nguyn l truyn tin ni tip ca AT89C51. - Phng thc truyn tin ni tip(Serial Interface): H VXL on-chip ny truyn tin ni tip bng cng RxD v TxD, d liu xut nhp truyn qua cng ni tip bng tc Baud v u qua vng m ni tip SBUF. Cng truyn ni tip l cng truyn tin 2 chiu, ngha l n c th ng thi truyn v nhn thng tin cng 1 lc. N cng c kh nng va thc hin chc nng nhn va thc hin chc nng m, tc l n c th nhn byte k tip trc khi byte c nhn trc c c t thanh ghi m. (Tuy nhin, nu byte u tin vn cha c c ti thi im nhn ca byte th 2, th mt trong 2 byte ny s b mt). iu khin cng ni tip bng thanh ghi SCON, trng thi ca 2 bit SM0 v SM1 trong thanh ghi ny thit lp nn 4 ch hot ng giao tip ni tip chun nh sau:

http://www.ebook.edu.vn

30

+ Ch 0: D liu ni tip vo v ra s thng qua chn RxD. Chn TxD a ra xung nhp ng h. 8 bit d liu c truyn/nhn ni tip, vi bit LSB c thc hin u tin. Tc Baud c c nh bng 1/12 tn s ca b dao ng.

+ Ch 1: 10 bit c truyn (thng qua TxD) hoc nhn (thng qua RxD), trong gm c: 1 bit khi ng (c gi tr 0), 8 bit d liu (u tin l LSB), v 1 bit dng (c gi tr l 1). Khi nhn, bit dng c chuyn vo RB8 ca thanh ghi SCON.
http://www.ebook.edu.vn

31

Tc Baud c th thay i c.

+ Ch 2: 11 bit c truyn (thng qua TxD) hoc nhn (thng qua RxD) bao gm: bit khi ng (c gi tr 0), 8 bit d liu (u tin l LSB), mt bit d liu th 9 c th lp trnh c, v mt bit dng (c gi tr 1). Khi truyn, bit d liu th 9 (TB8 trong SCON) c th c gn gi tr 0 hoc 1. Chng hn nh bit chn l (P trong PSW) c th c chuyn vo TB8. Khi nhn, bit d liu th 9 c chuyn vo RB8 thanh ghi SCON, trong khi bit dng c lc b. Tc Baud c th lp trnh c bng 1/32 hoc 1/64 tn s b dao ng.

http://www.ebook.edu.vn

32

+ Ch 3: 11 bit c truyn (thng qua TxD) hoc c nhn (thng qua RxD) bao gm: 1 bit khi ng (c gi tr 0), 8 bit d liu (u tin l LSB), 1 bit d liu th 9 c th lp trnh c, v 1 bit dng (c gi tr 1). Trn thc t, ch 3 ging ch 2 mi gc tr tc Baud. Tc Baud ch 3 l kh bin v c xc nh theo b Timer 1.

http://www.ebook.edu.vn

33

Trong c 4 ch trn, vic truyn c bt u bi bt k mt lnh no m s dng thanh ghi SBUF nh l mt thanh ghi ch. Vic nhn c bt u ch 0 khi RI=0 v REN=1. i vi cc ch khc, vic nhn c bt u khi bit REN=1. 2.5.6.3. Cc tc Baud: + Tc Baud ch 0 c c nh, v bng Tn s b dao ng/12 + Tc Baud ch 2 ph thuc vo gi tr ca bit SMOD trong thanh ghi PCON. Nu SMOD=0 (gi tr sau khi reset), th tc Baud =1/64 tn s ca b dao ng. Nu SMOD=1 th tc Baud =1/32 tn s ca b dao ng. Tc Baud ch 2 = (2SMOD*Tn s b dao ng)/64 Trong AT89C51, cc tc Baud ch 1 v 3 do Timer 1 quyt nh, Trong AT89C52 tc Baud ca cc ch ny c th c quyt nh bi Timer 1 hoc Timer 2, hoc c hai (mt b timer xc nh tc truyn, b kia xc nh tc nhn).
http://www.ebook.edu.vn 34

2.5.6.4. S dng Timer 1 to ra cc tc Baud : Khi b Timer 1 c dng to tc Baud, th cc tc Baud cc ch 1 v 3 do tc trn ca timer 1 v gi tr ca SMOD quyt nh: Tc Baud ch 1 v 3 = (2SMOD*(Tc trn ca timer 1))/32 Ngt ca Timer 1 s mt tc dng trong ng dng ny. Bn thn b Timer c th c thit lp thc hin chc nng thi gian hay b m bt k mt trong 3 ch hot ng. Trong hu ht cc kiu ng dng, n thng c thit lp thc hin chc nng thi gian, hot ng ch Autoreload (na byte cao ca TMOD = 0010b). Trong trng hp ny, tc baud c tnh bng cng thc: Tc Baud ch 1 v 3 = (2SMOD*Tn s b dao ng)/(32*(12*[256-(TH1)]) Ta c th nhn c cc tc Baud rt thp vi b Timer 1 bng cch lm cho ngt ca timer 1 c tc dng, v thit lp Timer 1 hot ng nh mt b m thi gian 16 bit (Na byte cao ca TMOD=0001b). Bng 2.8 lit k cc tc Baud khc nhau thng c s dng v cch chng c th nhn c t Timer 1. Tc Baud (Hz) Mode 0 Max: 1M Mode 2 Max: 375K Mode 1,3 Max:62,5K 19,2K 9,6K 4,8K 2,4K 1,2K 137,5 110 110 Tn s SMODE d.ng (MHz) 12 12 12 11,059 11,059 11,059 11,059 11,059 11,966 6 12 x 1 1 1 0 0 0 0 0 0 0 X X 0 0 0 0 0 0 0 0 0 X X 2 2 2 2 2 2 2 2 1 X X FFh FDh FDh FAh F4h E8h 1Dh 72h FEEBh C/(/T) Timer Mode 1 Gi tr np li

Bng . Cc tc Baud c to ra khi s dng Timer 1

http://www.ebook.edu.vn

35

2.7. C ch ngt trong On-chip AT89C51 - Phn loi ngt trong On-chip: B AT89C51 c tt c 5 Vectors ngt bao gm: 2 ngt ngoi (/INT0 v /INT1), 2 ngt ca khi thi gian (Timer 0, 1), v ngt cng truyn tin ni tip. Mi ngun ngt c th c kch hot hoc khng kch hot bng cch t hoc xo Bit trong IE. IE cng cha bit c th khng cho tt c cc ngt hot ng EA (Nu EA=0). Cc ngt ngoi c th c kch hot theo mc hoc theo sn xung, tu thuc vo gi tr ca cc bit IT0, IT1 trong TCON. Ngt ngoi c 2 c ngt tng ng l IE0, IE1 cng nm trong TCON. Khi mt ngt c thc hin th c ngt tng ng ca n b xo bng phn cng. Chng trnh con phc v ngt hot ng ch khi ngt c kch hot theo sn xung. Nu ngt c kch hot theo mc th ngun yu cu ngt t bn ngoi iu khin c ngt.

Cc ngt trong, vi ngt Timer/Counter 0, 1 c pht sinh bi c ngt TF0, TF1. Hai c ngt ny c thit lp khi thanh ghi Timer/Counter thc hin quay vng, ti thi im S5P2 ca chu trnh my. Khi mt ngt c thc hin th c ngt tng ng pht sinh ra ngt s b xo bng phn cng trong On-chip. Ngt cng ni tip c pht sinh bi cc ngt RI, TI, SPIF thng qua phn t Logic OR, khi chng trnh con phc v ngt c kch hot th cc c ngt pht sinh tng ng c xo bng phn mm. Cc ngt trong c th c php hoc khng uc php kch hot bng cch t hoc xo mt bit trong IE.
http://www.ebook.edu.vn 36

-.Cc bc thc hin ngt. Theo ng trnh t, s dng cc ngt trong Flash Microcontroller, cn thc hin cc bc nh sau: - t bit EA trong IE mc logic 1. - t bit cho php ngt tng ng trong IE mc logic 1. - Bt u chng trnh con phc v ngt ti a ch ca ngt tng ng . (Xem bng a ch Vector ca cc ngun ngt) Ngoi ra, i vi cc ngt ngoi, cc chn /INT0, /INT1 phi c t mc 1. V tu thuc vo ngt c kch hot bng mc hay sn xung, m cc bit IT0, IT1 trong TCON c th cn phi t mc 1. ITx=0: Kch hot bng mc ITx=1: Kch hot bng sn xung. - Mc ngt u tin trong on-chip: Mi ngun ngt c th c lp trnh ring cho 1 hoc 2 mc u tin bng cch t hoc xo 1 bit trong IP ca SFR. Mi ngt u tin mc thp c th c ngt bng ngt u tin mc cao hn nhng khng th ngt bng ngt c mc u tin mc thp hn c. Mt ngt u tin mc cao c th c ngt bi bt k ngun ngt no khc. Nu c yu cu ngt ca 2 mc u tin cng nhau (cng 1 lc), yu cu ca mc u tin cao hn s c phc v (Ngt no c mc u tin cao hn s c phc v). Nu cc yu cu ngt c cng mc u tin, th th t quay vng bn trong s quyt nh ngt no c phc v. Th t u tin ngt t cao xung thp ca AT89C51 nh sau: IE0, TF0, IE1, TF1, RI hoc TI. -. Nguyn l iu khin ngt ca AT89: Cc c ngt c thit lp ti thi im S5P2 ca mi chu k my. Chu k my tip theo sau chu k my c c ngt c thit lp, th chng trnh con c thit lp khi c lnh gi LCALL. Lnh LCALL pht sinh nhng li b cm hot ng khi gp cc tnh hung sau: a- ng thi c ngt vi mc u tin cao hn hoc bng ngt ang phc v. (Mt ngt c mc u tin bng hoc cao hn ang sn sng c phc v) b- Chu k my hin hnh khng phi l chu k my cui cng ca lnh ang
http://www.ebook.edu.vn 37

thc hin. c- Lnh ang thc hin l RETI hoc bt k lnh no ghi vo thanh ghi IE hoc IP.

H thng ngt ca AT89C51 Bt k mt trong 3 iu kin ny xut hin s cn tr vic to ra LCALL i vi chng trnh phc v ngt. iu kin 2 m bo rng, lnh ang thc hin s c hon thnh trc khi tr ti bt k chng trnh phc v no. iu kin 3 m bo rng, nu lnh ang thc hin l RETI hoc bt k s truy cp no vo IE hoc IP, th t nht mt lnh na s c thc hin trc khi bt k ngt no c tr ti. Chu trnh kim tra vng c lp li vi mi chu trnh my, v cc gi tr c kim tra l cc gi tr m xut hin thi im S5P2 ca chu trnh my trc . Nu mt ch th ngt c hiu lc nhng khng c p ng v cc iu kin trn v nu ch th ny vn cha c hiu lc khi iu kin cn tr c loi b, th ngt b t chi ny s khng c phc v na. LCALL do phn cng to ra s chuyn ni dung ca b m chng trnh vo ngn xp (Nhng khng ghi vo PSW) v np li cho PC mt a ch ph thuc vo ngun gy ngt ang c phc v, nh bng di y:

http://www.ebook.edu.vn

38

Ngt External 0 Timer 0 External 1 Timer 1 Serial Port Timer 2 (AT89C52) System Reset

Ngun ngt IE0 TF0 IE1 TF1 RI hoc TI TF2 EXF2 RST a ch vc t ngt

a ch Vc t 0003h 000Bh 0013h 001Bh 0023h

hoc 002Bh 0000h

Lnh RETI thng bo cho b VXL rng th tc ngt ny kt thc, sau ly ra 2 Byte t ngn xp v np li cho PC tr li quyn iu khin cho chng trnh chnh. - Cc ngt ngoi: V cc cht ngt ngoi c to mu mi ln trong mi chu trnh my, nn mt gi tr cao hoc thp ca u vo s duy tr trong t nht l 12 chu k xung nhp ca b dao ng m bo to mu. Nu ngt ngoi c kch hot bng sn xung , th ngun ngt ngoi phi duy tr cht yu cu gi tr cao t nht 1 chu k my v sau duy tr gi tr thp t nht 1 chu k my na. Vic ny c thc hin m bo rng qu trnh chuyn tip cho thy ch th yu cu ngt IEx s c xc lp. IEx s t ng c xo bi CPU khi th tc ngt p ng c gi. Nu ngt ngoi c kch hot theo mc, th ngun ngt bn ngoi phi duy tr cho yu cu ny c hi lc cho n khi ngt c yu cu thc s c to ra. Sau ngun ngt ngoi phi hu yu cu trc khi th tc phc v ngt hon thnh, nu khng ngt khc s c to ra. - Vn hnh Single-Step: Cu trc ngt AT89C51 cho php thc hin cc bc n vi s tham gia ca rt t phn mm. Nh lu trc y, mt yu cu ngt s khng c p ng khi
http://www.ebook.edu.vn 39

mt ngt khc c cng mc u tin vn ang hot ng, n cng khng c p ng sau khi c lnh RETI cho n khi c t nht mt lnh khc c thc hin. Do mi khi mt th tc ngt c a vo, th n khng th c a vo ln na cho n khi t nht mt lnh ca chng trnh ngt c thc hin. Mt cch s dng c im ny i vi hot ng theo bc n l l lp trnh cho 1 trong nhng ngt ngoi(chng hn /INT0) c kch hot theo mc. Nu chn /INT0 c duy tr mc thp, th CPU s chuyn ngay n th tc ngt ngoi 0 v dng cho ti khi INT0 c nhn xung t thp ln cao ri xung thp. Sau n s thc hin lnh RETI, tr li nhim v chng trnh, thc hin mt lnh, v ngay sau nhp li th tc ngft ngoi 0 i xung nhp tip theo ca P3.2. Mi bc ca nhim v chng trnh c thc hin vo mi thi im chn P3.2 c nhn xung. 2.8 Kt ni c bn ca vi iu khin 8051

http://www.ebook.edu.vn

40

Chng 3: C cho vi iu khin 8051


3.1 Keil C cho vi iu khin 3.1.1 Keil Compiler C51 bao gm phn m rng (cho ANSI C) cho: cc vng v kiu b nh ca 8051 Cc ch nh Cc kiu nh c bit Cc kiu bin d liu c bit Bin Bit v bin bit d liu Cc thanh ghi c bit Con tr Thuc tnh hm 3.1.2Nhng kiu d liu ring ca C51 Nhng kiu d liu ring ca C51 - bit static bit done_flag=0; - sbit sbit EA= oxAF; /*defines EA to be the SFR bit at 0xAF*/ - sfr(Special Function Registers, 0x80-0xFF) sfr P0 = 0x80; /* Port-0, address 80h*/ sfr P2 = 0xA0; /* Port-2, address 0A0h */ - sfr16 sfr16 T2=0xCC; /* Timer 2: T2L 0CCh, T2H 0CDh Cc ch nh (Memory Models) - SmallModel Tt c cc bin c mc nh xp xp ht trong b nh d liu trong Tt c cc i tng, nh stack phi c t trong internal RAM - Compact Model Tt c cc bin c mc nh xp xp trong mt page ca external data memory
http://www.ebook.edu.vn 41

C th c cung cp ln nht 256 bin Chm hn ch SmallModel - Large Model Tt c cc bin c mc nh xp xp trong external data memory Data Pointer (DPTR) c s dng nh a ch Truy nhp b nh khng hiu qu To ra nhiu m hn cc ch small v compact model - Cc con tr b nh c bit (Memory-specific Pointers) Bao gm cc kiu nh c bit trong con tr C th c s dng truy nhp cc vng nh nh trc char data *str; int xdata *numtab; long code *powtab; B nh chng trnh code c th m rng ti 64Kbyte b nh chng trnh char code text[] = ENTER PARAMETER; Truy nhp bi lnh MOVC @A+DPTR B nh chng trnh th ch cho php c (trong chng trnh)v khng th ghi vo khi chng trnh ang thc hin. B nh d liu C ti 256 bytes ca b nh d liu trong - data : Vng nh 128 bytes u tin ca internal memory char data var1; - idata : Tt c vng nh 256 bytes ca internal data memory float idata x,y,z; - bdata : Vng nh 16 bytes ca vng nh nh a ch bit ca internal data memory (20h ti 2Fh) char bdata flags; B nh d liu m rng - xdata ch bt k vng nh no trong khng gian 64KByte ca vng nh d liu
http://www.ebook.edu.vn 42

m rng unsigned long xdata array[100]; - pdata ch 1 page ca 256 bytes ca vng nh m rng unsigned char xdata vector[10][4][4]; Vnh nh cc thanh ghi c bit - SFRs c m t nh cc bin trong C - sfr (ging nh t kha char hoc int) sfr P0 = 0x80; /*Port0, address 80h*/ - sfr16 truy nhp 2 SFRs nh 16-bit SFR - sfr16 T2 = 0xCC /*Timer 2; T2L 0CCh, T2H 0CDh) - sbit cho php truy nhp ti tng bit ring ca cc thanh ghi SFR sfr PSW=0xD0; sfr IE=0xA8; sbit EA=IE^7; sbit OV=0xD0^2; sbit CY=0xD7; 3.1.3 Hm vi phn nh ngha m rng. Trong KeilC c hm vi phn nh ngha m rng cho php : nh r cc hm nh th tc ngt Chn register bank s dng Chn ch nh Hm quy Cu trc hm m rng: [return_type] funcname ([args]) [{small|compact|large}][reentrant][interrupt n][using n] Trong : small, compact, large Ch nh reentrant - Hm quy interrupt n- Ngun ngt (bng vector ngt) using - Chn bank thanh ghi

http://www.ebook.edu.vn

43

Truyn tham s qua cc thanh ghi: Argument Number 1 2 3 char 1 byte ptr R7 R5 R3 int 2 bytes ptr R6&R7 R4&R5 R2&R3 long float R4-R7 R4-R7 generic ptr R1-R3 R1-R3

Gi tr tr v cho hm Return Type bit char int long float generic ptr Register Carry Flag R7 R6&R7 R4-R7 R4-R7 R1-R3 MSB in R6, LSB in R7 MSB in R4, LSB in R7 32-bit IEEE format Memory type in R3, MSB R2, LSB R1 Description

nh ngha ch nh cho mt hm: #pragma small /*default small model */ extern int calc (char i, int b) large reentrant; extern int func (char i, float f) large; extern void *tcp (char xdata *xp, int ndx) small; int mtest (int i, int y){ /*small model*/ return (i*y + y*i + func(-1, 4.75);} int large_func (int i, int k) large { /*large model*/ return (mtest(i,k) * 2)}

http://www.ebook.edu.vn

44

3.1 Project 1 Led n


3.1.1 Mch v nguyn ly hot ng y l s nguyn l ca 1 led. Led n c s dng nh mt phng tin truyn tn hiu, c nhiu nh sn xut Led vi cc hnh dng kch thc v mu sc khc nhau. m bo Led c sng th dng qua Led phi c m bo ln hn hoc bng dng in hnh, v cng phi ch y m bo dng in qua Led phi nh hn dng in max. Vi mi loi Led, in p ri trn Led s khng i thng khong t 1.4 ti 4 V do ngi ta thng phi mc thm mt in tr c gi tr c tnh theo cng thc cho trn hnh v:

Color Infrared Red Red Red Orange Green Yellow Blue White

Type Standard Super Bright Low Current Low Current -

Typical current Maximal current Voltage drop Ud Id (mA) 30 20 20 2 10 2 20 20 25 If (mA) 50 30 30 30 30 20 30 30 35 (V) 1.4 1.7 1.85 1.7 2.0 2.1 2.1 4.5 4.4

http://www.ebook.edu.vn

45

Mt Led n c ni vi chn ca vi iu khin nh hnh bn, gi s chn l P1.2 vy lm th no iu khin cho Led sng, tt:

Bin Led1 c khai bo (gn cho) chn P1_2 ca vi iu khin bng cu lnh: sbit Led1=P1^2; Khi gn : Led1= 0; trong hm main th chn P1_0 ca AT89C51 c mc logic l 0V. Theo s nguyn l: 5V Tr R1 Led1 P1_2 (0 V). C chnh lch p c dng in qua led Led sng. Chng ta c th tnh tan ch ny d dng gi tr ca in tr. in p ri trn led l Uak (chn Led vng) ly =2 V. in p chn P1_0 l 0V. in p hai u tr : 5V - 2V = 3 V. Dng qua tr = dng qua led = xp x 10 mA vy phi chn in tr c gi tr xp x 3/10*1000=300 . Khi gn: Led1= 1; tc l chn P1_0 c gi tr 1 tong ng in p ca n l 5V . Hiu in th gia hai u +5V v P1_0 l 0V . Nn khng c dng qua led Led tt.Nhng nu trong hm main cc bn vit ch c nh sau: While(1) { Led1=bat; Led1=tat; } Khi chy debug th vn thy led nhp nhy. Nhng khi np chong trnh vo chp lp vo mch th led khng nhy hoc ch sng m hoc tt ngm. V lnh Led1=bat; l lnh 1 chu k my , tn s thch anh l 12 Mhz, 1 chu k my c thi gian l 1uS. Va bt ln 1 uS ri li tt ngay. Led khng p ng c tn s cao vy nn khng nhp nhy. Do cn ti hm tr . Bt led ln tr 1 thi gian kh lu(0,5 giy), ri tt led di kh lu(0,5s) ri li bt li to thnh vng lp s c led nhp nhy. Tc dng ca cu lnh while(1) . iu kin bn trong vng while l 1 lun lun ng nn n l vng lp v hn ln. Nu khng c vng while(1) th led ca cc bn ch sng ln 1 ln ri tt

http://www.ebook.edu.vn

46

3.2.2 Chng trnh mu /*----------------------------------------------------------------------------nh ngha P1.2 -----------------------------------------------------------------------------*/ sbit Led1 = P1^2; /* SFR cho P1.2 */ /*----------------------------------------------------------------------------Chng trnh chnh MAIN -----------------------------------------------------------------------------*/ void main (void) { /*----------------------------------------------Vng lp sau lin tc cho Led1 sng ri tt -----------------------------------------------*/ while (1) { Led1=0; /*Led sang*/ Delay(500);/*Giu cho led sang de nhin thay*/ Led1=0; /*Tat Led*/ Delay(500);/*Giu cho led tat de nhin thay*/ } } /*-----------------------------------------------------------------------------*/

http://www.ebook.edu.vn

47

3.3 Project 2 dy 8 Led n

3.3.1 Nguyn l hot ng: Led ni t chn vk xung t vy nu chn vi iu khin 5V th led s sng, nu chn vi iu khin 0V th led s ti. in p 5V v sao led khng chy m li cn sng yu? V vi iu khin 8051 ch c th cung cp dng nh khng 10mA 1 chn nn led sng yu. Cn nu mun led sng p th lp nh sau t dong 5V chn di ca led - chn ngn ca led chn vi iu khin. 3.3.2 Lp trnh : Trc ht iu khin 1 led tng Led mt. iu khin 1 led th ch vic gn chn ni vi led d bng 0 hoc 1, th in p chn s l 0V hoc 5V, ty vo in p n s sng hoc ti. /*==================================================== Mo ta: ieu khien led don. Phan cung: 8 led noi tu +5V qua dien tro han dong vao 8 chan cong 1. Thach anh: 12 Mhz =====================================================*/ /***********************************************************/ #include <AT89X51.H>
http://www.ebook.edu.vn 48

/************************************************************/ /*******************Khai bao bien toan cuc**********************/ sbit Led1=P1^0; //Khai bao bien Led1 kieu bit chan P1.0 sbit Led2=P1^1; // ... sbit Led3=P1^2; sbit Led4=P1^3; sbit Led5=P1^4; sbit Led6=P1^5; sbit Led7=P1^6; sbit Led8=P1^7;//Khai bao bien Led8 kieu bit chan P1.7 /***********************************************************/ /********************Khai bao ham****************************/ /*----------------Delay Ham tao thoi gian tre------------------------------Dau vao: 1 bien thoi gian. Dau ra: khong ------------------------------------------------------*/ void Delay(unsigned int time) { unsigned int 1;// Khai bao bien cuc bo for(i=0; i<time; i++)//Lap tao thoi gian tre { ; // Khong lam gi } } /***********************************************************/ /*******************Chuong trinh chinh**************************/ void main(void) { while(1)// Vong lap vo han { Led1= 1;// Cho led 1 sang tre(1000);// Tre 1 khoang thoi gian Led1= 0;// Tat led 1 tre(1000);// Tre 1 khoang thoi gian }
http://www.ebook.edu.vn 49

} /************************************************************/ iu khin 8 led, chng trnh chnh c sa li nh sau: void main(void) { while(1)// Lap vo han { Led1= 1;// Cho led 1 sang Delay(500);// Goi ham tao thoi gian tre Led1= 0;// Tat led 1 Delay(500);// Goi ham tao thoi gian tre Led2= 1;// Cho led 2 sang Delay(500);// Goi ham tao thoi gian tre Led2= 0;// Tat led 2 Delay(500);// Goi ham tao thoi gian tre Led3= 1;// Cho led 3 sang Delay(500);// Goi ham tao thoi gian tre Led3= 0;// Tat led 3 Delay(500);// Goi ham tao thoi gian tre Led4= 1;// Cho led 4 sang Delay(500);// Goi ham tao thoi gian tre Led4= 0;// Tat led 4 Delay(500);// Goi ham tao thoi gian tre Led5= 1;// Cho led 5 sang Delay(500);// Goi ham tao thoi gian tre Led5= 0;// Tat led 5 Delay(500);// Goi ham tao thoi gian tre Led6= 1;// Cho led 6 sang Delay(500);// Goi ham tao thoi gian tre Led6= 0;// Tat led 6 Delay(500);// Goi ham tao thoi gian tre Led7= 1;// Cho led 7 sang Delay(500);// Goi ham tao thoi gian tre
http://www.ebook.edu.vn 50

Led7= 0;// Tat led 7 Delay(500);// Goi ham tao thoi gian tre Led8= 1;// Cho led 8 sang Delay(500);// Goi ham tao thoi gian tre Led8= 0;// Tat led 8 Delay(500);// Goi ham tao thoi gian tre } } Vi chong trnh ny chng ta c th cho th t cc led tt bt khc nhau c cc kiu nhy khc nhau. 3.3.3 iu khin ra c cng Nu cc bn nhm chn vi vic iu khin tng chn 1 vit code rt tn cng cc bn c th xut gi tr ra c cng. Trc ht cc bn cn nm cc iu nh sau: - Mt cng c 8 bit t hp, 8bit c 2 = 256 trng thi. Khi cc bn a ra cng 1 gi tr a (thp phn) t 0 n 255 th s a s c i ra h nh phn ri a ra cc bit( chn) ca cng. V d: Nu c lnh: P1=1; v 1(10) nn chn P1_0(bit 0) s bng 1(5V) cn li cc t P1_1(bit 1) n P1_7(bit 7) s bng 0(0V). P1=10; v 10(10) = 0000 0001 = 0000 1001(2)(2) th s c P1_0 v P1_3 bng 1(5V) cn li cc chn khc s l 0(0V). - Cc bn c th a ra cng 1 gi tr s hex t 0 n ff tng ng t 0 n 255. Cc s c s trong h hex. (HEX)0 1 2 3 4 5 6 7 8 9 A B C D E F (10) 12 10 11 13 14 15 Cch s hex ra s thp phn: c s hex : N=abf1 i ra h s 10

N(10)=1.160 + 15.161+ 11.162+ 10.163(16). i s nh phn sang hex: Gp 4 s nh phn thnh 1 s hex: V d: 0010 0001(2)(16) 1 4 s u c bit 1 = 1 nn 1x20= 2 4 s sau c bit 0 =1 nn 1x2=1. Cch a ra nh sau: V d lnh P1=1; tong dong vi P1=0x01; P1=10; tong ong vi P1=0x0A;
http://www.ebook.edu.vn 51

Chong trnh xut ra c cng tong ong vi chong trnh iu khin 8 led tng ci 1 nh sau: void main(void) { while(1)// Lap vo han { P1=0x01;// Bat led 1 Delay(1000);// Tre 1 khoang thoi gian P1=0x00;// Tat led 1 Delay (1000);// Tre 1 khoang thoi gian P1=0x02;// Bat led 2 Delay (1000);// Tre 1 khoang thoi gian P1=0x00;// Tat led 2 Delay (1000);// Tre 1 khoang thoi gian P1=0x04;// Bat led 3 Delay (1000);// Tre 1 khoang thoi gian P1=0x00;// Tat led 3 Delay (1000);// Tre 1 khoang thoi gian P1=0x08;// Bat led 4 Delay (1000);// Tre 1 khoang thoi gian P1=0x00;// Tat led 4 Delay (1000);// Tre 1 khoang thoi gian P1=0x10;// Bat led 5 Delay (1000);// Tre 1 khoang thoi gian P1=0x00;// Tat led 5 Delay (1000);// Tre 1 khoang thoi gian P1=0x20;// Bat led 6 Delay (1000);// Tre 1 khoang thoi gian P1=0x00;// Tat led 6 Delay (1000);// Tre 1 khoang thoi gian P1=0x40;// Bat led 7 Delay (1000);// Tre 1 khoang thoi gian P1=0x00;// Tat led 7
http://www.ebook.edu.vn 52

Delay (1000);// Tre 1 khoang thoi gian P1=0x80;// Bat led 8 Delay (1000);// Tre 1 khoang thoi gian P1=0x00;// Tat led 8 Delay (1000);// Tre 1 khoang thoi gian } } Nh vy g code vn mi tay lm d dt c mc ch 8 n nhy lin tip cc bn c th lm nh sau: /******************Ham chinh****************************/ void main(void) { unsigned char n; // Khai bao them bien n cho vong for while(1)// Lap vo han { P1=0x01;// Bat led 1 for(n=0 ; n<8;n++)// Lap 8 lan { P1=P1<<1; // Dich trai 1 bit Delay (1000); } } } /***********************************************************/ Debug quan st s thay i ca cng 1 d thy c tc dng php dch bit xang tri. hiu thao tc xut ra cng, chn, cc cc bn lm 1 v d na nh sau: /***********************Ham chinh*******************************/ void main(void) { unsigned char n; // Khai bao them bien n cho vong for while(1)// Lap vo han { P1=0x01;// Bat led 1 for(n=0 ; n<256;n++)// Lap 8 lan
http://www.ebook.edu.vn 53

{ P1=n; // Dich bit xang trai Delay (5000); } } } /****************************************************************/ Debug thy s thay i cc cng.

3.4 Project 3: iu khin Led 7 thanh


3.4.1 Hnh dng v cu to:

C hai loi led 7 thanh: Ant chung v Catt chung. Hnh trn l so chn ca hai loi led. N c cu to nh sau:

Mch lp s dng led Ant chung nhu sau:

http://www.ebook.edu.vn

54

3.4.2 Nguyn l hot ng: Khi cm ngun vo mch tt c cc chn ca cc cng IO ca VK l 5V( Nu cng P0 khng lp in tr treo th s l 0V). Nhn s mch khng c chnh lch in p nn khng c n no sng. Chng ta mun sng thanh no ch vic a ra in p 0V chn vi iu khin ni vi thanh . Thanh hin hin th s 1: hin th s 2: Thanh tt Gi tr(P1) B,C cc thanh cn li 1111 1001 A,B,D,E,G cc thanh cn li 1010 0100 . 1000 0000

hin th s 8: Tt c cc thanh khng thanh no Bt th 8 P1.7 khng dng. Ngoi ra led 7 thanh cn c th hin th 1 s ch hin th ch B: Ging s 8 Hin th ch A: 3.4.3 Lp trnh : A,B,C,E,F,G D 1000 1000

3.4.3.1 Cch 1: Lp trnh d hiu khng cn phi tnh ton nhng phi vit v copy, paste v sa nhiu.
http://www.ebook.edu.vn 55

Code nh sau: #include <AT89X52.H> /* Khai bao cac bien bit gan voi chan vi ieu khien*/ sbit a = P1^0; sbit b = P1^1; sbit c = P1^5; sbit d = P1^4; sbit e = P1^3; sbit f = P1^2; sbit g = P1^3; /* Khai bao bien */ long n;// Cho vong for /* Khai bao ham */ /* Ham tre */ void delay(long time) { for(n=0; n<time; n++) { ; } } /* Ham tat tat ca cac thanh */ void tat(void) { a =1; b =1; c =1; d =1; e =1; f =1; g =1; } /* Cac ham hien thi chu va so */ void so1(void) { tat(); a =1; b =0; c =0; d =1;e =1; f =1; g =1; } void so2(void) { tat(); a =0; b =0; c =1; d =0; e=0; f =1; g =0; }
http://www.ebook.edu.vn 56

void so3(void) { tat(); a =0; b =0;c =0; d =0;e =1; f =1; g =0; } void so4(void) { tat(); a =1;b =0; c =0; d =1;e =1; f =0; g =0; } void so5(void) { tat(); a =0; b =1; c =0; d =0; e =1; f =0; g =0; } void so6(void) { tat(); a =0; b =1; c = 0;d =0; e =0; f =0; g =0; } void so7(void) { tat(); a =0; b =0; c =0; d =1; e =1; f =1; g =1; } void so8(void) { tat(); a =0; b =0; c =0; d =0;e =0; f =0; g =0; } void so9(void) { tat(); a =0; b =0; c =0; d =0; e =1;f =0; g =0; } void chuA(void) { tat(); a =0; b =0; c =0;d =1; e =0; f =0; g =0; }
http://www.ebook.edu.vn 57

void chuB(void) { tat(); a =0; b =0; c =0; d =0; e =0; f =0; g =0; } void chuC(void) { tat(); a =0; b =1; c =1; d =0; e =0; f =0; g =1; } void chuD(void) { tat(); a =0; b =0; c =0; d =0; e =0; f =0; g =1; } void chuE(void) { tat(); a =0; b =1; c =1; d =0; e =0; f =0; g =0; } void chuF(void) { tat(); a =0; b =1; c =1; d =1; e =0; f =0; g =0; } void chuG(void) { tat(); a =0; b =1; c =0; d =0; e =0; f =0; g =1; } void chuH(void) { tat(); a =1; b =0; c=0; d =1; e =0; f =0; g =0; } void chuI(void) { tat(); a =1; b =1; c =1; d =1; e =0; f =0; g =1; } void chuL(void) { tat(); a =1; b =1; c =1; d =0; e =0; f =0; g =1; } void chuO(void) { tat(); a =0; b =0; c =0; d =0; e =0; f =0; g =1; } void chuP(void) {
http://www.ebook.edu.vn 58

tat(); a =0; b =0; c =1; d =1; e =0; f =0; g =0; } void chuR(void) { tat(); a =0; b =0; c =0; d =1; e =0; f =0; g =0; } void chuS(void) { tat(); a =0; b =1; c =0; d =0; e =1; f =0; g =0; } void chuU(void) { tat(); a =1; b =0; c =0; d =0; e =0; f =0; g =1; } void chuY(void) { tat(); a =1; b =0; c =0; d =0; e =1; f =0; g =0; }
/* Ham chinh */ void main(void) { while(1) { so0(); delay(20000); so1(); delay(20000); so2(); delay(20000); so3(); delay(20000); so4(); delay(20000); so5(); delay(20000); so6(); delay(20000); so7(); delay(20000); so8(); http://www.ebook.edu.vn 59

delay(20000); so9(); delay(20000); chuA(); delay(20000); chuB(); delay(20000); chuC(); delay(20000); chuD(); delay(20000); chuE(); delay(20000); chuF(); delay(20000); chuG(); delay(20000); chuH(); delay(20000); chuI(); delay(20000); chuL();

delay(20000); chuO(); delay(20000); chuP(); delay(20000); chuR(); delay(20000); chuS(); delay(20000); chuU(); delay(20000); chuY();
http://www.ebook.edu.vn 60

delay(20000); }} 3.4.3.2 Cch 2: Cc bn vit 1 chng trnh n gin ri dng cng c Debug xem s hex ri vit vo rt ngn gn. V d: Hm hin th s 1: void so1(void) { tat(); P1=0xF5; } Cc bn debug cho hin th cng P1 ln. du tch cc n tt(1) , b du tch cc n cn bt(0). Ri c gi tr hex nh ti hng dn bi trc. Dng cu trc lnh switch case vit li chng trnh s rt gn. void Hienthiled(unsigned char x) // Co 1 bien dau vao de xac dinh xem la hien thi so nao { switch(x) { case 1: { tat(); P1=0xF5; break; } // So 1 case 2: { tat(); P1=0xFF; break; }// So 2 case 9: { tat(); P1=0xFF; break; }// So 9 case 10: { tat(); P1=0xFF; break; }// Chu A . case 20: { tat(); P1=0xFF; break;
http://www.ebook.edu.vn 61

}// Chu Y } } Cc gi tr trn ch l v d cc bn rt gn v t copy vo. Vi hm hin th led cc bn vit hin cc s v cc ch gi hm main ch cn nh sau: void main (void) { while(1) { for(n=0; n<20; n++) { Hienthiled(n); delay(20000); } }

3.5 Phm nhn


3.5.1 m s ln phm bm gii hn t 0 n 9 hin th ra led 7 thanh.

http://www.ebook.edu.vn

62

3.5.1.1Nguyn l hot ng: - Phn nt bm: (khi khng c t 104) ban u chn P1.0 mc cao +5V, nu bm nt 2 u nt bm thng vi nhau. Chn P1.0 thng vi GND. Led sng do c chnh p. Chn P1.0 thng t. Nu c t 104 t in c np in, khi bm nt t in s phng in t cc dong sang cc m lm chn P1.0 thng vi GND nhng lu v 0 V hn 1 cht. - Do tip im c kh ca nt bm nn khi bm nt n s c 1 s xung in. T 104 c tc dng gim nhiu . T 104 cng c th b i khng lp v ta c th kh nhiu bng phn mm. 3.5.1.2 Lp trnh: Code bi trc gi nguyn: son thm mt s hm nh sau hm c phm bm. Hm c s ln n phm y l code cc hm b sung: unsigned char i=0;// Khai bao them bien toan cuc de dem so lan an nut unsigned char Docnutnbam(void)// Ham tra lai gia tri unsigned char { if( P1_0 ==0)// Neu nut duoc bam { delay(300);// Tre 1 khoang thoi gian qua xung nhieu while(P1_0 ==0) // Cho toi khi nha tay khoi nut bam { ;//Khong lam gi } i++;// Nha tay thi tang i if( i ==10) i=0;// Quay vong gia tri cua i } return i; } void hienthisolannhanphim(unsigned char solan) { switch(solan)// Tuy vao so lan { case 0:
http://www.ebook.edu.vn 63

{ so0(); break; }// Neu so lan =0 hien so 0 thoat khoi switch case 1: { so1(); break; }// Neu so lan =1 hien so 1 thoat khoi switch case 2: { so2(); break; }// .... case 3: { so3(); break; } case 4: { so4(); break; } case 5: { so5(); break; } case 6: { so6(); break; } case 7: { so7(); break; } case 8: { so8(); break; } case 9: { so9(); break; }// Neu so lan =9 hien so 9 thoat khoi switch }
http://www.ebook.edu.vn 64

} void main(void) { while(1) { Docnutbam(); // Goi ham doc so lan nhan phim hienthisolannhanphim(i);// Hien thi so lan nhan phim, bien i la bien toan cuc } } 3.5.2 c ma trn phm Nhim v: Qut bn phm 16 phm bm(4x4), xem phm no c bm, cc phm c nh s t 0 n 15 ri hin th gi tr ra led 7 thanh

3.5.2.1 Nguyn l qut phm: - V sao mch phm u theo ma trn. Nu c t 16 nt bm bnh thng phi dng 16 chn vi iu khin. Nu u theo dng ma trn th ch mt 8 chn ta cng c th c c 16 phm bm. - C 2 cch qut phm theo ct v theo hng, ti chn cch qut theo ct, qut theo hng cc bn c th lm tong t. - Bc 1 : Ta a chn P1.0 ni vi ct 1 xung 0V.Ri ta kim tra gi tr logic ca cc chn P1.4,P1.5,P1.6,P1.7.Nu phm 1 c bm th hng 1_ P1.4 s c gi tr bng 0. Nu phm 2 c bm th hng 2_ P1.5 s c gi tr bng 0. Nu phm 3 c bm th
http://www.ebook.edu.vn 65

hng 3_ P1.6 s c gi tr bng 0. Nu phm 4 c bm th hng 4_ P1.7 s c gi tr bng 0. Ta cn c vo xc nh xem phm no c bm. - Bc 2 : Ta a chn P1.1 ni vi ct 2 xung 0V.Ri ta kim tra gi tr logic ca cc chn P1.4,P1.5,P1.6,P1.7.Nu phm 5 c bm th hng 1_ P1.4 s c gi tr bng 0. Nu phm 6 c bm th hng 2_ P1.5 s c gi tr bng 0. Nu phm 7 c bm th hng 3_ P1.6 s c gi tr bng 0. Nu phm 8 c bm th hng 4_ P1.7 s c gi tr bng 0. Ta cn c vo xc nh xem phm no c bm. Tng t ta thc hin cho cc ct cn li. Ta s dng cu lnh if kim tra. 3.5.2.2 Lp trnh: - To 1 project mi, copy phn hin th cc s 09 cc ch AY ca bi trc. Ri b sung cc hm sau. Hm hin th phm n. void phim_duoc_an(unsigned char phim) { switch(phim)// Tuy vao so lan { case 0: { so0(); break; }// Neu so lan =0 hien so 0 thoat khoi switch case 1: { so1(); break; }// Neu so lan =1 hien so 1 thoat khoi switch case 2: { so2(); break; }// .... case 3: { so3(); break; } case 4: { so4(); break; } case 5: {
http://www.ebook.edu.vn 66

so5(); break; } case 6: { so6(); break; } case 7: { so7(); break; } case 8: { so8(); break; } case 9: { so9(); break; }// Neu so lan =9 hien so 9 thoat khoi switch }} Hm qut phm: /*Khai bao 1 mang 4 phan tu nhu sau: quetphim[4]={P0=0xFE,0xFD,0xFB,0xF7} De dua 0 ra lan luot cac hang phim, khi do neu nut nao uoc an thi chan vi ieu khien se xuong 0.Chu y fai kiem tra phim khoang 100 lan.*/ unsigned char quetphim[4]={0xFE,0xFD,0xFB,0xF7}; // Dinh nghia so lan quet phim #define solanquetphim 100 // Cac ban co the thay doi gia tri nay cho phu hop unsigned char quetbanphim(void) { unsigned char giatribanphim;// Bien de luu gia tri phim an tu 0 den 15 ma hoa 16 phim unsigned char x,y; //Quet 4 hang phim for(x=0; x<4;x++) { P1=quetphim[x];// Dua lan luot cac hang xuong 0 for(y=0;y<solanquetphim;y++)// Kiem tra solanquetphim lan { if(P1_4==0) giatribanphim=0+4*x;// Gia tri phim tuong ung if(P1_5==0) giatribanphim=1+4*x;// Tuy thuoc vao hang x
http://www.ebook.edu.vn 67

if(P1_6==0) giatribanphim=2+4*x;// La may ma gia tri cua if(P1_7==0) giatribanphim=3+4*x;// gia tri ban phim tuong ung. } } return(giatribanphim); } Hm Main. void main(void) { unsigned char i; while(1) { i=quetbanphim(); phim_duoc_an(i); } }

3.6 Ghp ni vi LCD

http://www.ebook.edu.vn

68

3.6.1 Nguyn l hot ng ca LCD: - Chn VCC, V v VSS: Cc chn VEECC, V: Cp dong ngun - 5v v t tong ng th V0 c dng iu khin tong phn ca LCD. - Chn chn thanh ghi RS (Register Select): C hai thanh ghi trong LCD, chn RS(Register Select) c dng chn thanh ghi, nh sau: Nu RS = 0 th thanh ghi m lnh c chn cho php ngi dng gi mt lnh chng hn nh xo mn hnh, a con tr v u dng v.v Nu RS = 1 th thanh ghi d liu c chn cho php ngi dng gi d liu cn hin th trn LCD. - Chn c/ ghi (R/W): u vo c/ ghi cho php ngi dng ghi thng tin ln LCD khi R/W = 0 hoc c thng tin t n khi R/W = 1. - Chn cho php E (Enable): Chn cho php E dc s dng bi LCD cht d liu ca n. Khi d liu c cp dn chn d liu th mt xung mc cao xung thp phi c p n chn ny LCD cht d liu trn cc chn d liu. Xung ny phi rng ti thiu l 450ns. - Chn D0 - D7: y l 8 chn d liu 8 bt, c dng d gi thng tin ln LCD hoc c ni dung ca cc thanh ghi trong LCD. hin th cc ch ci v cc con s, chng ta gi cc m ASCII ca cc ch ci t A n Z, a n f v cc con s t 0 - 9 n cc chn ny khi bt RS = 1. Cng c cc m lnh m c th c gi n LCD xo mn hnh hoc a con tr v u dng hoc nhp nhy con tr. - Ch :Chng ta cng s dng RS = 0 kim tra bt c bn xem LCD c sn sng nhn thng tin. C bn l bt D7 v c th c c khi R/W = 1 v RS = 0 nh sau: Nu R/W = 1, RS = 0 khi D7 = 1 (c bn 1) th LCD bn bi cc cng vic bn trong v s khng nhn bt k thng tin mi no. Khi D7 = 0 th LCD sn sng nhn thng tin mi. Lu chng ta nn kim tra c bn truc khi ghi bt k d liu no ln LCD. 3.6.2 M (Hex) Lnh n thanh ghi ca LCD 1: Xo mn hnh hin th
http://www.ebook.edu.vn 69

2: Tr v u dng 4: Gim con tr (ch con tr sang tri) 6 Tang con tr (dch con tr sang phi) 5: Dch hin th sang phi 7: Dch hin th sang tri 8: Tt con tr, tt hin th A: Tt hin th, bt con tr C: Bt hin th, tt con tr E: Bt hin th, nhp nhy con tr F: Tt con tr, nhp nhy con tr 10: Dch v tr con tr sang tri 14: Dch v tr con tr sang phi 18: Dch ton b hin th sang tri 1C: Dch ton b hin th sang phi 80: Dch con tr v u dng th nht C0: p con tr v u dng th hai 38: Hai dng v ma trn 5 7 - iu khin LCD qua cc buc sau: Bc 1 : Chun b phn cng. Dng tuc vt hay ci g bn c xoay bin tr 5 K iu chnh tng phn ca LCD. Xoay cho n khi cc vung(cc im nh) ca LCD hin ln th xoay ngc bin tr li 1 cht. Bc 2 : Khi to cho LCD. Bc 3 : Gn cc gi tr cho cc bit iu khin cc chn RS,RW,EN cho ph hp vi cc ch d : Hin th k t ln LCD hay thc hin 1 lnh ca LCD. Bc 4: Xut byte d liu ra cng diu khin 8 bit d liu ca LCD. Bc 5: Kim tra c bn xem LCD sn sng nhn d liu mi chua. Bc 6: Quay vng li bc 1. 3.6.3 Lp trnh: - c th lp trnh cho LCD ta thm vo th vin string.h ca trnh bin dch bng cu lnh: #include <string.h>
http://www.ebook.edu.vn 70

- Khai bo cc chn ca LCD gn vi cc cng: /* RS chon thanh ghi =0 ghi lenh =1 ghi du lieu RW doc ghi =0 ghi =1 doc E cho phep chot du lieu xung cao xuong thap toi thieu 450 ns. Bit co ban D7 khi RS=0 RW=1 neu D7=1 LCD ban D7=0 LCD san sang. */ sfr LCDdata = 0xA0;// Cong 2 , 8 bit du lieu P0 co dia chi 0x80, P1 0x90 , P2 0xA0 sbit BF = 0xA7; // Co ban bit 7 sbit RS = P3^5; sbit RW = P3^4; sbit EN = P3^3; - Vit 1 s hm iu khin LCD nhu sau: * Hm kim tra LCD c bn hay khng: void wait(void) { long n = 0; EN=1;// Dua chan cho fep len cao RS=0;// Chon thanh ghi lenh RW=1;// Doc tu LCD LCDdata=0xFF;// Gia tri 0xFF while(BF){ n++; if(n>100) break; }// Kiem tra co ban // Neu ban dem n den 100 roi thoat khoi while EN=0;// Dua xung cao xuong thap de cho RW=0;// Doc tu LCD } * Hm iu khin LCD thc hin 1 lnh:
http://www.ebook.edu.vn 71

void LCDcontrol(unsigned char x) { EN=1;// Dua chan cho fep len cao RS=0;// Chon thanh ghi lenh RW=0;// Ghi len LCD LCDdata=x;// Gia tri x EN=0;// Xung cao xuong thap wait();// Doi LCD san sang } Hm c 1 bin u vo l cc gi tr trong bng m lnh ca LCD. * Hm khi to LCD: void LCDinit(void) { LCDcontrol(0x30);//Che do 8 bit. LCDcontrol(0x30); LCDcontrol(0x30); LCDcontrol(0x38);// 2 dong va ma tran 5x7 LCDcontrol(0x0C);// Bat con tro LCDcontrol(0x06);// Tang con tro xang fai LCDcontrol(0x01);// Xoa man hinh } * Hm l nh cho LCD hin th 1 k t : void LCDwrite(unsigned char c) { EN=1;// Cho phep muc cao RS=1;// Ghi du lieu RW=0;// Ghi len LCD LCDdata=c;// Gia tri C EN=0;// Xung cao xuong thap wait();// Cho } Hm c 1 bi n du vo l m ca k t trong bng ASCII. * Hm l nh cho LCD hin th 1 xu k t ( dng ch): void LCDputs(unsigned char *s,unsigned char row) { unsigned char len;
http://www.ebook.edu.vn 72

if(row==1) LCDcontrol(0x80);// dich con tro ve dau dong 1 else LCDcontrol(0xC0);// dich con tro ve dau dong 2 len=strlen(s);// Lay do dai bien duoc tro boi con tro while(len!=0)// Khi do dai van con { LCDwrite(*s);// Ghi ra LCD gia tri duoc tro boi con tro s++;// Tang con tro len--;// Tru do dai } } Hm hin th 1 s integer: void LCDwritei(int d) { unsigned char i,j,k,l; i=d%10;// Chia lay phan du, duoc chu so hang don vi d=d/10;// Chia lay phan nguyen, duoc nhung chu so da bo hang don vi j=d%10;// Duoc chu so hang chuc d=d/10;// Nhung chu so da bo hang don vi va hang chuc k=d%10;// Duoc hang tram l=d/10;// Duoc hang nghin LCDwrite(48+l);// Hien thi ki tu trong bang ascii LCDwrite(48+k);// Trong bang ascii so 0 co co so thu tu la 48 LCDwrite(48+j); LCDwrite(48+i); } Hm c 1 bin u vo l s int ln dn hng nghn cn hin th. * Hm tr: void delay(long time) { long n; for(n=0;n<time;n++) ; }
http://www.ebook.edu.vn 73

* Hm main: void main(void) { char x; LCDinit(); LCDputs("8052 MCU",1); delay(30000); while(1) { for(x=0;x<16;x++)// Dich 16 lan. { LCDputs("8052 MCU",1); LCDcontrol(0x18);// Dich hien thi sang trai. delay(5000);// Tre } } } 3.7 iu khin ng c DC 3.7.1 Mch nguyn ly

http://www.ebook.edu.vn

74

Nhim v: To ra xung c d rng thay i, 10 cp, tn s 1Khz, iu khin tc ng c (10 cp tc ). 3.7.2 Lp trnh: - Cch to xung c rng thay i bng VK. + Cch 1: Nh cc bn iu khin nhp nhy 1 con led, l to ra 1 xung 1 chn ca vi iu khin, nhng xung c rng c nh, tn s ln, cch bn c th iu chnh li hm delay tn s ca n ng 1 Khz. Tuy nhin v l dng hm delay nn trong thi gian c xung ln 1(5V) v thi gian khng c xung(0V) vi iu khin khng lm g c, hn na to xung bng vic delay m cc bn c nhu cu cn 2 b pht xung 2 knh, c cng tn s m khc rng xung th tr nn rt kh khn. Cho nn chng ta dng b nh thi Timer ca vi diu khin trong trng hp ny rt tin. + Cch 2: Dng ngt Timer ca b vi iu khin. Trc ht nhc li v ngt ca vi iu khin: + Ngt l g ? tr li cu hi ny ti xin trch on v ngt timer: - Hm ngt: Cu trc: Void Tnhm(void) interrupt ngunngt using bangthanhghi { // Chuong trinh phuc vu ngat o ay } + Hm ngt khng uc php tr li gi tr hay truyn bin vo hm. + Tn hm bt k. + interrupt l t kha phn bit hm ngt vi hm thung. + Ngun ngt t 0 ti 5 theo bng vector ngt. + Bng thanh ghi trn ram chn t 0 n 3. Ty theo bn vit hm ngt cho ngun no bn chn ngun ngt t bng sau:

- V using 0: C 4 bang thanh ghi bn c th chn cho chuong trnh phc v ngt, ci ny cng khng quan trng. Trong hm ngt cc bn c th b i t using 0, khi vi iu khin s t sp xp l dng bang thanh ghi no.
http://www.ebook.edu.vn 75

- Hm ngt khc hm bnh thung ch no. Hm bnh thung v d hm delay, c khi bn gi n th n s uc thc hin, c ngha l n c v tr c nh trong tin trnh hm main, c ngha l bn bit n xy ra khi no. Cn hm ngt th khng c tin trnh c nh, iu kin ngt c th xy ra bt k lc no trong tin trnh hm main v c khi no c iu kin ngt th hm ngt s uc gi t ng. - s dng ngt ta phi lm cc cng vic sau: 1) Khi to ngt: dng ngt no th cho php ngt hot ng bng cch gn gi tr tng ng cho thanh ghi cho php ngt IE( Interrupt Enable): IE l thanh ghi c th x l tng bt. V d : bn mun cho php ngt timer 1 bn dng lnh: ET1=1; Khng cho php na bn dng lnh : ET1=0; Hoc bn c th dng lnh IE= 0x08; th bit 3 ca thanh ghi IE tc(IE) s ln 1. Nhng cch th nht tin hn. 2) Cu hnh cho ngt: Trong 1 ngt n li c nhiu ch v d: vi ngt timer. Bn phi cu hnh cho n chy ch no, ch timer hay counter, ch 16 bit, hay 8 bit, bng cch gn cc gi tr tuong ng cho thanh ghi TMOD( Timer MODe). 3)Bt u chng trnh c ngt: -Truc khi bt u cho chy chuong trnh ta phi cho php ngt ton cc uc xy ra bng cch gn EA (Enable All interrupt) bng 1, th ngt mi xy ra. -Thng th ngay vo u chng trnh (hm main) trc vng while(1) chng ta t cng vic khi to, cu hnh v cho php kim tra ngt. void khoitaotimer0(void)// Ham khoi tao { EA=0;// Cam ngat toan cuc TMOD=0x02;// Timer 0 che do 2 8 bit auto reload TH0=0x9B;// Gia tri nap lai 155 doi ra so hex TL0=0x9B;// Gia tri khoi tao 155 doi ra so hex ET0=1;// Cho phep ngat timer 0 EA=1;// Cho phep ngat toan cuc TR0=1;// Chay timer 0 bat dau dem so chu ki may }

http://www.ebook.edu.vn

76

* Hm ngt: unsigned char dem=0;// Khai bao bien dem de dem tu 1 den 10 unsigned char phantramxung;// Bien chua phan tram xung(0...10) void timer0(void) interrupt 1 //Ngat timer 0 { TR0=0;// Dung chay timer 0 TF0=0;// Xoa co, o che do co tu duoc xoa,che do khac can toi cu viet vao day dem++; if(dem<phantramxung) P2_0=1;// Neu bien dem < phan tram xung thi dua gia tri 1 ra //chan, xung 5V else P2_0=0;// Neu dem = phan tram xung if(dem==10) dem=0;// Neu dem du 10 thi gan lai bang 0 de bat dau chu ki moi TR0=1; // Cho chay timer } c th thay i rng xung th ta luu rng xung vo 1 bin, v hm ngt khng cho truyn bin vo ta khai bo bin l bin ton cc c th gn gi tr mi hm. 100 uS ngt 1 ln xc nh chu k 1000 uS ta cn m t 1 n 10 ta khai bo bin m. void timer0(void) interrupt 1 //Ngat timer 0 { TR0=0;// Dung chay timer 0 TF0=0;// Xoa co TH0=0xAB; TL0=0xAB; . TR0=1;// Cho chay timer } Cu trc hm ngt timer no cung phi theo, do ch 2 t ng np li nn khng cn gn gi tr cho TH0 v TL0. V bin m s m t 1 n 10 nu bng 10 kt thc 1 chu k 10*100 =1000 uS, ta gn li n bng 0 sang chu k mi. if(dem<phantramxung) P2_0=1;// Neu bien dem < phan tram xung thi ua gia tri 1 ra //chan, xung 5V
http://www.ebook.edu.vn 77

else P2_0=0;// Neu dem = phan tram xung Cu lnh ny kim tra nu m nh hon phantramxung th s ua ra cng gi tr 1, bng hoc ln hn s a ra gi tr 0. Khi vo chng trnh chnh ta ch vic thay i gi tr bin phantramxung th rng xung s thay i. * Hm main: void main(void) { khoitaotimer0(); while(1) { phantramxung=9; delaylong(20000); phantramxung=4; delaylong(20000); } } Gi s khi cc bn gn phantramxung=4; Th c mi 100uS ngt xy ra 1 ln, v kim tra bin dm. Ln u m=1 <4 nn gi tr P2_0 = 1 mc cao, ln th 2 , 200 uS, dem =2<4 P2_0 = 1 mc cao, ln th 3, 300uS, dem=3<4, P2_0=1 mc cao, ln th 4, 400uS, dem =4 <4 sai, P2_0=0, bt du xung mc thp, c xung t cao xung thp, dem = 5<4 sai , P2_0=0 mc thp, , dem =10 <4 sai P2_0 mc thp d 1000 uS , 400uS cao, 600uS thp quay vng dem=0, ngt ln th 11, dem=1 < 4 , P2_0=1 mc cao, c xung thp ln cao. PWM 2 chn P2_0 v P3_5, cc bn khai bo thm 1 bin phantramxung2 v ua thm dng l nh sau vo hm ngt. if(dem<phantramxung) P3_5=1;// Neu bien dem < phan tram xung thi ua gia tri 1 ra //chan, xung 5V else P3_5=0;// Neu dem = phan tram xung

http://www.ebook.edu.vn

78

3.8 Ghp ni Matrix Led - Dng Led:

3.8.1 S cu to:

3.8.2 S kt ni Matrix Led 8x8:

http://www.ebook.edu.vn

79

Nhim v: iu khin Led ma trn 8x8. Hin th dng ch chy MTC. 3.8.3 Nguyn l hot ng:

Mun cho led sng, cp in dng 5V vo hng, 5V vo ct, dng 10mA dn 15 mA. V d: mun n led v tr 5x4 sng, ta a in p ct 4(P2_3) ln 5V, in p hng 5(P2_5) ln 5V. Hin th ch: thng k cc im sng thnh ch ri cho cc hng ct in p tng ng. C th dng cng c debug ly gi tr cng tng ng vi cc
http://www.ebook.edu.vn 80

led sng. Ging nh qut bn phm, a in p 0V ra tng ct ni vi cng 0. Nh vy s c 8 gi tr: 0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F phi a vo 1 mng 8 phn t, ri sau a vo 1 vng for tng dn 1 bin tng phn t mng ct[8]. Vi mi ln 1 chn cng 0 ln 5V ta dng cng 2 a ra 1 gi tr 8 bt iu khin trong 1ct nhng n no sng. V d mun hng 1 v hng 3 sng th hng 1 v 3 c gi tr 5V cn cc hng khc 0V, ta c gi tr 8 bt sau: 0x05 ( 1010 000). Ti mi thi im ch c mt s n trn 1 ct sng, nhng do ta qut 8 ct vi tn s nhanh, v mt c hin tung lu nh nn ta thy trong 1 thi im ta thy ton b k t. Vi 8 ct ln lut bng 5V ta phi a ra tng ng 8 gi tr 8 bit ra cng 2, do ta fi lu 8 gi tr vo 1 mng 8 k t_ kytu1[8], ta s vit cc k t trn 7 ct. mi k t s cch nhau 1 ct khng sng. Ta khai bo mng kytu1[9] c 9 phn t v phn t u tin c gi tr y ra cng 2 l 0xff tt ton b ct . Qu trnh iu khin hin th nh sau: Ct 1, hng 1, ct 2 hng 2, , ct 8 , hng 8. lm ch chy: Thm 1 bin vo iu khin th t hin th hng. Hin 1 ch trn led nh trn a ra: Ct 1, hng 1, ct 2 hng 2, , ct 8 , hng 8. Mun ch dch chuyn sang tri ta hin th nh sau: Ct 1, hng 2, ct 2 hng 3, , ct 7, hng 8,ct 8 , hng 1 k t sau. Ct 1, hng 3, ct 2 hng 4, , ct 7 hng 1 k t sau,ct 8 , hng 2 k t sau. 3.8.4 Lp trnh #include <REGX51.H> /* Cot tu P2.0 den P2.7 Hang tu P0.0 den P0.7 De quet dua muc logic 5v lan luot ra cong P2 */ /* Ham tre */ void delay(long time) { long n; for(n=0; n<time; n++) { ;} } unsigned char kytu1[9];// Mang 9 phan tu chua gia tri cac hang day ra cong 2 unsigned char k=0;// Bien xac dinh cac ky tu /* Ham nap gia tri hien thi cac ky tu vao mang kytu1 co 8 gia tri dua ra va 1 gia tri khong bat den nao de cac ky tu cach nhau 1 cot */
http://www.ebook.edu.vn 81

void mahoa(unsigned char x) { switch(x) { // Dau trang case 0: { kytu1[0]=0x00; kytu1[1]=0x00; kytu1[2]=0x00; kytu1[3]=0x00; kytu1[4]=0x00; kytu1[5]=0x00; kytu1[6]=0x00; kytu1[7]=0x00; kytu1[8]=0x00; break; } // Chu M Case break; } // Chu T case 2: { kytu1[0]=0x00; kytu1[1]=0x01; kytu1[2]=0x01; kytu1[3]=0x01; kytu1[4]=0xFF; kytu1[5]=0x01; kytu1[6]=0x01; kytu1[7]=0x01; kytu1[8]=0x00; break; } // Chu C case 3: { kytu1[0]=0x00; kytu1[1]=0x7E; kytu1[2]=0x81; kytu1[3]=0x81; kytu1[4]=0x81; kytu1[5]=0x81; kytu1[6]=0x42; kytu1[7]=0x00; kytu1[8]=0x00; break; } // Dau trang case 4: { kytu1[0]=0x00; kytu1[1]=0x00; kytu1[2]=0x00; kytu1[3]=0x00; kytu1[4]=0x00; kytu1[5]=0x00; kytu1[6]=0x00; kytu1[7]=0x00; kytu1[8]=0x00; break; } } } /* Ham quet led ma tran_ vua hien thi vua dich ky tu dan sang trai*/ void hienthi(void) { unsigned char n,m,lap; unsigned char cot[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
http://www.ebook.edu.vn 82

1:

kytu1[0]=0x00;

kytu1[1]=0xFF;

kytu1[2]=0x02;

kytu1[3]=0x04;

kytu1[4]=0x08; kytu1[5]=0x04; kytu1[6]=0x02; kytu1[7]=0xFF; kytu1[8]=0x00;

// Cac phan tu quet cot for(m=0; m<8 ; m++)// Dich hien thi { for(lap=0; lap<10; lap ++) // Lap hien thi { for(n=0; n<8 ; n++)// Quet cot { if((n+m)<9 )// Neu n+m < 9 hien thi ky tu 1 { mahoa(k); // Nap cac gia tri ma hoa ky tu dua ra cac hang (Cong P0) P2=cot[n]; // Day gia tri 5V ra cong P2 (cac cot) P0=kytu1[n+m];// Day cac gia tri cac hang (ma hoa ky tu) ra cong P0(cac hang) delay(45);// Tre du de led sang } if((n+m) > 7)// Neu n+m >7 hien thi ky tu 2 { mahoa(k+1);// Nap gia tri ma hoa ky tu tiep de dua ra cac hang(Cong P0) P2=cot[n];// Day gia tri logic 5V ra cong P2(cac cot) P0=kytu1[n+m-8];// Day cac gia tri cac hang (ma hoa ky tu) ra cong P0(cac hang) delay(45);// Tre du de led sang } P2=0x00;// Day cac cot xuong muc thap P0=0x00;// Dua cac hang xuong thap de tat toan bo cac led. } } } } void main(void) { while(1)// Vong lap vo han. { hienthi(); // Hien thi 2 ky tu dau tien dau trang va chu M k=k+1; // Tang k de hien thi chu M va chu T lan tiep if(k==4) k=0;// Quay vong hien thi } }
http://www.ebook.edu.vn 83

MC LC
Chng 1 : n li v ngn ng C theo chun ANSI
1.1. Cu trc c bn ca mt chng trnh C 1 1.2. Cc yu t c bn ca ngn ng C ANSI .2 1.2.1 B ch vit.2 1.2.2 T kho .2 1.2.3 Tn.3 2.1.4 Mt s kiu d liu c bn.3 2.3 Biu thc v Cc php ton 2.3.1 Php ton s hc hai ngi .8 .8

2.3.2.Php quan h v logic 9 2.3.3. S chuyn i kiu9 2.3.4 Php tng gim 10 2.3.5 Cu lnh gn 10 2.3.6. Biu thc iu kin..11 2.4 Cc ton t iu khin chng trnh ..11 2.4.1 Cu trc iu khin if ..11 2.4.1.2 Cu trc r nhnh if dng khuyt. 11 2.4.1.2. Cu trc r nhnh if dng dy 11 2.4.2 Cu trc iu khin switch .11 2.4.3 Cu trc lp while 12 2.4.4 Cu trc lp do...while 12 2.4.5 Cu trc lp for 12 2.5 Hm, lp trnh hng hm .13 2.5.1 Cch xy dng mt hm ..13 2.5.2 S hot ng ca mt hm ..13 2.5.2.1 Bin mng ng 14 2.5.2.2 Bin mng ngoi ...14 2.5.2.3 Bin mng tnh .14

Chng 2: n li v vi iu khin AT89C51


2.1. S chn tn hiu ca 80C51/AT89C51. 15
http://www.ebook.edu.vn 84

2.2. S khi ..16 2.3. Cc thanh ghi chc nng c bit. .17 2.4. Khi to thi gian v b m (Timer/Counter). 24 2.5. B nh chng trnh v b nh d liu ni tr. 27 2.6. Nguyn l truyn tin ni tip ca AT89C51 30 2.5.6.3. Cc tc Baud ..34 2.5.6.4. S dng Timer 1 to ra cc tc Baud .35 2.7. C ch ngt trong On-chip AT89C51 36 2.8 Kt ni c bn ca vi iu khin 8051 40

Chng 3 C cho vi iu khin 8051


3.1 Keil C cho vi iu khin .41 3.1.1 Nhng kiu d liu ring ca C51 41 3.1.2 Hm vi phn nh ngha m rng 43 3.2 Project 1 Led n .45 3.2.1 Mch v nguyn ly hot ng 45 3.2.2 Lp trnh ...47 3.3 Project 2 dy 8 Led n 48 3.3.1 Nguyn l hot ng ..48 3.3.2 Lp trnh ..48 3.3.3 iu khin ra c cng ...51 3.4 Project 3 iu khin Led 7 thanh .54 3.4.1 Hnh dng v cu to 54 3.4.2 Nguyn l hot ng .55 3.4.3 Lp trnh ..55 3.5 Phm nhn ..62 3.5.1 m s ln phm bm gii hn t 0 n 9 hin th ra led 7 thanh. ....62 3.5.1.1Nguyn l hot ng: 63 3.5.1.2 Lp trnh ...63 3.5.2 c ma trn phm ................................................................................................65 3.5.2.1 Nguyn l qut phm: .......................................................................................65 3.5.2.2 Lp trnh ...........................................................................................................66 3.6 Ghp ni vi LCD .................................................................................................68
http://www.ebook.edu.vn 85

3.6.1 Nguyn l hot ng ca LCD ...........................................................................69 3.6.2 M (Hex) Lnh n thanh ghi ca LCD ............................................................69 3.6.3 Lp trnh ..............................................................................................................70 3.7 iu khin ng c DC .........................................................................................74 3.7.1 Mch nguyn ly ..................................................................................................74 3.7.2 Lp trnh ..............................................................................................................75 3.8 Ghp ni Matrix Led .............................................................................................79 3.8.1 S cu to ...................................................................................................79 3.8.2 S kt ni Matrix Led 8x8 .........................................................................79 3.8.3 Nguyn l hot ng ...........................................................................................80 3.8.4 Lp trnh .............................................................................................................81

http://www.ebook.edu.vn

86

http://www.ebook.edu.vn

87

You might also like