You are on page 1of 18

Ngiboco: NguynTrungChnh Tiliu: TUT02.

02
Ngy: 1/30/2006 Trang: 1/18

Tutorial02.02

Gin: picvietnam@googlegroups.com
Nidung: HmDelay
MICROSOFTWORD

Tmtt:
Tutorialpostlnpicvietnam,topicPIC16F877ATDTIKHthuclungCBNV
VIIUKHINVPICvinidung:
Vintslcvmcchvtcdngcachngtrnhdelay.
- Phntchsourcecodemtschngtrnhdelay.
- Tptrungphntch,khaithcchngtrnhdelaycaNigelnhmtdngchngtrnhdelay
cchunha.
TutorialnysdngkhnhiucckinthctrongtutorialcaNigel.

1. Vintslcvchngtrnhdelay.
1.1. Chukxungclockvchuklnh
Trong phn ny ta s bn n mt vi kin thc c s phc v cho vic vit chng
trnhdelay.CthltmhiuvchukxungclockvchuklnhtrongviiukhinPIC.
Tabitviiukhinhotngccnphicungcpmtngunxungclockt
bnngoi.iviviiukhinPIC,ngunxungclockcthlmtmchdaongRC
ngin,mtthchanh,...Ttnhin,yucucangunxungclockphilcngnnh
cngtt.
Thng thng, ngun xung s dng cho vi iu khin ni chung v PIC ni ring l
thchanhviccuimgithnhkhngcao,khnnhvrtthuntintrongvic
tnh ton, thit k mch ng dng v chng trnh cho vi iu khin. Trong bi ny, ta
cngsdngthchanhlmngunxungchoviiukhin.
Mithchanhcmttnsdaongcnh,tagitnslf0,thngthngf0c
cctns4MHz,10MHz,20MHz,...Tytheomiloiviiukhinmyucuivi
f0cthkhcnhau.iviviiukhinPIC16F877A,tnsdaongf0 phinhhn
hoc bng 20 MHz, y cng l tn s hot ng ti a m a s cc vi iu khin PIC
thucdngmidrangeckhnngpngc.Chukdaongcathchanhtagil
t0vctnhtheocngthc:
t0=1/f0 (1)
Rtcbn!Khngcgcnchthchthmchocngthcny.
Ngiboco: NguynTrungChnh Tiliu: TUT02.02
Ngy: 1/30/2006 Trang: 2/18


Tacngbitrngchailikintrcdngtchcmtviiukhin,lkin
trcVonNeumanvkintrcHavard.ViiukhinPICctchctheolikintrc
Havard.Takhngi suvocclikintrcny,mchcnbitrngvilikintrc
Havard, mi lnh s c thc thi xong trong mt khong thi gian l mt chu k lnh.
Khongthigiannyluncnhvphthucvochukcaxungclock.
Ta c mt nh ngha mang tnh ... i khi nh sau: chu k lnh ca vi iu khin
PIClkhongthigianmviiukhinPICthcthixongmtlnh.Tagithigianca
mtchuklnhlti.
thcthixongmtlnh,viiukhinPICcnn4chukxungclock.Nhvythi
gianthcthixongmtlnhsctnh:
ti=4t0 (2)
Thaycngthc(1)vocngthc(2)tacccngthctnhthigiancamtlnh
(mtchuklnh)nhsau:
ti=4/f0 (3)
Vd:nutasdngthchanhloi4MHzththigianthcthimtlnhcaviiu
khinl:
ti=4/(4106)=1s
thuntinchovictnhtonvthitkchngtrnhdelay,tassdngloithch
anh4MHzchomchngdng,vnhccbnthy,thigianthcthimtlnhcavi
iukhinlcdl1s.Quchn!

