Professional Documents
Culture Documents
Bai Giang VXL-VDK Chuan - 2011-07 - (Ban Dep, Link)
Bai Giang VXL-VDK Chuan - 2011-07 - (Ban Dep, Link)
KHOA IN T
B MN K THUT MY TNH
Tn bi ging: Vi x l Vi iu khin
S tn ch: 03
BI GING PHT CHO SINH VIN
(LU HNH NI B)
Theo chng trnh 150 TC thay 180 TC hoc tng ng
S dng cho nm hc 2011 2012
Tn bi ging: Vi x l Vi iu khin
S tn ch: 03
1. Tn hc phn: Vi x l vi iu khin.
2 . S tn ch: 03; 3(3; 1,5; 6)/12
3. Trnh cho sinh vin nm th: 3 (in, in t, SPKT in, SPKT Tin)
hoc 4 (C in t).
4. Phn b thi gian
- Ln lp l thuyt: 3 (tit/tun) x 12 (tun) = 36 tit.
- Tho lun: 1,5 (tit/tun) x 12 (tun) = 18 tit.
5. Cc hc phn hc trc
K thut in t s.
6. Hc phn thay th, hc phn tng ng
Vi x l vi iu khin (trong cc chng trnh 180 TC v 260 VHT)
7. Mc tiu ca hc phn
Sau khi hc xong hc phn sinh vin phi nm c cu trc phn cng ca
cc b vi x l vi iu khin tiu biu: x86, 8051; T chc b nh, tp lnh, ch
a ch v lp trnh cho chng; Bit cch ghp ni vi b nh v thit b ngoi vi;
Bit khai thc kh nng ngt v nh thi. C kh nng thit k v xy dng modul
(bao gm c phn cng v phn mm) s dng vi iu khin cho bi ton c th.
8. M t vn tt ni dung hc phn
Tng quan v cc h m v biu din thng tin trong cc h vi x l vi
iu khin. Vi x l: Tng quan v kin trc h vi x l; t chc phn cng ca
CPU h Intel 80x86, cc ch nh a ch, tp lnh, lp trnh hp ng (assembly)
cho 80x86 vi nhng bi ton n gin; mt s vi mch ph tr trong h vi x l.
Vi iu khin: Cu trc h vi iu khin onchip MCS 8051; lp trnh hp ng cho
vi iu khin; hot ng nh thi, ngt v truyn thng ni tip; gii thiu mt s
h vi x l thng dng khc. Gii thiu mt s bi ton ng dng tiu biu.
9. Nhim v ca sinh vin
1. D lp 80 % tng s thi lng ca hc phn.
2. Chun b tho lun.
3. Bi tp, Bi tp ln (di): Khng
10. Ti liu hc tp
- Sch, gio trnh chnh:
[1] Bi ging Vi x l vi iu khin
- Sch tham kho:
[1] Vn Th Minh, K thut vi x l, NXB KHKT, 1997.
[2] Tng Vn On, H vi iu khin 8051, NXB KH&KT, 2005.
[3] Nguyn Tng Cng, Phan Quc Thng, Cu trc v lp trnh h vi iu
khin 8051, NXB KH&KT, 2004.
[4] Michael Hordeski, Personal Computer Interfaces, Mc. Graw Hill, 1995.
[5] http://picat.dieukhien.net
11. Tiu chun nh gi sinh vin v thang im
11.1. Cc hc phn l thuyt
Tiu chun nh gi
1. Chuyn cn;
2. Tho lun, bi tp;
3. Bi tp ln (di);
4. Kim tra gia hc phn;
5. Thi kt thc hc phn;
6. Khc.
Thang im
- im nh gi b phn chm theo thang im 10 vi trng s nh sau:
+ Kim tra gia hc phn: 20 %.
+ im thi kt thc hc phn: 80 %.
12. Ni dung chi tit hc phn v lch trnh ging dy
Ngi bin son: ThS. Nguyn Tun Anh
ThS. Nguyn Tun Linh
ThS. Nguyn Vn Huy
Th.S Tng Cm Nhung
Th.S Phng Th Thu Hin
ThS. Nguyn Tin Duy
Ti liu
Hnh
Tun hc tp,
Ni dung thc
th tham
hc
kho
Chng I: Tng quan v vi x l vi iu khin
1.1. Gii thiu chung v vi x l vi iu khin
1.1.1. Tng quan
1.1.2. Lch s pht trin ca cc b x l
1.1.3. Vi x l v vi iu khin
1.2. Cu trc chung ca h vi x l
1.2.1. Khi x l trung tm (CPU)
1 1.2.2. B nh (Memory) [1] - [4] Ging
1.2.3. Khi phi ghp vo/ra (I/O)
1.2.4. H thng bus
1.3. nh dng d liu v biu din thng tin trong
h vi x l vi iu khin
1.3.1. Cc h m
1.3.2. Biu din s v k t
1.3.3. Cc php ton s hc trn h m nh phn
Chng II: H vi x l Intel 80x86
2.1. Cu trc phn cng ca b vi x l 8086
2 2.1.1. Tng quan [1] - [4] Ging
2.1.2. Cu trc bn trong v s hot ng
2.1.3. Cc ch a ch
2.2. Tp lnh
2.2.1. Gii thiu chung
3 [1] - [4] Ging
2.2.2. Cc nhm lnh
2.3. Biu thi gian ghi/c
2.4. Lp trnh hp ng (Assembly) cho vi x l
80x86
4 [1] - [4] Ging
2.4.1. Gii thiu chung v hp ng
2.4.2. Cu trc ca chng trnh hp ng
2.4.3. Cc cu trc iu khin c bn
2.4.4. Cc bc khi lp trnh
2.4.5. Cc bi tp v d
5 Tho lun
Chng III: H vi iu khin onchip MCS 8051
3.1. Gii thiu chung v vi iu khin
3.1.1. Gii thiu chung
6 [1] - [4] Ging
3.1.2. Khi nim vi iu khin
3.1.3. Cu trc chung ca vi iu khin
3.2. Kin trc vi iu khin 8051
7 Kin trc vi iu khin 8051 (tip) [1] - [4] Ging
8 Kim tra gia k
3.3. Tp lnh 8051 v lp trnh hp ng cho 8051
9 3.3.1. Tp lnh 8051 [1] - [4] Ging
3.3.2. Thnh phn ngn ng assembly
10 3.4. Kin trc vi iu khin 8051 [1] - [4] Ging
Tho
11 Tho lun [1] - [4]
lun
12 Kin trc vi iu khin 8051 (tip) [1] - [4] Ging
Chng IV: ng dng Tho
13 [1] - [4]
Tho lun lun
14 Chng V: Cc h VK tin tin [1] - [4] Ging
Tho
15 Tho lun [1] - [4]
lun
Bi ging Chng 1
Vi x l - Vi iu khin Tng quan v vi x l vi iu khin
CHNG 1.
TNG QUAN V VI X L VI IU KHIN
Mc tiu:
Gip sinh vin hiu v lch s ra i ca h vi x l vi iu khin; khi nim,
cu to v nguyn l ca h vi x l vi iu khin; n li kin thc v cc h
thng s m.
Tm tt chng:
Chng chia lm 3 phn:
Gii thiu chung v vi x l vi iu khin
Tng quan
Lch s pht trin ca cc b x l
Vi x l v vi iu khin
Cu trc chung ca h vi x l
Khi x l trung tm (CPU)
B nh (Memory)
Khi phi ghp vo/ra (I/O)
H thng bus
nh dng d liu v biu din thng tin trong h vi x l vi iu khin
Cc h m
Biu din s v k t
Cc php ton s hc trn h m nh phn
1.1.3 Vi x l v vi iu khin
Khi nim vi x l (microprocessor) v vi iu khin (microcontroller).
V c bn hai khi nim ny khng khc nhau nhiu, vi x l l thut ng
chung dng cp n k thut ng dng cc cng ngh vi in t, cng ngh
tch hp v kh nng x l theo chng trnh vo cc lnh vc khc nhau. Vo
nhng giai on u trong qu trnh pht trin ca cng ngh vi x l, cc chip (hay
cc vi x l) c ch to ch tch hp nhng phn cng thit yu nh CPU cng
cc mch giao tip gia CPU v cc phn cng khc. Trong giai on ny, cc phn
cng khc (k c b nh) thng khng c tch hp trn chip m phi ghp ni
thm bn ngoi. Cc phn cng ny c gi l cc ngoi vi (Peripherals). V sau,
nh s pht trin vt bc ca cng ngh tch hp, cc ngoi vi cng c tch hp
vo bn trong IC v ngi ta gi cc vi x l c tch hp thm cc ngoi vi l
cc vi iu khin.
Vi x l c cc khi chc nng cn thit ly d liu, x l d liu v xut
d liu ra ngoi sau khi x l. V chc nng chnh ca Vi x l chnh l x l d
liu, chng hn nh cng, tr, nhn, chia, so snh.v.v... Vi x l khng c kh nng
giao tip trc tip vi cc thit b ngoi vi, n ch c kh nng nhn v x l d liu
m thi.
vi x l hot ng cn c chng trnh km theo, cc chng trnh ny
iu khin cc mch logic v t vi x l x l cc d liu cn thit theo yu cu.
Chng trnh l tp hp cc lnh x l d liu thc hin tng lnh c lu tr
trong b nh, cng vic thc hnh lnh bao gm: nhn lnh t b nh, gii m lnh
v thc hin lnh sau khi gii m.
thc hin cc cng vic vi cc thit b cui cng, chng hn iu khin
ng c, hin th k t trn mn hnh .... i hi phi kt hp vi x l vi cc mch
in giao tip vi bn ngoi c gi l cc thit b I/O (nhp/xut) hay cn gi l
cc thit b ngoi vi. Bn thn cc vi x l khi ng mt mnh khng c nhiu hiu
qu s dng, nhng khi l mt phn ca mt my tnh, th hiu qu ng dng ca Vi
x l l rt ln. Vi x l kt hp vi cc thit b khc c s trong cc h thng
ln, phc tp i hi phi x l mt lng ln cc php tnh phc tp, c tc
nhanh. Chng hn nh cc h thng sn xut t ng trong cng nghip, cc tng
i in thoi, hoc cc robot c kh nng hot ng phc tp v.v...
B Vi x l c kh nng vt bc so vi cc h thng khc v kh nng tnh
ton, x l, v thay i chng trnh linh hot theo mc ch ngi dng, c bit
hiu qu i vi cc bi ton v h thng ln. Tuy nhin i vi cc ng dng nh,
tm tnh ton khng i hi kh nng tnh ton ln th vic ng dng vi x l cn
cn nhc. Bi v h thng d ln hay nh, nu dng vi x l th cng i hi cc
khi mch in giao tip phc tp nh nhau. Cc khi ny bao gm b nh cha
d liu v chng trnh thc hin, cc mch in giao tip ngoi vi xut nhp v
iu khin tr li, cc khi ny cng lin kt vi vi x l th mi thc hin c
cng vic. kt ni cc khi ny i hi ngi thit k phi hiu bit tinh tng
v cc thnh phn vi x l, b nh, cc thit b ngoi vi. H thng c to ra kh
phc tp, chim nhiu khng gian, mch in phc tp v vn chnh l trnh
ngi thit k. Kt qu l gi thnh sn phm cui cng rt cao, khng ph hp
p dng cho cc h thng nh.
V mt s nhc im trn nn cc nh ch to tch hp mt t b nh v mt
s mch giao tip ngoi vi cng vi vi x l vo mt IC duy nht c gi l
Microcontroller-Vi iu khin. Vi iu khin c kh nng tng t nh kh nng
ca vi x l, nhng cu trc phn cng dnh cho ngi dng n gin hn nhiu.
Vi iu khin ra i mang li s tin li i vi ngi dng, h khng cn nm
vng mt khi lng kin thc qu ln nh ngi dng vi x l, kt cu mch in
dnh cho ngi dng cng tr nn n gin hn nhiu v c kh nng giao tip trc
tip vi cc thit b bn ngoi. Vi iu khin tuy c xy dng vi phn cng dnh
cho ngi s dng n gin hn, nhng thay vo li im ny l kh nng x l b
gii hn (tc x l chm hn v kh nng tnh ton t hn, dung lng chng
trnh b gii hn). Thay vo , Vi iu khin c gi thnh r hn nhiu so vi vi x
l, vic s dng n gin, do n c ng dng rng ri vo nhiu ng dng c
chc nng n gin, khng i hi tnh ton phc tp.
Vi iu khin c ng dng trong cc dy chuyn t ng loi nh, cc robot
c chc nng n gin, trong my git, t v.v...
Nm 1976 Intel gii thiu b vi iu khin (microcontroller) 8748, mt chip
tng t nh cc b vi x l v l chip u tin trong h MCS-48. phc tp,
kch thc v kh nng ca Vi iu khin tng thm mt bc quan trng vo nm
1980 khi intel tung ra chip 8051, b Vi iu khin u tin ca h MCS-51 v l
chun cng ngh cho nhiu h Vi iu khin c sn xut sau ny. Sau rt
nhiu h Vi iu khin ca nhiu nh ch to khc nhau ln lt c a ra th
trng vi tnh nng c ci tin ngy cng mnh.
Trong ti liu ny, ranh gii gia hai khi nim vi x l v vi iu khin
thc s khng cn phi phn bit r rng. Chng ti s dng thut ng vi x l
khi cp n cc khi nim c bn ca k thut vi x l ni chung v s dng
thut ng vi iu khin khi i su nghin cu mt h chip c th.
1.3.1 Cc h m
H thp phn - Decimal
H nh phn - Binary
H16 - Hexadecimal
M BCD (standard BCD, gray code): (Binary Coded Decimal)
Trong thc t, i vi mt s ng dng nh m tn, o in p, ng ra
dng s thp phn, ta dng m BCD. M BCD dng 4 bit nh phn m ho
cho mt
s thp phn 0..9. Nh vy, cc s hex A..F khng tn ti trong m BCD.
M BCD gm c 2 loi:
- M BCD khng nn (unpacked): biu din mt s BCD bng 8 bit nh phn
- M BCD nn (packed): biu din mt s BCD bng 4 bit nh phn
VD: S thp phn 5 2 9
S BCD khng nn 0000 0101b 0000 0010b 0000 1001b
S BCD nn 0101b 0010b 1001b
M hin th 7 on (7-segment display code)
Cc m h m thng dng
H 10 H 2 H 8 H 16 Binary-Coded Decimal Gray Code 7-Segment
8421 BCD EXCESS-3 abcdefg Display
0 0000 0 0 0000 0011 0011 0000 111111 0
1 0001 1 1 0001 0011 0100 0001 011000 1
2 0010 2 2 0010 0011 0101 0011 110110 2
3 0011 3 3 0011 0011 0110 0010 111100 3
4 0100 4 4 0100 0011 0111 0110 011001 4
5 0101 5 5 0101 0011 1000 0111 101101 5
6 0110 6 6 0110 0011 1001 0101 101111 6
7 0111 7 7 0111 0011 1010 0100 111000 7
8 1000 10 8 1000 0011 1011 1100 111111 8
9 1001 11 9 1001 0011 1100 1101 111001 9
10 1010 12 A 0001 0000 0100 0011 1111 111110 A
11 1011 13 B 0001 0001 0100 0100 1110 001111 B
12 1100 14 C 0001 0010 0100 0101 1010 000110 C
13 1101 15 D 0001 0011 0100 0110 1011 011110 D
14 1110 16 E 0001 0100 0100 0111 1001 110111 E
15 1111 17 F 0001 0101 0100 1000 1000 100011 F
Bng 1-1. Gi tr tng ng gia cc h s
Trng hp kt qu m:
CHNG 2.
H VI X L INTEL 80x86
Mc tiu:
Hiu c cu trc phn cng ca h vi x l; hiu v vn dng c cc ch
a ch; nm c tp lnh v lp trnh cho h vi x l 80x86
Tm tt chng:
Thanh ghi c
Cc c ch th tnh trng ca b vi x l cng nh iu khin s hot ng ca
n.
Mt thanh ghi c l 1 flip-flop m n ch th mt s tnh trng c to bi vic
thc thi 1 lnh hay cc hot ng iu khin c th ca EU. Thanh ghi c 16-bit
trong EU c 9 c.
- Cc c iu kin - conditional flags: C 6 c c gi l c iu kin.
Chng c lp hay xo l bi EU, da trn kt qu ca cc php ton s
hc.
- C iu khin - control flags : 3 c cn li trong thanh ghi c c s
dng iu khin mt s hot ng ca vi x l. Chng c gi l cc
c iu khin.
Bit pos 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Func x x x x OF DF IF TF SF ZF x AF x PF x CF
- Carry Flag (CF)- set by carry out of MSB.
- Parity Flag (PF)- set if result has even parity.
- Auxiliary carry Flag (AF)- for BCD
- Zero Flag (ZF)- set if results = 0
2.2 Ch a ch
1 0 0 0 1 0
DispL DispH
Opcode D W MOD REG R/M
Hoc
1 0 0 0 1 0 1 0 0 0 0 0 1 1 1 1
Opcode D W MOD REG R/M
1 0 0 0 1 0 1 0 0 0 1 0 0 1 1 0 0 0 1 0 1 0 1 0
Opcode D W MOD REG R/M 2Ah
1 0 0 0 1 0 1 1 1 0 0 0 1 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 0 1 1
Opcode D W MOD REG R/M FFh 0Bh
2.2.2 Cc ch a ch
Ch a ch (addressing mode) l cch CPU tm thy ton hng cho cc
lnh ca n khi hot ng. Mt b vi x l c th c nhiu ch a ch. Cc ch
a ch ny c xc nh ngay t khi ch to v khng th thay i c. B vi
x l 8086/8088 c 9 ch a ch sau:
- Ch a ch thanh ghi.
- Ch a ch tc th.
- Ch a ch trc tip.
- Ch a ch gin tip qua thanh ghi.
- Ch a ch tng i c s.
- Ch a ch tng i ch s.
- Ch a ch tng i c s ch s.
- Ch a ch chui (String) mng.
- Ch a ch cng (Port).
- Ch a ch khc.
CH A CH THANH GHI
Trong ch a ch ny ngi ta s dng cc thanh ghi c sn trong CPU nh
l cc ton hng cha d liu cn thao tc, v vy khi thc hin c th t tc
truy nhp cao hn so vi cc lnh truy nhp n b nh.
V d:
MOV BX, DX ;copy noi dung DX vao BX
ADD AX, BX ;AX=AX+BX
CH A CH TC TH
Trong ch ny ton hng ch l mt thanh ghi hay mt nh, cn ton hng
ngun l mt hng s. Ta c th dng ch a ch ny np d liu cn thao tc
vo bt k thanh ghi no (tr thanh ghi on v thanh ghi c) v bt k nh no
trong on d liu DS.
CH A CH TRC TIP
Trong ch a ch ny mt ton hng cha a ch lch ca nh dng cha
d liu, cn ton hng kia c th l thanh ghi m khng c l nh.
V d:
MOV AL, [0243H];chuyen noi dung o nho DS:0243 vao AL
MOV [4320], CX ;chuyen noi dung CX vao hai o nho
;lien tiep DS:4320 va DS:4321
CH A CH TNG I C S
Trong ch a ch ny cc thanh ghi c s nh BX v BP v cc hng
s biu din cc gi tr dch chuyn c dng tnh a ch hiu dng ca
ton hng trong cc vng nh DS v SS. V d:
MOV CX, [BX]+10 ;copy noi dung hai o nho lien tiep
;co dia chi DS:BX+10 va DS:BX+11
;vao CX
MOV CX, [BX+10] ;cach viet khac cua lenh tren
MOV CX, 10+[BX] ;cach viet khac cua lenh tren
MOV AL, [BP]+5 ;chuyen noi dung o nho co dia chi
;SS:BP+5 vao AL
Quan st trn ta thy: 10 v 5 l cc dch chuyn ca cc ton hng tng
ng. BX+10, BP+5 gi l a ch hiu dng.
DS:BX+10, SS:BP+5 chnh l a ch logic ng vi a ch vt l.
CH A CH TNG I CH S
Trong ch a ch ny cc thanh ghi ch s nh SI v DI v cc hng s biu
din cc gi tr dch chuyn c dng tnh a ch hiu dng ca ton hng
trong cc vng nh DS. V d
B mn K thut my tnh Khoa in t 35
Trng H K thut Cng nghip
Bi ging Chng 2
Vi x l - Vi iu khin H vi x l Intel 80x86
MOV CX, [SI]+10 ;copy noi dung hai o nho lien tiep
;co dia chi DS:SI+10 va DS:SI+11 vao CX
MOV CX, [SI +10] ;cach viet khac cua lenh tren
MOV CX, 10+[SI] ;cach viet khac cua lenh tren
MOV AL, [DI]+5 ;chuyen noi dung o nho co dia chi
;DS:DI+5 vao AL
CH A CH TNG I CH S C S
Kt hp hai ch a ch ch s v c s ta c ch a ch ch s c s.
Trong ch ny ta dng c hai thanh ghi c s ln thanh ghi ch s tnh a ch
ca ton hng. Nu ta dng thm c thnh phn biu din s dch chuyn ca a
ch th ta c ch a ch tng hp nht: Ch a ch tng i ch s c s.
V d: MOV BX, [BX]+[SI]+10 ;chuyen noi dung hai o nho
;lien tiep co dia chi DS:BX+SI+10 va DS:BX+SI+11 vao CX
MOV AL, [BP+DI+5] ;copy ni dung th: DS:BP+DI+5 vao AL
Cc ch a ch trnh by trn c th tm tt li trong bng sau:
Ch a ch Ton hng Thanh ghi on ngm nh
Thanh ghi Reg
Tc th Data
Trc tip [offset] DS
[BX] DS
Gin tip qua thanh ghi [SI] DS
[DI] DS
[BX]+Disp DS
Tng i c s
[BP]+Disp SS
[DI]+Disp DS
Tng i ch s
[SI]+Disp DS
[BX]+[DI]+Disp DS
[BX]+[SI]+Disp DS
Tng i ch s c s
[BP]+[DI]+Disp SS
[BP]+[SI]+Disp SS
Bng 2-3. Cc ch a ch
Ch : Reg: Thanh ghi, Data: D liu tc th, Disp: Dch chuyn.
CH A CH CHUI (STRING) MNG
Mt chui (string) l mt dy cc byte hoc word lin tip trong b nh. Cc
lnh thao tc vi chui khng s dng bt k mt ch a ch no trn. Mt
chui c th c di ti a ln ti 64K-bytes (mt segments). Ch a ch chui
s dng cc thanh ghi SI, DI, DS v ES. Vi tt c cc lnh thao tc chui u s
dng SI tr vo byte u tin ca chui ngun v DI tr vo byte u tin ca
chui ch.
CH A CH CNG (PORT)
Trong h vi x l 80x86 ca Intel c khng gian a ch cho b nh v cng
vo/ra l tch bit nhau. Khng gian a ch cng c th ln n 65536 cng (64K-
ports).
a ch ca mt cng c th c xc nh bi mt hng gi tr kiu byte
(phm vi = 0..255)
V d:
IN AL, 40h ;c cng sao chp ni dung ti
;cng c a ch 40h v thanh ghi AL
OUT 80h, AL ;Ghi cng gi d liu trong thanh
;ghi AL ti cng c a ch 80h
a ch ca cng cng c th c xc nh gin tip qua thanh ghi (Khi
ny phm vi ti s l 65536 cng).
V d:
IN AL, DX ;c cng c a ch l ni dung ca
;thanh ghi DX
OUT DX, AX ;Ghi mt word trong AX ti cng c a
;ch l ni dung ca thanh ghi DX.
CF MSB LSB
Lnh ny quay ton hng sang tri thng qua c CF, CL phi c
cha sn s ln quay. Trong trng hp quay 1 ln c th vit RCL ch, 1
Nu s ln quay l 9 th ton hng khng i v cp CF v ton hng
quay ng mt vng (nu ton hng ch l 8 bit).
Sau lnh RCL c CF mang gi tr c ca MSB, cn c OF1 nu sau
khi quay 1 ln m bit MSB b thay i so vi trc khi quay, c OF s khng
c xc nh sau nhiu ln quay.
Cc c b thay i: CF, OF, SF, ZF, PF. V d:
MOV CL, 3 ;so lan quay la 3
RCL AL, CL
Trc khi thc hin lnh: AL = 01011110, CF = 0.
Sau khi thc hin lnh: AL = 11110001, CF = 0.
18. RCR Rotate though CF to the Right (quay phi thng qua c nh)
Dng lnh: RCR ch, CL
M t:
CF MSB LSB
Lnh ny quay ton hng sang phi thng qua c CF, CL phi c
cha sn s ln quay. Trong trng hp quay 1 ln c th vit RCR ch, 1
Nu s ln quay l 9 th ton hng khng i v cp CF v ton hng
quay ng mt vng (nu ton hng ch l 8 bit).
Sau lnh RCR c CF mang gi tr c ca LSB, cn c OF1 nu sau khi
quay 1 ln m bit MSB b thay i so vi trc khi quay, c OF s khng c
xc nh sau nhiu ln quay.
Cc c b thay i: CF, OF, SF, ZF, PF.
V d:
MOV CL, 2 ;so lan quay la 2
RCR AL, CL
CF MSB LSB
Lnh ny dng quay vng ton hng sang tri, MSB c a sang c
CF v LSB. CL phi cha sn s ln quay mong mun. Trong trng hp quay
1 ln c th vit ROL ch, 1. Nu s ln quay l 8 (CL=8) th ton hng khng
i v ton hng quay ng mt vng (nu ton hng ch l 8 bit), cn nu
CL=4 th 4 bit cao i ch cho 4 bit thp.
Sau lnh ROL c CF mang gi tr c ca MSB, cn c OF1 nu sau
khi quay 1 ln m bit MSB b thay i so vi trc khi quay, c OF s khng
c xc nh sau nhiu ln quay. Lnh ny thng dng to c CF t gi tr
ca MSB lm iu kin cho lnh nhy c iu kin.
Cc c b thay i: CF, OF, SF, ZF, PF.
V d:
MOV CL, 2 ;so lan quay la 2
ROL AL, CL
Trc khi thc hin lnh: AL = 11001100, CF = 1
Sau khi thc hin lnh: AL = 00110011, CF = 1
20. ROR Rotate all bit to the Left (quay vng sang phi).
Dng lnh: ROR ch, CL
M t:
MSB LSB CF
Lnh ny dng quay vng ton hng sang phi, LSB c a sang c
CF v MSB. CL phi cha sn s ln quay mong mun. Trong trng hp quay
1 ln c th vit ROR ch, 1. Nu s ln quay l 8 (CL=8) th ton hng khng
i v ton hng quay ng mt vng (nu ton hng ch l 8 bit), cn nu
CL=4 th 4 bit cao i ch cho 4 bit thp.
Sau lnh ROR c CF mang gi tr c ca LSB, cn c OF1 nu sau khi
quay 1 ln m bit MSB b thay i so vi trc khi quay, c OF s khng c
CF MSB LSB 0
Hai lnh ny c tc dng dch tri s hc ton hng (cn gi l dch tri
logic). Mi ln dch MSB c a vo CF cn 0 c a vo LSB. CL phi
cha sn s ln quay mong mun. Trong trng hp quay 1 ln c th vit SAL
ch, 1
Sau lnh SAL hoc SHL c CF mang gi tr c ca MSB, cn c OF1
nu sau khi quay 1 ln m bit MSB b thay i so vi trc khi quay, c OF s
khng c xc nh sau nhiu ln quay. Lnh ny thng dng to c CF t
gi tr ca MSB lm iu kin cho lnh nhy c iu kin.
Cc c b thay i: SF, ZF, CF, OF, PF.
V d:
MOV CL, 2 ;so lan quay la 2
SAL AL, CL
Trc khi thc hin lnh: AL = 11001100, CF = 0
Sau khi thc hin lnh: AL = 00110000, CF = 1
22. SHR Shift logically Right (dch phi logic)
Dng lnh: SHR ch, CL
M t:
0 MSB LSB CF
main ENDP
Subname PROC ; nh ngha chng trnh con
RET
Subname ENDP
END main
Quy m s dng b nh:
Bn b nh ca my tnh
IBM PC
Gii thch vn tt
a ch vt l ca vng nh
(HEX)
Vector ngt. B mo phng s load file ny:
00000 - 00400
c:\emu8086\INT_VECT ti a ch vt l 000000
00400 - 00500 Vng thng tin h thng.
Mt vng nh t do. Mi khi l 654,080 byte. Ti y c
00500 - A0000
th load chng trnh
Vng nh mn hnh cho VGA, monochrome, v cho cc b
A0000 - B1000
iu hp khc
B1000 - B8000 D tr
data segment
; add your data here!
pkey db "press any key to exit ...$"
ends
stack segment
dw 128 dup(0)
ends
CODE segment
start:
; set segment registers:
MOV ax, data
MOV ds, ax
MOV es, ax
Khai bo d liu
Khi khai bo d liu trong chng trnh, nu s dng s nh phn, ta phi dng
thm ch B cui, nu s dng s thp lc phn th phi dng ch H cui. Ch
rng i vi s thp lc phn, nu bt u bng ch A..F th phi thm vo s 0
pha trc.
V d:
1011b ; S nh phn
1011 ; S thp phn
1011d ; S thp phn
1011h ; S thp lc phn
Ton t trong hp ng
Ton t s hc
RET
TN ENDP
TN l tn ca chng trnh con, tn phi ging nhau trn v di ca chng
trnh con, l cch kim tra im kt thc ca chng trnh con.
Hu nh chc chn, bn bit rng lnh RET c s dng tr v h iu hnh.
Lnh tng t cng c s dng tr v t chng trnh con (thc s, OS coi
chng trnh ca chng ta nh mt chng trnh con c bit)
PROC v ENDP l cc nh hng chng trnh dch, nn chng khng c dch
ra m my. Chng trnh dch nh a ch ca chng trnh con.
Lnh CALL c s dng gi chng trnh con
y l mt v d:
ORG 100h
CALL ta
MOV AX, 2
RET ; Tr v OS
ta PROC
MOV BX, 5
RET ; Tr v sau im gi.
ta ENDP
END
V d trn gi chng trnh con ta, thc hin lnh MOV BX, 5 , v tr v sau
lnh gi n MOV AX, 2
C vi cch truyn tham s cho chng trnh con, cch n gin nht l s dng
cc thanh ghi, di y l mt v d khc v cch gi chng trnh con v cch
truyn tham s cho n qua thanh ghi AL v BL, nhn hai tham s vi nhau v tr
kt qu v trong thanh ghi AX:
ORG 100h
MOV AL, 1
MOV BL, 2
CALL m2
CALL m2
CALL m2
CALL m2
RET ; Tr v HH
m2 PROC
MUL BL ; AX = AL * BL.
RET ; Tr v sau im gi n.
m2 ENDP
END
In_Xau PROC
next_char:
CMP b.[SI], 0 ; kim tra nu = 0 th dng
JE stop ;
MOV AL, [SI] ; ly k t tip theo.
MOV AH, 0Eh ; s hiu in k t.
INT 10h ; s dng ngt in k t trong AL.
ADD SI, 1 ; Tng con tr cn in ln 1.
JMP next_char ; tr li, in k t tip.
stop:
RET ; tr v sau im gi.
print_me ENDP
; ===================================================
tbao_tw DB 'PICAT.dieukhien.net',0; xu kt thc: null.
END
Tip u ng b. trc [SI] ngha l so snh byte, khng phi t. Nu bn cn so
snh t, bn dng tip u ng w. thay th vo. Khi mt ton hng nm trong
thanh ghi, n khng yu cu na.
Lnh b (Macro)
Macro tng t nh chng trnh con nhng khng thc s l chng trnh con.
Macro nhn c v nh chng trnh con, nhng chng ch tn ti cho n khi
chng trnh c dch, sau khi chng trnh c dch tt c cc macro c thay
th bng lnh thc s. Nu bn khai bo mt macro v khng bao gi s dng
chng trong m ngun, chng trnh dch s b qua n.
Khai bo:
<Lnh>
ENDM
ORG 100h
MyMacro 1, 2, 3
MyMacro 4, 5, DX
RET
on m ngun trn s c m rng thnh:
MOV AX, 0001h
MOV BX, 0002h
MOV CX, 0003h
MOV AX, 0004h
MOV BX, 0005h
MOV CX, DX
V d:
MyMacro2 MACRO
LOCAL label1, label2
CMP AX, 2
JE label1
CMP AX, 3
JE label2
label1: INC AX
label2: ADD AX, 2
ENDM
ORG 100h
MyMacro2
MyMacro2
RET
Nu bn c k hoch s dng macro nhiu ln, mt hay l nn t tt c cc
macro trong mt file. V t file trong th mc INC v s dng ch th
INCLUDE <Tn-file> c th s dng macro .
2.4.6 Cc v d
V d 1. Hello word n gin (COM file)
; Vit ra mn hnh dng ch "hello, world!"
; Su dung .com
name "hi"
org 100h
JMP start ; jump over string declaration
msg db "hello, world!", 0Dh,0Ah, 24h
start: lea dx, msg ; load effective address of
;msg into dx.
MOV ah, 09h ; print function is 9.
int 21h ; do it!
MOV ah, 0
int 16h ; wait for any key any....
RET ; return to operating system.
org 100h
mov cl,8
mov dl,3
Call Tong
Call hieu
Call tich
Call thuong
ret
Tong proc
mov al,cl
add al,dl
ret
Hieu proc
mov al,cl
sub al,dl
ret
Tich proc
mov al,cl
mul dl
ret
Thuong proc
mov al,cl
div dl
ret
end
V d 4. In mt s nh phn ra mn hnh:
name "add-sub"
org 100h
MOV al, 5 ; bin=00000101b
MOV bl, 10 ; hex=0ah or bin=00001010b
; 5 + 10 = 15 (decimal) or hex=0fh or bin=00001111b
add bl, al
; 15 - 1 = 14 (decimal) or hex=0eh or bin=00001110b
sub bl, 1
; print result in binary:
MOV cx, 8
print: MOV ah, 2 ; print function.
MOV dl, '0'
test bl, 10000000b ; test first bit.
jz zero
MOV dl, '1'
zero: int 21h
shl bl, 1
V d 5. In mt s h 10 ra mn hnh:
name "Print Decimal function, tuananhvxl@gmail.com"
Enter Macro
mov ah,2
mov dl, 0ah ; new line.
int 21h
mov dl, 0dh ; carrige return.
int 21h
endm
org 100h ; directive make tiny com file.
; print result in decimal:
mov al, 123
call Print_dec8AL
Enter
mov al, 45
call Print_dec8AL
; wait for any key press:
mov ah, 0
int 16h
ret
Print_dec8AL proc
cmp al, 0
jne Print_dec8AL_r
push ax
mov dl, '0'
mov ah, 2
int 21h
pop ax
ret
Print_dec8AL_r:
pusha
mov ah, 0
cmp ax, 0
je pn_done
mov dl, 10
div dl
call Print_dec8AL_r
mov dl, ah
76 B mn K thut my tnh Khoa in t
Trng H K thut Cng nghip
Bi ging Chng 2
Vi x l - Vi iu khin H vi x l Intel 80x86
add dl, 30h
mov ah, 2h
int 21h
jmp pn_done
pn_done:
popa
ret
endp
V d 6. In xu ra mn hnh:
name "Print_String"
org 100h
Print_String Thongbao1
Print_String Thongbao2
ret
org 100h
; Nhap - start:
mov dx, offset msg
mov ah, 9
int 21h
;------------------------------------
xor cl,cl
mov AX,0
mov DL,2
mov AL, CL
Mul DL
Enter
call Print_dec8AL
mov ah, 0
int 16h
ret
;-----------------------
Print_dec8AL proc
cmp al, 0
jne Print_dec8AL_r
push ax
mov al, '0'
mov ah, 0eh
int 10h
pop ax
ret
Print_dec8AL_r:
pusha
mov ah, 0
cmp ax, 0
je pn_done
mov dl, 10
div dl
call Print_dec8AL_r
mov al, ah
2.5.1 Ghp ni b nh
2.5.2 Gii m a ch
2.5.2.2 nh thi b nh
Thi gian truy xut (access time):
- Vi chu k c: thi gian truy xut l thi gian tnh t lc a ch mi xut
hin b nh cho n khi c d liu ng ng ra ca b nh.
- Vi chu k ghi: thi gian truy xut l thi gian tnh t lc a ch mi xut
hin b nh cho n khi d liu a vo b nh.
Thi gian chu k (cycle time): l thi gian t lc bt u chu k b nh
n khi bt u chu k k tip. Ngoi ra, P c th s dng thm mt s trng
thi ch khi c b nh.
Bi 6. Vit chng trnh nhp vo 2 s nguyn dng x1, x2 (1 x2 < x1 < 9).
Xut ra kt qu cc php tnh: x1-1, x1 +2, x1+x2, x1-x2
V d:
x1 = 5
x2 = 3
x1 1 = 4
x1 + 1 = 6
x1 + x2 = 8
x1 x2 = 7
Hoc
CHNG 3.
H VI IU KHIN 8051
Mc tiu:
Tm tt hc phn:
B nh thi/m (Timers/Counters)
Gi tr C1, C2 = 30 pF 10 pF
Hnh 3-13 S kt ni thch anh
B nh trong B nh ngoi
ROM 4KB
0000h 0FFFh B nh chng trnh 64 KB
0000h FFFFh
iu khin bng PSEN
RAM 128 byte
00h 7Fh
B nh d liu 64 KB
SFR 0000h FFFFh
80h 0FFh iu khin bng RD v WR
a C th Khng nh a
ch nh a
ch bit
byte ch bit
F8h
F0h B
E8h
E0h ACC
D8h
D0h PSW
C8h (T2CON) (RCAP2L) (RCAP2H) (TL2) (TH2)
C0h
B8h IP SADEN
B0h P3
A8h IE SADDR
A0h P2
98h SCON SBUF BRL BDRCON
90h P1
88h TCON TMOD TL0 TH0 TL1 TH1 AUXR CKCON
80h P0 SP DPL DPH PCON
Bng 3-2. Cc thanh ghi chc nng c bit
Cc thanh ghi c th nh a ch bit s c a ch bit bt u v a ch byte
trng nhau. V d nh: thanh ghi P0 c a ch byte l 80h v c a ch bit bt
u t 80h (ng vi P0.0) n 87h (ng vi P0.7). Chc nng cc thanh ghi ny
s m t trong phn sau.
2F 7F 7E 7D 7C 7B 7A 79 78
2E 77 76 75 74 73 72 71 70
2D 6F 6E 6D 6C 6B 6A 69 68
2C 67 66 65 64 63 62 61 60
2B 5F 5E 5D 5C 5B 5A 59 58
2A 57 56 55 54 53 52 51 50
29 4F 4E 4D 4C 4B 4A 49 48
28 47 46 45 44 43 42 41 40
Vng c th nh a ch bit
27 3F 3E 3D 3C 3B 3A 39 38
26 37 36 35 34 33 32 31 30
25 2F 2E 2D 2C 2B 2A 29 28
24 27 26 25 24 23 22 21 20
23 1F 1E 1D 1C 1B 1A 19 18
22 17 16 15 14 13 12 11 10
21 0F 0E 0D 0C 0B 0A 09 08
20 07 06 05 04 03 02 01 00
1F
Bank 3
18
17
Bank 2 Cc bank thanh ghi
10
1F
Bank 1
08
07
Bank thanh ghi 0 ( mc nh cho R0-R7)
00
Bng 3-3. a ch RAM ni 8051
RAM a dng:
RAM a dng c 80 byte t a ch 30h 7Fh c th truy xut mi ln 8 bit
bng cch dng ch a ch trc tip hay gin tip.
Cc vng a ch thp t 00h 2Fh cng c th s dng cho mc ich nh trn
ngoi cc chc nng cp nh phn sau.
RAM c th nh a ch bit:
Vng a ch t 20h 2Fh gm 16 byte (= 128 bit) c th thc hin ging nh
vng RAM a dng (mi ln 8 bit) hay thc hin truy xut mi ln 1 bit bng cc
lnh x l bit. Vng RAM ny c cc a ch bit bt u ti gi tr 00h v kt thc
ti 7Fh.
3.2.5 Cc thanh ghi chc nng c bit (SFRs - Special Function Registers)
Thanh ghi tch lu (Accumulator)
Thanh ghi tch lu l thanh ghi s dng nhiu nht trong AT89C51, c
k hiu trong cu lnh l A. Ngoi ra, trong cc lnh x l bit, thanh ghi tch lu
c k hiu l ACC.
Thanh ghi tch lu c th truy xut trc tip thng qua a ch E0h (byte) hay
truy xut tng bit thng qua a ch bit t E0h n E7h.
VD: Cu lnh:
MOV A,#1
MOV 0E0h,#1
Bit 7 6 5 4 3 2 1 0
Chc
SMOD1 SMOD0 - POF GF1 GF0 PD IDL
nng
3.2.6 B m v b nh thi
nh thi l s hot ng kim sot thi gian thc thi cc cu lnh trong qu
trnh x l ca vi iu khin.
8051 c hai b nh thi/ b m. Chng c th c dng nh cc b nh thi
to mt b tr thi gian hoc nh cc b m m cc s kin xy ra bn ngoi
b VK. Cc timer ny u l timer 16bit, gi tr m c tnh t 0 n 216 (m
t 0 n 65535).
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 65535
m thanh ghi m c th biu din th gi tr m li c a tr v gi tr 0
Vic cho timer chy/dng c thc hin bi cc bit TR trong thanh ghi TCON
(nh a ch n tng bit).
Cc timer c th hot ng theo nhiu ch , c quy nh bi cc bit trong
thanh ghi TMOD.
3.3.1 Cc ch a ch
a) a ch tc thi
Trong ch nh a ch ny ton hng ngun l mt hng s. V nh tn
gi ca n th khi mt lnh c hp dch ton hng i tc thi ngay sau m lnh.
Lu rng trc d liu tc thi phi c t du (#) ch nh a ch ny c
th c dng np thng tin vo bt k thanh ghi no k c thanh ghi con tr d
liu DPTR. V d:
MOV A, # 25H ; Np gi tr 25H vo thanh ghi A
MOV R4, #62 ; Np gi tr 62 thp phn vo R4
MOV DPTR, #4521H ; Np 4512H vo con tr d liu DPTR
b) a ch theo thanh ghi
Ch nh a ch theo thanh ghi lin quan n vic s dng cc thanh ghi
lu d liu cn c thao tc v cc cc ton hng l 1 trong cc thanh ghi Ri ca
cc bank c chn. V d :
MOV A, R0 ; Sao ni dung thanh ghi R0 vo thanh ghi A
MOV R2, A ; Sao ni dung thanh ghi A vo thanh ghi R2
K hiu M t
A: Thanh ghi cha (Accumulator).
B: Thanh ghi B.
Thanh ghi R0 hoc R1 ca bt k bng thanh ghi no trong 4 bng
Ri:
thanh ghi trong RAM.
Rn: bt k thanh ghi no ca bt k bng thanh ghi no trong 4
Rn:
bng thanh ghi trong RAM.
K hiu M t
thanh ghi con tr d liu (c rng 16bit c kt hp t 2 thanh
Dptr:
ghi 8 bit l DPH v DPL).
Direct: l mt bin 8 bit(hay chnh l nh) bt k trong RAM (tr
Direct:
32 thanh ghi Rn u RAM).
#data: mt hng s 8 bit bt k.
#data16: mt hng s 16 bit bt k
<rel>: a ch bt k nm trong khong [PC-128 ; PC+127]
a ch bt k nm trong khong 0 2Kbyte tnh t a ch ca lnh
<addr11>:
tip theo.
<addr16>: a ch bt k trong khng gian 64K (p dng cho c khng gian
nh chng trnh v khng gian nh d liu).
Khai bo bin
Ten_bien DB Gia_Tri_Khoi_Tao
DB l mt ch lnh d liu c s dng rng ri nht trong hp ng. N
c dng nh ngha d liu 8 bit. Khi DB c dng nh ngha byte
d liu th cc s c th dng thp phn, nh phn, Hex hoc dng thc
ASCII. i vi d liu thp phn th cn t ch D sau s thp phn, i
vi s nh phn th t ch B v i vi d liu dng Hex th cn t ch
H.
Khi d liu c kch thc l 2byte s dng: DW khai bo bin kiu nguyn
V d
DATA1: DB 2D ; S thp phn
DATA2: DB 00110101B ; S nh phn (35 dng Hex)
DATA3: DB 39H ; S dng Hex
DATA4 DB Ky thuat may tinh ; Cc k t ASCII
Cc ton t
- Tn phi bt u bng k t.
V d:
ORG 00H ;(con tr chng trnh bt u t 00h)
LJMP MAIN ; nhy ti v tr c nhn l MAIN)
; (v tr bt u chng trnh chnh MAIN):
ORG 0030H
MAIN:
MOV R1,#10 ;(np cho R1 gi tr l 10).
LAP1:
DJNZ R1,LAP1
END ; (Kt thc chng trnh.)
Con tr: v tr m vi iu khin bt u thc thi ti . Thng khi bt u con tr c
a ch thp nht l 00h, tuy nhin ngi lp trnh cng c th quy nh cho n lm
vic ti mt v tr bt k
V d:
ORG 00H ; Bt u ti v tr 00h
ORG 0030H ; Bt u ti v tr 0030h
Nhn:
.................
Cc cu lnh
.....
RET
V d:
ORG 00H
LJMP MAIN
ORG 0030H
MAIN:
MOV R1,#10
LCALL LAP1 ;gi chng trnh con
LAP1:
DJNZ R1,LAP1
RET ; kt thc chng trnh con
END
3.4 B m v b nh thi
8051 c hai b nh thi l Timer 0 v Timer1, phn ny chng ta bn v cc
thanh ghi ca chng v sau trnh by cch lp trnh chng nh th no to ra
cc tr thi gian.
Cc thanh ghi c s ca b nh thi.
C hai b nh thi Timer 0 v Timer 1 u c di 16 bt c truy cp nh
hai thanh ghi tch bit byte thp v byte cao. Chng ta s bn ring v tng thanh
ghi.
Cc thanh ghi ca b Timer 0.
Thanh ghi 16 bt ca b Timer 0 c truy cp nh byte thp v byte cao. Thanh
ghi byte thp c gi l TL0 (Timer 0 bow byte) v thanh ghi byte cao l TH0
(Timer 0 High byte). Cc thanh ghi ny c th c truy cp nh mi thanh ghi khc
chng hn nh A, B, R0, R1, R2 v.v... V d, lnh MOV TL0, #4FH l chuyn gi
tr 4FH vo TL0, byte thp ca b nh thi 0. Cc thanh ghi ny cng c th c
c nh cc thanh ghi khc. V d MOV R5, TH0 l lu byte cao TH0 ca Timer
0 vo R5.
TH0 TL0
D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
Hnh 3-17. Cc thanh ghi ca b Timer 0
TH1 TL1
D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
Hnh 3-18. Cc thanh ghi ca b Timer 1
Thanh ghi TMOD (ch ca b nh thi).
C hai b nh thi Timer 0 v Timer 1 u dng chung mt thanh ghi c gi
l IMOD thit lp cc ch lm vic khc nhau ca b nh thi. Thanh ghi
TMOD l thanh ghi 8 bt gm c 4 bt thp c thit lp dnh cho b Timer 0 v 4
bt cao dnh cho Timer 1. Trong hai bt thp ca chng dng thit lp ch
ca b nh thi, cn 2 bt cao dng xc nh php ton. Cc php ton ny s
c bn di y.
TMOD Register
MSB LSB
GATE C/T M1 M0 GATE C/T M1 M0
Timer1 Timer0
Hnh 3-19. Timer TMOD
Cc bt M1, M0:
L cc bt ch ca cc b Timer 0 v Timer 1. Chng chn ch ca cc b
nh thi: 0, 1, 2 v 3. Ch 0 l mt b nh thi 13, ch 1 l mt b nh thi
16 bt v ch 2 l b nh thi 8 bt. Chng ta ch tp chung vo cc ch
thng c s dng rng ri nht l ch 1 v 2. Chng ta s sm khm ph ra
cc c tnh c cc ch ny sau khi khm phn cn li ca thanh ghi TMOD. Cc
ch c thit lp theo trng thi ca M1 v M0 nh sau:
M1 M0 Ch Ch hot ng
0 0 0 B nh thi 13 bt gm 8 bt l b nh thi/ b m 5 bt
t trc
0 1 1 B nh thi 16 bt (khng c t trc)
1 0 2 B nh thi 8 bt t np li
1 1 3 Ch b nh thi chia tch
Bng 3-11. Ch hot ng ca Timer/Counter
C/ T (ng h/ b nh thi).
Bt ny trong thanh ghi TMOD c dng quyt nh xem b nh thi c
dng nh mt my to tr hay b m s kin. Nu bt C/T = 0 th n c dng
nh mt b nh thi to ch thi gian. Ngun ng h cho ch tr thi gian l
Li gii:
1 1
a) 12MHz = 1MHz v T = = 1s
12 1 / 1MHz
1 1
b) 16MHz = 1,111Mz v T = = 0,75s
12 1,333MHz
1 1
c) 11,0592MHz = 921,6kHz v T = = 1,085s
12 0,9216MHz
TF = 0 TF = 0 TF = 0 TF = 0 TF = 1
V d 2.
Chng trnh di y to ra mt sng vung trn chn P2.5 lin tc bng vic s
dng b Timer1 to ra tr thi gian. Hy tm tn s ca sng vung nu tn s
XTAL = 11.0592MHz. Trong tnh ton khng a vo tng ph ca cc lnh vng
lp:
8051 c hai chn c dng chuyn cho truyn v nhn d liu ni tip. Hai
chn ny c gi l TxD v RxD v l mt phn ca cng P3 ( l P3.0 v P3.1).
chn 11 ca 8051 l P3.1 c gn cho TxD v chn 10 (P3.0) c dng cho RxD.
Cc chn ny tng thch vi mc l-gch TTL. Do vy chng i hi mt b iu
khin ng truyn chng tng thch vi RS232. Mt b iu khin nh vy l
chp MAX232.
Trong phn ny chng ta s nghin cu v cc thanh ghi truyn thng ni tip
ca 8051 v cch lp trnh chng truyn v nhn d liu ni tip. V cc my tnh
IBM PC v tng thch c s dng rt rng ri truyn thng vi cc h da
trn 8051, do vy ta ch yu tp trung vo truyn thng ni tip ca 8051 vi cng
COM ca PC. cho php truyn d liu gia my tn PC v h thng 8051 m
khng c bt k li no th chng ta phi bit chc rng tc baud ca h 8051
phi ph hp vi tc baud ca cng COM my tnh PC c cho trong Bng 3-12.
Mt s gi tr thng dng trong truyn thng ni tip.
Trong :
Bit M t
SM0
SM1 La chn mode lm vic
SM2
REN = 1: Cho php nhn
= 0: Ch truyn
TB8 (=1) Bit truyn thng th 8, c s dng khi truyn thng ch 9 bit
RB8 (=1) Bit truyn thng th 8, h thng s t t n =1 nu pht hin khung
truyn l 9bit
Mode 0
y l ch thanh ghi dch 8 bit, khng c bit start/stop, ch ny RxD
l chn truyn nhn, cn TxD pht xung ng b.
SMOD=0
Bi tp:
Hy tm tc baud nu TH1 = -2, SMOD = 1 v tn s XTAL = 11.0592MHz. Tc
ny c c h tr bi cc my tnh IBM PC v tng thch khng?
3.6 X l ngt
Mt ngt l mt s kin bn trong hoc bn ngoi lm ngt b vi iu khin
bo cho n bit rng thit b cn dch v ca n. Trong chng ny ta tm hiu khi
nim ngt v lp trnh ngt.
Mt b vi iu khin c th phc v mt vi thit b, c hai cch thc hin
iu ny l s dng cc ngt v thm d (polling). Trong phng php s dng
cc ngt th mi khi c mt thit b bt k cn n dch v ca n th n bao cho b
Trong :
Bit M t
EA Cho php/cm ngt ton cc
= 0: Cm tt c cc ngt
= 1: Cho php cc ngt
ES = 0: Cm ngt truyn thng ni tip
= 1: Cho php ngt truyn thng ni tip
ET1 = 0: Cm ngt Timer 1
= 1: Cho php ngt Timer 1
EX1 = 0: Cm ngt ngoi vi INT0
= 1: Cho php ngt ngoi v INT0
ET0 = 0: Cm ngt Timer 0
= 1: Cho php ngt timer 0
EX0 = 0: Cm ngt ngoi vi INT1
= 1: Cho php
Mt s v d v bi tp:
V d 1:
Hy ch ra nhng lnh a) cho php ngt ni tip ngt Timer0 v ngt phn cng
ngoi 1 (EX1) v b) cm (che) ngt Timer0 sau c) trnh by cch cm tt c mi
ngt ch bng mt lnh duy nht.
Li gii:
V d 2:
Hy vit chng trnh nhn lin tc d liu 8 bt cng P0 v gi n n cng P1
trong khi n cng lc to ra mt sng vung chu k 200us trn chn P2.1. Hy s
dng b Timer0 to ra sng vung, tn s ca 8051 l XTAL = 11.0592MHz.
Li gii:
Ta s dng b Timer0 ch 2 (t ng np li) gi tr np cho TH0 l
100/1.085us = 92.
; - - Khi khi to vo chng trnh main trnh dng khng gian.
; a ch dnh cho bng vc t ngt.
ORG 0000H
CPL P2.1 ; Nhy n bng vc t ngt.
; - - Trnh ISR dnh cho Timer0 to ra sng vung.
ORG 0030H ; Ngay sau a ch bng vc-t ngt
MAIN: TMOD, #02H ; Chn b Timer0, ch 2 t np li
MOV P0, #0FFH ; Ly P0 lm cng vo nhn d liu
MOV TH0, # - 92 ; t TH0 = A4H cho 92
MOV IE, #82H ; IE = 1000 0010 cho php Timer0
SETB TR0 ; Khi ng b Timer0
BACK: MOV A, P0 ; Nhn d liu vo t cng P0
MOV P1, A ; Chuyn d liu n cng P1
SJMP BACK ; Tip tc nhn v chuyn d liu
; Chng no b ngt bi TF0
END
Trong v d 2 trnh phc v ngt ISR ngn nn n c th t va vo khng
gian a ch dnh cho ngt Timer0 trong bng vc t ngt. Tt nhin khng phi lc
no cng lm c nh vy. Xt v d 3 di y.
CHNG 4. NG DNG
Mc tiu
Gip sinh vin hc tp v thc hnh theo cc v d mu, nhm nng cao trnh
lp trnh ca sinh vin.
Tm tt:
R2
220
Hnh 4-4. Thut ton: Nhp nhy P1- M ngun 4-4. Nhp nhy cng P1v o
Macro trng thi P2.0
Trong v d trn, c thm phn o LED, xem k o LED Hnh 4-5. Thut ton:
Nhp nhy P1.0
Nhp nhy mt LED n:
n gin ch cn kch hot n LED nhp nhy nhn thy c s hot ng,
trong mi ln thay i trng thi ca LED, cn to mt khong thi gian tr c th
quan st thy trng thi. Trong v d ny, thi gian tr c cung cp bng cch thc
4.2 Timer
Chng trnh di y minh ha mt v d n gin nht v Timer, ly v d l Timer 0 (v
trong ch c bn, Timer 0 v Timer 1 l nh nhau).
S nguyn l, vn ly s trong Hnh 4-1. Mch nhp nhy LED n.
Thut ton lp trnh v m ngun c th thc hin nh cc v d di y.
Timer Bi ton 1:
Lin tc pht xung vung c chu k l 2ms ra chn P1.0
CSEG AT 0
Timer-Xung vung
JMP Start ; Reset vector
Nhn: Start ORG 100H
Start:
Khi to
TMOD=1 MOV TMOD,#0x01
Timer0
TH0_TL0=65536-1000
MOV TH0, #HIGH(-1000);1ms
MOV TL0, #LOW(-1000)
TR0=1 Chy! SETB TR0 ; Cho TIMER chay
Nhn: waitTF0
waitTF0: jnb TF0, waitTF0
Ch n khi
TF0=1?
Timer0 Chy xong
CPL P1.0
o trng thi ca
P1.0=~P1.0 JMP Start
chn (To xung)
END
Hnh 4-6. Thut ton: TIMER0 M ngun 4-6. Timer0 to xung PWM
CSEG AT 0
JMP XRESET ; Reset vector
ORG 02BH ; Vector ngt ca TM2
JMP TIM2_ISR
ORG 100H
XRESET:
MOV A,#0FFH
MOV P3,#0FFH
MOV RCAP2L,#0FH ; TM2, 16-bit t np li
MOV RCAP2L,#01H
CLR CAP2 ; Cho php 16-bit t np li
SETB EXEN2 ; Khi to nt bm
SETB TR2 ; Cho TM2 chy
MOV IE,#0A0H ; Cho php ngt TM2
CLR C
TIM2_ISR:
RRC A ; Quay A qua c C
MOV P3,A ; Xut A ra cng P3
CLR TF2 ; Xa c ngt
CLR EXF2 ; Xa c ngt
RETI ; Kt thc ngt
END ; Kt thc chng trnh
M ngun 4-8. S dng Timer 2
Led 7 thanh c ng dng kh ph bin khi cn hin th s t nhin hoc vi ch ci nht nh.
Led 7 thanh c th c kch thc ln nh khc nhau, mu sc khc nhau nhng v hnh dng c
bn nh hnh di y
Led 7 thanh bao gm nhiu led tch hp bn trong, cc led c ni chung nhau 1 chn. Trong
thc t c 2 loi led 7 thanh l led 7 thanh A-nt chung v led 7 thanh Ka-tt chung. Led loi A-nt
chung, cc led s c chung nhau chn ngun (chn dng), chn cn li ca led no c ni t
th led s sng. Led loi Ka-tt chung, cc led s ni chung nhau chn t (chn m), chn cn
li ca led no c ni ngun th led s sng.
V d:
org 0h
start:
mov P0,#11111100b; Cp 0V cho thanh led a v b
clr P2.0 ; Cp 5V cho led 7 thanh
call delay ; Gi hm tr
call delay ; Gi hm tr
sjmp start ; Tr v u chng trnh
org 0h
start:
mov dptr, #word ; con tr d liu vo u bng
mov R6, #8 ; s led cn hin th, 8 led
mov R1, #01111111b; khi u led 8
Again:
clr A ; xa thanh ghi acc
movc A, @A+dptr ; a s u tin bng vo acc
inc dptr ; tng v tr con tr
mov P0, A ; a m cn hin th ra P0
mov A, R1 ; th t led cn hin th
mov P2, A ; hin th led
rr A ; dch vi tr led cn hin th
mov R1, A ; lu vo thanh ghi R1
call delay ; gi hm tr
mov P0, #11111111b; xa
djnz R6, Again ; lp li 8 ln
sjmp start ; tr v v tr ban u
delay: mov R1,#255
del1: mov R2,#255
del2: djnz R2,del2
djnz R1,del1
ret
word: DB 00111111b, 01000111b, 00001000b, 00000011b
DB 01000110b, 01000000b, 01001000b, 00111111b
end
M ngun 4-13. Hin th trn nhiu LED 7 thanh
VEE
29 24
RW
RS
D0
D1
D2
D3
D4
D5
D6
D7
PSEN P2.3/A11
E
30 25
ALE P2.4/A12
31 26
EA P2.5/A13
1
2
3
4
5
6
7
8
9
10
11
12
13
14
27
P2.6/A14
28
P2.7/A15
1 10
P1.0 P3.0/RXD
2 11
P1.1 P3.1/TXD
3 12
P1.2 P3.2/INT0
4 13
P1.3 P3.3/INT1
5 14
P1.4 P3.4/T0
6 15
P1.5 P3.5/T1
7 16
P1.6 P3.6/WR
8 17
P1.7 P3.7/RD
AT89C51
;****************************************************************
;* PROGRAM NAME : Lcd.ASM
;* DESCRIPRTION : Program for testing LCD display. 4-bit
communication
;* is used. Program does not check BUSY flag but uses program delay
;* between 2 commands. PORT1 is used for connection
;* to the microcontroller.
;***************************************************************
;*********************************************
;* Chng trnh con to tr (T= r0 x 10ms)
;*********************************************
Delay_10ms: MOV R5,00h ;T.gian tr ~ 1+(1+(1+2*r7+2)*r6+2)*r5
MOV R6,#100d ; (nu r7>10)
MOV R7,#100d ; 2*r5*r6*r7
DJNZ R7,$
DJNZ R6,$-4
DJNZ R5,$-6
RET
;****************************************************************
; Chng trnh con khi to:
;****************************************************************
;******************************************
LCD_inic_status_8:
PUSH B
MOVC A,@A+DPTR
CLR LCD_reg_select ; RS=0 - Write command
CLR LCD_read_write ; R/W=0 - Write data on LCD
ORG 100H
XRESET: MOV IE,#00 ; All interrupts are disabled
MOV TMOD,#20H ; Timer1 in mode2
MOV TH1,#0FDH ; 9600 baud rate at the frequency of
; 11.0592MHz
MOV SCON,#50H ; Receiving enabled, 8-bit UART
MOV IE,#10010000B ; UART interrupt enabled
CLR TI ; Clear transmit flag
CLR RI ; Clear receive flag
SETB TR1 ; Start Timer1
LOOP: SJMP LOOP ; Remain here
PUBLIC _putc
PUBLIC getc
;--------------------------------------------
;To send data serially
;For C programs
;Protype definition:
; void putc(unsigned char);
;Usage:
; putc(data);
;Return:
; This function returns nothing
;
;For Assembly Programs:
;
;Usage:
; data to be send has to be moved to R7
; for example:
; mov R7,#'a'
; lcall _putc
;--------------------------------------------
RSEG ?SU?PUTC
_putc:
push ACC
Push PSW
mov a,r7
CLR txd_pin ;Drop line for start bit
MOV R0,#BITTIM ;Wait full bit-time
;--------------------------------------------
;To receive data Serially
;If you want to use this routine in your
;C program then define function prototype
; as:
; unsigned char getc(void);
;
; Usage:
; data = getc();
; Return value:
; Returns data received
;If you are using it in assembly program
; Usage:
; lcall getc
; Return:
; data received is stored in R7
;--------------------------------------------
RSEG ?SU?GETC
getc:
Push ACC
Push PSW
JB rxd_pin,$ ;Wait for start bit
MOV R0,#BITTIM/2 ;Wait 1/2 bit-time
DJNZ R0,$ ;To sample in middle
JB rxd_pin,getc ;Insure valid
MOV R1,#8 ;Read 8 bits
getc1:
MOV R0,#BITTIM ;Wait full bit-time
DJNZ R0,$ ;For DATA bit
MOV C,rxd_pin ;Read bit
RRC A ;Shift it into ACC
U1
19 39
XTAL1 P0.0/AD0
38
P0.1/AD1
37
P0.2/AD2
18
XTAL2 P0.3/AD3
P0.4/AD4
36
35 Ai (0..5v) <=> LED: 00..FF
34
L7
L6
L5
L4
L3
L2
L1
L0
P0.5/AD5
33
P0.6/AD6
9 32
RST P0.7/AD7 C1
21 U2
P2.0/A8 DB0
22 1 20
P2.1/A9 DB1 CS VCC
23 1nF 2 18
P2.2/A10 DB2 ADC_RD RD DB0(LSB) DB0
29 24 3 17
PSEN P2.3/A11 DB3 ADC_WR WR DB1 DB1
30 25 4 16
ALE P2.4/A12 DB4 CLK IN DB2 DB2
31 26 5 15
EA P2.5/A13 DB5 intr INTR DB3 DB3
27 R1+2V5 8 14
P2.6/A14 DB6 A GND DB4 DB4
28 10k 10 13
P2.7/A15 DB7 D GND DB5 DB5
9 12
VREF/2 DB6 DB6
1 10 19 11
ADC_RD P1.0 P3.0/RXD L0 CLK R DB7(MSB) DB7
2 11
ADC_WR P1.1 P3.1/TXD L1 RV1
3 12 6
21%
CS P1.2 P3.2/INT0 L2 VIN+
4 13 5k 7
intr P1.3 P3.3/INT1 L3 VIN-
5 14
P1.4 P3.4/T0 L4
6 15 ADC0804
P1.5 P3.5/T1 L5
7 16
P1.6 P3.6/WR L6
8 17
P1.7 P3.7/RD L7
AT89C51
CLOCK=12MHz
ORG 0h
JMP MAIN
ADC_RD EQU P1.0
ADC_WR EQU P1.1
INTR EQU P1.3
ADC_DAT EQU P2
LED7 EQU P3
;Khai bo chng trnh con DelayX y
; tham kho M ngun 4-2. DelayX
ORG 30H
MAIN:
ACALL TACT_LayMau
mov LED7,A
SJMP MAIN
TACT_LayMau:
CLR ADC_WR ; Tao xung tu cao xuong thap
;tai chan ADC_WR(Tuc W/R cua ADC)
DelayX 1
SETB ADC_WR ; Cho phep ADC0804 bat dau qua trinh
; chuyen doi tu tuong tu sang so
JB INTR, $ ; Doi cho qua trinh chuyen doi xong(100us)
CLR ADC_RD ; Dua xung muc thap toi chan RD
; cho phep doc du lieu tu ADC(Xuat ra D0..D7)
DelayX 1
MOV A,ADC_DAT ; Dua du lieu 8bit tu ADC_DAT den thanh ghi A
setb ADC_RD
RET
END
M ngun 4-19. Chuyn i ADC (VK-ADC0804)
U1
19 39
XTAL1 P0.0/AD0
38
P0.1/AD1
37
P0.2/AD2
18 36
XTAL2 P0.3/AD3 DB0
35
P0.4/AD4
34
P0.5/AD5
33
P0.6/AD6
9 32
RST P0.7/AD7
DB1
21
P2.0/A8 DB0
22
P2.1/A9 DB1
23
P2.2/A10 DB2
29 24
PSEN P2.3/A11 DB3
30 25
ALE P2.4/A12 DB4 DB2
31 26
EA P2.5/A13 DB5
27
P2.6/A14 DB6
28
P2.7/A15 DB7
1 10
P1.0 P3.0/RXD DB3
2 11
P1.1 P3.1/TXD
3 12
P1.2 P3.2/INT0
4 13
P1.3 P3.3/INT1
5 14
DB4
DB5
DB6
DB7
P1.4 P3.4/T0
6 15
P1.5 P3.5/T1
7 16
P1.6 P3.6/WR
8 17
P1.7 P3.7/RD
AT89C51
CLOCK=12MHz
29
P2.1/A9
P2.2/A10
23
24
DB1
DB2
C 7 8 9 C C
PSEN P2.3/A11 DB3
30 25
ALE P2.4/A12 DB4
31 26
EA P2.5/A13
P2.6/A14
27
28
DB5
DB6
D 0 # D D
P2.7/A15 DB7
1 2 3 4
1 10
P1.0 P3.0/RXD
2 11
P1.1 P3.1/TXD
C
D
A
B
4
3
2
1
3 12
P1.2 P3.2/INT0
4 13
P1.3 P3.3/INT1
5 14
P1.4 P3.4/T0
6 15
P1.5 P3.5/T1
7 16
P1.6 P3.6/WR
8 17
P1.7 P3.7/RD
DB0
DB1
DB2
DB3
DB4
DB5
DB6
DB7
AT89C51
CLOCK=12MHz
CLR ROW_B
BDB0:JB COL1, BDB1
MOV KQ,#6 // Phim 6 bam
BDB1:JB COL2, BDB2
MOV KQ,#5 // Phim 5 bam
BDB2:JB COL3, BDB3
MOV KQ,#4 //Phim 4 bam
BDB3:JB COL4, BFINISH
MOV KQ,#'B' //Phim 4 bam
BFINISH:
SETB ROW_B
CLR ROW_C
CDB0:JB COL1, CDB1
MOV KQ,#7 // Phim 7 bam
CDB1:JB COL2, CDB2
MOV KQ,#8 // Phim 8 bam
CDB2:JB COL3, CDB3
MOV KQ,#9 //Phim 9 bam
CDB3:JB COL4, CFINISH
MOV KQ,#'C' //Phim C bam
CFINISH:
SETB ROW_C
CLR ROW_D
DDB0:JB COL1, DDB1
MOV KQ,#'*' // Phim * bam
DDB1:JB COL2, DDB2
MOV KQ,#0 // Phim 0 bam
DDB2:JB COL3, DDB3
MOV KQ,#'#' //Phim # bam
DDB3:JB COL4, DFINISH
MOV KQ,#'D' //Phim D bam
DFINISH:
SETB ROW_D
MOV P3,KQ // x l kt qu
JMP MAIN
END
M ngun 4-20. c ma trn phm
Hnh 4-23. Cu to ng c bc
Chng trnh o nhit dng LM35DZ, ADC0804, v thit lp ; nhit cnh bo bng bn phm
my tnh:
LCD_DATA EQU P2 CLR ADC_WR ;Tao canh len
LCD_RS BIT P0.0 SETB ADC_WR
LCD_RW BIT P0.1 JNB ADC_INTR,$ ;Cho chuyen doi xong
LCD_E BIT P0.2 CLR ADC_RD ;Cho phep doc ADC
ADC_DATA EQU P1 MOV A,ADC_DATA ;Doc du lieu tu ADC
ADC_RD BIT P0.4 MOV 30H,A ;Luu vo 30H
ADC_WR BIT P0.5 RET
ADC_INTR BIT P0.6 ;_______________________________________
KB_CLK BIT P3.2 ;CTC chuyen ma doc duoc tu ADC chua ;
KB_DATA BIT P0.3 ;trong 30H thanh nhiet do chua trong ;
WARN BIT P0.7 ;31H(chuc), 32H(Don vi), 33H(phan tram) ;ma
ASCII ;
ORG 0000H ;---------------------------------------
LJMP MAIN CONVERT:
ORG 0003H MOV A,30H ;Lay ma doc duoc tu ADC
LJMP EX0_ISR MOV B,#4 ;Do phan giai la 0,4oC
MUL AB
ORG 0030H MOV R7,B ;Nhiet do dat trong R7-R6
MAIN: MOV R6,A
LCALL CONFIG MOV B,#10
;Thiet lap cac thong so ban dau LCALL DIV16_8
MAIN1: LCALL READ_ADC ;Doc ADC MOV A,B
LCALL CONVERT ;Chuyen doi ADD A,#30H
LCALL COMPARE ;So sanh va hien thi MOV 33H,A ;Thap phan
LCALL DELAY_500MS ;Cho 0,1s MOV B,#10
LJMP MAIN1 LCALL DIV16_8
;_______________________________________ MOV A,B
CONFIG: ;CTC thiet lap cac thong so ADD A,#30H
MOV A,#38H ;K.D LCD MOV 32H,A ;Don vi
LCALL WRCMD MOV B,#10
MOV A,#0CH ;Display ON, Cursor OFF LCALL DIV16_8
LCALL WRCMD MOV A,B
MOV A,#06H ;LCD tu dong dich phai ADD A,#30H
LCALL WRCMD MOV 31H,A ;Chuc
MOV A,#01H ;Ghi loi chao RET
LCALL WRCMD ;_______________________________________
MOV DPTR,#CHAO1 ;CTC chia 1 so 16-bit cho 1 so 8-bit ;
LCALL OUT_STRING_LINE1 ;So bi chia: R7-R6 ;
MOV DPTR,#CHAO2 ;So chia: B ;
LCALL OUT_STRING_LINE2 ;Thuong so: R7-R6 ;
LCALL DELAY_2S ;So du B ;
MOV DPTR,#CHAO3 ;---------------------------------------;
LCALL OUT_STRING_LINE1 DIV16_8:
MOV DPTR,#CHAO4 CLR A
LCALL OUT_STRING_LINE2 MOV R2,#16
LCALL DELAY_2S DIV1: CLR C
SETB WARN ;Tat den canh bao LCALL RLC_R7R6
CLR F0 ;F0=0: chuc, =1: dvi ;Xoay trai R7_R6 qua co C
MOV 41H,#'4' RLC A
;Dat nhiet do canh bao ban dau CJNE A,B,NOT_EQ
MOV 42H,#'0' LJMP LOW1
MOV IE,#81H ;Cho phep ngat ngoai 0 NOT_EQ: JNC LOW1
RET SJMP GIAM
;_______________________________________
;CTC doc ADC ; LOW1: SUBB A,B
;Du lieu doc duoc chua trong 30H ; XCH A,R6
;---------------------------------------; ORL A,#01H
READ_ADC: XCH A,R6
MOV ADC_DATA,#0FFH ;De doc ADC chinh xac GIAM: DJNZ R2,DIV1
SETB ADC_INTR ;nhan t.hieu canh xuong MOV B,A ;So du chua trong B
V d m rng 2:
Thit k h thng hin th v cnh bo p sut nc trong bnh nn, vi 03 mc
thp, trung bnh v cao (ngng do ngi dng t t)
Bit cm bin p sut c tn hiu ra trong khong 0..100mV tng ng vi p sut
t 0..3000 atmosphe.
Yu cu thit k theo cc bc sau:
Thit k s khi tng th ton h thng
c t mi khi:
o Chc nng, nhim v ca khi
o S lng v chun tn hiu in p vo/ra
Thit k s tng tc (thut ton nhng) ton h thng
Thit k s nguyn l
c t s nguyn l
o Chc nng, nhim v ca (nhm) linh kin
o Chun giao tip (chun truyn thng (nu c chun), lc bnh thng/lc
hot ng,)
Lp trnh
o S Call graph
o S khi (ca mi chc nng trong s call graph, nu cn)
o Vit m ngun
p n:
Thit k s khi tng th ton h thng:
Khi
Khi vo Hin th
DKTT
Ngun
Cm bin
#
D
Bn phm A, B
A B
Hi=D>B Hi LED Trng
No=(ADB)
Lo=D<B No LED Xanh
Lo LED
Hnh 4-24. S khi tng th ton b h thng:
Khi vo s bao gm: Khi cm bin, khi lc v khuch i, khi bn phm. Chi tit c
thit k nh sau:
Vcc
3x10k
R2 K1 KB1
R5
K2 KB2
R1
R3 R4 K3 KB3
C1
RS,RW,E
LCD16x2
D4..D7
Hi
No LED n
Lo
D1 R1
Hi
10k
W hite LED
VDD
D2
VSS
VEE
R2
RW
RS
D0
D1
D2
D3
D4
D5
D6
D7
E
No
10k
RV2 Green LED
1
2
3
4
5
6
7
8
9
10
11
12
13
14
50%
5k
D3 R3
Lo
10k
RED-LED
RS
D4
D5
D6
D7
RW
Vcc
C1
22p
8MHZ U1
CRYSTAL
C2 13 33
OSC1/CLKIN RB0/INT E
14 34
OSC2/CLKOUT RB1 RS
35
RB2 RW
22p 2 36
Ai RA0/AN0 RB3/PGM
3 37
RA1/AN1 RB4 D4
4 38
RA2/AN2/VREF-/CVREF RB5 D5
5 39
RA3/AN3/VREF+ RB6/PGC D6
6 40
RA4/T0CKI/C1OUT RB7/PGD D7
7
RA5/AN4/SS/C2OUT
15
RC0/T1OSO/T1CKI Hi
8 16
RE0/AN5/RD RC1/T1OSI/CCP2 No
9 17
RE1/AN6/WR RC2/CCP1 Lo
10 18
RE2/AN7/CS RC3/SCK/SCL
R4 23
RC4/SDI/SDA
1 24
MCLR/Vpp/THV RC5/SDO
10k 25
RC6/TX/CK
26
RC7/RX/DT
19
RD0/PSP0 KB1
20
RD1/PSP1 KB2
21
RD2/PSP2 KB3
22
RD3/PSP3
27
RD4/PSP4
28
RD5/PSP5
29
RD6/PSP6
30
RD7/PSP7
PIC16F877A
Lp trnh
o S Call graph
o S khi (ca mi chc nng trong s call graph, nu cn)
o Vit m ngun
Phn mm
nhng
void KeyBoard(){
if(KB1){Mode=(++Mode)%3;delay_ms(T);}
if(Mode==1){
if(KB2){A++;delay_ms(T);}
if(KB3){A--;delay_ms(T);}
}
if(Mode==2){
if(KB2){B++;delay_ms(T);}
if(KB3){B--;delay_ms(T);}
} }
void main(){
init_main();
while(1){
D=read_adc();
lcd_gotoxy(1,1); printf(lcd_putc,"Ap
Suat=%4LU.Mode=%u\nA=%4u.B=%4u",D,Mode,A,B);
Hi_LED=No_LED=Lo_LED=0;
if(D<A)Lo_LED=1;
else if(D>B)Hi_LED=1;
else No_LED=1;
KeyBoard();
delay_ms(100);
} }
void init_main(){
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
set_adc_channel(0);
lcd_init();
}
M ngun 4-23. Lp trnh cho VK tin tin
(Trang ny nn b trng)
CHNG 5.
CC H VI IU KHIN TIN TIN
Mc tiu
Tm tt:
5.1.5 EEPROM
Hu nh tt c cc vi iu khin AVR u c Electrically Erasable
Programmable Read Only Memory (EEPROM) lu na vnh vin d liu lu
5.1.7 Tp lnh
Tp lnh AVR hn l trc giao vi hu ht cc vi iu khin tm-bit, c bit l
8051 v vi iu khin PIC vi AVR m ngy nay ang cnh tranh. Tuy nhin, n
khng phi l hon ton bnh thng:
Con tr ghi X, Y, v Z c kh nng nh a ch khc vi nhau.
V tr thanh ghi R0 n R15 c kh nng nh a ch khc hn v tr thnah
ghi R16 n R31.
I / O port 0-31 c kh nng nh a ch khc so vi I / O ports 32-63.
CLR nh hng n cc c, trong khi SER khng, ngay c khi chng c
lnh b sung. CLR xa tt c cc bit v khng v SER t chng ln mt.
Truy cp d liu ch c c lu trong b nh chng trnh (flash) yu cu
lnh c bit LPM.
Ngoi ra, mt s chip-s khc bit c th nh hng n cc th h m. M con
tr (bao gm c cc a ch tr li stack) l hai byte trn chip ln n 128 KBytes b
nh flash, nhng ba byte trn chip ln hn, khng phi tt c cc chip c s nhn
phn cng; chip vi hn 8 Kbytes flash c nhnh v gi lnh vi khong rng hn;
v.v. .
Lp trnh cho n bng cch s dng lp trnh C (hoc thm ch Ada) trnh bin
dch kh n gin. GCC bao gm h tr AVR t kh lu, v h tr c s dng
5.1.8 Tc MCU
Dng AVR bnh thng c th h tr tc ng h 0-20 MHz, vi mt s thit
b t 32 MHz. H tr hot ng thp hn thng i hi mt tc gim. Tt c
gn y (Tiny v Mega, nhng khng phi 90S) AVRs tch hp oscillator-chip, loi
b s cn thit ca ng h bn ngoi hoc mch dao ng. Mt s AVRs cng c
mt prescaler ng h h thng, c th chia xung ng h ca h thng ln n
1024. Prescaler ny c th c cu hnh li bng phn mm trong thi gian chy,
cho php ti u ha tc ng h.
V tt c cc hot ng (tr literals) trn thanh ghi R0 - R31 l n chu k, cc
AVR c th t c ln n 1MIPS mi MHz. Ti v lu tr vo / ra b nh mt 2
chu k, phn nhnh phi mt 3 chu k.
5.3 ARM
Cu trc ARM
Cu trc ARM (vit tt t tn gc l Acorn RISC Machine) l mt loi cu trc
vi x l 32-bit kiu RISC c s dng rng ri trong cc thit k nhng. Do c c
im tit kim nng lng, cc b CPU ARM chim u th trong cc sn phm in
t di ng, m vi cc sn phm ny vic tiu tn cng sut thp l mt mc tiu
thit k quan trng hng u.
Ngy nay, hn 75% CPU nhng 32-bit l thuc h ARM, iu ny khin ARM
tr thnh cu trc 32-bit c sn xut nhiu nht trn th gii. CPU ARM c
tm thy khp ni trong cc sn phm thng mi in t, t thit b cm tay (PDA,
in thoi di ng, my a phng tin, my tr chi cm tay, v my tnh cm tay)
cho n cc thit b ngoi vi my tnh ( a cng, b nh tuyn bn.) Mt
nhnh ni ting ca h ARM l cc vi x l Xscale ca Intel.
Mt b vi x l Conexant c
dng ch yu trong cc b nh
Tr s chnh ca cng ty ARM ti Cambridge tuyn
Anh)
Cache MIPS in
H Li c tnh ng dng
(I/D)/MMU hnh @ MHz
Game Boy
ARM7TDMI 15 MIPS @
ARM7TDMI 3-tng pipeline khng Advance, Nintendo
(-S) 16.8 MHz
DS, iPod
36 MIPS @
ARM710T MMU Psion 5 series
40 MHz
8KB unified, 60 MIPS @
ARM720T
MMU 59.8 MHz
ARM740T MPU
ARM7EJ-S Jazelle DBX khng
ARM9TDMI ARM9TDMI 5-tng pipeline khng
GP32,GP2X (li
16KB/16KB, 200 MIPS @ u tin), Tapwave
ARM920T
MMU 180 MHz Zodiac (Motorola i.
MX1)
ARM922T 8KB/8KB, MMU
ARM940T 4KB/4KB, MPU GP2X (li th hai)
Nintendo DS,
thay i c,
Nokia N-Gage,
ARM9E ARM946E-S tightly coupled
Conexant 802.11
memories, MPU
chips
ST Micro
khng c cache,
ARM966E-S STR91xF, includes
TCMs
Ethernet [1]
khng c cache,
ARM968E-S
TCMs
in thoi di ng:
Sony Ericsson (K,
thay i c, 220 MIPS @
ARM926EJ-S Jazelle DBX W series),Siemens
TCMs, MMU 200 MHz
and Benq (i x65
v i mi hn)
Clockless khng caches,
ARM996HS
processor TCMs, MPU
32KB/32KB,
ARM10E ARM1020E (VFP)
MMU
16KB/16KB,
ARM1022E (VFP)
MMU
ARM1026EJ- variable, MMU or
Jazelle DBX
S MPU
ARM1136J SIMD, Jazelle
ARM11 variable, MMU
(F)-S DBX, (VFP)
ARM1156T2 SIMD, Thumb- thay i c,
(F)-S 2, (VFP) MPU
ARM1176JZ SIMD, Jazelle thay i c,
Cache MIPS in
H Li c tnh ng dng
(I/D)/MMU hnh @ MHz
(F)-S DBX, (VFP) MMU+TrustZone
1-4 core SMP,
ARM11 thay i c,
SIMD, Jazelle
MPCore MMU
DBX, (VFP)
ln n 2000
(2.0
Application
DMIPS/MHz
profile, NEON, variable (L1+L2), Texas Instruments
Cortex Cortex-A8 in speed from
Jazelle RCT, MMU+TrustZone OMAP3
600 MHz to
Thumb-2
greater than 1
GHz)
Embedded variable cache, Broadcom l mt
Cortex-R4 600 DMIPS
profile MMU optional hng s dng
Luminary Micro[2]
Microcontroller 120 DMIPS
Cortex-M3 no cache, (MPU) microcontroller
profile @ 100MHz
family
80200/IOP310
XScale I/O Processor
/IOP315
80219
IOP321 Iyonix
IOP33x
PXA210 Applications
Zaurus SL-5600
/PXA250 processor
400
32KB/32KB,
PXA255 BogoMips Gumstix
MMU
@400 MHz
PXA26x
800 MIPS @ HTC Universal,
PXA27x
624 MHz Zaurus SL-C1000
PXA800(E)F
1000 MIPS @
Monahans
1.25 GHz
PXA900 Blackberry 8700
Control Plane
IXC1100
Processor
IXP2400
/IXP2800
IXP2850
IXP2325
/IXP2350
IXP42x NSLU2
IXP460
Cache MIPS in
H Li c tnh ng dng
(I/D)/MMU hnh @ MHz
/IXP465
Cc lu v thit k
t c mt thit k gn, n gin v nhanh, cc nh thit k ARM xy
dng n theo kiu ni cng khng c vi chng trnh, ging vi b vi x l 8-bit
6502 tng c dng trong cc my vi tnh trc ca hng Acorn.
Cu trc ARM bao gm cc c tnh ca RISC nh sau:
-
Cu trc np/lu tr.
-
Khng cho php truy xut b nh khng thng hng (by gi cho php
trong li Arm v6)
- Tp lnh trc giao
- File thanh ghi ln gm 16 x 32-bit
- Chiu di m my c nh l 32 bit d gii m v thc hin pipeline,
t c iu ny phi chp nhn gim mt m my.
- Hu ht cc lnh u thc hin trong vng mt chu k n.
So vi cc b vi x l cng thi nh Intel 80286 v Motorola 68020, trong
ARM c mt s tnh cht kh c o nh sau:
- Hu ht tt c cc lnh u cho php thc thi c iu kin, iu ny lm
gim vic phi vit cc tiu r nhnh cng nh b cho vic khng c
mt b d on r nhnh.
- Trong cc lnh s hc, ch ra iu kin thc hin, ngi lp trnh ch
cn sa m iu kin
- C mt thanh ghi dch ng thng 32-bit m c th s dng vi chc
nng hon ho vi hu ht cc lnh s hc v vic tnh ton a ch.
- C cc kiu nh a ch theo ch s rt mnh
- C h thng con thc hin ngt hai mc u tin n gin nhng rt
nhanh, km theo cho php chuyn tng nhm thanh ghi.
Lnh logic
C php S S
STT M t chu
M lnh Ton hng byte k
1 ANL A,Rn A = (A)and(Rn) 1 1
2 A,direct A = (A)and(direct) 2 1
3 A,@Ri A = (A)and(@Ri ) 1 1
4 A,#data A = (A)and(#data) 2 1
5 direct,A direct = (direct)and(A) 2 1
Cc lnh Bit
C php S S
STT M t chu
M lnh Ton hng byte k
1 CLR C Xa c C v 0 1 1
2 CLR Bit Xa bit v 0 2 1
3 SETB C t c C = 1 1 12
4 SETB Bit t bit = 1 2 1
5 CPL C o gi tr ca c C 1 1
6 CPL Bit o gi tr ca bit 2 1
7 ANL C,bit C = (C)and(bit) 2 2
8 ANL C,/bit C = (C)and(o ca bit) 2 2
9 ORL C,bit C = (C)or(bit) 2 2
10 ORL C,/bit C = (C)or(o ca bit) 2 2
11 MOV C,bit C = bit 2 1
- - - - - - T2OE DCEN
Bit K
ngha
th hiu
C trn Timer 1
7 TF1 c xa bi phn cng khi vi x l nhy n chng trnh con ngt
Lp bi phn cng khi Timer / Counter 1 trn
Bit iu khin chy Timer 1
6 TR1 Xa cm chy timer/counter 1.
Lp chy timer/counter 1.
C trn Timer 0
5 TF0 Xa bng phn cng khi chy chng trnh con ngt
Lp bng phn cng khi thanh ghi timer/counter trn
Bit iu khin chy Timer 0
4 TR0 Xa cm chy timer/counter 0.
Lp chy timer/counter 0.
C cnh ngt 1
3 IE1 Xa bng phn cng khi ngt vi x l, nu t ngt cnh (sn)
Lp bng phn cng khi ngt ngoi c pht hin ti chn INT1
Bit iu khin loi ngt ngoi 1
2 IT1 Xa: Ngt theo mc thp cho ngt ngoi 1 (INT1)
Lp : Ngt theo cnh xung (sn xung) cho ngt ngoi 1 (INT1)
C cnh ngt 0
1 IE0 Xa bng phn cng khi ngt vi x l, nu t ngt cnh (sn)
Lp bng phn cng khi ngt ngoi c pht hin ti chn INT0
Bit iu khin loi ngt ngoi 0
0 IT0 Xa: Ngt theo mc thp cho ngt ngoi 1 (INT0)
Lp : Ngt theo cnh xung (sn xung) cho ngt ngoi 1 (INT0)
Gi tr sau khi reset = 0000 0000b
Mode: ch
Timer : B nh thi, Counter: B m
3. Thanh ghi TMOD: TMOD Register - TMOD (S: 89h)
Bit
K hiu ngha
th
Bit iu khin cng Timer 1
7 GATE1 Xa cho php timer 1 mi khi bit TR1 lp
Lp cho php timer 1 ch khi chn INT1# mc 1 v bit TR1 c lp
Bit la chn Counter/Timer 1
6 C/T1# Xa: Timer 1 hot ng: B nh thi, m tng theo xung nhp h thng
Lp: Counter hot ng: B m, m tng theo sn xung ca chn T1.
5 M11 Cc bit chn ch cho Timer 1
M11 M01 Ch hot ng
0 0 Mode 0 8-bit Timer/Counter (TH1) vi 5-bit(TL1)
0 1 Mode 1 16-bit Timer/Counter
4 M01
1 0 Mode 2 8-bit Timer/Counter (TL1) t np li gi tr t TH1 mi
khi Timer/Counter trn
Khi Timer 0 Mode 3, Timer 1 c th c bt hoc tt bng cch chuyn n ra khi hoc vo
Mode 3, hoc c th vn dng to tc Baud (c l b-u-d) cho cng truyn thng ni tip,
hoc trong thc t, trong mt s ng dng khng dng ngt.
Bit
K hiu ngha
th
C trn Timer 2
TF2 khng c lp nu RCLK=1 hoc TCLK=1
7 TF2
Phi xa bng phn mm
Lp bng phn cng khi Timer 2 trn
C ngt ngoi Timer 2
Lp khi c cnh xung ti chn T2EX, nu EXEN2=1
6 EXF2
Nu ngt Timer 2 hot ng, mc 1 ti bit ny, chng trnh s gi ngt
Phi xa bng phn mm
Bit clock nhn
Xa s dng c trn Timer 1 lm xung clock nhn cho truyn thng ni tip
5 RCLK trong Mode 1 hoc 3
Lp s dng c trn Timer 2 lm xung clock nhn cho truyn thng ni tip
trong Mode 1 hoc 3
Bit clock truyn
Xa s dng c trn Timer 1 lm xung clock pht cho truyn thng ni tip
4 TCLK trong Mode 1 hoc 3
Lp s dng c trn Timer 2 lm xung clock pht cho truyn thng ni tip
trong Mode 1 hoc 3
Bit cho php ngt ngoi Timer 2
Xa b qua s kin ti chn T2EX cho hot ng Timer 2
3 EXEN2
Lp s xy ra ngt ngoi ti chn T2EX khi c sn xung, nu Timer 2 khng s
dngcho truyn thng ni tip.
Bit iu khin chy Timer 2
2 TR2 Xa : cm Timer 2 chy
Lp: chy Timer 2
Bit la chn Timer/Counter 2
1 C/T2# Xa: Timer (ngun xung h thng: Fosc)
Lp: Counter (u vo t chn T2)
Bit capture/Reload ca Timer 2
Nu RCLK=1 hoc TCLK=1, CP/RL2# b b qua v Timer s chy ch t
np li mi khi trn
0 CP/RL2#
Xa: t np li khi Timer 2 trn hoc khi c sn xung chn T2EX nu
EXEN2=1.
Lp bt gi (capture) khi c cnh xung chn T2EX nu EXEN2=1
Gi tr sau khi reset = 0000 0000b
- - - - - - T2OE DCEN
Bit
K hiu ngha
th
7 - D tr
6 - D tr
5 - D tr
4 - D tr
3 - D tr
2 - D tr
Bit cho php xut Timer 2
1 T2OE Xa lp trnh P1.0/T2 nh u vo clock hoc cng I/O
Lp lp trnh P1.0/T2 nh u ra clock
Bit cho php m li
0 DCEN Xa: cm Timer 2 m tng/gim
Lp: cho php Timer 2 m tng/gim
Gi tr sau khi reset = xxxx xx00b
Bit
K hiu ngha
th
FE: Framing Error bit: bit bo truyn thng li. (SMOD0=1)
Xa reset trng thi li, khng c xa bi mt bit STOP ng
FE
7 Lp bi phn cng khi pht hin li bit STOP khng ng
SMOD0 phi c lp cho php truy cp n bit FE
SM0 Ch truyn thng ni tip
SM0 SM1 Mode ngha Tc Baud
0 0 0 Thanh ghi dch FCPU PERIPH/6
6 SM1 0 1 1 8-bit UART C th thay i
1 0 2 9-bit UART FCPU PERIPH/32 hoc /16
1 1 3 39-bit UART C th thay i
Bit Mode 2 cng ni tip / Bit cho php truyn thng a vi x l
Xa cm chc nng truyn thng a vi x l
5 SM2
Lp cho php ch truyn thng a vi x l trong Mode 2 v 3, v thm ch
Mode 1. Bit ny phi xa nu dng Mode 0
Bit cho php nhn ( Reception Enable bit)
4 REN Xa: cm nhn ni tip
Lp: cho php nhn ni tip
Pht bit 8 / bit th 9 truyn thng trong Mode 2 v 3
3 TB8
Xa: truyn bit logic 0 trong bit th 9
Bit
K hiu ngha
th
mov ah, 5
mov dl, 'a'
int 21h
INT 21h / AH=6 - direct console input or output.
parameters for output: DL = 0..254 (ascii code)
parameters for input: DL = 255
for output returns: AL = DL
for input returns: ZF set if no character available and AL = 00h, ZF clear if
character available.
AL = character read; buffer is cleared.
example:
mov ah, 6
mov dl, 'a'
int 21h ; output character.
mov ah, 6
mov dl, 255
int 21h ; get character from keyboard buffer (if any) or set ZF=1.
example:
mov ah, 7
int 21h
INT 21h / AH=9 - output of a string at DS:DX. String must be terminated
by '$'.
example:
org 100h
mov dx, offset msg
mov ah, 9
int 21h
ret
msg db "hello world $"
INT 21h / AH=0Ah - input of a string to DS:DX.
fist byte is buffer size, second byte is number of chars actually read. this function
does not add '$' in the end of string. to print using INT 21h / AH=9 you must set
dollar character at the end of it and start printing from address DS:DX + 2.
example:
org 100h
mov dx, offset buffer
mov ah, 0ah
int 21h
jmp print
buffer db 10,?, 10 dup(' ')
print:
xor bx, bx
mov bl, buffer[1]
mov buffer[bx+2], '$'
mov dx, offset buffer + 2
mov ah, 9
int 21h
ret
the function does not allow to enter more characters than the specified buffer size.
see also int21.asm in c:\emu8086\examples
Danh mc bng
Bng 1-1. Gi tr tng ng gia cc h s ........................................................................ 19
Bng 2-1. Cc thanh ghi...................................................................................................... 28
Bng 2-2.Phi hp MOD v R/M to ra cc ch a ch........................................... 33
Bng 2-3. Cc ch a ch............................................................................................... 36
Bng 2-4. Bn b nh, a ch ngt ca 8086 ................................................................ 60
Bng 3-1. Chc nng cc chn ca Port 3 ........................................................................ 103
Bng 3-2. Cc thanh ghi chc nng c bit..................................................................... 105
Bng 3-3. a ch RAM ni 8051 ..................................................................................... 106
Bng 3-4. k hiu s dng m t lnh............................................................................... 117
Bng 3-5. Cc lnh vn chuyn d liu ............................................................................ 120
Bng 3-6. Cc lnh thao tc bit v c cng.................................................................... 120
Bng 3-7. Lnh c cng .................................................................................................. 121
Bng 3-8. c cht trong ca cng ra.............................................................................. 121
Bng 3-9. Nhy v iu kin............................................................................................. 122
Bng 3-10. Cc ton t...................................................................................................... 124
Bng 3-11. Ch hot ng ca Timer/Counter ............................................................ 127
Bng 3-12. Mt s gi tr thng dng trong truyn thng ni tip ................................. 139