Giáo trình Kỹ thuật vi điều khiển - Chương 3: Xây dựng phần mềm - Lâm Tăng Đức

Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ3ꢀ:ꢀꢀX©yꢀdùngꢀphÇnꢀmÒmꢀ  
ꢀ
ꢀ
ꢀ
ꢀ
ꢀ
Ch−¬ngꢀIIIꢀ  
x©y dùng phÇn mÒm  
ꢀ
ꢀ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ꢀꢀ68ꢀ  
ꢀꢀꢀꢀꢀ  
ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ3ꢀ:ꢀꢀX©yꢀdùngꢀphÇnꢀmÒmꢀ  
ꢀ
ꢀ
Ch−¬ngꢀIIIꢀ  
x©y dùng phÇn mÒm  
3.1ꢀCh−¬ngꢀtr×nhꢀMONITORꢀchoꢀKITꢀ  
Doꢀch−¬ngꢀtr×nhꢀMONITORꢀcñaꢀhÖꢀthèngꢀphøcꢀt¹pꢀvꢁꢀkh¸ꢀlínꢀnªnꢀtaꢀsÏꢀtæꢀchøcꢀ  
thꢁnhꢀ nhiÒuꢀ moduleꢀ nháꢀ ghÐpꢀ l¹iꢀ víiꢀ nhau.ꢀ Mçiꢀ moduleꢀ thùcꢀ hiÖnꢀ mçiꢀ chøcꢀ n¨ngꢀ  
riªng,ꢀc¸cꢀmoduleꢀtrongꢀch−¬ngꢀtr×nh:ꢀꢀ  
ꢀꢀ+ꢀModuleꢀthùcꢀhiÖnꢀviÖcꢀhiÓnꢀthÞꢀLCD.ꢀ  
ꢀꢀ+ꢀModuleꢀqu¶nꢀlýꢀbꢁnꢀphÝm.ꢀ  
ꢀꢀ+ꢀModuleꢀqu¶nꢀlýꢀviÖcꢀ®äc/ghiꢀd÷ꢀliÖuꢀtrongꢀEEPROMꢀvꢁꢀRAM.ꢀ  
ꢀꢀ+ꢀModuleꢀt¹oꢀthêiꢀgianꢀtrÔ.ꢀ  
ꢀꢀ+ꢀCh−¬ngꢀtr×nhꢀchÝnhꢀ(Main).ꢀ  
ꢀꢀ+ꢀModuleꢀ®iÒuꢀkhiÓnꢀtruyꢀcËpꢀc¸cꢀthanhꢀghiꢀ®ÆcꢀbiÖtꢀvꢁꢀc¸cꢀ«ꢀnhíꢀbªnꢀtrongꢀchipꢀ  
viꢀ®iÒuꢀkhiÓnꢀchÝnh.ꢀꢀ  
ꢀꢀ+ꢀModuleꢀtruyÒnꢀth«ngꢀgiaoꢀtiÕpꢀvíiꢀm¸yꢀtÝnhꢀPC.ꢀ  
Mꢂꢀnguånꢀcñaꢀch−¬ngꢀtr×nhꢀhÖꢀ®iÒuꢀhꢁnhꢀ®−îcꢀgiíiꢀthiÖuꢀëꢀphÇnꢀphôꢀlôcꢀcñaꢀ®åꢀ  
¸n.ꢀ  
Sauꢀ®©yꢀlꢁꢀl−uꢀ®åꢀthuËtꢀto¸nꢀcñaꢀch−¬ngꢀtr×nhꢀMONITORꢀ:ꢀ  
ꢀ
ꢀ
ꢀ
ꢀ
ꢀ
ꢀ
ꢀ
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ– Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ69ꢀ  
ꢀꢀꢀꢀꢀ  
ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ3ꢀ:ꢀꢀX©yꢀdùngꢀphÇnꢀmÒmꢀ  
ꢀ
ꢀ
L−uꢀ®åꢀthuËtꢀto¸nꢀcñaꢀmoduleꢀMain:ꢀkhëiꢀt¹oꢀc¸cꢀthiÕtꢀ®Ætꢀbanꢀ®ÇuꢀchoꢀKITꢀvꢁꢀ  
c¸cꢀthiÕtꢀbÞꢀngo¹iꢀvi,ꢀhiÓnꢀthÞꢀmꢁnꢀh×nhꢀ1.ꢀ  
ꢀ
ꢀ
B¾tꢀ®Çu  
ꢀ
Khëiꢀt¹oꢀc¸cꢀbiÕn,ꢀc¸cꢀthiÕtꢀlËp  
banꢀ®Çuꢀchoꢀ8255  
Khëiꢀ®éngꢀLCD  
HiÓnꢀthÞꢀMAINꢀMENU  
Cꢁiꢀ®Ætꢀc¸cꢀng¾t  
ChoꢀphÐpꢀng¾tꢀngoꢁiꢀ0  
ChoꢀphÐpꢀng¾tꢀnèiꢀtiÕp  
N
Y
HiÓnꢀthÞ  
Mꢁnꢀh×nhꢀ1  
HiÓnꢀthÞ  
Mꢁnꢀh×nhꢀ2  
EEPROM  
trèng?  
HiÓnꢀthÞ  
mꢁnꢀh×nhꢀ4  
CallꢀDEMO  
Prog.  
Key=F2?  
CallꢀStep  
Mode  
Key=F1?  
HiÓnꢀthÞ  
mꢁnꢀh×nhꢀ4  
CallꢀDEMO  
Prog.  
Key=F2?  
KÕtꢀthóc  
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ– Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ70ꢀ  
ꢀꢀꢀꢀꢀ  
ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ3ꢀ:ꢀꢀX©yꢀdùngꢀphÇnꢀmÒmꢀ  
ꢀ
ꢀ
L−uꢀ®åꢀc¸cꢀch−¬ngꢀtr×nhꢀDEMOꢀ(Mꢁnꢀh×nhꢀ4)ꢀ  
B¾tꢀ®Çu  
HiÓnꢀthÞꢀmꢁnꢀh×nhꢀ1  
Xãaꢀbyteꢀ®ÖmꢀbꢁnꢀphÝm  
Ch¹yꢀLedꢀ®¬n  
DEMO  
Byteꢀ®Öm  
BUFꢀ=ꢀ1  
Byteꢀ®Öm  
BUFꢀ=ꢀ18  
Ch¹yꢀLedꢀ7  
®o¹nꢀDEMO  
Byteꢀ®Öm  
BUFꢀ=ꢀ2  
Byteꢀ®Öm  
BUFꢀ=ꢀ18  
Ch¹yꢀLedꢀma  
trËnꢀDEMO  
Byteꢀ®Öm  
BUFꢀ=ꢀ3  
Byteꢀ®Öm  
BUFꢀ=ꢀ18  
Ch¹yꢀBꢁnꢀphÝm,  
LCDꢀDEMO  
Byteꢀ®Öm  
BUFꢀ=ꢀ4  
Byteꢀ®Öm  
BUFꢀ=ꢀ18  
Ch¹yꢀADC,ꢀDAC  
DEMO  
Byteꢀ®Öm  
BUFꢀ=ꢀ5  
Byteꢀ®Öm  
BUFꢀ=ꢀ18  
Ch¹yꢀSTEPPER  
DEMO  
Byteꢀ®Öm  
BUFꢀ=ꢀ6  
Byteꢀ®Öm  
BUFꢀ=ꢀ18  
Ch¹yꢀRS232  
DEMO  
Byteꢀ®Öm  
BUFꢀ=ꢀ7  
Byteꢀ®Öm  
BUFꢀ=ꢀ18  
Byteꢀ®Öm  
BUFꢀ=ꢀ18  
(BSP)  
HiÓnꢀthÞꢀmꢁn  
h×nhꢀ1  
KÕtꢀthóc  
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ– Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ71ꢀ  
ꢀꢀꢀꢀꢀ  
ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ3ꢀ:ꢀꢀX©yꢀdùngꢀphÇnꢀmÒmꢀ  
ꢀ
ꢀ
L−uꢀ®åꢀch−¬ngꢀtr×nhꢀMONITORꢀch¹yꢀëꢀchÕꢀ®éꢀgìꢀrèiꢀSTEPꢀMODEꢀ(Mꢁnꢀh×nhꢀ3)ꢀ  
B¾tꢀ®Çu  
Khëiꢀt¹oꢀc¸cꢀbiÕn  
L−uꢀc¸cꢀthanhꢀghiꢀcÇnꢀthiÕt  
Gi¶ꢀlËpꢀCPUꢀnh−ꢀëꢀtr¹ngꢀth¸i  
RESET  
HiÓnꢀthÞꢀMꢁnꢀh×nhꢀ3  
(C¸cꢀthanhꢀghiꢀ®ÆcꢀbiÖtꢀꢂ  
SFR,ꢀR0ꢀꢂR7ꢀ...ꢀ)  
HiÓnꢀthÞꢀgîiꢀýꢀcho  
c¸cꢀlÖnhꢀF1,ꢀF2,ꢀBSP  
Xãaꢀbyteꢀ®ÖmꢀbꢁnꢀphÝm  
BUF  
ChêꢀvꢁꢀxöꢀlýꢀnhËp  
1ꢀbyteꢀvꢁoꢀbé  
®ÖmꢀBYTE1  
Y
N
BUFꢀ=ꢀ16  
(F1)  
BUFꢀ=ꢀ19  
(ENTER)  
Inꢀraꢀgi¸ꢀtrÞꢀBIT  
cÇnꢀxem  
YES  
(F1)  
Háiꢀcãꢀsöa  
kh«ng?ꢀꢂ  
Chêꢀvꢁꢀxöꢀlý  
nhËpꢀ1ꢀBIT  
ENTERꢀ=ꢀkh«ng  
söa  
NO  
(ENTER)  
N
BUFꢀ=19  
(ENTER)  
Y
CËpꢀnhËtꢀvïngꢀnhí  
1
2
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ– Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ72ꢀ  
ꢀꢀꢀꢀꢀ  
ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ3ꢀ:ꢀꢀX©yꢀdùngꢀphÇnꢀmÒmꢀ  
ꢀ
ꢀ
1
2
ChêꢀvꢁꢀxöꢀlýꢀnhËp  
2ꢀbyteꢀvꢁoꢀbé  
®ÖmꢀBYTE1,ꢀ2  
Y
N
BUFꢀ=ꢀ17  
(F2)  
BUFꢀ=ꢀ19  
(ENTER)  
N
Inꢀraꢀgi¸ꢀtrÞꢀBYTE  
cÇnꢀxem  
YES  
(F1)  
Háiꢀcãꢀsöa  
kh«ng?ꢀꢂꢀENTER  
=ꢀkh«ngꢀsöa  
Chêꢀvꢁꢀxöꢀlý  
nhËpꢀ1ꢀBYTE  
ꢀꢀꢀꢀNO  
(ENTER)  
N
BUFꢀ=19  
(ENTER)  
Y
N
P1.2ꢀ=ꢀ0  
(STEP)  
P1.2ꢀ=1  
(STEP)  
CËpꢀnhËtꢀvïngꢀnhí  
N
Y
Delayꢀchèngꢀrung  
RETI  
KÕtꢀthóc  
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ– Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ73ꢀ  
ꢀꢀꢀꢀꢀ  
ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ3ꢀ:ꢀꢀX©yꢀdùngꢀphÇnꢀmÒmꢀ  
ꢀ
ꢀ
L−uꢀ®åꢀch−¬ngꢀtr×nhꢀng¾tꢀngoꢁiꢀ0ꢀ(INT0)ꢀcñaꢀbꢁnꢀphÝmꢀ  
ꢀ
B¾tꢀ®Çu  
ꢀ
ꢀ
ꢀ
NhËnꢀmꢃꢀphÝm  
L−uꢀvꢁoꢀbyteꢀ®ÖmꢀbꢁnꢀphÝm  
ꢀ
ꢀ
ꢀ
ꢀ
ꢀ
ꢀ
ꢀ
ꢀ
N
Ch©nꢀng¾t  
ngoꢁiꢀ1ꢀ=ꢀ1?  
Y
KÕtꢀthóc  
3.2ꢀCh−¬ngꢀtr×nhꢀqu¶nꢀlÝꢀthiÕtꢀbÞꢀ  
3.2.1ꢀCh−¬ngꢀtr×nhꢀquÐtꢀbꢁnꢀphÝmꢀ  
Nh−ꢀ®ꢂꢀtr×nhꢀbꢁyꢀëꢀch−¬ngꢀ2,ꢀbꢁnꢀphÝmꢀsöꢀdôngꢀtrongꢀbéꢀKITꢀnꢁyꢀgåmꢀcãꢀ20ꢀ  
phÝm,ꢀ16ꢀphÝmꢀ®Çuꢀtiªnꢀ®−îcꢀs¾pꢀxÕpꢀtheoꢀkiÓuꢀmaꢀtrËnꢀvꢁꢀ4ꢀphÝmꢀcuèiꢀcïngꢀ®−îcꢀxÕpꢀ  
theoꢀmétꢀcétꢀnèiꢀ®Êtꢀchung.ꢀTrªnꢀbꢁnꢀphÝmꢀcñaꢀbéꢀKIT,ꢀ4ꢀphÝmꢀtrªnꢀmétꢀcétꢀnèiꢀ®Êtꢀ  
chungꢀlꢁꢀc¸cꢀphÝmꢀchøcꢀn¨ngꢀ:ꢀF1,ꢀF2,ꢀBACKꢀSPACEꢀvꢁꢀENTER.ꢀC¸cꢀphÝmꢀtõꢀ0ꢃ9ꢀvꢁꢀ  
AꢃFꢀdïngꢀ®ÓꢀnhËpꢀliÖu,ꢀc¸cꢀphÝmꢀchøcꢀn¨ngꢀcãꢀt¸cꢀdôngꢀkh¸cꢀnhauꢀtïyꢀtheoꢀng÷ꢀc¶nhꢀ  
cñaꢀmꢁnꢀh×nh,ꢀgîiꢀýꢀt¸cꢀdôngꢀcñaꢀc¸cꢀphÝmꢀbÊmꢀhiÓnꢀthÞꢀtrªnꢀmꢁnꢀh×nh,ꢀ®iÒuꢀnꢁyꢀgiópꢀ  
viÖcꢀlꢁmꢀquenꢀvꢁꢀthÝꢀnghiÖmꢀtrªnꢀKITꢀrÊtꢀthuËnꢀtiÖnꢀvꢁꢀdÔꢀdꢁngꢀchoꢀng−êiꢀhäc,ꢀnhÊtꢀlꢁꢀ  
khiꢀthÝꢀnghiÖmꢀëꢀchÕꢀ®éꢀdebug.ꢀ  
L−uꢀ®åꢀthuËtꢀto¸nꢀcñaꢀch−¬ngꢀtr×nhꢀquÐtꢀbꢁnꢀphÝmꢀnh−ꢀsau:ꢀ  
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ– Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ74ꢀ  
ꢀꢀꢀꢀꢀ  
ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ3ꢀ:ꢀꢀX©yꢀdùngꢀphÇnꢀmÒmꢀ  
ꢀ
ꢀ
L−uꢀ®åꢀthuËtꢀto¸nꢀcñaꢀch−¬ngꢀtr×nhꢀquÐtꢀbꢁnꢀphÝm:  
B¾tꢀ®Çu  
XuÊtꢀ1ꢀraꢀtÊtꢀc¶  
hꢁngꢀvꢁꢀcét  
Hꢁng  
1ꢀ=ꢀ1ꢀ?  
XuÊtꢀphÝm  
16ꢀ(F1)  
Y
Hꢁng  
2ꢀ=ꢀ1ꢀ?  
XuÊtꢀphÝm  
17ꢀ(F2)  
N
TÊtꢀc¶  
hꢁngꢀ=ꢀ1?  
Y
Hꢁng  
3ꢀ=ꢀ1ꢀ?  
XuÊtꢀphÝm  
18ꢀ(BSP)  
Y
Y
Hꢁng  
4ꢀ=ꢀ1ꢀ?  
XuÊtꢀphÝm  
19ꢀ(ENTER)  
Nèiꢀ®Êtꢀhꢁngꢀ1  
Y
Quayꢀtõngꢀbitꢀcñaꢀbyte  
chøaꢀc¸cꢀcétꢀlªnꢀcêꢀC  
G¸nꢀDPTRꢀchoꢀ®ÞaꢀchØ  
hꢁngꢀ1  
N
TÊtꢀc¶  
cétꢀ=ꢀ1?  
T¨ng  
DPTR  
C=0?  
Y
Y
Traꢀb¶ng  
XuÊtꢀmꢃꢀphÝm  
Nèiꢀ®Êtꢀhꢁngꢀ2  
Quayꢀtõngꢀbitꢀcñaꢀbyte  
chøaꢀc¸cꢀcétꢀlªnꢀcêꢀC  
G¸nꢀDPTRꢀchoꢀ®ÞaꢀchØ  
hꢁngꢀ2  
N
TÊtꢀc¶  
cétꢀ=ꢀ1?  
T¨ng  
DPTR  
C=0?  
Y
Y
Traꢀb¶ng  
XuÊtꢀmꢃꢀphÝm  
Nèiꢀ®Êtꢀhꢁngꢀ3  
Quayꢀtõngꢀbitꢀcñaꢀbyte  
chøaꢀc¸cꢀcétꢀlªnꢀcêꢀC  
G¸nꢀDPTRꢀchoꢀ®ÞaꢀchØ  
hꢁngꢀ3  
N
TÊtꢀc¶  
cétꢀ=ꢀ1?  
T¨ng  
DPTR  
C=0?  
Y
Y
Traꢀb¶ng  
XuÊtꢀmꢃꢀphÝm  
Nèiꢀ®Êtꢀhꢁngꢀ4  
Quayꢀtõngꢀbitꢀcñaꢀbyte  
chøaꢀc¸cꢀcétꢀlªnꢀcêꢀC  
G¸nꢀDPTRꢀchoꢀ®ÞaꢀchØ  
hꢁngꢀ4  
N
TÊtꢀc¶  
cétꢀ=ꢀ1?  
T¨ng  
DPTR  
C=0?  
Y
Y
Traꢀb¶ng  
XuÊtꢀmꢃꢀphÝm  
KÕtꢀthóc  
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ– Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ75ꢀ  
ꢀꢀꢀꢀꢀ  
ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ3ꢀ:ꢀꢀX©yꢀdùngꢀphÇnꢀmÒmꢀ  
ꢀ
ꢀ
3.2.2ꢀCh−¬ngꢀtr×nhꢀ®iÒuꢀkhiÓnꢀhiÓnꢀthÞꢀLCDꢀ  
§ÓꢀchoꢀLCDꢀcãꢀthÓꢀho¹tꢀ®éng,ꢀ®Çuꢀtiªnꢀtaꢀph¶iꢀkhëiꢀt¹oꢀLCD,ꢀb¸oꢀchoꢀnãꢀbiÕtꢀsèꢀ  
hꢁng,ꢀsèꢀkýꢀtùꢀhiÓnꢀthÞꢀtrªnꢀmétꢀhꢁng.ꢀC¸cꢀd÷ꢀliÖuꢀ®iÒuꢀkhiÓnꢀlÇnꢀl−îtꢀ®−îcꢀchuyÓnꢀvꢁoꢀ  
DataꢀBusꢀcñaꢀLCDꢀlꢁꢀ38H,ꢀ0EH,ꢀvꢁꢀ06H.ꢀSauꢀc¸cꢀlÖnhꢀkhëiꢀt¹oꢀLCDꢀnꢁyꢀtaꢀmíiꢀcãꢀthÓꢀ  
hiÓnꢀthÞꢀkýꢀtùꢀlªnꢀtrªnꢀmꢁnꢀh×nhꢀLCD.ꢀꢀꢀ  
C¸cꢀl−uꢀ®åꢀlꢁmꢀviÖcꢀvíiꢀLCDꢀnh−ꢀsau:ꢀ  
ꢀ
ꢀ
ChêꢀLCDꢀs½nꢀsꢁngꢀlꢁmꢀviÖc  
Khëiꢀt¹oꢀLCD  
B¾tꢀ®Çu  
B¾tꢀ®Çu  
TruyꢀcËp  
thanhꢀghiꢀlÖnh  
RSꢀ=0  
GöiꢀlÖnhꢀ®iÒuꢀkhiÓnꢀ38H  
GöiꢀlÖnhꢀ®iÒuꢀkhiÓnꢀ08H  
GöiꢀlÖnhꢀ®iÒuꢀkhiÓnꢀ01H  
GöiꢀlÖnhꢀ®iÒuꢀkhiÓnꢀ06H  
GöiꢀlÖnhꢀ®iÒuꢀkhiÓnꢀ0EH  
ChuyÓnꢀsangꢀchÕꢀ®é  
®äcꢀd÷ꢀliÖuꢀR/Wꢀ=1  
§−aꢀ1ꢀxungꢀtõꢀthÊpꢀlªn  
caoꢀëꢀch©nꢀEꢀcñaꢀLCD  
®Óꢀ®äcꢀd÷ꢀliÖu  
KÕtꢀthóc  
BitꢀD7ꢀ=ꢀ1?  
KÕtꢀthóc  
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ– Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ76ꢀ  
ꢀꢀꢀꢀꢀ  
ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ3ꢀ:ꢀꢀX©yꢀdùngꢀphÇnꢀmÒmꢀ  
ꢀ
ꢀ
GöiꢀlÖnhꢀ®iÒuꢀkhiÓnꢀraꢀLCD  
InꢀmétꢀkÝꢀtùꢀraꢀLCD  
B¾tꢀ®Çu  
B¾tꢀ®Çu  
§îiꢀLCDꢀs½nꢀsꢁng  
lꢁmꢀviÖc  
§îiꢀLCDꢀs½nꢀsꢁng  
nhËnꢀlÖnh  
§−aꢀd÷ꢀliÖuꢀraꢀc¸cꢀch©n  
d÷ꢀliÖuꢀcñaꢀLCD  
XuÊtꢀmꢃꢀlÖnh  
Chänꢀthanhꢀghi  
d÷ꢀliÖuꢀꢂꢀRSꢀ=ꢀ1  
TruyꢀcËpꢀthanhꢀghi  
lÖnhꢀꢂꢀRSꢀ=ꢀ0  
ChuyÓnꢀsangꢀchÕ  
®éꢀghiꢀꢂꢀR/Wꢀ=ꢀ0  
ChoꢀphÐpꢀghiꢀra  
LCDꢀꢂꢀR/Wꢀ=0  
Göiꢀ1ꢀxungꢀtõꢀcao  
xuèngꢀthÊpꢀ®Õn  
ch©nꢀEꢀcñaꢀLCDꢀ®Ó  
ghiꢀd÷ꢀliÖu  
§−aꢀ1ꢀxungꢀtõꢀcao  
xuèngꢀthÊpꢀëꢀch©n  
Eꢀ®Óꢀchètꢀd÷ꢀliÖu  
KÕtꢀthóc  
KÕtꢀthóc  
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ– Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ77ꢀ  
ꢀꢀꢀꢀꢀ  
ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ3ꢀ:ꢀꢀX©yꢀdùngꢀphÇnꢀmÒmꢀ  
ꢀ
ꢀ
3.3ꢀCh−¬ngꢀtr×nhꢀgiaoꢀtiÕpꢀm¸yꢀtÝnh  
ꢀ
ꢀ
Ch−¬ngꢀtr×nhꢀgiaoꢀtiÕpꢀgi÷aꢀbéꢀKITꢀvíiꢀm¸yꢀtÝnhꢀ®−îcꢀviÕtꢀb»ngꢀng«nꢀng÷ꢀDelphiꢀ  
GiaoꢀdiÖnꢀcñaꢀch−¬ngꢀtr×nhꢀtrªnꢀm¸yꢀtÝnhꢀPCꢀnh−ꢀh×nhꢀvÏꢀ  
- Ch−¬ngꢀtr×nhꢀchoꢀphÐpꢀn¹pꢀch−¬ngꢀtr×nhꢀcñaꢀng−êiꢀsöꢀdôngꢀvꢁoꢀEEPROM,ꢀ  
sauꢀ®ãꢀsÏꢀch¹yꢀtrªnꢀKIT,ꢀcãꢀthÓꢀch¹yꢀ®écꢀlËp,ꢀtøcꢀkh«ngꢀcãꢀsùꢀ®iÒuꢀkhiÓnꢀcñaꢀ  
MONITORꢀꢃꢀchÕꢀ®éꢀSTEPꢀhoÆcꢀch¹yꢀtõngꢀlÖnhꢀ®Óꢀdebugꢀvꢁꢀtheoꢀdâiꢀgi¸ꢀtrÞꢀbéꢀnhí,ꢀ  
c¸cꢀthanhꢀghiꢀ®ÆcꢀbiÖtꢀSFR,ꢀR0ꢃR7ꢀtrªnꢀmꢁnꢀh×nhꢀLCDꢀcñaꢀKIT.ꢀ  
- TrªnꢀgiaoꢀdiÖnꢀcñaꢀch−¬ngꢀtr×nhꢀcãꢀthÓꢀdownloadꢀfileꢀd¹ngꢀHexaꢀcñaꢀch−¬ngꢀ  
tr×nhꢀxuèngꢀbéꢀKITꢀvꢁꢀcãꢀthÓꢀuploadꢀnéiꢀdungꢀbéꢀnhíꢀEEPROMꢀcñaꢀKIT.ꢀ  
- C¸cꢀnótꢀchøcꢀn¨ngꢀtrªnꢀgiaoꢀdiÖnꢀ:ꢀ  
ꢀꢀꢀꢀꢀꢀ  
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ– Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ78ꢀ  
ꢀꢀꢀꢀꢀ  
ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ3ꢀ:ꢀꢀX©yꢀdùngꢀphÇnꢀmÒmꢀ  
ꢀ
ꢀ
ꢀ
+ꢀOPENꢀandꢀCOMPILE:ꢀꢀMëꢀmétꢀfileꢀmꢂꢀlÖnhꢀd¹ngꢀhîpꢀng÷ꢀ(*.asm)ꢀvꢁꢀ  
biªnꢀdÞchꢀ(Compile)ꢀthꢁnhꢀfileꢀHEXꢀhoÆcꢀfileꢀ®ꢂꢀcompileꢀd−íiꢀd¹ngꢀHEXAꢀ(*.hex)ꢀ®Óꢀ  
n¹pꢀtrùcꢀtiÕpꢀxuèngꢀKIT.ꢀKÕtꢀqu¶ꢀcompileꢀ®−îcꢀhiÓnꢀthÞꢀtrongꢀcöaꢀsæꢀCompileꢀLog.ꢀ  
ꢀꢀꢀꢀꢀ+ꢀOPENꢀHexꢀfile:ꢀꢀMëꢀmétꢀfileꢀmꢂꢀlÖnhꢀ®ꢂꢀ®−îcꢀbiªnꢀdÞchꢀd¹ngꢀhexaꢀ  
(*.hex)ꢀvꢁꢀdÞchꢀng−îcꢀ(Disasemble)ꢀthꢁnhꢀfileꢀmꢂꢀlÖnhꢀASMꢀ(*.d51).ꢀKÕtꢀqu¶ꢀdÞchꢀ  
ng−îcꢀhiÓnꢀthÞꢀtrongꢀcöaꢀsæꢀASMꢀcode,ꢀmꢂꢀm¸yꢀcñaꢀbéꢀnhíꢀhiÓnꢀthÞꢀtrongꢀcöaꢀsæꢀ  
Opcode.ꢀKÕtꢀqu¶ꢀcompileꢀ®−îcꢀhiÓnꢀthÞꢀtrongꢀcöaꢀsæꢀCompileꢀLog.ꢀ  
ꢀ
+ꢀDOWNLOADꢀ:ꢀChoꢀphÐpꢀdownloadꢀfileꢀHexꢀ®−îcꢀmëꢀhoÆcꢀCompileꢀtõꢀ  
fileꢀmꢂꢀlÖnhꢀASMꢀxuèngꢀbéꢀnhíꢀcñaꢀKIT.ꢀ  
ꢀ
+ꢀUPLOAD :ꢀꢀChoꢀphÐpꢀ®äcꢀnéiꢀdungꢀch−¬ngꢀtr×nhꢀcñaꢀng−êiꢀsöꢀdôngꢀ®ꢂꢀ  
®−îcꢀn¹pꢀvꢁoꢀbéꢀnhíꢀcñaꢀKITꢀtõꢀlÇnꢀn¹pꢀtr−íc.ꢀ  
ꢀ
+ꢀEraseꢀEEPROM:ꢀChoꢀphÐpꢀxãaꢀEEPROM.ꢀ  
Ch−¬ngꢀtr×nhꢀMONITORꢀ®−îcꢀviÕtꢀd−íiꢀd¹ngꢀhîpꢀng÷ꢀ(Assembly),ꢀbanꢀ®Çuꢀkhiꢀ  
thamꢀkh¶oꢀcãꢀthÓꢀg©yꢀkhãꢀkh¨nꢀchoꢀng−êiꢀ®äcꢀtuyꢀnhiªnꢀhîpꢀng÷ꢀꢀlꢁmꢀchoꢀng−êiꢀhäcꢀ  
cãꢀthÓꢀhiÓuꢀrâꢀvꢁꢀn¾mꢀv÷ngꢀvÒꢀcÊuꢀtrócꢀphÇnꢀcøngꢀcñaꢀhäꢀviꢀ®iÒuꢀkhiÓnꢀ8051ꢀh¬nꢀnh−ꢀ  
c¸chꢀtæꢀchøcꢀbéꢀnhí,ꢀc¸chꢀthùcꢀhiÖnꢀmétꢀng¾t,ꢀvÞꢀtrÝꢀcñaꢀc¸cꢀvectorꢀng¾t,ꢀc¸cꢀho¹tꢀ®éngꢀ  
®Þnhꢀthêi,ꢀhiÓuꢀrâꢀvÞꢀtrÝꢀb¶nꢀ®åꢀbéꢀnhí,ꢀc¸cꢀthanhꢀghiꢀ®ÆcꢀbiÖtꢀSFRꢀ...ꢀNgoꢁiꢀraꢀkhiꢀsöꢀ  
dôngꢀhîpꢀng÷ꢀtaꢀkh«ngꢀph¶iꢀphôꢀthuécꢀvꢁoꢀc¸cꢀtr×nhꢀbiªnꢀdÞchꢀhçꢀtrîꢀb»ngꢀng«nꢀng÷ꢀ  
bËcꢀcaoꢀnh−ꢀC,ꢀBasicꢀ...ꢀ  
Sauꢀ®©yꢀtaꢀ®iꢀx©yꢀdùngꢀc¸cꢀnéiꢀdungꢀthÝꢀnghiÖmꢀcÇnꢀthiÕtꢀchoꢀng−êiꢀhäcꢀ®Óꢀquaꢀ  
®ãꢀng−êiꢀhäcꢀtõngꢀb−ícꢀn¾mꢀrâꢀcÊuꢀtrócꢀvꢁꢀc¸chꢀlËpꢀtr×nhꢀchoꢀhäꢀviꢀ®iÒuꢀkhiÓnꢀ8051.ꢀ  
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ– Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ79ꢀ  
ꢀꢀꢀꢀꢀ  
ꢀ
pdf 12 trang Thùy Anh 12160 Free
Bạn đang xem tài liệu "Giáo trình Kỹ thuật vi điều khiển - Chương 3: Xây dựng phần mềm - Lâm Tăng Đức", để 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:

  • pdfgiao_trinh_ky_thuat_vi_dieu_khien_chuong_3_xay_dung_phan_mem.pdf