1.2. Mcchvtcdngcachngtrnhdelay
Nhtathymc1.1,thigianthcthilnhcamtviiukhinlrtnhanhso
vitccmnhnsvthintngcaconngi.iunygynhiukhkhncho
vicgiaotipgiaconngivimtviiukhincngnhkhkhntrongviccm
nhnbnggicquanktquccthaotccamtviiukhin.
Vdu,tadngviiukhiniukhinmtLEDchpttlintc.Vithaotcny
viiukhinchcnhaichuklnhlhonttmtchukchptt,vthigiancami
chuksl2s(khisdngthchanh4MHz),vtrongmtgiy,LEDschptt500000
ln.Trongkhimtngichcthnhnbitc24hnhnhtrongmtgiy.iuny
cnghal,mtngingoihnhtinh,viconmtctcxlhnhnhnhanhhn,
khichngkinhintngtrnsnirng:Eh,ngitrit,tithyccigang
chptt.Cnngitrit,vitcxlhnhnhcamtl24hnhtrong1giy,khi
chngkinhintngtrnsnirng:Khng,ngingoihnhtinh,tithynsng
lintcch!.
Ngiboco: NguynTrungChnh Tiliu: TUT02.02
Ngy: 1/30/2006 Trang: 3/18

Nhvy,lmsaomtngicmnhncLEDangchptt,cchduynhtl
phigimslnchptttrong1giynhhn24,ccthaotcviiukhinhinthcho
conngithychintngtrnlnltsl:
- BtLEDsngln
- ChmtchtchotikhimtnhnchnhnhLEDsng.
- TtLED
- ChmtchtchotikhimtnhnchnhnhLEDtt.
- Lpliccthaotctrn.
Nhtabit,doviiukhinkhngccilnhgilchmtcht,chonnkhi
nimchngtrnhdelaymicphtsinhthchinqutrnhch.
Cthnichngtrnhdelayngmtvaitrquantrngtrongccthaotchinth.
Bncnh,chngtrnhdelaycncvaitrquantrngtrongvicgiaotipviccthit
bkhc,khimtcxlcaviiukhinvccthitbkhngngnht.Ngoira,ta
cn s dng chng trnh delay trong nhiu tnh hung thc t cn ra lnh cho vi iu
khinphich.

2. Xydngchngtrnhdelay
2.1. Cclnhsdngchochngtrnhdelay
Ngoicclnhccpntrongbi1,tacnsdngthmcclnhsaucho
chngtrnhdelay:
LnhDECFSZ
Cphp: DECFSZ thanh_ghi,noi_den
Lnh1
Lnh2
Tcdng:Gimgitrchatrongthamsthanh_ghivsosnhvi0.
- Nugitrsaukhigimkhc0,lnh1cthcthi.
- Nugitrsaukhigimbng0,lnh1khngcthcthivcthaybng
lnhNOP(khnglmgc).
Thamsnoi_dendngxcnhnilugitrthanhghithanh_ghisaukhi
gim. Khi khng s dng tham s noi_den, trnh bin dch s mc nh l kt qu
cchatrongthanhghiW.
- Nuthamsnoi_denbng1,ktqucchatrongthanhghithanh_ghi.
- Nuthamsnoi_denbng0,ktqucchatrongthanhghiW.
Ngiboco: NguynTrungChnh Tiliu: TUT02.02
Ngy: 1/30/2006 Trang: 4/18

LnhRETURN
Cphp: RETURN
Tcdng: trvchngtrnhchnhtchngtrnhcon.
LnhRETLW
Cphp: RETLW tham_so (0tham_so255)
Tcdng: trvchngtrnhchnhtchngtrnhconvigitrtham_so
cchatrongthanhghiW.

