Giáo trình Kỹ thuật vi điều khiển - Chương 1: Tổng quan về vi điều khiển
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ1ꢀ:ꢀTængꢀquanꢀvÒꢀviꢀ®iÒuꢀkhiÓnꢀ
ꢀ
ꢀ
ꢀ
ꢀ
ꢀ
ꢀ
Ch−¬ngꢀIꢀ
TængꢀquanꢀvÒꢀViꢀ®iÒuꢀkhiÓnꢀ
ꢀ
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ–Béꢀm«nꢀT§Hꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ– Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ1ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ1ꢀ:ꢀTængꢀquanꢀvÒꢀviꢀ®iÒuꢀkhiÓnꢀ
ꢀ
ꢀ
Ch−¬ngꢀIꢀ
TængꢀquanꢀvÒꢀViꢀ®iÒuꢀkhiÓnꢀ
ꢀ
1.1ꢀGiíiꢀthiÖuꢀvÒꢀc¸cꢀhäꢀviꢀxöꢀlÝꢀvꢁꢀc¸cꢀhäꢀviꢀ®iÒuꢀkhiÓnꢀth«ngꢀdôngꢀ
1.1.1ꢀLÞchꢀsöꢀph¸tꢀtriÓnꢀcñaꢀbéꢀviꢀxöꢀlÝꢀvꢁꢀbéꢀviꢀ®iÒuꢀkhiÓnꢀ
Sùꢀraꢀ®êiꢀvꢁꢀph¸tꢀtriÓnꢀnhanhꢀchãngꢀcñaꢀküꢀthuËtꢀviꢀ®iÖnꢀtöꢀmꢁꢀ®Æcꢀtr−ngꢀlꢁꢀküꢀ
thuËtꢀviꢀxöꢀlÝꢀ®ꢂꢀt¹oꢀraꢀmétꢀb−ícꢀngoÆtꢀquanꢀträngꢀtrongꢀsùꢀph¸tꢀtriÓnꢀcñaꢀkhoaꢀhäcꢀ
tÝnhꢀto¸n,ꢀ®iÒuꢀkhiÓnꢀvꢁꢀxöꢀlÝꢀth«ngꢀtin.ꢀKüꢀthuËtꢀviꢀxöꢀlÝꢀ®ãngꢀmétꢀvaiꢀtrßꢀrÊtꢀquanꢀ
trängꢀtrongꢀtÊtꢀc¶ꢀc¸cꢀlÜnhꢀvùcꢀcñaꢀcuécꢀsèngꢀvꢁꢀkhoaꢀhäcꢀküꢀthuËt,ꢀ®ÆcꢀbiÖtꢀlꢁꢀlÜnhꢀ
vùcꢀTinꢀhäcꢀvꢁꢀTùꢀ®éngꢀhãa.ꢀ
N¨mꢀ1971,ꢀhꢂngꢀIntelꢀ®ꢂꢀchoꢀraꢀ®êiꢀbéꢀviꢀxöꢀlÝꢀ(microprocessor)ꢀ®Çuꢀtiªnꢀtrªnꢀ
thÕꢀgiíiꢀtªnꢀgäiꢀlꢁꢀIntelꢃ4004/4bitꢀ,ꢀnh»mꢀ®¸pꢀøngꢀnhuꢀcÇuꢀcÊpꢀthiÕtꢀcñaꢀmétꢀc«ngꢀtyꢀ
kinhꢀdoanhꢀlꢁꢀhꢂngꢀtruyÒnꢀth«ngꢀBUSICOM.ꢀIntelꢃ4004ꢀlꢁꢀkÕtꢀqu¶ꢀcñaꢀmétꢀýꢀt−ëngꢀ
quanꢀträngꢀtrongꢀküꢀthuËtꢀviꢀxöꢀlÝꢀsè.ꢀ§ãꢀlꢁꢀmétꢀkÕtꢀcÊuꢀlogicꢀmꢁꢀcãꢀthÓꢀthayꢀ®æiꢀ®−îcꢀ
chøcꢀn¨ngꢀcñaꢀnãꢀb»ngꢀch−¬ngꢀtr×nhꢀngoꢁiꢀchøꢀkh«ngꢀph¸tꢀtriÓnꢀtheoꢀh−íngꢀt¹oꢀraꢀ
métꢀcÊuꢀtrócꢀcøngꢀchØꢀthùcꢀhiÖnꢀmétꢀsèꢀchøcꢀn¨ngꢀnhÊtꢀ®Þnhꢀnh−ꢀtr−ícꢀ®©y.ꢀꢀ
Sauꢀ®ã,ꢀc¸cꢀbéꢀviꢀxöꢀlÝꢀmíiꢀliªnꢀtôcꢀ®−îcꢀ®−aꢀraꢀthÞꢀtr−êngꢀvꢁꢀngꢁyꢀcꢁngꢀ®−îcꢀ
ph¸tꢀtriÓn,ꢀhoꢁnꢀthiÖnꢀh¬nꢀtrongꢀc¸cꢀthÕꢀhÖꢀsauꢀ:ꢀ
Vꢁoꢀ n¨mꢀ 1972,ꢀ hꢂngꢀ Intelꢀ ®−aꢀ raꢀ béꢀ viꢀ xöꢀ lÝꢀ 8ꢃbitꢀ ®Çuꢀ tiªnꢀ víiꢀ tªnꢀ Intelꢃ
8008/8bit.ꢀꢀ
Tõꢀ1974ꢀ®Õnꢀ1975ꢀ,ꢀIntelꢀchÕꢀt¹oꢀꢀc¸cꢀbéꢀviꢀxöꢀlÝꢀ8ꢃbitꢀ8080ꢀvꢁꢀ8085A.ꢀ
Còngꢀvꢁoꢀkho¶ngꢀthêiꢀgianꢀnꢁy,ꢀꢀmétꢀlo¹tꢀc¸cꢀhꢂngꢀkh¸cꢀtrªnꢀthÕꢀgiíiꢀcòngꢀ®ꢂꢀꢀ
choꢀraꢀ®êiꢀꢀc¸cꢀbéꢀviꢀxöꢀlÝꢀt−¬ngꢀtùꢀnh−ꢀ:ꢀꢀ6800ꢀcñaꢀMotorolaꢀvíiꢀꢀ5000ꢀtranzitor,ꢀ
Signeticsꢀ6520,ꢀ1801ꢀcñaꢀRCA,ꢀkÕꢀ®Õnꢀlꢁꢀ6502ꢀcñaꢀhꢂngꢀMOSꢀTechnologyꢀvꢁꢀZ80ꢀ
cñaꢀhꢂngꢀZilog.ꢀ
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ– Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ2ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ1ꢀ:ꢀTængꢀquanꢀvÒꢀviꢀ®iÒuꢀkhiÓnꢀ
ꢀ
ꢀ
Vꢁoꢀn¨mꢀ1976ꢀIntelꢀgiíiꢀthiÖuꢀbéꢀviꢀ®iÒuꢀkhiÓnꢀ(microcontroller)ꢀ8748,ꢀmétꢀchipꢀ
t−¬ngꢀtùꢀnh−ꢀc¸cꢀbéꢀviꢀxöꢀlÝꢀvꢁꢀlꢁꢀchipꢀ®Çuꢀtiªnꢀtrongꢀhäꢀviꢀ®iÒuꢀkhiÓnꢀMCSꢃ48.ꢀ8748ꢀ
lꢁꢀmétꢀviꢀm¹chꢀchøaꢀtrªnꢀ17000ꢀtransistor,ꢀbaoꢀgåmꢀmétꢀCPU,ꢀ1KꢀbyteꢀEPROM,ꢀ64ꢀ
byteꢀRAM,ꢀ27ꢀch©nꢀxuÊtꢀnhËpꢀvꢁꢀmétꢀbéꢀ®Þnhꢀthêiꢀ8ꢃbit.ꢀICꢀnꢁyꢀvꢁꢀc¸cꢀICꢀkh¸cꢀtiÕpꢀ
theoꢀcñaꢀhäꢀMCSꢃ48ꢀ®ꢂꢀnhanhꢀchãngꢀtrëꢀthꢁnhꢀchuÈnꢀc«ngꢀnghiÖpꢀtrongꢀc¸cꢀøngꢀ
dôngꢀh−íngꢀ®iÒuꢀkhiÓnꢀ(controlꢃorientedꢀapplication).ꢀ
N¨mꢀ1978ꢀxu©tꢀhiÖnꢀIntelꢀ8086ꢀlꢁꢀlo¹iꢀbéꢀxiꢀxöꢀlýꢀ16ꢀbitꢀvíiꢀ29.000ꢀtranzitor,ꢀ
Motorolaꢀ68000ꢀtÝchꢀhîpꢀ70.000ꢀtranzitor,ꢀAPXꢀ432ꢀchøaꢀ120.000ꢀtranzitor.ꢀBéꢀviꢀxöꢀ
lýꢀ cñaꢀ Hewletꢀ Pakardꢀ cãꢀ kho¶ngꢀ 450.000ꢀ tranzitor.ꢀ Tõꢀ n¨mꢀ 1974ꢀ ®Õnꢀ 1984ꢀ sèꢀ
tranzitorꢀtÝchꢀhîpꢀtrongꢀmétꢀchipꢀt¨ngꢀkho¶ngꢀ100ꢀlÇn.ꢀ
N¨mꢀ1983,ꢀIntelꢀ®−aꢀraꢀbéꢀviꢀxöꢀlýꢀ80286ꢀdungꢀtrongꢀc¸cꢀm¸yꢀviꢀtinhꢀhäꢀATꢀ
(AdvancedꢀTechnology).ꢀ80286ꢀsöꢀdôngꢀI/Oꢀ16ꢀbit,ꢀ24ꢀ®−êngꢀ®ÞaꢀchØꢀvꢁꢀkh«ngꢀgianꢀ
nhíꢀ®ÞaꢀchØꢀthùcꢀ16MB.ꢀN¨mꢀ1987,ꢀIntelꢀ®−aꢀraꢀbéꢀviꢀxöꢀlýꢀ80386ꢀ32ꢃbit.ꢀN¨mꢀ1989ꢀ
xuÊtꢀhiÖnꢀxuÊtꢀhiÖnꢀbéꢀviꢀxöꢀlýꢀIntelꢀ80486ꢀlꢁꢀc¶IꢀtiÕnꢀcñaꢀIntelꢀ80386ꢀvíiꢀbéꢀnhíꢀÈnꢀ
vꢁꢀm¹chꢀtÝnhꢀphÐpꢀto¸nꢀ®¹iꢀsèꢀdÊuꢀphÈyꢀ®éng.ꢀ
N¨mꢀ 1992,ꢀ xuÊtꢀ hiÖnꢀ Intelꢀ 80586ꢀ cßnꢀ gäiꢀ lꢁꢀ Pentiumꢀ 64ꢀ bitꢀ chøaꢀ 4ꢀ triÖuꢀ
tranzitor.ꢀꢀ
So át r a n zit o r t ích h ôïp
ꢀ
ꢀ
ꢀ
ꢀ
ꢀ
ꢀ
ꢀ
ꢀ
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ– Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ3ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ1ꢀ:ꢀTængꢀquanꢀvÒꢀviꢀ®iÒuꢀkhiÓnꢀ
ꢀ
ꢀ
H×nhꢀ1.1ꢀSèꢀtranzitorꢀtÝchꢀhîpꢀtrongꢀꢀmétꢀchipꢀcñaꢀbéꢀviꢀxöꢀlýꢀIntelꢀ8086ꢀ
§éꢀphøcꢀt¹p,ꢀsùꢀgänꢀnhÑꢀvÒꢀkÝchꢀth−ícꢀvꢁꢀkh¶ꢀn¨ngꢀcñaꢀc¸cꢀbéꢀviꢀ®iÒuꢀkhiÓnꢀ
®−îcꢀt¨ngꢀthªmꢀmétꢀbËcꢀquanꢀträngꢀvꢁoꢀn¨mꢀ1980ꢀkhiꢀIntelꢀc«ngꢀbèꢀchipꢀ8051,ꢀbéꢀviꢀ
®iÒuꢀkhiÓnꢀ®Çuꢀtiªnꢀcñaꢀhäꢀviꢀ®iÒuꢀkhiÓnꢀMCSꢃ51.ꢀSoꢀvíiꢀ8048,ꢀchipꢀ8051ꢀchøaꢀtrªnꢀ
60.000ꢀtransistorꢀbaoꢀgåmꢀ4KꢀbyteꢀROM,ꢀ128ꢀbyteꢀRAM,ꢀ32ꢀ®−êngꢀxuÊtꢀnhËp,ꢀ1ꢀ
portꢀnèiꢀtiÕpꢀvꢁꢀ2ꢀbéꢀ®Þnhꢀthêiꢀ16ꢃbitꢀ–ꢀmétꢀsèꢀl−îngꢀm¹chꢀ®¸ngꢀchóꢀýꢀtrongꢀmétꢀICꢀ
®¬n.ꢀ
Tõꢀc¸cꢀbéꢀꢀviꢀxöꢀlýꢀbanꢀ®ÇuꢀchØꢀlꢁꢀc¸cꢀbéꢀxöꢀlýꢀtrungꢀt©mꢀtrongꢀmétꢀhÖꢀthèng,ꢀ
kh«ngꢀthÓꢀho¹tꢀ®éngꢀnÕuꢀthiÕuꢀc¸cꢀbéꢀphËnꢀnh−ꢀRAM,ꢀROM,ꢀboꢀm¹chꢀchñ...ꢀc¸cꢀ
hꢂngꢀ®ꢂꢀph¸tꢀtriÓnꢀc¸cꢀbéꢀviꢀxöꢀlýꢀnꢁyꢀlªnꢀthꢁnhꢀc¸cꢀbéꢀviꢀ®iÒuꢀkhiÓnꢀ®Óꢀphôcꢀvôꢀ
c¸cꢀmôcꢀ®ÝchꢀriªngꢀbiÖt,ꢀkh¸cꢀnhauꢀtrongꢀc«ngꢀnghiÖp.ꢀMétꢀbéꢀviꢀ®iÒuꢀkhiÓnꢀlꢁꢀ
métꢀhÖꢀviꢀxöꢀlÝꢀthËtꢀsùꢀ®−îcꢀtæꢀchøcꢀtrongꢀmétꢀchipꢀ(trongꢀmétꢀváꢀIC)ꢀbaoꢀgåmꢀ
métꢀbéꢀviꢀxöꢀlÝꢀ(microprocessor),ꢀbéꢀnhíꢀch−¬ngꢀtr×nhꢀ(ROM),ꢀbéꢀnhíꢀd÷ꢀliÖuꢀ
(RAM),ꢀtuyꢀkh«ngꢀb»ngꢀdungꢀl−îngꢀRAMꢀëꢀc¸cꢀm¸yꢀviꢀtÝnhꢀnh−ngꢀ®©yꢀkh«ngꢀ
ph¶iꢀlꢁꢀmétꢀh¹nꢀchÕꢀv×ꢀc¸cꢀbéꢀviꢀ®iÒuꢀkhiÓnꢀ®−îcꢀꢀthiÕtꢀkÕꢀchoꢀmétꢀmôcꢀ®Ýchꢀhoꢁnꢀ
toꢁnꢀkh¸c,ꢀngoꢁiꢀraꢀtrªnꢀchipꢀcßnꢀcãꢀbéꢀxöꢀlýꢀsèꢀhäcꢃlogicꢀ(ALU)ꢀcïngꢀvíiꢀc¸cꢀ
thanhꢀghiꢀchøcꢀn¨ng,ꢀc¸cꢀcængꢀvꢁo/ra,ꢀc¬ꢀchÕꢀ®iÒuꢀkhiÓnꢀng¾t,ꢀtruyÒnꢀtinꢀnèiꢀtiÕp,ꢀ
c¸cꢀbéꢀ®Þnhꢀthêi...ꢀHiÖnꢀnay,ꢀc¸cꢀbéꢀviꢀ®iÒuꢀkhiÓnꢀ®−îcꢀsöꢀdôngꢀrÊtꢀréngꢀrꢂiꢀvꢁꢀ
ngꢁyꢀ cꢁngꢀ ®−îcꢀ chuÈnꢀ hãaꢀ ®Óꢀ cãꢀ thÓꢀ söꢀ dôngꢀ réngꢀ rꢂiꢀ trongꢀ c¸cꢀ ngꢁnhꢀ c«ngꢀ
nghiÖp,ꢀcãꢀmÆtꢀtrongꢀnhiÒuꢀm¸yꢀmãc,ꢀtrongꢀc¸cꢀhꢁngꢀtiªuꢀdïng.ꢀꢀ
1.1.2ꢀ¦uꢀvꢁꢀkhuyÕtꢀ®iÓmꢀcñaꢀc¸cꢀbéꢀviꢀ®iÒuꢀkhiÓnꢀ
ꢀꢀꢀꢀꢀꢀꢀꢀC¸cꢀc«ngꢀviÖcꢀ®−îcꢀthùcꢀhiÖnꢀbëiꢀc¸cꢀbéꢀviꢀ®iÒuꢀkhiÓnꢀth×ꢀkh«ngꢀmíi.ꢀ§iÒuꢀ
míiꢀlꢁꢀc¸cꢀthiÕtꢀkÕꢀhiÖnꢀthùcꢀvíiꢀÝtꢀthꢁnhꢀphÇnꢀh¬nꢀsoꢀvíiꢀc¸cꢀthiÕtꢀkÕꢀtr−ícꢀ®ã.ꢀ
C¸cꢀthiÕtꢀkÕꢀtr−ícꢀ®ãꢀ®ßiꢀháiꢀph¶iꢀvꢁiꢀchôcꢀhoÆcꢀvꢁiꢀtr¨mꢀICꢀ®ÓꢀhiÖnꢀthùcꢀnayꢀchØꢀ
cÇnꢀmétꢀÝtꢀthꢁnhꢀphÇnꢀtrongꢀ®ãꢀbaoꢀgåmꢀbéꢀviꢀ®iÒuꢀkhiÓn.ꢀSèꢀthꢁnhꢀphÇnꢀ®−îcꢀ
gi¶mꢀbít,ꢀhiÖuꢀqu¶ꢀtrùcꢀtiÕpꢀcñaꢀꢀtÝnhꢀkh¶ꢀlËpꢀtr×nhꢀcñaꢀc¸cꢀbéꢀviꢀ®iÒuꢀkhiÓnꢀvꢁꢀ®éꢀ
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ– Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ4ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ1ꢀ:ꢀTængꢀquanꢀvÒꢀviꢀ®iÒuꢀkhiÓnꢀ
ꢀ
ꢀ
tÝchꢀhîpꢀcaoꢀtrongꢀc«ngꢀnghÖꢀchÕꢀt¹oꢀviꢀm¹ch,ꢀth−êngꢀchuyÓnꢀthꢁnhꢀthêiꢀgianꢀph¸tꢀ
triÓnꢀng¾nꢀh¬n,ꢀgi¸ꢀthꢁnhꢀkhiꢀs¶nꢀxuÊtꢀthÊpꢀh¬n,ꢀc«ngꢀsuÊtꢀtiªuꢀthôꢀthÊpꢀh¬nꢀvꢁꢀ®éꢀ
tinꢀcËyꢀcaoꢀh¬n.ꢀ
ꢀ
VÊnꢀ®Òꢀëꢀ®©yꢀlꢁꢀtècꢀ®é.ꢀC¸cꢀgi¶iꢀph¸pꢀdùaꢀtrªnꢀbéꢀviꢀ®iÒuꢀkhiÓnꢀkh«ngꢀbaoꢀgiêꢀ
nhanhꢀb»ngꢀgi¶iꢀph¸pꢀdùaꢀtrªnꢀc¸cꢀthꢁnhꢀphÇnꢀrêiꢀr¹c.ꢀNh÷ngꢀt×nhꢀhuèngꢀ®ßiꢀháiꢀph¶iꢀ
®¸pꢀøngꢀthËtꢀnhanhꢀ(cìꢀnsec)ꢀ®èiꢀvíiꢀc¸cꢀsùꢀkiÖnꢀ(th−êngꢀchiÕmꢀthiÓuꢀsèꢀtrongꢀc¸cꢀ
øngꢀdông)ꢀsÏꢀ®−îcꢀqu¶nꢀlýꢀtåiꢀkhiꢀdùaꢀvꢁoꢀc¸cꢀbéꢀviꢀ®iÒuꢀkhiÓn.ꢀ
Tuyꢀ nhiªnꢀ trongꢀ vꢁiꢀ øngꢀ dông,ꢀ ®Æcꢀ biÖtꢀ lꢁꢀ c¸cꢀ øngꢀ dôngꢀ liªnꢀ quanꢀ ®Õnꢀ conꢀ
ng−êi,ꢀc¸cꢀkho¶ngꢀthêiꢀgianꢀtrÔꢀtÝnhꢀb»ngꢀnsec,ꢀusecꢀhoÆcꢀthËmꢀchÝꢀmsecꢀlꢁꢀkh«ngꢀ
quanꢀträng.ꢀViÖcꢀgi¶mꢀbítꢀc¸cꢀthꢁnhꢀphÇnꢀlꢁꢀmétꢀ®iÒuꢀlîiꢀnh−ꢀ®ꢂꢀ®ÒꢀcËp,ꢀc¸cꢀthaoꢀt¸cꢀ
trongꢀch−¬ngꢀtr×nhꢀ®iÒuꢀkhiÓnꢀlꢁmꢀchoꢀthiÕtꢀkÕꢀcãꢀthÓꢀthayꢀ®æiꢀb»ngꢀc¸chꢀthayꢀ®æiꢀ
phÇnꢀmÒm.ꢀ§iÒuꢀnꢁyꢀcãꢀ¶nhꢀh−ëngꢀtèiꢀthiÓuꢀ®Õnꢀchuꢀkúꢀs¶nꢀxuÊt.ꢀDoꢀ®ãꢀc¸cꢀbéꢀviꢀ
®iÒuꢀkhiÓnꢀcãꢀthÓꢀ®−îcꢀøngꢀdôngꢀréngꢀrꢂiꢀtrongꢀc¸cꢀøngꢀdôngꢀphôcꢀvôꢀconꢀng−êi.ꢀ
§ÓꢀcãꢀthÓꢀhiÓuꢀrâꢀh¬nꢀvÒꢀc¸cꢀbéꢀviꢀ®iÒuꢀkhiÓn,ꢀchóngꢀtaꢀsÏꢀt×mꢀhiÓuꢀvÒꢀmétꢀsèꢀ
c¸cꢀhäꢀviꢀ®iÒuꢀkhiÓnꢀcñaꢀmétꢀsèꢀhꢂngꢀ®iÖnꢀtöꢀ®iÓnꢀh×nhꢀ®angꢀ®−îcꢀsöꢀdôngꢀréngꢀ
rꢂiꢀtrongꢀkhoaꢀhäcꢀküꢀthuËtꢀvꢁꢀ®êiꢀsèng.ꢀꢀ
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ– Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ5ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ1ꢀ:ꢀTængꢀquanꢀvÒꢀviꢀ®iÒuꢀkhiÓnꢀ
ꢀ
ꢀ
1.1.3ꢀGiíiꢀthiÖuꢀvÒꢀhäꢀviꢀ®iÒuꢀkhiÓnꢀMCSꢂ51ꢀ
1.1.3.1ꢀTãmꢀt¾tꢀphÇnꢀcøngꢀ
Häꢀviꢀ®iÒuꢀkhiÓnꢀMCSꢃ51ꢀ®−îcꢀhꢂngꢀIntelꢀchoꢀraꢀ®êiꢀvꢁoꢀn¨mꢀ1980ꢀvíiꢀbéꢀviꢀ
®iÒuꢀkhiÓnꢀ®Çuꢀtiªnꢀcñaꢀnãꢀlꢁꢀchipꢀ8051.ꢀꢀ
CÊuꢀtrócꢀc¬ꢀb¶nꢀcñaꢀchipꢀviꢀ®iÒuꢀkhiÓnꢀ8051ꢀ®−îcꢀbiÓuꢀdiÔnꢀnh−ꢀꢀh×nhꢀ1.2.ꢀ
ꢀ
ꢀ
ꢀ
ꢀ
ꢀ
ꢀ
ꢀ
ꢀ
H×nhꢀ1.2ꢁꢀS¬ꢀ®åꢀkhèiꢀcñaꢀchipꢀ8051ꢀ
ꢀ
ꢀ
31
ꢀ
ꢀ
39ꢀ
ꢀ
EA/VP
ꢀ
P0.0ꢀ
ꢀ
38ꢀ
37ꢀ
36ꢀ
35ꢀ
34ꢀ
3332ꢀ
X1
ꢀ
ꢀ
P0.1ꢀ
P0.2ꢀ
P0.3ꢀ
P0.4ꢀ
P0.5ꢀ
PP00..67ꢀ
19
H×nhꢀ1.3ꢀchoꢀtaꢀs¬ꢀ®åꢀch©nꢀcñaꢀchipꢀ8051.ꢀNh−ꢀtaꢀ
thÊy,ꢀ 32ꢀ trongꢀ sèꢀ 40ꢀ ch©nꢀ cñaꢀ 8051ꢀ cãꢀ t¸cꢀ dôngꢀ
xuÊt/nhËp,ꢀh×nhꢀthꢁnhꢀ4ꢀportꢀ8ꢃbit.ꢀVíiꢀc¸cꢀthiÕtꢀkÕꢀ
yªuꢀ cÇuꢀ métꢀ møcꢀ tèiꢀ thiÓuꢀ béꢀ nhíꢀ ngoꢁiꢀ hoÆcꢀ c¸cꢀ
thꢁnhꢀphÇnꢀbªnꢀngoꢁiꢀkh¸c,ꢀtaꢀcãꢀthÓꢀsöꢀdôngꢀc¸cꢀportꢀ
nꢁyꢀlꢁmꢀnhiÖmꢀvôꢀxuÊt/nhËp,ꢀ8ꢀ®−êngꢀchoꢀmçiꢀportꢀ
cãꢀthÓꢀ®−îcꢀxöꢀlÝꢀnh−ꢀlꢁꢀmétꢀ®¬nꢀvÞꢀgiaoꢀtiÕpꢀvíiꢀc¸cꢀ
thiÕtꢀ bÞꢀ songꢀ songꢀ nh−ꢀ m¸yꢀ in,ꢀ béꢀ biÕnꢀ ®æiꢀ
18
ꢀ
ꢀ
ꢀ
X2
9
RESET
ꢀ
21ꢀ
ꢀ
P2.0ꢀ
ꢀ
22ꢀ
23ꢀ
24ꢀ
25ꢀ
26ꢀ
2278ꢀ
ꢀ
IINNTT01ꢀ
ꢀ
P2.1ꢀ
P2.2ꢀ
P2.3ꢀ
P2.4ꢀ
P2.5ꢀ
PP22..67ꢀ
12ꢀ
13ꢀ
1145ꢀ
TT01ꢀ
1ꢀ
ꢀ
P1.0ꢀ
ꢀ
2ꢀ
3ꢀ
4ꢀ
5ꢀ
6ꢀ
P1.1ꢀ
P1.2ꢀ
P1.3ꢀ
P1.4ꢀ
P1.5ꢀ
PP11..67ꢀ
17ꢀ
ꢀ
RDꢀ
ꢀ
16ꢀ
29ꢀ
30ꢀ
1110ꢀ
WRꢀ
PSENꢀ
ALE/Pꢀ
RTXXDDꢀ
8
7ꢀ
8051ꢀ
H×nhꢀ1.3ꢀꢁꢀS¬ꢀ®åꢀch©nꢀcñaꢀ8051ꢀ
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ– Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ6ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ1ꢀ:ꢀTængꢀquanꢀvÒꢀviꢀ®iÒuꢀkhiÓnꢀ
ꢀ
ꢀ
D/A,.v.v..hoÆcꢀmçiꢀ®−êngꢀcãꢀthÓꢀho¹tꢀ®éngꢀ®écꢀlËpꢀgiaoꢀtiÕpꢀvíiꢀmétꢀthiÕtꢀbÞꢀ®¬nꢀbitꢀ
nh−ꢀchuyÓnꢀm¹ch,ꢀLED,ꢀtranzistor,ꢀcuénꢀd©y,ꢀ®éngꢀc¬...
ꢀ
1. Portꢀ0ꢀ
Portꢀ0ꢀcãꢀ2ꢀt¸cꢀdông.ꢀTrongꢀc¸cꢀthiÕtꢀkÕꢀøngꢀdôngꢀtèiꢀthiÓu,ꢀkh«ngꢀcãꢀgiaoꢀtiÕpꢀvíiꢀ
c¸cꢀthꢁnhꢀphÇnꢀbªnꢀngoꢁiꢀnh−ꢀRAMꢀngoꢁi,ꢀROMꢀngoꢁi...,ꢀportꢀ0ꢀ®−îcꢀsöꢀdôngꢀnh−ꢀ
métꢀcængꢀxuÊt/nhËpꢀth«ngꢀth−êng.ꢀKhiꢀthiÕtꢀkÕꢀhÖꢀthèngꢀmꢁꢀcÇnꢀsöꢀdôngꢀbéꢀnhíꢀngoꢁi,ꢀ
portꢀ0ꢀ®−îcꢀsöꢀdôngꢀlꢁꢀcængꢀ®ÞaꢀchØꢀvꢁꢀd÷ꢀliÖuꢀ®aꢀhîp.ꢀPortꢀ0ꢀnÕuꢀlꢁꢀcængꢀ®ÞaꢀchØꢀth×ꢀnãꢀ
sÏꢀlꢁꢀphÇnꢀbyteꢀthÊpꢀcñaꢀbusꢀ®ÞaꢀchØ.ꢀꢀ
2. Portꢀ1ꢀ
Portꢀ1ꢀchØꢀcãꢀmétꢀt¸cꢀdôngꢀlꢁꢀcængꢀxuÊtꢀnhËp.ꢀNãꢀchØꢀdïngꢀ®ÓꢀgiaoꢀtiÕpꢀvíiꢀthiÕtꢀ
bÞꢀngo¹iꢀviꢀkhiꢀcãꢀyªuꢀcÇu.ꢀKh«ngꢀcãꢀchøcꢀn¨ngꢀnꢁoꢀ®ÆcꢀbiÖtꢀchoꢀc¸cꢀch©nꢀcñaꢀportꢀ1.ꢀ
Tuyꢀnhiªnꢀvíiꢀc¸cꢀbéꢀviꢀ®iÒuꢀkhiÓnꢀkh¸cꢀnh−ꢀ8052ꢀth×ꢀc¸cꢀch©nꢀP1.0ꢀvꢁꢀP1.1ꢀcßnꢀ®−îcꢀ
söꢀdôngꢀlꢁmꢀc¸cꢀ®−êngꢀngâꢀvꢁoꢀchoꢀm¹chꢀ®Þnhꢀthêiꢀthøꢀba.ꢀꢀ
3. Portꢀ2ꢀ
Portꢀ2ꢀcãꢀhaiꢀt¸cꢀdông,ꢀhoÆcꢀlꢁmꢀnhiÖmꢀvôꢀlꢁꢀcængꢀxuÊtꢀnhËp,ꢀhoÆcꢀlꢁꢀphÇnꢀbyteꢀ
caoꢀcñaꢀbusꢀ®ÞaꢀchØꢀ16ꢃbitꢀchoꢀc¸cꢀthiÕtꢀkÕꢀhÖꢀthèngꢀcÇnꢀnhiÒuꢀh¬nꢀ256ꢀbyteꢀbéꢀnhíꢀ
ngoꢁi.ꢀ
4. Portꢀ3ꢀ
Portꢀ3ꢀcãꢀhaiꢀt¸cꢀdông.ꢀNãꢀlꢁmꢀnhiÖmꢀvôꢀnh−ꢀmétꢀcængꢀxuÊtꢀnhËpꢀth«ngꢀth−êng.ꢀ
Khiꢀkh«ngꢀho¹tꢀ®éngꢀxuÊtꢀnhËp,ꢀmçiꢀch©nꢀcñaꢀportꢀ3ꢀ®Òuꢀcãꢀmétꢀchøcꢀn¨ngꢀriªng.ꢀꢀ
5. Ch©nꢀchoꢀphÐpꢀbéꢀnhíꢀngoꢂiꢀ/PSENꢀꢁꢀProgramꢀStoreꢀENableꢀ
Ch©nꢀ nꢁyꢀ th−êngꢀ ®−îcꢀ nèiꢀ víiꢀ ch©nꢀ choꢀ phÐpꢀ xuÊtꢀ /OEꢀ (Outputꢀ Entable)ꢀ cñaꢀ
EPRROMꢀ(hoÆcꢀcñaꢀROM)ꢀ®ÓꢀchoꢀphÐpꢀ®äcꢀc¸cꢀbyteꢀlÖnh.ꢀTÝnꢀhiÖuꢀ/PSENꢀëꢀl«gicꢀ‘0‘ꢀ
trongꢀsuètꢀthêiꢀgianꢀt×mꢀn¹pꢀlÖnh.ꢀC¸cꢀmꢂꢀnhÞꢀph©nꢀcñaꢀch−¬ngꢀtr×nhꢀ(opcode)ꢀ®−îcꢀ
®äcꢀtõꢀEPROM,ꢀquaꢀbusꢀd÷ꢀliÖuꢀvꢁꢀ®−îcꢀchètꢀvꢁoꢀthanhꢀghiꢀlÖnhꢀIRꢀcñaꢀ8051ꢀ®Óꢀ®−îcꢀ
gi¶iꢀmꢂ.ꢀKhiꢀꢀthùcꢀthiꢀmétꢀch−¬ngꢀtr×nhꢀtrongꢀROMꢀnéi,ꢀ/PSENꢀ®−îcꢀduyꢀtr×ꢀëꢀl«gicꢀ
kh«ngꢀtÝchꢀcùcꢀ(logicꢀ1).ꢀ
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ– Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ7ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ1ꢀ:ꢀTængꢀquanꢀvÒꢀviꢀ®iÒuꢀkhiÓnꢀ
ꢀ
ꢀ
6. Ch©nꢀchoꢀphÐpꢀchètꢀ®ÞaꢀchØꢀALEꢀꢁꢀAddressꢀLatchꢀEnableꢀ
LꢁꢀtÝnꢀhiÖuꢀxuÊtꢀraꢀ®Óꢀgi¶iꢀ®aꢀhîpꢀbusꢀ®ÞaꢀchØꢀvꢁꢀbusꢀd÷ꢀliÖu.ꢀTrongꢀ1/2ꢀchuꢀkúꢀ®Çuꢀ
béꢀnhí,ꢀch©nꢀALEꢀxuÊtꢀtÝnꢀhiÖuꢀ®Óꢀchètꢀ®ÞaꢀchØꢀ(byteꢀthÊpꢀcñaꢀbusꢀ®ÞaꢀchØꢀꢀ16ꢀbit)ꢀvꢁoꢀ
thanhꢀghiꢀngoꢁiꢀkhiꢀtaꢀsöꢀdôngꢀportꢀ0ꢀlꢁmꢀbyteꢀthÊpꢀ®ÞaꢀchØ.ꢀTrongꢀ1/2ꢀchuꢀkúꢀbéꢀnhíꢀ
cßnꢀl¹iꢀportꢀ0ꢀsÏꢀxuÊt/nhËpꢀd÷ꢀliÖu.ꢀTÝnꢀhiÖuꢀALEꢀcãꢀtÇnꢀsèꢀb»ngꢀ1/6ꢀꢀtÇnꢀsèꢀcñaꢀm¹chꢀ
daoꢀ®éngꢀbªnꢀtrongꢀchipꢀviꢀ®iÒuꢀkhiÓnꢀvꢁꢀcãꢀthÓꢀlꢁmꢀxungꢀclockꢀchoꢀc¸cꢀphÇnꢀcßnꢀl¹iꢀ
cñaꢀhÖꢀthèngꢀ(tr−êngꢀhîpꢀngo¹iꢀlÖꢀkhiꢀthùcꢀhiÖnꢀlÖnhꢀMOVX,ꢀmétꢀxungꢀALEꢀ(vꢁꢀc¶ꢀ
/PSEN)ꢀsÏꢀbÞꢀbáꢀqua).ꢀCh©nꢀALEꢀcßnꢀ®−îcꢀdïngꢀ®ÓꢀnhËpꢀxungꢀngâꢀvꢁoꢀlËpꢀtr×nhꢀchoꢀ
EPROMꢀhoÆcꢀFlashꢀROMꢀtrªnꢀchipꢀ®èiꢀvíiꢀchipꢀcãꢀlo¹iꢀROMꢀnꢁy.ꢀ
7. Ch©nꢀtruyꢀxuÊtꢀngoꢂiꢀ/EAꢀꢁꢀExternalꢀAddressꢀ
Ch©nꢀnꢁyꢀ®−îcꢀnèiꢀlªnꢀ5Vꢀkhiꢀthùcꢀthiꢀꢀch−¬ngꢀtr×nhꢀtrongꢀROMꢀnéiꢀvꢁꢀ®−îcꢀnèiꢀ
®Êtꢀkhiꢀthùcꢀthiꢀch−¬ngꢀtr×nhꢀbéꢀnhíꢀngoꢁi.ꢀChóꢀýꢀ®èiꢀvíiꢀc¸cꢀchipꢀkh«ngꢀcãꢀROMꢀnéiꢀ
/EAꢀph¶iꢀ®−îcꢀnèiꢀ®Êt.ꢀC¸cꢀchipꢀhäꢀ8051ꢀcãꢀEPROMꢀcßnꢀnhËnꢀch©nꢀ/ALEꢀlꢁmꢀch©nꢀ
nhËnꢀ®iÖnꢀ¸pꢀcÊpꢀ®iÖnꢀ12VꢀchoꢀviÖcꢀlËpꢀtr×nhꢀ(n¹p)ꢀchoꢀEPROMꢀnéi.ꢀꢀ
ꢀ
8. Ch©nꢀRESETꢀ(RST)ꢀ
Dïngꢀ®ÓꢀthiÕtꢀlËpꢀl¹iꢀtr¹ngꢀth¸iꢀbanꢀ®ÇuꢀcñaꢀhÖꢀthèngꢀhayꢀgäiꢀt¾tꢀlꢁꢀresetꢀhÖꢀthèngꢀ
khiꢀ®−îcꢀtreoꢀëꢀmøcꢀlogicꢀ1ꢀÝtꢀnhÊtꢀ2ꢀchuꢀkúꢀm¸y.ꢀC¸cꢀthanhꢀghiꢀbªnꢀtrongꢀcñaꢀ8051ꢀ
®−îcꢀn¹pꢀc¸cꢀgi¸ꢀtrÞꢀthÝchꢀhîpꢀchoꢀviÖcꢀkhëiꢀ®éngꢀl¹iꢀhÖꢀthèng.ꢀ
9. C¸cꢀch©nꢀXTAL1ꢀvꢂꢀXTAL2ꢀꢀ
M¹chꢀdaoꢀ®éngꢀbªnꢀtrongꢀchipꢀ8051ꢀ®−îcꢀghÐpꢀvíiꢀth¹chꢀanhꢀbªnꢀngoꢁiꢀëꢀ2ꢀch©nꢀ
XTAL1ꢀvꢁꢀXTAL2.ꢀTh−êngꢀtÇnꢀsèꢀlꢁꢀ12MHzꢀvꢁꢀc¸cꢀtôꢀænꢀ®Þnhꢀcãꢀgi¸ꢀtrÞꢀtrongꢀkho¶ngꢀ
30pFꢀ ꢀ33ꢀpF.ꢀ
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ– Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ8ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ1ꢀ:ꢀTængꢀquanꢀvÒꢀviꢀ®iÒuꢀkhiÓnꢀ
ꢀ
ꢀ
1.1.3.2ꢀTæꢀchøcꢀbéꢀnhíꢀcñaꢀ8051ꢀ
C¸cꢀchipꢀviꢀ®iÒuꢀkhiÓnꢀdïngꢀlꢁmꢀthꢁnhꢀphÇnꢀtrungꢀt©mꢀtrongꢀc¸cꢀthiÕtꢀkÕꢀh−íngꢀ
®iÒuꢀkhiÓn.ꢀBéꢀnhíꢀth−êngꢀcãꢀdungꢀl−îngꢀbÐꢀh¬nꢀnhiÒuꢀsoꢀvíiꢀmétꢀhÖꢀviꢀxöꢀlý.ꢀNãꢀcßnꢀ
kh«ngꢀcãꢀæꢀ®ÜaꢀvꢁꢀhÖꢀ®iÒuꢀhꢁnh.ꢀCh−¬ngꢀtr×nhꢀ®iÒuꢀkhiÓnꢀph¶iꢀth−êngꢀtróꢀtrongꢀROM.ꢀ
DoꢀvËy,ꢀch−¬ngꢀtr×nhꢀvÉnꢀ®−îcꢀl−uꢀgi÷ꢀngayꢀc¶ꢀkhiꢀmÊtꢀ®iÖn.ꢀ
Doꢀlýꢀdoꢀtrªn,ꢀchipꢀ8051ꢀcãꢀkh«ngꢀgianꢀbéꢀnhíꢀriªngꢀchoꢀch−¬ngꢀtr×nhꢀvꢁꢀd÷ꢀ
liÖu.ꢀC¶ꢀbéꢀnhíꢀch−¬ngꢀtr×nhꢀvꢁꢀbéꢀnhíꢀd÷ꢀliÖuꢀ®Òuꢀn»mꢀtrongꢀchip.ꢀTuyꢀnhiªnꢀtaꢀcãꢀ
thÓꢀmëꢀréngꢀbéꢀnhíꢀch−¬ngꢀtr×nhꢀvꢁꢀbéꢀnhíꢀd÷ꢀliÖuꢀb»ngꢀc¸chꢀsöꢀdôngꢀc¸cꢀchipꢀnhíꢀ
bªnꢀngoꢁiꢀvíiꢀdungꢀl−îngꢀtèiꢀ®aꢀlꢁꢀ64Kꢀchoꢀbéꢀnhíꢀch−¬ngꢀtr×nhꢀvꢁꢀ64Kꢀchoꢀbéꢀnhíꢀ
d÷ꢀliÖu.ꢀ
Béꢀnhíꢀch−¬ngꢀtr×nhꢀ(ROM)ꢀ
Béꢀnhíꢀch−¬ngꢀtr×nhꢀl−uꢀgi÷ꢀch−¬ngꢀtr×nhꢀ®iÒuꢀkhiÓnꢀchipꢀ8051.ꢀꢀ
Sauꢀkhiꢀ RESET,ꢀCPUꢀ b¾tꢀ®Çuꢀ thùcꢀhiÖnꢀ ch−¬ngꢀ tr×nhꢀ tõꢀ ®Þaꢀ chØꢀ 0000H.ꢀ Khiꢀ
ch−¬ngꢀtr×nhꢀlínꢀqu¸ꢀkÝchꢀth−ícꢀbéꢀnhíꢀch−¬ngꢀtr×nhꢀbªnꢀtrongꢀchip,ꢀch−¬ngꢀtr×nhꢀ
nꢁyꢀph¶iꢀ®−îcꢀn¹pꢀvꢁoꢀbéꢀnhíꢀch−¬ngꢀtr×nhꢀngoꢁi.ꢀNÕuꢀch−¬ngꢀtr×nhꢀn»mꢀtrongꢀROMꢀ
néi,ꢀch©nꢀ/EAꢀcñaꢀ8051ꢀph¶iꢀ®−îcꢀtreoꢀlªnꢀ5V.ꢀNÕuꢀch−¬ngꢀtr×nhꢀëꢀROMꢀngoꢁi,ꢀch©nꢀ
/EAꢀph¶iꢀnèiꢀ®Êt.ꢀViÖcꢀtruyꢀxuÊtꢀch−¬ngꢀtr×nhꢀëꢀbéꢀnhíꢀngoꢁiꢀph¶iꢀkÕtꢀhîpꢀvíiꢀch©nꢀ
tÝnꢀhiÖuꢀtruyꢀxuÊtꢀbéꢀnhíꢀngoꢁiꢀ/PSEN.ꢀ
Béꢀnhíꢀd÷ꢀliÖuꢀ(RAM)ꢀ
8051ꢀcãꢀ128ꢀbyteꢀRAMꢀëꢀbªnꢀtrongꢀchip.ꢀChóngꢀ®−îcꢀchiaꢀlꢁmꢀnhiÒuꢀvïngꢀkh¸cꢀ
nhauꢀ:ꢀvïngꢀRAMꢀ®aꢀmôcꢀ®Ých,ꢀvïngꢀRAMꢀ®Þnhꢀ®ÞaꢀchØꢀbit,ꢀc¸cꢀdꢂyꢀthanhꢀghi,ꢀvꢁꢀ
c¸cꢀthanhꢀghiꢀchøcꢀn¨ngꢀ®ÆcꢀbiÖt.ꢀTaꢀhꢂyꢀxemꢀxÐtꢀtõngꢀvïngꢀRAMꢀcôꢀthÓ.ꢀ
ꢃꢀꢀVïngꢀRAMꢀ®aꢀmôcꢀ®Ýchꢀ:ꢀCãꢀ®ÞaꢀchØꢀtõꢀ30Hꢀ®Õnꢀ7FHꢀ(80ꢀbyte).ꢀVïngꢀRAMꢀ
nꢁyꢀcãꢀthÓꢀtruyꢀxuÊtꢀb»ngꢀc¸chꢀ®Þnhꢀ®ÞaꢀchØꢀtrùcꢀtiÕpꢀhoÆcꢀ®Þnhꢀ®ÞaꢀchØꢀgi¸nꢀtiÕp.ꢀNãꢀ
cãꢀthÓꢀdïngꢀ®Óꢀchøaꢀc¸cꢀbiÕnꢀtrongꢀch−¬ngꢀtr×nhꢀhayꢀdïngꢀ®Óꢀ®Þnhꢀ®ÞaꢀchØꢀchoꢀc¸cꢀ
cængꢀngo¹iꢀviꢀtuúꢀtheoꢀmôcꢀ®Ýchꢀcñaꢀng−êiꢀsöꢀdông.ꢀ
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ– Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ9ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ1ꢀ:ꢀTængꢀquanꢀvÒꢀviꢀ®iÒuꢀkhiÓnꢀ
ꢀ
ꢀ
- VïngꢀRAMꢀ®Þnhꢀ®ÞaꢀchØꢀtõngꢀbitꢀ:ꢀCãꢀ128ꢀbitꢀchøaꢀtrongꢀc¸cꢀbyteꢀëꢀ®ÞaꢀchØꢀtõꢀ
20Hꢀ®Õnꢀ2FHꢀvꢁꢀ32ꢀbyteꢀchøaꢀc¸cꢀthanhꢀghiꢀ(00Hꢀ®Õnꢀ1FH).ꢀꢀ
- C¸cꢀdꢃyꢀthanhꢀghiꢀtõꢀBankꢀ0ꢀtíiꢀBankꢀ3ꢀ:ꢀN»mꢀëꢀ32ꢀbyteꢀthÊpꢀnhÊtꢀcñaꢀvïngꢀ
nhíꢀd÷ꢀliÖu.ꢀKhiꢀRESETꢀhÖꢀthèngꢀdꢂyꢀthanhꢀghiꢀmÆcꢀ®ÞnhꢀlꢁꢀBankꢀ0.ꢀCãꢀthÓꢀchänꢀBankꢀ
bëiꢀthanhꢀghiꢀtõꢀtr¹ngꢀth¸iꢀch−¬ngꢀtr×nhꢀ(PSWꢃꢀProgramꢀStatusꢀWord)ꢀ.ꢀC¸cꢀlÖnhꢀsöꢀ
dôngꢀc¸cꢀthanhꢀghiꢀtõꢀR0ꢀ®ÕnꢀR7ꢀlꢁꢀc¸cꢀlÖnhꢀng¾nꢀvꢁꢀthùcꢀhiÖnꢀnhanhꢀh¬nꢀsoꢀvíiꢀc¸cꢀ
lÖnhꢀt−¬ngꢀ®−¬ngꢀsöꢀdôngꢀkiÓuꢀ®Þnhꢀ®ÞaꢀchØꢀtrùcꢀtiÕp.ꢀC¸cꢀgi¸ꢀtrÞꢀd÷ꢀliÖuꢀth−êngꢀ®−îcꢀ
söꢀdôngꢀnªnꢀchøaꢀëꢀmétꢀtrongꢀc¸cꢀthanhꢀghiꢀnꢁy.ꢀ
C¸cꢀthanhꢀghiꢀchøcꢀn¨ngꢀ®ÆcꢀbiÖtꢀꢀ(SFRꢁꢀSpecialꢀFunctionꢀRegister)ꢀ
Cãꢀ21ꢀthanhꢀghiꢀchøcꢀn¨ngꢀ®ÆcꢀbiÖtꢀchiÕmꢀphÇnꢀtrªnꢀcñaꢀRAMꢀnéiꢀcãꢀ®ÞaꢀchØꢀtõꢀ
80Hꢀ®ÕnꢀFFH.ꢀC¸cꢀ®ÞaꢀchØꢀ®−îcꢀ®ÞnhꢀnghÜaꢀtrongꢀvïngꢀRAMꢀnꢁyꢀgåmꢀc¸cꢀthanhꢀghiꢀ
®iÒuꢀkhiÓnꢀcñaꢀ8051,ꢀc¸cꢀthanhꢀghiꢀ®Öm,ꢀvꢁꢀc¸cꢀcængꢀvꢁoꢀra.ꢀ
- Thanhꢀghiꢀtõꢀtr¹ngꢀth¸iꢀPSWꢀꢂꢀProgramꢀStatusꢀWordꢀꢀ:ꢀCãꢀꢀ®ÞaꢀchØꢀlꢁꢀD0H.ꢀ
Chøaꢀc¸cꢀbitꢀtr¹ngꢀth¸iꢀcãꢀchøcꢀn¨ngꢀkh¸cꢀnhau.ꢀ
- ThanhꢀghiꢀchøaꢀACC:ꢀCãꢀ®ÞaꢀchØꢀlꢁꢀA0H.ꢀTh−êngꢀ®−îcꢀdïngꢀlꢁmꢀbiÕnꢀnhíꢀ
trungꢀgianꢀtrongꢀc¸cꢀphÐpꢀtÝnhꢀto¸nꢀsèꢀhäc.ꢀ
- ThanhꢀghiꢀB:ꢀCãꢀ®ÞaꢀchØꢀlꢁꢀF0H.ꢀTh−êngꢀ®−îcꢀdïngꢀchungꢀvíiꢀthanhꢀghiꢀACCꢀ
trongꢀc¸cꢀphÐpꢀto¸nꢀnh©nꢀchia.ꢀ
- C¸cꢀcængꢀgiaoꢀtiÕpꢀsongꢀsongꢀ:ꢀ§ãꢀlꢁꢀc¸cꢀcængꢀP0,ꢀP1,ꢀP2,ꢀP3.ꢀ§−îcꢀ®Þnhꢀ®Þaꢀ
chØꢀt−¬ngꢀøngꢀlꢁꢀ80H,ꢀ90H,ꢀA0H,ꢀB0H.ꢀ
- C¸cꢀ thanhꢀ ghiꢀ phôcꢀ vôꢀ choꢀ truyÒnꢀ th«ngꢀ nèiꢀ tiÕpꢀ SCONꢀ (Serialꢀ portꢀ
CONtrol)ꢀvꢁꢀSBUFꢀ(SerialꢀdataꢀBUFfer):ꢀThanhꢀghiꢀSCONꢀdïngꢀ®ÓꢀthiÕtꢀlËpꢀc¸cꢀ
th«ngꢀsèꢀchoꢀviÖcꢀtruyÒnꢀth«ngꢀnèiꢀtiÕp.ꢀCßnꢀthanhꢀghiꢀSBUFꢀdïngꢀlꢁmꢀvïngꢀnhíꢀ®Ömꢀ
bufferꢀchoꢀviÖcꢀtruyÒnꢀth«ng.ꢀ
- ThanhꢀghiꢀPCONꢀꢂꢀPowerꢀCONtrol:ꢀ§©yꢀlꢁꢀthanhꢀghiꢀ®iÒuꢀkhiÓnꢀnguånꢀcÊpꢀ
choꢀ8051.ꢀCãꢀthÓꢀdïngꢀthanhꢀghiꢀnꢁyꢀ®Óꢀ®Ætꢀbéꢀviꢀ®iÒuꢀkhiÓnꢀvꢁoꢀchÕꢀ®éꢀPowerꢀDownꢀ
hoÆcꢀIDE.ꢀ
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ– Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ10
ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ1ꢀ:ꢀTængꢀquanꢀvÒꢀviꢀ®iÒuꢀkhiÓnꢀ
ꢀ
ꢀ
- C¸cꢀ thanhꢀ ghiꢀ ®iÒuꢀ khiÓnꢀ ng¾tꢀ IPꢀ (Interruptꢀ Priority)ꢀ vꢁꢀ IEꢀ (Interruptꢀ
Enable)ꢀ:ꢀThanhꢀghiꢀIEꢀdïngꢀ®ÓꢀchoꢀphÐpꢀc¸cꢀng¾tꢀho¹tꢀ®éng/kh«ngꢀho¹tꢀ®éng.ꢀCßnꢀ
thanhꢀghiꢀIPꢀdïngꢀ®Óꢀx¸cꢀ®Þnhꢀmøcꢀ−uꢀtiªnꢀchoꢀc¸cꢀng¾tꢀcñaꢀ8051.ꢀ
- C¸cꢀthanhꢀghiꢀ®iÒuꢀkhiÓnꢀbéꢀ®Þnhꢀthêiꢀ:ꢀ§ãꢀlꢁꢀc¸cꢀthanhꢀghiꢀTMOD,ꢀTCON,ꢀ
TH0,ꢀTL0,ꢀTH1,ꢀTL1.ꢀC¸cꢀthanhꢀghiꢀnꢁyꢀ®−îcꢀsöꢀdôngꢀ®Óꢀ®iÒuꢀkhiÓnꢀbéꢀ®Þnhꢀthêiꢀ0ꢀ
vꢁꢀ1.ꢀꢀ
- ThanhꢀghiꢀSPꢀꢂꢀStackꢀPointerꢀ:ꢀThanhꢀghiꢀconꢀtrorꢀng¨nꢀxÕpꢀ(stack),ꢀSPꢀchøaꢀ
®ÞaꢀchØꢀcñaꢀd÷ꢀliÖuꢀhiÖnꢀ®angꢀëꢀ®Ønhꢀstack.ꢀNéiꢀdungꢀmÆcꢀ®ÞnhꢀcñaꢀSPꢀkhiꢀkhëiꢀ®éngꢀlꢁꢀ
07H.ꢀThaoꢀt¸cꢀcÊtꢀvꢁoꢀstackꢀ®ÇuꢀtiªnꢀsÏꢀl−uꢀd÷ꢀliÖuꢀvꢁoꢀvÞꢀtrÝꢀnhíꢀcãꢀ®ÞaꢀchØꢀ08Hꢀv×ꢀc¬ꢀ
chÕꢀlꢁmꢀviÖcꢀcñaꢀchipꢀ8051ꢀlꢁꢀt¨ngꢀnéiꢀdungꢀSPꢀlªnꢀ1ꢀtr−ícꢀkhiꢀthùcꢀhiÖnꢀl−uꢀd÷ꢀliÖuꢀ
vꢁoꢀng¨nꢀxÕp.ꢀꢀ
- Conꢀtráꢀd÷ꢀliÖuꢀDPTRꢀꢂꢀDataꢀPoinTeRꢀ:ꢀ§−îcꢀdïngꢀ®ÓꢀtruyꢀxuÊtꢀbéꢀnhíꢀ
ch−¬ngꢀtr×nhꢀngoꢁiꢀhoÆcꢀbéꢀnhíꢀd÷ꢀliÖuꢀngoꢁi.ꢀDPTRꢀlꢁꢀthanhꢀghiꢀ16ꢀbitꢀgåmꢀ2ꢀphÇnꢀlꢁꢀ
DPHꢀvꢁꢀDPL.ꢀ
1.1.3.3ꢀC¸cꢀho¹tꢀ®éngꢀchøcꢀn¨ngꢀchÝnhꢀcñaꢀ8051ꢀ
Ho¹tꢀ®éngꢀ®Þnhꢀthêiꢀ
C¸cꢀbéꢀ®Þnhꢀthêiꢀdïngꢀ®Óꢀt¹oꢀraꢀc¸cꢀkho¶ngꢀthêiꢀgianꢀkh¸cꢀnhau,ꢀdïngꢀ®Óꢀ®Õmꢀ
sùꢀkiÖnꢀhoÆcꢀdïngꢀ®Óꢀt¹oꢀtècꢀ®éꢀbaudꢀchoꢀviÖcꢀtruyÒnꢀth«ngꢀnèiꢀtiÕp.ꢀTrongꢀ8051ꢀcãꢀ
haiꢀbéꢀ®ÞnhꢀthêiꢀlꢁꢀT0ꢀvꢁꢀT1.ꢀViÖcꢀlùaꢀchänꢀchÕꢀ®éꢀho¹tꢀ®éngꢀchoꢀc¸cꢀTimerꢀnꢁyꢀnhêꢀ
vꢁoꢀthanhꢀghiꢀTMOD.ꢀCßnꢀviÖcꢀ®iÒuꢀkhiÓnꢀc¸cꢀTimerꢀho¹tꢀ®éngꢀnhêꢀvꢁoꢀthanhꢀghiꢀ
TCON.ꢀCãꢀ4ꢀmodeꢀho¹tꢀ®éngꢀchoꢀc¸cꢀTimer.ꢀModeꢀ0ꢀlꢁꢀchÕꢀ®éꢀ®Þnhꢀthêiꢀ13ꢃbit,ꢀ
Modeꢀ1ꢀlꢁꢀchÕꢀ®éꢀ®Þnhꢀthêiꢀ16ꢃbit,ꢀModeꢀ2ꢀlꢁꢀchÕꢀ®éꢀ®Þnhꢀthêiꢀtùꢀn¹pꢀl¹iꢀ8ꢃbit,ꢀModeꢀ
3ꢀlꢁꢀchÕꢀ®éꢀ®ÞnhꢀthêiꢀchiaꢀxÎꢀvꢁꢀcãꢀho¹tꢀ®éngꢀkh¸cꢀnhauꢀchoꢀtõngꢀbéꢀ®Þnhꢀthêi.ꢀꢀ
Ho¹tꢀ®éngꢀcñaꢀportꢀnèiꢀtiÕpꢀ
Chøcꢀn¨ngꢀc¬ꢀb¶nꢀcñaꢀportꢀnèiꢀtiÕpꢀlꢁꢀchuyÓnꢀ®æiꢀd÷ꢀliÖuꢀtõꢀꢀsongꢀsongꢀthꢁnhꢀnèiꢀ
tiÕpꢀkhiꢀph¸tꢀvꢁꢀtõꢀnèiꢀtiÕpꢀthꢁnhꢀsongꢀsongꢀkhiꢀthu.ꢀD÷ꢀliÖuꢀ®−îcꢀtruyÒnꢀ®iꢀhoÆcꢀnhËnꢀ
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ– Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ11
ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ1ꢀ:ꢀTængꢀquanꢀvÒꢀviꢀ®iÒuꢀkhiÓnꢀ
ꢀ
ꢀ
vÒꢀth«ngꢀquaꢀbéꢀ®Ömꢀd÷ꢀliÖuꢀnèiꢀtiÕpꢀSBUFꢀ(SerialꢀdataꢀBUFfer).ꢀKhiꢀtruyÒnꢀ®i,ꢀd÷ꢀliÖuꢀ
®−îcꢀchuyÓnꢀtõꢀsongꢀsongꢀsangꢀnèiꢀtiÕpꢀth«ngꢀquaꢀch©nꢀTxD.ꢀKhiꢀthu,ꢀd÷ꢀliÖuꢀ®−îcꢀ
chuyÓnꢀtõꢀnèiꢀtiÕpꢀsangꢀsongꢀsongꢀth«ngꢀquaꢀch©nꢀRxD.ꢀThanhꢀghiꢀSBUFꢀcãꢀ®ÞaꢀchØꢀ
99H.ꢀViÖcꢀghiꢀd÷ꢀliÖuꢀchoꢀSBUFꢀtøcꢀlꢁꢀph¸tꢀd÷ꢀliÖu,ꢀviÖcꢀ®äcꢀSBUFꢀtøcꢀtruyꢀxuÊtꢀd÷ꢀ
liÖuꢀnhËnꢀ®−îcꢀ(thuꢀd÷ꢀliÖu).ꢀ§iÒuꢀkhiÓnꢀportꢀnèiꢀtiÕpꢀth«ngꢀquaꢀthanhꢀghiꢀSCONꢀcãꢀ®Þaꢀ
chØꢀlꢁꢀ98H,ꢀthanhꢀghiꢀnꢁyꢀlꢁꢀthanhꢀghiꢀ®Þnhꢀ®ÞaꢀchØꢀtõngꢀbitꢀchoꢀtaꢀx¸cꢀ®Þnhꢀ®−îcꢀc¸cꢀ
chÕꢀ®éꢀlꢁmꢀviÖcꢀcñaꢀportꢀnèiꢀtiÕpꢀ(th«ngꢀquaꢀhaiꢀbitꢀMS0ꢀ&ꢀMS1).ꢀ
Ho¹tꢀ®éngꢀcñaꢀng¾tꢀtrongꢀ8051ꢀ
Cãꢀ5ꢀnguyªnꢀnh©nꢀ®Óꢀt¹oꢀraꢀng¾tꢀtrongꢀ8051.ꢀ§ãꢀlꢁꢀ2ꢀng¾tꢀngoꢁi,ꢀhaiꢀng¾tꢀdoꢀbéꢀ
®Þnhꢀthêiꢀvꢁꢀmétꢀng¾tꢀdoꢀportꢀnèiꢀtiÕp.ꢀKhiꢀtaꢀthiÕtꢀlËpꢀtr¹ngꢀth¸iꢀbanꢀ®Çuꢀ(sauꢀkhiꢀ
RESET),ꢀtÊtꢀc¶ꢀc¸cꢀng¾tꢀ®ÒuꢀbÞꢀv«ꢀhiÖuꢀho¸ꢀvꢁꢀsauꢀ®ãꢀchóngꢀ®−îcꢀchoꢀphÐpꢀriªngꢀrÏꢀ
b»ngꢀphÇnꢀmÒm.ꢀ
Khiꢀch−¬ngꢀtr×nhꢀ®angꢀthùcꢀhiÖn,ꢀnÕuꢀcãꢀng¾tꢀvíiꢀ−uꢀtiªnꢀcaoꢀxuÊtꢀhiÖn,ꢀtr×nhꢀphôcꢀ
vôꢀng¾tꢀchoꢀng¾tꢀcãꢀmøcꢀ−uꢀtiªnꢀthÊpꢀt¹mꢀdõng.ꢀTaꢀkh«ngꢀthÓꢀt¹mꢀdõngꢀmétꢀch−¬ngꢀ
tr×nhꢀng¾tꢀcãꢀmøcꢀ−uꢀtiªnꢀcaoꢀh¬n.ꢀKhiꢀcãꢀ2ꢀng¾tꢀkh¸cꢀnhauꢀxuÊtꢀhiÖnꢀ®ångꢀthêi,ꢀng¾tꢀ
cãꢀmùcꢀ−uꢀtiªnꢀcaoꢀsÏꢀ®−îcꢀphôcꢀvôꢀtr−íc.ꢀKhiꢀ2ꢀng¾tꢀcãꢀcïngꢀmøcꢀ−uꢀtiªnꢀxuÊtꢀhiÖnꢀ
®ångꢀthêi,ꢀchuçiꢀvßngꢀcèꢀ®ÞnhꢀsÏꢀx¸cꢀ®Þnhꢀng¾tꢀbꢁoꢀ®−îcꢀphôcꢀvôꢀtr−íc.ꢀChuçiꢀvßngꢀ
nꢁyꢀsÏꢀlꢁꢀng¾tꢀngoꢁiꢀ0,ꢀng¾tꢀngoꢁiꢀ1,ꢀng¾tꢀdoꢀbéꢀ®Þnhꢀthêiꢀ0,ꢀng¾tꢀdoꢀbéꢀ®Þnhꢀthêiꢀ1,ꢀ
ng¾tꢀdoꢀportꢀnèiꢀtiÕp,ꢀng¾tꢀdoꢀbéꢀ®Þnhꢀthêiꢀ2ꢀ(®èiꢀvíiꢀ8052).ꢀꢀ
Khiꢀmétꢀng¾tꢀ®−îcꢀchÊpꢀnhËn,ꢀgi¸ꢀtrÞꢀ®−îcꢀn¹pꢀchoꢀbéꢀ®Õmꢀch−¬ngꢀtr×nhꢀ®−îcꢀgäiꢀ
lꢁꢀvÐcꢀt¬ꢀng¾t.ꢀVÐcꢀt¬ꢀng¾tꢀlꢁꢀ®ÞaꢀchØꢀb¾tꢀ®Çuꢀcñaꢀtr×nhꢀphôcꢀvôꢀng¾tꢀcñaꢀc¸cꢀng¾tꢀt−¬ngꢀ
øng.ꢀC¸cꢀvÐcꢀt¬ꢀng¾tꢀ®−îcꢀchoꢀëꢀb¶ngꢀsauꢀ:ꢀ ꢀ
ꢀ
ꢀ
ꢀ
ꢀ
ꢀ
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ– Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ12
ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ1ꢀ:ꢀTængꢀquanꢀvÒꢀviꢀ®iÒuꢀkhiÓnꢀ
ꢀ
ꢀ
Nguånꢀng¾tꢀ
ResetꢀhÖꢀthèngꢀ
Ng¾tꢀngoꢁiꢀ0ꢀ
Béꢀ®Þnhꢀthêiꢀ0ꢀ
Ng¾tꢀngoꢁiꢀ1ꢀ
Béꢀ®Þnhꢀthêiꢀ1ꢀ
PortꢀnèiꢀtiÕpꢀ
Cêꢀ
RSTꢀ
§ÞaꢀchØꢀvectorꢀng¾tꢀ
0000Hꢀ
IE0ꢀ
0003Hꢀ
TF0ꢀ
000BHꢀ
IE1ꢀ
0013Hꢀ
TF1ꢀ
001BHꢀ
RIꢀorꢀTIꢀ
TF2ꢀorꢀEXF2ꢀ
0023Hꢀ
Béꢀ®Þnhꢀthêiꢀ2ꢀ
002BHꢀ
ꢀ
Ho¹tꢀ®éngꢀRESETꢀcñaꢀ8051ꢀ
8051ꢀ®−îcꢀresetꢀb»ngꢀc¸chꢀgi÷ꢀch©nꢀRSTꢀëꢀmøcꢀcaoꢀtèiꢀthiÓuꢀhaiꢀchuꢀkúꢀm¸yꢀvꢁꢀ
sauꢀ®ãꢀchuyÓnꢀvÒꢀmøcꢀthÊp.ꢀTr¹ngꢀth¸iꢀcñaꢀtÊtꢀc¶ꢀc¸cꢀthanhꢀghiꢀsauꢀkhiꢀresetꢀhÖꢀthèngꢀ
nh−ꢀꢀsauꢀ:
ꢀ
Thanhꢀghiꢀ
Béꢀ®Õmꢀch−¬ngꢀtr×nhꢀPCꢀ
ThanhꢀchøaꢀAꢀ
ThanhꢀghiꢀBꢀ
PSWꢀ
Néiꢀdungꢀ
0000Hꢀ
00Hꢀ
00Hꢀ
00Hꢀ
SPꢀ
07Hꢀ
DPTRꢀ
0000Hꢀ
FFHꢀ
Portꢀ0ꢀ®Õnꢀportꢀ3ꢀ
IPꢀ
xxx00000Bꢀ
0xx00000Bꢀ
00Hꢀ
IEꢀ
C¸cꢀthanhꢀghiꢀ®Þnhꢀthêiꢀ
SCONꢀ
00Hꢀ
SBUFꢀ
00Hꢀ
PCONꢀ(ꢀHMOS)ꢀ
PCONꢀ(ꢀCMOS)ꢀ
0xxxxxxxBꢀ
0xxx0000Bꢀ
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ– Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ13
ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ1ꢀ:ꢀTængꢀquanꢀvÒꢀviꢀ®iÒuꢀkhiÓnꢀ
ꢀ
ꢀ
ꢀꢀKhiꢀresetꢀhÖꢀthèngꢀthanhꢀghiꢀPCꢀ®−îcꢀn¹pꢀ®ÞaꢀchØꢀ0000H,ꢀkhiꢀ®ãꢀch−¬ngꢀtr×nhꢀsÏꢀ
b¾tꢀ®Çuꢀtõꢀ®ÞaꢀchØꢀ®Çuꢀtiªnꢀtrongꢀbéꢀnhíꢀch−¬ngꢀtr×nh.ꢀNéiꢀdungꢀcñaꢀRAMꢀꢀtrªnꢀchipꢀ
kh«ngꢀbÞꢀ¶nhꢀh−ëngꢀkhiꢀtaꢀresetꢀhÖꢀthèng.ꢀ
1.1.4ꢀGiíiꢀthiÖuꢀhäꢀviꢀ®iÒuꢀkhiÓnꢀ8ꢀbitꢀcñaꢀMotorolaꢀ
C¸cꢀhäꢀviꢀ®iÒuꢀkhiÓnꢀcñaꢀMotorolaꢀ®−îcꢀkÝꢀhiÖuꢀb¾tꢀ®Çuꢀbëiꢀch÷ꢀc¸iꢀMC.ꢀV×ꢀcèꢀ
g¾ngꢀgi÷ꢀl¹iꢀphÇnꢀmÒmꢀc¸cꢀnhꢁꢀchÕꢀt¹oꢀlinhꢀkiÖnꢀb¸nꢀdÉnꢀth−êngꢀduyꢀtr×ꢀsùꢀt−¬ngꢀthÝchꢀ
víiꢀc¸cꢀbéꢀviꢀxöꢀlÝꢀ®Çuꢀ®êi.ꢀHꢂngꢀMotorolaꢀ®−aꢀraꢀbéꢀviꢀ®iÒuꢀkhiÓnꢀM6801ꢀ®Çuꢀtiªnꢀcñaꢀ
hꢂngꢀtrªnꢀthÞꢀtr−êngꢀthÕꢀgiíiꢀvꢁoꢀn¨mꢀ1978ꢀvꢁꢀbéꢀviꢀ®iÒuꢀkhiÓnꢀnꢁyꢀ®−îcꢀchÕꢀt¹oꢀtrªnꢀ
c¬ꢀsëꢀsöꢀdôngꢀbéꢀviꢀxöꢀlÝꢀM6800.ꢀBéꢀviꢀ®iÒuꢀkhiÓnꢀM6801ꢀcãꢀbéꢀnhíꢀROMꢀvꢁꢀRAMꢀ
ngoꢁiꢀlínꢀnhÊtꢀlªnꢀ®Õnꢀ64KBꢀvíiꢀm¹chꢀgiaoꢀdiÖnꢀvꢁo/ra,ꢀtruyÒnꢀth«ngꢀnèiꢀtiÕpꢀkh«ngꢀ
®ångꢀbéꢀ®ꢂꢀb¾tꢀ®ÇuꢀphæꢀbiÕnꢀtrongꢀhÖꢀthèngꢀ®iÒuꢀkhiÓnꢀ«t«.ꢀꢀ
Sauꢀ®ãꢀvꢁoꢀn¨mꢀ1985ꢀMotorolaꢀ®ꢂꢀph¸tꢀtriÓnꢀbéꢀviꢀ®iÒuꢀkhiÓnꢀ68HC11ꢀt−¬ngꢀ
thÝchꢀvíiꢀbéꢀviꢀxöꢀlÝꢀM6800.ꢀBéꢀviꢀ®iÒuꢀkhiÓnꢀMC68HC11ꢀtiªuꢀthôꢀÝtꢀc«ngꢀsuÊtꢀh¬nꢀvꢁꢀ
choꢀphÐpꢀtÝnꢀhiÖuꢀnhiÔuꢀcaoꢀh¬nꢀsoꢀvíiꢀc¸cꢀbéꢀviꢀxöꢀlÝꢀ®Çuꢀ®êi.ꢀMC68HC11ꢀcãꢀnhiÒuꢀ
phiªnꢀ b¶n,ꢀ vÝꢀ dôꢀ MC68HC11A8ꢀ vꢁꢀ MC68HC11E9.ꢀ Métꢀ sèꢀ hꢂngꢀ nh−ꢀ Mitsubishi,ꢀ
Toshibaꢀcòngꢀs¶nꢀxuÊtꢀc¸cꢀbéꢀviꢀ®iÒuꢀkhiÓnꢀnꢁyꢀtheoꢀc«ngꢀnghÖꢀcñaꢀMotorola.ꢀ
B¶ngꢀd−íiꢀ®©yꢀliÖtꢀkªꢀc¸cꢀ®Æcꢀ®iÓmꢀc¬ꢀb¶nꢀcñaꢀmétꢀsèꢀchipꢀviꢀ®iÒuꢀkhiÓnꢀtrongꢀhäꢀ
68HC11:ꢀ
MCꢀ
ROMꢀ
RAMꢀ
EEPROMꢀ
ADCꢀ
I/Oꢀ
68HC11A8ꢀ
8KBꢀ
256ꢀbytesꢀ
512ꢀbytesꢀ
8ꢀchannelsꢀ
38ꢀpinsꢀ
68HC811E2ꢀ
68HC11F1ꢀ
68HC11E9ꢀ
0ꢀ
0ꢀ
256ꢀbytesꢀ
1ꢀKBꢀ
2ꢀKBꢀ
ꢃꢀ
ꢃꢀ
ꢃꢀ
ꢃꢀ
ꢃꢀ
ꢃꢀ
ꢃꢀ
12ꢀKBꢀ
512ꢀbytesꢀ
512ꢀbytesꢀ
68HC11B8ꢀ
68HC11B0ꢀ
8ꢀKBꢀ
0ꢀ
256ꢀbytesꢀ
256ꢀbytesꢀ
512ꢀbytesꢀ
0ꢀ
ꢃꢀ
ꢃꢀ
ꢃꢀ
ꢃꢀ
68HC11B1ꢀ
68HC11D3ꢀ
68HC11A0ꢀ
0ꢀ
4ꢀKBꢀ
0ꢀ
256ꢀbytesꢀ
192ꢀbytesꢀ
256ꢀbytesꢀ
512bytesꢀ
ꢃꢀ
ꢃꢀ
ꢃꢀ
ꢃꢀ
ꢃꢀ
40ꢀpinsꢀ
22ꢀpinsꢀ
0ꢀ
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ– Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ14
ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ1ꢀ:ꢀTængꢀquanꢀvÒꢀviꢀ®iÒuꢀkhiÓnꢀ
ꢀ
ꢀ
1.1.5ꢀGiíiꢀthiÖuꢀc¸cꢀhäꢀviꢀ®iÒuꢀkhiÓnꢀ8ꢀbitꢀcñaꢀhꢃngꢀMicrochipꢀTechnologyꢀ
HꢂngꢀMicrochipꢀTechnologyꢀlꢁꢀmétꢀtrongꢀnh÷ngꢀnhꢁꢀcungꢀcÊpꢀhꢁngꢀ®ÇuꢀvÒꢀc¸cꢀ
gi¶iꢀph¸pꢀ®iÒuꢀkhiÓnꢀchoꢀc¸cꢀhÖꢀthèngꢀnhóngꢀ(Embeddedꢀcontrolꢀsystem).ꢀHaiꢀdßngꢀ
s¶nꢀ phÈmꢀ chÝnhꢀ cñaꢀ hꢂngꢀ lꢁꢀ c¸cꢀ häꢀ viꢀ ®iÒuꢀ khiÓnꢀ 8ꢃbitꢀ PIC16/17ꢀ vꢁꢀ c¸cꢀ chipꢀ nhíꢀ
kh«ngꢀbayꢀh¬iꢀEEPROMꢀnèiꢀtiÕp,ꢀnh÷ngꢀs¶nꢀphÈmꢀnꢁyꢀ®−îcꢀ®−aꢀvꢁoꢀøngꢀdôngꢀchoꢀ
viÖcꢀ®−aꢀraꢀc¸cꢀgi¶iꢀph¸pꢀthiÕtꢀkÕꢀc¸cꢀhÖꢀthèngꢀ®iÒuꢀkhiÓnꢀnhóngꢀcñaꢀhꢂngꢀcungꢀcÊpꢀ
choꢀkh¸chꢀhꢁng.ꢀ
C¸cꢀhäꢀviꢀ®iÒuꢀkhiÓnꢀPIC16CxxꢀvꢁꢀPIC17CxxꢀcñaꢀhꢂngꢀMicrochipꢀTechnologyꢀ
®−îcꢀsöꢀdôngꢀkh¸ꢀth«ngꢀdôngꢀvꢁꢀréngꢀrꢂiꢀchoꢀc¸cꢀøngꢀdôngꢀ®iÒuꢀkhiÓnꢀtrongꢀviÖcꢀchÕꢀ
t¹oꢀc¸cꢀs¶nꢀphÈmꢀtiªuꢀdïng,ꢀtrongꢀtùꢀ®éngꢀhãaꢀv¨nꢀphßng,ꢀthiÕtꢀbÞꢀngo¹iꢀviꢀcñaꢀm¸yꢀ
tÝnh,ꢀc¸cꢀhÖꢀthèngꢀtùꢀ®éngꢀ®iÒuꢀkhiÓnꢀ...ꢀꢀꢀꢀ
D−íiꢀ®©yꢀliÖtꢀkªꢀc¸cꢀ®Æcꢀ®iÓmꢀchÝnh,ꢀc¸cꢀthꢁnhꢀphÇnꢀc¬ꢀb¶nꢀcñaꢀmétꢀsèꢀꢀchipꢀviꢀ
®iÒuꢀkhiÓnꢀtrongꢀc¸cꢀhäꢀviꢀ®iÒuꢀkhiÓnꢀ8ꢃꢀbitꢀPIC16CxxꢀvꢁꢀPIC17Cxx.ꢀ
HäꢀPIC16Cxxꢀ
ꢀ
ꢀ
ꢀ
Memoryꢀ
Peripheralꢀ
Featuresꢀ
PICꢀ (0)ꢀ
(1)ꢀ (2)ꢀ (3)ꢀ (4)ꢀ (5)ꢀ (6)ꢀ (7)ꢀ
(8)ꢀ (9)ꢀ (10)ꢀ (12)ꢀ (13)ꢀ
16C61ꢀ
16C62ꢀ
16C63ꢀ
16C64ꢀ
16C65ꢀ
20ꢀ
20ꢀ
20ꢀ
20ꢀ
20ꢀ
1Kꢀ
2Kꢀ
4Kꢀ
2Kꢀ
4Kꢀ
_ꢀ
36ꢀ
_ꢀ
1ꢀ
3ꢀ
3ꢀ
3ꢀ
3ꢀ
_ꢀ
2ꢀ
2ꢀ
1ꢀ
2ꢀ
_ꢀ
_ꢀ
_ꢀ
_ꢀ
_ꢀ
_ꢀ
_ꢀ
_ꢀ
_ꢀ
_ꢀ
_ꢀ
_ꢀ
_ꢀ
3ꢀ
13ꢀ
22ꢀ
22ꢀ
33ꢀ
33ꢀ
_ꢀ 128ꢀ _ꢀ
_ꢀ 192ꢀ _ꢀ
_ꢀ 128ꢀ _ꢀ
_ꢀ 192ꢀ _ꢀ
Yesꢀ
Yesꢀ
Yesꢀ
Yesꢀ
10ꢀ
10ꢀ
8ꢀ
_ꢀ
Yesꢀ
Yesꢀ
11ꢀ
16C620ꢀ
20ꢀ
512ꢀ
_ꢀ
_ꢀ
80ꢀ
80ꢀ
_ꢀ
_ꢀ
1ꢀ
_ꢀ
_ꢀ
_ꢀ
_ꢀ
2ꢀ
4ꢀ
13ꢀ
16C621ꢀ
16C622ꢀ
16C71ꢀ
20ꢀ
20ꢀ
20ꢀ
1Kꢀ
2Kꢀ
1Kꢀ
1ꢀ
1ꢀ
1ꢀ
_ꢀ
_ꢀ
_ꢀ
_ꢀ
_ꢀ
_ꢀ
_ꢀ
_ꢀ
_ꢀ
_ꢀ
_ꢀ
4ꢀ
2ꢀ
2ꢀ
_ꢀ
4ꢀ
4ꢀ
4ꢀ
13ꢀ
13ꢀ
13ꢀ
_ꢀ 128ꢀ _ꢀ
_ꢀ 36ꢀ _ꢀ
16C73ꢀ
16C74ꢀ
16C84ꢀ
20ꢀ
20ꢀ
10ꢀ
4Kꢀ
4Kꢀ
_ꢀ
_ꢀ 192ꢀ _ꢀ
_ꢀ 192ꢀ _ꢀ
1Kꢀ 36ꢀ 64ꢀ
3ꢀ
3ꢀ
1ꢀ
2ꢀ
2ꢀ
_ꢀ
Yesꢀ
Yesꢀ
_ꢀ
_ꢀ
Yesꢀ
_ꢀ
5ꢀ
8ꢀ
_ꢀ
_ꢀ
_ꢀ
_ꢀ
11ꢀ
12ꢀ
4ꢀ
22ꢀ
33ꢀ
13ꢀ
ChóꢀthÝchꢀ:ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ– Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ15
ꢀ
ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ1ꢀ:ꢀTængꢀquanꢀvÒꢀviꢀ®iÒuꢀkhiÓnꢀ
ꢀ
ꢀ
(0) ꢀꢀꢀ:ꢀTÇnꢀsèꢀcÊpꢀt¹oꢀxungꢀClockꢀ(MHz).ꢀ
(1) ꢀꢀꢀ:ꢀDungꢀl−îngꢀbéꢀnhíꢀch−¬ngꢀtr×nhꢀEPROMꢀtrong.ꢀ
(2) ꢀꢀꢀ:ꢀDungꢀl−îngꢀbéꢀnhíꢀch−¬ngꢀtr×nhꢀEEPROMꢀtrong.ꢀ
(3) ꢀꢀꢀ:ꢀDungꢀl−îngꢀbéꢀnhíꢀd÷ꢀliÖuꢀRAMꢀtrongꢀ(bytes).ꢀ
(4) ꢀꢀꢀ:ꢀDungꢀl−îngꢀbéꢀnhíꢀd÷ꢀliÖuꢀEEPROMꢀtrongꢀ(bytes).ꢀ
(5) ꢀꢀꢀ:ꢀSèꢀModuleꢀTimer.ꢀ
(6) ꢀꢀꢀ:ꢀSèꢀCapture,ꢀModuleꢀPWM.ꢀ
(7) ꢀꢀꢀ:ꢀCængꢀnèiꢀtiÕp.ꢀ
(8) ꢀꢀꢀ:ꢀCængꢀsongꢀsong.ꢀ
(9) ꢀꢀꢀ:ꢀSèꢀkªnhꢀchuyÓnꢀ®æiꢀAnalogꢀ–ꢀDigitalꢀ(ADC).ꢀ
(10) :ꢀSèꢀbéꢀsoꢀs¸nhꢀ(Comparator).ꢀ
(11) :ꢀSèꢀnguånꢀng¾tꢀ(Interrupꢀsource).ꢀ
(12) :ꢀSèꢀ®−êngꢀvꢁo/raꢀ(I/Oꢀpins).ꢀ
HäꢀPIC17Cxxꢀ
Memoryꢀ
Peripheralsꢀ
Featuresꢀ
PICꢀ
(0)ꢀ
(1)ꢀ (2)ꢀ (3)ꢀ (4)ꢀ (5)ꢀ
(6)ꢀ
Yesꢀ Yesꢀ
Yesꢀ Yesꢀ
Yesꢀ Yesꢀ
(7)ꢀ (8)ꢀ (9)ꢀ
17C42ꢀ 25ꢀ 2Kꢀ 232ꢀ 4ꢀ
17C43ꢀ 25ꢀ 4Kꢀ 454ꢀ 4ꢀ
2ꢀ
2ꢀ
2ꢀ
11ꢀ
11ꢀ
11ꢀ
33ꢀ
33ꢀ
33ꢀ
55ꢀ
58ꢀ
58ꢀ
17C44ꢀ 25ꢀ 8Kꢀ 454ꢀ 4ꢀ
ChóꢀthÝchꢀ:ꢀ
(0) :ꢀTÇnꢀsèꢀcÊpꢀt¹oꢀxungꢀClockꢀ(MHz).ꢀ
(1) :ꢀDungꢀl−îngꢀbéꢀnhíꢀch−¬ngꢀtr×nhꢀEPROMꢀbªnꢀtrong.ꢀ
(2) :ꢀDungꢀl−îngꢀbéꢀnhíꢀd÷ꢀliÖuꢀRAMꢀbªnꢀtrong.ꢀ
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ– Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ16
ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ1ꢀ:ꢀTængꢀquanꢀvÒꢀviꢀ®iÒuꢀkhiÓnꢀ
ꢀ
ꢀ
(3) :ꢀSèꢀModuleꢀTimer.ꢀ
(4) :ꢀSèꢀModuleꢀPWM.ꢀ
(5) :ꢀCængꢀnèiꢀtiÕp.ꢀ
(6) :ꢀNg¾tꢀngoꢁiꢀ(Externalꢀinterrupts).ꢀ
(7) :ꢀSèꢀnguånꢀng¾tꢀ(Interruptꢀsources).ꢀ
(8) :ꢀSèꢀ®−êngꢀvꢁo/raꢀ(I/Oꢀpins).ꢀ
(9) :ꢀSèꢀlÖnhꢀ®iÒuꢀkhiÓnꢀ(Instructions).ꢀ
§¸nhꢀgi¸ꢀc¸cꢀdßngꢀPICꢀ
ꢃꢀDßngꢀPICꢀnhiÒuꢀch©nꢀnhÊtꢀlꢁꢀdßngꢀdsPIC30FxxxxꢀvꢁꢀPIC18Fxxxx,ꢀcãꢀnh÷ngꢀconꢀsèꢀ
ch©nꢀlªnꢀ®Õnꢀ80ꢀch©n.ꢀ
ꢃꢀDßngꢀPICꢀÝtꢀch©nꢀnhÊtꢀlꢁꢀdßngꢀPIC10Fxxx,ꢀchØꢀcãꢀ6ꢀch©nꢀ
ꢃꢀDßngꢀPICꢀphæꢀbiÕnꢀnhÊtꢀlꢁꢀdßngꢀPIC16F877Aꢀ(®ñꢀm¹nhꢀvÒꢀtÝnhꢀn¨ng,ꢀ40ꢀch©n,ꢀbéꢀnhíꢀ
®ñꢀchoꢀhÇuꢀhÕtꢀc¸cꢀøngꢀdôngꢀth«ngꢀth−êng)ꢀ
ꢃꢀDßngꢀPICꢀmꢁꢀ®−îcꢀc¸cꢀchuyªnꢀgiaꢀ®¸nhꢀgi¸ꢀcaoꢀnhÊtꢀlꢁꢀdßngꢀPIC16F876Aꢀ(28ꢀch©n,ꢀ
chøcꢀn¨ngꢀkh«ngꢀkh¸cꢀg×ꢀsoꢀvíiꢀPIC16F877A,ꢀnh−ngꢀnháꢀgänꢀh¬nꢀnhiÒu,ꢀvꢁꢀsèꢀch©nꢀ
còngꢀkh«ngꢀqu¸ꢀÝtꢀnh−ꢀPIC16F88).ꢀ
ꢃꢀDßngꢀPICꢀhçꢀtrîꢀgiaoꢀtiÕpꢀUSBꢀlꢁꢀdßngꢀPIC18F2550ꢀvꢁꢀPIC18F4550ꢀ
ꢃꢀDßngꢀPICꢀ®iÒuꢀkhiÓnꢀ®éngꢀc¬ꢀm¹nhꢀnhÊtꢀlꢁꢀdßngꢀPIC18F4x31ꢀvꢁꢀdßngꢀdsPIC30Fꢀ
dïngꢀ®iÒuꢀkhiÓnꢀ®éngꢀc¬ꢀ
ꢃꢀDßngꢀPICꢀhiÖnꢀnayꢀ®ꢂꢀkh«ngꢀcßnꢀ®−îcꢀs¶nꢀxuÊtꢀn÷aꢀlꢁꢀdßngꢀPIC17xxxxx.ꢀ
*(C¸cꢀ®¸nhꢀgi¸ꢀvÒꢀPICꢀ®−îcꢀtrÝchꢀëꢀwebsiteꢀwww.picvietnam.com)ꢀ
1.1.6ꢀGiíiꢀthiÖuꢀchipꢀviꢀ®iÒuꢀkhiÓnꢀth«ngꢀminhꢀPSoCꢀ
PSoCꢀlꢁꢀch÷ꢀviÕtꢀt¾tꢀcñaꢀProgrammableꢀSystemꢀonꢀChip.ꢀ§ãꢀlꢁꢀmétꢀc«ngꢀnghÖꢀchÕꢀ
t¹oꢀchipꢀhiÖnꢀ®¹iꢀnhÊtꢀchoꢀ®Õnꢀnay,ꢀchoꢀphÐpꢀt¹oꢀraꢀc¸cꢀchipꢀhÖꢀthèngꢀxöꢀlÝꢀhçnꢀhîpꢀ
(Mixedꢀsignal)ꢀvíiꢀkh¶ꢀn¨ngꢀxöꢀlÝꢀthuËtꢀto¸nꢀm¹nh.ꢀ
§Æcꢀ®iÓmꢀcñaꢀc¸cꢀthÕꢀhÖꢀviꢀ®iÒuꢀkhiÓnꢀchÕꢀt¹oꢀtheoꢀc«ngꢀnghÖꢀtr−ícꢀ®©yꢀlꢁꢀtrªnꢀ
métꢀchipꢀviꢀ®iÒuꢀkhiÓnꢀchØꢀcãꢀthÓꢀthayꢀ®æiꢀ®−îcꢀch−¬ngꢀtr×nhꢀphÇnꢀmÒmꢀchøꢀkh«ngꢀthÓꢀ
lËpꢀtr×nhꢀthayꢀ®æiꢀ®−îcꢀcÊuꢀtrócꢀphÇnꢀcøng.ꢀGi¸ꢀthꢁnhꢀchoꢀviÖcꢀsöꢀdôngꢀc¸cꢀchipꢀviꢀ®iÒuꢀ
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ– Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ17
ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ1ꢀ:ꢀTængꢀquanꢀvÒꢀviꢀ®iÒuꢀkhiÓnꢀ
ꢀ
ꢀ
khiÓnꢀvꢁꢀmuaꢀc¸cꢀphÇnꢀmÒmꢀhçꢀtrîꢀ®Óꢀph¸tꢀtriÓnꢀc¸cꢀøngꢀdôngꢀlꢁꢀrÊtꢀ®¾tꢀvꢁꢀmangꢀl¹iꢀ
hiÖuꢀqu¶ꢀkh«ngꢀcao,ꢀkhãꢀcãꢀthÓꢀth«ngꢀminhꢀhãaꢀviÖcꢀ®iÒuꢀkhiÓnꢀhÖꢀthèng.ꢀꢀꢀ
Víiꢀchipꢀviꢀ®iÒuꢀkhiÓnꢀth«ngꢀminhꢀchÕꢀt¹oꢀtheoꢀc«ngꢀnghÖꢀPSoC,ꢀchóngꢀtaꢀcãꢀthÓꢀ
lËpꢀtr×nhꢀtrªnꢀchipꢀ®Óꢀthayꢀ®æiꢀkh«ngꢀnh÷ngꢀc¶ꢀphÇnꢀmÒmꢀ®iÒuꢀkhiÓnꢀmꢁꢀc¶ꢀcÊuꢀtrócꢀ
phÇnꢀcøngꢀngayꢀkhiꢀhÖꢀthèngꢀ®angꢀho¹tꢀ®éng.ꢀViÖcꢀøngꢀdôngꢀchipꢀviꢀ®iÒuꢀkhiÓnꢀth«ngꢀ
minhꢀtheoꢀc«ngꢀnghÖꢀPSoCꢀmangꢀl¹iꢀhiÖuꢀqu¶ꢀcaoꢀvÒꢀküꢀthuËtꢀvꢁꢀgi¸ꢀthꢁnhꢀgi¶mꢀ®iꢀ
nhiÒuꢀlÇnꢀsoꢀvíiꢀviÖcꢀsöꢀdôngꢀc¸cꢀchipꢀviꢀ®iÒuꢀkhiÓnꢀtr−ícꢀ®©y.ꢀ§èiꢀvíiꢀc¸cꢀchipꢀviꢀ®iÒuꢀ
khiÓnꢀth«ngꢀminh,ꢀbªnꢀtrongꢀnãꢀ®ꢂꢀtÝchꢀhîpꢀ®Çyꢀ®ñꢀc¸cꢀthꢁnhꢀphÇnꢀCPU,ꢀc¸cꢀbéꢀnhí,ꢀ
c¸cꢀkhèiꢀ(block)ꢀt−¬ngꢀtùꢀvꢁꢀsèꢀnªnꢀmétꢀsèꢀthꢁnhꢀphÇnꢀngo¹iꢀviꢀbªnꢀngoꢁiꢀchipꢀtrongꢀhÖꢀ
thèngꢀcãꢀthÓꢀgi¶mꢀ®i.ꢀV×ꢀthÕ,ꢀgi¸ꢀthꢁnhꢀvꢁꢀkÝchꢀth−ícꢀcñaꢀhÖꢀthèngꢀgi¶mꢀ®iꢀnhiÒuꢀsoꢀvíiꢀ
hÖꢀthèngꢀsöꢀdôngꢀc¸cꢀchipꢀviꢀ®iÒuꢀkhiÓnꢀthÕꢀhÖꢀtr−ícꢀ®©y.ꢀ
HiÖnꢀnay,ꢀcãꢀnhiÒuꢀhꢂngꢀ®iÖnꢀtöꢀtrªnꢀthÕꢀgiíiꢀquanꢀt©mꢀ®Çuꢀt−ꢀchoꢀviÖcꢀnghiªnꢀcøuꢀ
vꢁꢀ¸pꢀdôngꢀc«ngꢀnghÖꢀchÕꢀt¹oꢀchipꢀmíiꢀnꢁy.ꢀTrongꢀ®ãꢀcãꢀthÓꢀkÓꢀ®ÕnꢀhꢂngꢀCypressꢀ
Microchipꢀ®ꢂꢀ¸pꢀdôngꢀthꢁnhꢀc«ngꢀc«ngꢀnghÖꢀPSoCꢀ®Óꢀchoꢀraꢀ®êiꢀc¸cꢀhäꢀviꢀ®iÒuꢀkhiÓnꢀ
th«ngꢀminhꢀCY8C24xxx,ꢀCY8C25xxx,ꢀCY8C26xxxꢀvꢁꢀCY8C27xxx.ꢀꢀꢀ
MétꢀvÝꢀdôꢀcôꢀthÓꢀvÒꢀkh¶ꢀn¨ngꢀlËpꢀtr×nhꢀthayꢀ®æiꢀc¶ꢀcÊuꢀh×nhꢀphÇnꢀcøngꢀvꢁꢀch−¬ngꢀ
tr×nhꢀphÇnꢀmÒmꢀ®iÒuꢀkhiÓnꢀlꢁꢀ®Òꢀtꢁiꢀøngꢀdôngꢀchipꢀviꢀ®iÒuꢀkhiÓnꢀth«ngꢀminhꢀc«ngꢀnghÖꢀ
PSoCꢀ®ÓꢀchÕꢀt¹oꢀm¸yꢀb¸nꢀhꢁngꢀth«ngꢀminhꢀtùꢀ®éng.ꢀM¸yꢀcãꢀchøcꢀn¨ngꢀb¸nꢀhꢁngꢀtùꢀ
®éngꢀvꢁoꢀbanꢀngꢁyꢀvꢁꢀbanꢀ®ªmꢀth×ꢀnãꢀthayꢀ®æiꢀc¶ꢀcÊuꢀh×nhꢀphÇnꢀcøngꢀvꢁꢀch−¬ngꢀtr×nhꢀ
phÇnꢀmÒmꢀ®Óꢀlꢁmꢀchøcꢀn¨ngꢀtruyÒnꢀth«ng.
ꢀ
H×nhꢀ1.3ꢀꢃꢀCÊuꢀh×nhꢀcñaꢀ
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ– Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ18
ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ1ꢀ:ꢀTængꢀquanꢀvÒꢀviꢀ®iÒuꢀkhiÓnꢀ
ꢀ
ꢀ
1.2ꢀGiíiꢀthiÖuꢀc¸cꢀc«ngꢀcôꢀph¸tꢀtriÓnꢀhÖꢀviꢀxöꢀlÝꢀvꢁꢀviꢀ®iÒuꢀkhiÓnꢀ
1.2.1ꢀC«ngꢀcôꢀph¸tꢀtriÓnꢀchoꢀhäꢀMCSꢂ51ꢀ
1.2.1.1ꢀꢀPhÇnꢀmÒmꢀKeilꢀcñaꢀhꢃngꢀKeilꢀSoftwareꢀ
PhÇnꢀmÒmꢀKeilꢀ Vision2ꢀlꢁꢀmétꢀch−¬ngꢀtr×nhꢀbiªnꢀdÞchꢀchoꢀphÐpꢀng−êiꢀsöꢀdôngꢀ
cãꢀthÓꢀviÕtꢀ®−îcꢀc¸cꢀch−¬ngꢀtr×nhꢀ®iÒuꢀkhiÓnꢀchoꢀhäꢀviꢀ®iÒuꢀkhiÓnꢀMSCꢃ51ꢀb»ngꢀng«nꢀ
ng÷ꢀCꢀvꢁꢀc¶ꢀASM.ꢀNãꢀcãꢀchøaꢀhÇuꢀhÕtꢀc¸cꢀhꢁmꢀchuÈnꢀcñaꢀANSIꢃC.ꢀ§iÒuꢀnꢁyꢀgiópꢀchoꢀ
ng−êiꢀsöꢀdôngꢀcãꢀthÓꢀtËnꢀdôngꢀ®−îcꢀnh÷ngꢀhꢁmꢀchuÈnꢀcñaꢀCꢀ®ÓꢀviÕtꢀch−¬ngꢀtr×nhꢀchoꢀ
viꢀ®iÒuꢀkhiÓn.ꢀViÖcꢀtæꢀchøcꢀch−¬ngꢀtr×nhꢀthꢁnhꢀc¸cꢀm«dunꢀnháꢀcòngꢀrÊtꢀdÔꢀthùcꢀhiÖn.ꢀ
Ch−¬ngꢀtr×nhꢀbiªnꢀdÞchꢀchoꢀng«nꢀng÷ꢀCꢀcñaꢀnãꢀchÝnhꢀlꢁꢀCx51ꢀCompiler.ꢀꢀ
Cx51ꢀCompilerꢀhçꢀtrîꢀtÊtꢀc¶ꢀc¸cꢀkiÓuꢀd÷ꢀliÖuꢀchuÈnꢀcñaꢀCꢀnh−ꢀ:ꢀchar,ꢀshort,ꢀint,ꢀ
long,ꢀfloat.ꢀNgoꢁiꢀraꢀnãꢀcßnꢀcãꢀmétꢀvꢁiꢀkiÓuꢀd÷ꢀliÖuꢀ®ÆcꢀbiÖtꢀt−¬ngꢀthÝchꢀvíiꢀhäꢀviꢀ®iÒuꢀ
khiÓnꢀMSCꢃ51.ꢀ
- KiÓuꢀbitꢀ:ꢀ®©yꢀlꢁꢀkiÓuꢀd÷ꢀliÖuꢀchØꢀgåmꢀ2ꢀgi¸ꢀtrÞꢀ0ꢀvꢁꢀ1.ꢀNãꢀ®−îcꢀsöꢀdôngꢀ®Óꢀg¸nꢀ
gi¸ꢀtrÞꢀchoꢀc¸cꢀthanhꢀghiꢀhayꢀc¸cꢀ®ÞaꢀchØꢀcãꢀthÓꢀtruyꢀnhËpꢀ®−îcꢀ®Õnꢀtõngꢀbit.ꢀ
- KiÓuꢀsbit,ꢀsfr,ꢀsfr16ꢀ:ꢀꢀ®©yꢀlꢁꢀc¸cꢀkiÓuꢀd÷ꢀliÖuꢀdïngꢀ®Óꢀ®ÞnhꢀnghÜaꢀchoꢀc¸cꢀthanhꢀ
ghiꢀchøcꢀn¨ngꢀ®ÆcꢀbiÖt.ꢀKiÓuꢀsfrꢀdïngꢀ®Óꢀ®ÞnhꢀnghÜaꢀchoꢀc¸cꢀthanhꢀghiꢀSFRꢀ8ꢃbit.ꢀCßnꢀ
kiÓuꢀsfr16ꢀdïngꢀ®Óꢀ®ÞnhꢀnghÜaꢀchoꢀc¸cꢀthanhꢀghiꢀSFRꢀ16ꢃbitꢀnh−ꢀthanhꢀghiꢀRCAP2ꢀ
dïngꢀ®Óꢀl−uꢀgi÷ꢀgi¸ꢀtrÞꢀn¹pꢀl¹iꢀchoꢀTimerꢀ2.ꢀKiÓuꢀsbitꢀdïngꢀ®Óꢀ®ÞnhꢀnghÜaꢀtõngꢀbitꢀchoꢀ
c¸cꢀbitꢀtrongꢀc¸cꢀthanhꢀghiꢀ®ÆcꢀbiÖtꢀmꢁꢀcãꢀthÓꢀ®Þnhꢀ®ÞaꢀchØꢀbit.ꢀ
VÝꢀdôꢀkhaiꢀb¸oꢀ:ꢀꢀ
sfrꢀP0ꢀꢀꢀꢀꢀꢀ=ꢀ0x80;ꢀꢀꢀꢀꢀ/*ꢀPortꢀ0ꢀ*/ꢀ
sfrꢀSPꢀꢀꢀꢀꢀꢀ=ꢀ0x81;ꢀꢀꢀꢀꢀ/*ꢀStackꢀPointerꢀ*/ꢀ
sbitꢀP0_0ꢀ=ꢀ0x80;ꢀ
sbitꢀP0_1ꢀ=ꢀ0x81;ꢀ
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ– Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ19
ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ1ꢀ:ꢀTængꢀquanꢀvÒꢀviꢀ®iÒuꢀkhiÓnꢀ
ꢀ
ꢀ
VÒꢀc¸chꢀtæꢀchøcꢀbéꢀnhíꢀcñaꢀviꢀ®iÒuꢀkhiÓnꢀtrongꢀphÇnꢀmÒmꢀKeilꢀC51ꢀ:ꢀ
- Béꢀnhíꢀch−¬ngꢀtr×nhꢀ:ꢀ§©yꢀlꢁꢀvïngꢀnhíꢀchØꢀ®äcꢀtrongꢀviꢀ®iÒuꢀkhiÓn.ꢀNãꢀcãꢀthÓꢀ
cãꢀdungꢀl−îngꢀtíiꢀ64KB.ꢀTrongꢀphÇnꢀmÒmꢀKeilꢀC51ꢀth×ꢀvïngꢀnhíꢀnꢁyꢀ®−îcꢀ®Þnhꢀd¹ngꢀ
b»ngꢀtõꢀkho¸ꢀcode.ꢀꢀ
VÝꢀdôꢀkhaiꢀb¸oꢀbiÕnꢀthuécꢀvïngꢀcodeꢀ:ꢀ
charꢀcodeꢀstr[]={“DHBKDN”};ꢀ//Khaiꢀb¸oꢀmétꢀm¶ngꢀkýꢀtùꢀꢀchøaꢀtrongꢀvïngꢀnhíꢀcodeꢀ
- Béꢀnhíꢀd÷ꢀliÖuꢀtrongꢀ:ꢀ§©yꢀlꢁꢀvïngꢀnhíꢀcãꢀthÓꢀvõaꢀghiꢀvꢁꢀ®äc.ꢀCãꢀ3ꢀkiÓuꢀvïngꢀ
nhíꢀd÷ꢀliÖuꢀëꢀbªnꢀtrongꢀviꢀ®iÒuꢀkhiÓn.ꢀ§ãꢀlꢁꢀc¸cꢀkiÓuꢀ:ꢀdata,ꢀidata,ꢀbdata.ꢀVïngꢀnhíꢀ
d÷ꢀliÖuꢀkiÓuꢀdataꢀlꢁꢀvïngꢀnhíꢀchøaꢀ128ꢀbyteꢀd÷ꢀliÖuꢀ®Çuꢀtiªnꢀcñaꢀviꢀ®iÒuꢀkhiÓn.ꢀVïngꢀ
nhíꢀnꢁyꢀcãꢀthÓꢀtruyꢀcËpꢀth«ngꢀquaꢀ®ÞaꢀchØꢀtrùcꢀtiÕpꢀ®−îc.ꢀVïngꢀnhíꢀd÷ꢀliÖuꢀkiÓuꢀidataꢀ
lꢁꢀvïngꢀnhíꢀ256ꢀbyteꢀd÷ꢀliÖuꢀtruyꢀnhËpꢀth«ngꢀquaꢀ®ÞaꢀchØꢀgi¸nꢀtiÕp.ꢀVïngꢀnhíꢀd÷ꢀliÖuꢀ
kiÓuꢀbdataꢀlꢁꢀvïngꢀnhíꢀchøaꢀ16ꢀbyteꢀ®Þnhꢀ®ÞaꢀchØꢀbitꢀtõꢀ®ÞaꢀchØꢀ20Hꢀ®Õnꢀ2FH.ꢀ
VÝꢀdôꢀkhaiꢀb¸oꢀbiÕnꢀtrongꢀvïngꢀnhíꢀd÷ꢀliÖuꢀtrongꢀ:ꢀ
ꢀ
ꢀ
unsignedꢀcharꢀdataꢀv1;ꢀ//Khaiꢀb¸oꢀbiÕnꢀv1ꢀ
unsignedꢀintꢀidataꢀv2;ꢀ//Khaiꢀb¸oꢀbiÕnꢀv2ꢀ
ꢀ
- Béꢀnhíꢀd÷ꢀliÖuꢀngoꢂiꢀ:ꢀꢀCãꢀ2ꢀkiÓuꢀd÷ꢀliÖuꢀngoꢁiꢀëꢀtrongꢀKeilꢀC51ꢀlꢁꢀXDATAꢀ
vꢁꢀPDATA.ꢀXDATAꢀlꢁꢀvïngꢀnhíꢀd÷ꢀliÖuꢀngoꢁiꢀcãꢀthÓꢀ®Þnhꢀ®ÞaꢀchØꢀ®−îcꢀ®Õnꢀ64ꢀKBꢀd÷ꢀ
liÖu.ꢀPDATAꢀlꢁꢀvïngꢀnhíꢀchøaꢀtõngꢀtrangꢀd÷ꢀliÖu.ꢀMçiꢀtrangꢀd÷ꢀliÖuꢀngoꢁiꢀchøaꢀ®−îcꢀ
256ꢀbyte.ꢀ§ÓꢀcãꢀthÓꢀtruyꢀcËpꢀ®−îcꢀbéꢀnhíꢀd÷ꢀliÖuꢀngoꢁi,ꢀtaꢀph¶iꢀdïngꢀtõꢀkho¸ꢀ_at_ꢀ®Óꢀ
®Þnhꢀ®ÞaꢀchØꢀchoꢀc¸cꢀbiÕn.ꢀ
VÝꢀdôꢀkhaiꢀb¸oꢀbiÕnꢀtrongꢀvïngꢀnhíꢀd÷ꢀliÖuꢀngoꢁiꢀ:ꢀ
ꢀ
ꢀ
floatꢀxdataꢀa1ꢀ_at_ꢀ0x2000;ꢀ//Khaiꢀb¸oꢀbiÕnꢀa1ꢀcãꢀ®ÞaꢀchØꢀ2000Hꢀ
unsignedꢀlongꢀpdataꢀa2ꢀ_at_ꢀ0x2004;ꢀ//ꢀBiÕnꢀa2ꢀcãꢀ®ÞaꢀchØꢀ2004ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
ConꢀtráꢀtrongꢀKeilꢀC51ꢀ®−îcꢀkhaiꢀb¸oꢀgièngꢀnh−ꢀkhaiꢀb¸oꢀconꢀtráꢀtrongꢀng«nꢀng÷ꢀC.ꢀ
VÝꢀdôꢀvÒꢀkhaiꢀb¸oꢀconꢀtráꢀ:ꢀ
ꢀ charꢀ*s;ꢀ//Conꢀtráꢀcñaꢀmétꢀstringꢀ
ꢀ intꢀ*p;ꢀ//ConꢀtráꢀkiÓuꢀintꢀ
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ– Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ20
ꢀ
Tải về để xem bản đầy đủ
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Kỹ thuật vi điều khiển - Chương 1: Tổng quan về vi điều khiển", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
giao_trinh_ky_thuat_vi_dieu_khien_chuong_1_tong_quan_ve_vi_d.pdf