2.2. Thuttonchochngtrnhdelay
Tabitphn1,chngtrnhdelaylchngtrnhdngralnhchoviiu
khin...chmtcht(tmthinhnghamtcch...ikhinhvy).iuny
cngngnghavivicralnhchoviiukhinlmmtcngvicvnghano
trongmtkhongthigiandotaquytnh.
TrongtplnhcaviiukhinPIC,taclnhNOP.Lnhnyctcdungralnh
cho vi iu khin ... khng lm g c, v thi gian thc thi lnh ny cng l 1 chu k
lnh.Nhuvy,taccnthitphixydngthuttonchochngtrnhdelay,vch
cn...NOPlintclxong?Hontonkhngnginnhvy,vkhitasgp
phiccvnsau:
- Thnht,cithuttoncv...khngbnhthng.
- Th hai, vit chng trnh nh vy th rt mi tay (mun ra lnh cho vi iu
khin ch 1 ms,bn phivitivit li cilnhNOP...1000 ln nu s dng
loithchanh4MHz).
- Thba,dunglngbnhchngtrnhbphphmmtcch...qung.
Rrngltakhngthvitchngtrnhdelaytheocch.Vvickhcphctt
cccnhcimnutrncnglcctiuchtrachomtchngtrnhdelay,
l:ngngonvthuntinchovicsdng.
Mtphngphpthngsdngvitccchngtrnhdelaylchoviiukhin
... nhy ti nhy lui my ci label. Tuy nhin kim sot c thi gian delay do
chngtrnhtora,tacntnhtonccgitrtrongchngtrnhmtcchphhp.
Sauytasdisuvoccthuttondngvitchngtrnhdelayny.

2.2.1 Thutton1
TrongthuttonnytasdnglnhDECFSZxydngchngtrnhdelay.
onchngtrnh1:xtmtoncodenhsau
Ngiboco: NguynTrungChnh Tiliu: TUT02.02
Ngy: 1/30/2006 Trang: 5/18



MOVLW d20 ;agitr20vothanhghiW
MOVWFdelayreg ;delayreg<20
loop
DECFSZdelayreg,0 ;gimgitrtrongthanhghidelayreg
;vsosnhvi0,ktquchatrongW
GOTOloop ;nugitrithanhghidelay_regkhc0
;thnhytilabelloop
;cclnhtiptheosauonchngtrnhdelaysau
;khigitrtrongthanhghidelayreggimv0.

on chng trnh delay c th hin trong vng lp loop. Ta thy lnh
DECFSZ ...cnmtchuklnhthcthi,lnhGOTO ... cn 2 chu k
lnh,khigitrtrongthanhghidelayregsbgimimtnv.Nhvy
gitrtrongthanhghidelayreggimmtnv,tacn(1+2)=3chuklnhv
qungthigiancnthitgitrtrongthanhghidelayreggimmtnvsl3ti
(tinhcpntrongphntrnlthigiancamtchuklnh).
Trongvdtrn,dotaavothanhghidelayreggitr20chonnslngim
gitrthanhghidelayregsl(20+1)=21.TacthtnhcthigiandelayTdo
onchngtrnhtrntorasl:
T=3(20+1)ti
V d, nu ta s dng loi thch anh 4 MHz th mt chu k lnh s c thi gian
ti=1s,doonchngtrnhtrnstorakhongthigiandelay:
T=3(20+1)1s=63s
Mtcchtngqut,tacthsuyraccngthctnhthigiandelaychoon
chngtrnhtrnnhsau:
T=3(N+1)ti (4)
TrongNlgitravothanhghidelayreg.
nytacthhnhdungcmtcchslccchtnhtonthigiandelay
T ca mt chng trnh delay. Thi gian T ny s ph thuc vo cu trc gii thut
chngtrnhdelayvthigianmtchuklnhti.
Ngiboco: NguynTrungChnh Tiliu: TUT02.02
Ngy: 1/30/2006 Trang: 6/18

Mtimcnchthngthngccthanhghitasdnglthanhghi8bit,cho
nngitrtiacthavomtthanhghil255.Vythigiandelaylnnhtm
onchngtrnhdelaytrncthtoral:
Tmax=3x(255+1)ti
Mun to thi gian delay lu hn, ta phi tng s lng cc vng lp ln. on
chngtrnhsauminhhacchtngslngvnglpchochngtrnhdelay:

onchngtrnh2:
MOVLW d255
MOVWF delayreg1 ;agitr255vothanhghidelayreg1
loop
DECFSZ delayreg1,0 ;gimgitrthanhghidelayreg1vsosnhvi0
GOTO loop1 ;nuchabng0nhytilabelloop1
GOTO next ;nubng0chngtrnhdelayhontt
loop1
MOVLW d255
MOVWF delayreg2 ;avothanhghidelayreg2gitr255
DECFSZ delayreg2,0 ;gimgitrthanhghidelayreg2vsosnhvi0
MOVWF loop1 ;nuchabng0thnhynlabelloop1
GOTO loop ;nubng0thnhynlabelloop
next

Taxtonchngtrnhtlabelloop1trc.onchngtrnhnytngt
nh on chng trnh 1, cho nn cch tnh thi gian delay trong on chng trnh
nykhngcgthayi.GitrNtrongcngthc4stngngvigitrN2a
vothanhghidelayreg2(255).TagiT2lthigiandelaydoonchngtrnhny
torathT2sctnhnhsau:
T2=3(N2+1)ti (5)
Khigitrtrongthanhghidelayreg2gimv0thcclnhtlabelloopc
thcthi.thiimnygitrtrongthanhghidelayreg1sgimimtnvv
tiptcthcthivnglploop1.NhvysaumtkhongthigianT2,gitritrong
thanhghidelayreg1sgimimtnv,vnutagiN1lgitravothanh
ghidelayreg1thslngimgitrtrongthanhghidelayreg1sl(N1+1).Nh
vythigiandelayTdoonchngtrnh2toral:
T=(N1+1)T2=3(N1+1)(N2+1)ti (6)
Datheoccgitravotrongonchngtrnh2tacthtnhcthigian
delaydoonchngtrnhtrntoranhsau:
Ngiboco: NguynTrungChnh Tiliu: TUT02.02
Ngy: 1/30/2006 Trang: 7/18

T=3(255+1)(255+1)ti=196608ti
Nus dngloi thchanh4 MHzththigiandelaydoonchng trnh trn
toral196608s.
Nhvy,tyvothigiandelaycnthitvtyvoloithchanhsdngtrong
mchmtacthaccgitrN1vN2voccthanhghidelayreg1vdelay
reg2mtcchthchhpdavocngthc(6).
V d: tnh ton cc gi tr a vo thanh ghi delayreg1 v delayreg2 thi gian
delaydoonchngtrnh2toral90ms.Gistaangsdngloithchanh4MHz.
Tagiibitonnhsau:doloithchanhtasdngctns4MHznnti=1s.
Dotac
(N1+1)(N2+1)=T/3ti=90103/(31106)=30103
Nuchngitravothanhghidelayreg2lN2 =199thgitrN1avo
thanhghidelayreg1sl:
N1=30103/(199+1)1=149
Mt im cn ch l bn cnh vic tha mn cng thc (6), cc gi tr N1 v N2
phithamniukin:
0<N1<256v0<N2<256 (7)
Thuttontrnchophptagiiquytkhtritccvndnhchomtchng
trnhdelay.Tuynhin,nhcimcathuttontrnl:trongtrnghpcnnhiu
thigiandelaykhcnhau,taphivitnhiuchngtrnhdelaykhcnhautngng.
Thut ton 2 cho chng trnh delay c pht trin da trn thut ton 1 cho php
khcphcnhcimtrnvsctrnhbycthphntiptheo.

2.2.2 Thutton2
Ccbncthddngnhnraylthuttonchochngtrnhdelaycs
dngtrongtutorialcaNigel.Phnnys phntchcthgiithutvsourcecode
caonchngtrnhdelayny.Vthhinthitntrngtcgi,tutorialny
vnginguynmlnhnhtrongtutorialcaNigel.
Gistaangsdngloithchanh4MHz.Taxtoncodesau:
onchngtrnh3:
MOVLW d90
MOVWF count1 ;agitr90vothanhghicount1
d1
MOVLW d199
Ngiboco: NguynTrungChnh Tiliu: TUT02.02
Ngy: 1/30/2006 Trang: 8/18

MOVWF counta ;agitr199vothanhghicounta


MOVLW d1
MOVWF countb ;agitr1vothanhghicountb
delay_0
DECFSZ counta,1 ;gimgitrtrongthanghicountavsosnhvi0
GOTO $+2 ;nuchabng0,nhytilnhGOTOdelay_0
DECFSZ countb,1 ;nubng0,gimgitrtrongthanhghicountb
GOTO delay_0 ;countbsaukhigimcgitrbng0nnlnhny
;khngcthcthi
DECFSZ count1,1 ;gimgitrtrongthanhghicount1
GOTO d1 ;nhyvlabeld1
;cclnhtiptheocachngtrnhchnhsauon
;chngtrnhdelay

TrctintalunlnhGOTO$+2.Lnhnyctcdngnhytilnhth
haiktdnglnhGOTO$+2,tclnhynlnhGOTOdelay_0.Honton
tngt ta cth dnglnhccutrctngt nhynbt c dnglnh no
trongchngtrnhthngquavicthaythhngssaudu$.
Ta xt on code bt u t label delay_0 trc. Lnh DECFSZ counta,1 mt
mt chu k lnh thc thi. Nu gi tr cha trong thanh ghi counta cha bng 0 th
lnhGOTO$+2cthcthi.Lnhnymthaichuklnh.Tiptheo,lnhGOTO
delay_0cthcthi.Lnhnycngmthaichuklnh.Sau,gitrtrongthanh
ghi counta tip tc c gim. n y ta nhn thy rng, gim mt gi tr trong
thanhghicounta,tamtht5chuklnh(1chuklnhcholnhDECFSZcounta,1,2
chuklnhcholnhGOTO$+2v2chuklnhcholnhGOTOdelay_0),vdo
gitravothanhghicountal199nnthigiancnthitthanhghicountagim
htgitrv0l:
Ta=5(199+1)ti
Dotaangsdnglaithchanh4MHznnTasmanggitr1000shay1ms.
Khigitrtrongthanhghicountabng0,lnhGOTO$+2skhngcthcthi
mthayvollnhNOP,tiptheolnhDECFSZcountb,1scthcthi.Ta
thygitravothanhghicountbl1nnsaukhigimcountbsbng0nnlnh
GOTOdelay_0scthaybnglnhNOPvtiptheo,lnhDECFSZcount1,1s
Ngiboco: NguynTrungChnh Tiliu: TUT02.02
Ngy: 1/30/2006 Trang: 9/18

cthcthi.Sauchngtrnhquaytrvlabeld1thchinvicnplicc
gitrchothanhghicounta,countbvtiptcthcthioncoedetlabeldelay_0.
Nhvyvicagitr1vothanhghicountbthcchtchlthchinqu
trnhchuyntipmikhithanhghicountagimv0.Voncodetlabeldelay_0
thcchtltorathigiandelaygnng1msdotabquamtschuklnh
trongbcchuyntip(lumtlnnaltaangsdngloithchanh4MHz),
saugitrtrongthanhghicount1cgim1nv.Vnglpctiptcchon
khi gi tr trong thanh ghi count1 c gim v 0. Khi lnh GOTO d1 khng
c thc thi na v qu trnh to thi gian delay kt thc, cc lnh tip theo trong
chngtrnhchnhstiptccthcthi.
nytacthnhnthyrngcmi1msthgitrtrongthanhghicount1s
gimi1nv.Do,muntorabtcmtthigiandelaynolbisca1ms,
tachvicagitrtngngvothanhghicount1.Trongvdonchngtrnh
3,dotaavothanhghicount1gitr90nnthigiandelaysl90ms.Honton
tngtchovictorathigiandelay10ms,50ms,100ms,150ms,200ms,tacng
ddngnhnthylthigiandelaytiadoonchngtrnhtrntoral255ms.
Viccthaotcthngthngdnhchoviiukhin,cthniylthigiandelay
lntacthsdng.
Thutton2tuydihnvsdngnhiuthanhghihnsovithutton1nhng
ncnhiuuimhnthutton1dotnhlinhngvdsdngcan.Tacth
s dngon chng trnh delaynynh mtchng trnh delay mu cho vicxy
dngccngdngchoviiukhinPIC.
Trongtrnghp s dng lai thchanhctns cao hn,tacth kt hphai
thutton1v2torathigiandelaymongmun.

3. ngdng
Trong cc phn trn, ta c th hnh dung c mc ch, tc dng v mt s gii
thutchovicxydngmtchngtrnhdelay.Bygillcsdngcckinthc
choccngdngcth.
ngdng1:
Ta s pht trin ng dng u tin cho chng trnh delay t mch nguyn l v
chngtrnhcxydngtrongbi1.Trongbi1,tathchinvitxutccgi
tr ra PORTB v kim chng bng cc LED gn vo PORTB. By gi ta s vit chng
trnhchottcccLEDgnvoPORTBchpttsaumikhongthigian100ms.
Giithutchochngtrnhchccngkhngcgphingbn,ccbcthchin
lnltsl:
Ngiboco: NguynTrungChnh Tiliu: TUT02.02
Ngy: 1/30/2006 Trang: 10/18

- BtttcccLEDPORTB
- Delay100ms
- TtttcccLEDPORTB
- Delay100ms
- Lpliccthaotctrn
Chngtrnhscvitnhsau:

Chngtrnh2.1:

;=============================================================================
;WWW.PICVIETNAM.COM
;Laptrinh: NGUYENTRUNGCHINH
;Ngaybatdau: 23thang01nam2006
;Ngayhoanthanh: 23thang01nam2006
;Kiemtrachuongtrinh:DoanHiep,DoanMinhDang,
; picvietnam@googlegroups.com
;Ngaykiemtra:
;SudungvidieukhienMicrochip: PIC16F877A
title chuongtrinh21.asm
processor 16f877a
include <p16f877a.inc>
__CONFIG _CP_OFF&_WDT_OFF&_BODEN_OFF&_PWRTE_ON&
_XT_OSC&_WRT_OFF&_LVP_OFF&_CPD_OFF

;Capnhatvabosung:
;Motachuongtrinh: ChuongtrinhdungdedieukhientatcacacLEDganvao
; PORTBchoptatlientucsaumoikhoangthoigian100ms.
; Khongsudungchuongtrinhcon
;Motaphancung: 8LEDduocganvaoPORTBthongquacacdientro,cac
; thanhphandikembaogomthachanh,machresetvanguon
;=============================================================================
Ngiboco: NguynTrungChnh Tiliu: TUT02.02
Ngy: 1/30/2006 Trang: 11/18

;
;Khoitaocacbien
;
count1 EQU 0x20 ;cacbiendungchodoanchuongtrinhdelay
counta EQU 0x21
countb EQU 0x22
;=============================================================================
;CHUONGTRINHCHINH
;=============================================================================
ORG 0x000
GOTO start
start
;
;KhoitaoPORTB
;
BCF STATUS,RP1
BSF STATUS,RP0 ;chonBANK1

CLRF TRISB ;PORTB<output

BCF STATUS,RP0 ;chonBANK0
;
;Vonglapchinh
;
loop
MOVLW 0XFF
MOVWF PORTB ;battatcacacLEDoPORTB

MOVLW d100 ;doanchuongtirnhtaothoigiandelay100ms
MOVWF count1
Ngiboco: NguynTrungChnh Tiliu: TUT02.02
Ngy: 1/30/2006 Trang: 12/18


d1_1
MOVLW d199
MOVWF counta
MOVLW d1
MOVWF countb

delay_01
DECFSZ counta,1
GOTO $+2
DECFSZ countb,1
GOTO delay_01
DECFSZ count1,1
GOTO d1_1 ;hetdoanchuongtrinhdelay

CLRF PORTB ;tatcacLEDoPORTB

MOVLW d100 ;doanchuongtrinhdelay100ms
MOVWF count1

d1_2
MOVLW d199
MOVWF counta
MOVLW d1
MOVWF countb

delay_02
DECFSZ counta,1
GOTO $+2
DECFSZ countb,1
Ngiboco: NguynTrungChnh Tiliu: TUT02.02
Ngy: 1/30/2006 Trang: 13/18

GOTO delay_02
DECFSZ count1,1
GOTO d1_2 ;hetdoanchuongtrinhdelay1ms

GOTO loop ;trovevonglapchinhcuachuongtrinh
END


Vi chng trnh trn, ta c th quan st cc hin tng do vi iu khin to ra
PORTBthngquaccLED.Dothigiandelayl100mschonntrong1giytrngthi
caLEDsthayi10ln.iunychophptaquanstcbngmtthng.bygi,
cc bn hy th gim thi gian delay xung nh dn (gim gi tr a vo thanh ghi
count1),xemhintnggsxyra.Khithigiandelaygimnmtgitrno,ta
sccmgicrngccLEDkhngcnchpttna,mssngmtcchlintc.
Taddngnhnthymtnhcimtrongchngtrnhtrnlphivitivitli
chng trnh delay n hai ln, v mt ln na, vn v dung lng b nh chng
trnhctra.Mtgiiphpkhcphcnhcimtrn,lchngtrnhcon.
Mtchngtrnhconcthtmhiulmtoncodenoclpilplinhiu
lntrongchngtrnhchnh,vthayviphivitivitlioncodenhiuln,tat
chconcodethnhmtchngtrnhconvgioncodetchngtrnhchnh
thng qua lnh CALL. Mt chng trnh con s bt u bng 1 label v kt thc bng
lnhRETURNhoclnhRETLW.
C th ni chng trnh con gip ta c nhiu phng n hn trong vic t chc mt
chngtrnhvitchoviiukhin.
By gi, ta s t chc li chng trnh 2.1 thnh mt chng trnh mi bng cch s
dng chng trnh con cho on code to thi gian delay 100 ms. Chng trnh mi s
cvitnhsau:

Chngtrnh2.2:
;=============================================================================
;WWW.PICVIETNAM.COM
;Laptrinh: NGUYENTRUNGCHINH
;Ngaybatdau: 23thang01nam2006
;Ngayhoanthanh: 23thang01nam2006
Ngiboco: NguynTrungChnh Tiliu: TUT02.02
Ngy: 1/30/2006 Trang: 14/18

;Kiemtrachuongtrinh:DoanHiep,DoanMinhDang,
; picvietnam@googlegroups.com
;Ngaykiemtra:
;SudungvidieukhienMicrochip: PIC16F877A
title chuongtrinh22.asm
processor 16f877a
include <p16f877a.inc>
__CONFIG _CP_OFF&_WDT_OFF&_BODEN_OFF&_PWRTE_ON&
_XT_OSC&_WRT_OFF&_LVP_OFF&_CPD_OFF
;Capnhatvabosung:
;Motachuongtrinh: ChuongtrinhdungdedieukhientatcacacLEDganvao
; PORTBchoptatlientucsaumoikhoangthoigian100ms.
; Cosudungchuongtrinhcon
;Motaphancung: 8LEDduocganvaoPORTBthongquacacdientro,cac
; thanhphandikembaogomthachanh,machresetvanguon
;=============================================================================
;
;Khoitaocacbien
;
count1 EQU 0x20 ;cacbiendungchodoanchuongtrinhdelay
counta EQU 0x21
countb EQU 0x22
;=============================================================================
;CHUONGTRINHCHINH
;=============================================================================
ORG 0x000
GOTO start
start
Ngiboco: NguynTrungChnh Tiliu: TUT02.02
Ngy: 1/30/2006 Trang: 15/18

;
;KhoitaoPORTB
;
BCF STATUS,RP1
BSF STATUS,RP0 ;chonBANK1

CLRF TRISB ;PORTB<output

BCF STATUS,RP0 ;chonBANK0
;
;Vonglapchinh
;
loop
MOVLW 0XFF
MOVWF PORTB ;battatcacacLEDoPORTB
CALL delay_100ms;goichuongtrinhcontaothoigiandelay100ms
CLRF PORTB ;tatcacLEDoPORTB
CALL delay_100ms;goichuongtrinhcontaothoigiandelay100ms
GOTO loop ;trovevonglapchinhcuachuongtrinh
;=============================================================================
;CHUONGTRINHCON
;=============================================================================
delay_100ms ;labelbatdauchuongtrinhcon
MOVLW d100 ;doancodechochuongtrinhcondelay100ms
MOVWF count1
d1
MOVLW d199
MOVWF counta
MOVLW d1
MOVWF countb
Ngiboco: NguynTrungChnh Tiliu: TUT02.02
Ngy: 1/30/2006 Trang: 16/18

delay_0
DECFSZ counta,1
GOTO $+2
DECFSZ countb,1
GOTO delay_0
DECFSZ count1,1
GOTO d1
RETURN ;ketthucchuongtrinhcon,trovechuongtrinhchinh
END

Ta nhn thy rng vi cch t chc chng trnh s dng chng tnh con, chng
trnhchnhcngtrnnngngn,dhiuvrrnghnrtnhiu.
Tip theo, ta stinthmmtbcna bngccht lm khmnhviyu cumi
nhsau:
ngdng2:
Yu cu ca ng dng ny cng tng t nh ng dng 1, tuy nhin ta s thay i
nhiuthigiandelaykhcnhau,cthnhsau:
- BtttcccLED
- delay100ms
- TtttcccLED
- Delay200ms
Rrngltrongonchngtrnhchnh,giithutkhngcnhiukhcbit.Thayv
saukhittLED,tagichngtrnhcondelay_100msthbygisgichngtrnhcon
delay_200ms(ttnhinltaphivitchngtrnhconnythmiccigi).Vn
ylvitnhthnochongnnht.
p ng c yu cu ca bi ny, ta ch cn thay i mt vi chi tit nh trong
chngtrnhcondelay.Cthnhsau:
delay_100ms ;labelbatdauchuongtrinhcondelay_100ms
MOVLW d100
GOTO delay
Delay_200ms ;labelbatdauchuongtrinhcondelay_200ms
MOVLW d200
Ngiboco: NguynTrungChnh Tiliu: TUT02.02
Ngy: 1/30/2006 Trang: 17/18

GOTO delay
delay
MOVWF count1
d1
MOVLW d199
MOVWF counta
MOVLW d1
MOVWF countb
delay_0
DECFSZ counta,1
GOTO $+2
DECFSZ countb,1
GOTO delay_0
DECFSZ count1,1
GOTO d1
RETURN ;ketthucchuongtrinhcon,trovechuongtrinhchinh

Nhtabitphn2,vithutton2,munthayithi giandelaychochng
trnhdelay,tachvicthayigitravothanhghicount1.ytacnglmthao
tctngt.oncodetlabeldelaycginguynkhngthayi.Khigichng
trnh con delay_100ms, gi tr 100s c a vo thanh ghi W, sau nhy ti label
delayagitrvothanhghicount1tiptcthchinvictothigian
delay.Ccthaotcctinhnhtngtnhkhigichngtrnhcondelay_200msv
lcgitrcavothanhghiWsl200.
Hontontngttacthtoramtlotnhngchngtrnhdelay1ms,2ms,5,
ms,sdngmtcchddngtytheoyucuvchngtrnhdelaycangdng
cth.
nyxemnhtaphttrinmtcchkhhonthinvccgiiphpchochng
tnhdelaythngqua vicxydngchngtrnhcondelayvhiuc cchtonhiu
thigiandelaykhcnhautrongcngmtchngtrnhmkhngcnphivitivitli
nhiuchngtrnhdelay.
Bygillcrtramtviktluntrckhiktthcbi2vchunbchobi3.

Ngiboco: NguynTrungChnh Tiliu: TUT02.02
Ngy: 1/30/2006 Trang: 18/18

4. Ktlun
Chng trnh delay ng mt vai tr kh quan trng trong vic pht trin cc ng
dngchoviiukhin.Chngtrnhdelaycsdngnhiutrongccthaotchinth
vtrongccngdngcnralnhchoviiukhinphich.
Ccthuttondngxydngchngtrnhdelayphithamncctiuchngn
gnvthuntinchovicsdng,ngthigiptakimsotcthigiandelaydo
onchngtrnhtora.
Thigiandelaydochngtrnhdelaytorasphthucvogiithutsdngcho
chngtrnhdelayvloithchanhsdngchoviiukhin.
Chng trnh con gip ta c c nhiu phng n t chc mt chng trnh ng
dngmtcchlinhhot,gngngvdhiuhn.
Htbi2!

You might also like