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

Lnh1

Lnh2

thanh_ghi,noi_den

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

MOVWFdelayreg

;agitr20vothanhghiW
;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

MOVWF
loop
DECFSZ

GOTO

GOTO
loop1

MOVLW

MOVWF

DECFSZ
MOVWF

GOTO
next

d255
delayreg1

;agitr255vothanhghidelayreg1

delayreg1,0 ;gimgitrthanhghidelayreg1vsosnhvi0
loop1
;nuchabng0nhytilabelloop1
next
;nubng0chngtrnhdelayhontt

d255

delayreg2 ;avothanhghidelayreg2gitr255
delayreg2,0 ;gimgitrthanhghidelayreg2vsosnhvi0
loop1
;nuchabng0thnhynlabelloop1
loop
;nubng0thnhynlabelloop

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

d1

MOVLW

d199

;agitr90vothanhghicount1

Ngiboco:

NguynTrungChnh

Tiliu:

TUT02.02

Ngy:

1/30/2006

Trang:

8/18

MOVWF

counta

MOVLW

d1

MOVWF

countb

;agitr199vothanhghicounta

;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:

;Ngaybatdau:

NGUYENTRUNGCHINH
23thang01nam2006

;Ngayhoanthanh: 23thang01nam2006
;Kiemtrachuongtrinh:DoanHiep,DoanMinhDang,
;

;Ngaykiemtra:

picvietnam@googlegroups.com

;SudungvidieukhienMicrochip:

title

PIC16F877A

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:

;Ngaybatdau:

NGUYENTRUNGCHINH
23thang01nam2006

;Ngayhoanthanh: 23thang01nam2006

Ngiboco:

NguynTrungChnh

Tiliu:

TUT02.02

Ngy:

1/30/2006

Trang:

14/18

;Kiemtrachuongtrinh:DoanHiep,DoanMinhDang,
;

;Ngaykiemtra:

picvietnam@googlegroups.com

;SudungvidieukhienMicrochip:

title

PIC16F877A

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

CALL

delay_100ms;goichuongtrinhcontaothoigiandelay100ms

CLRF

PORTB

CALL

delay_100ms;goichuongtrinhcontaothoigiandelay100ms

GOTO

loop

;battatcacacLEDoPORTB

;tatcacLEDoPORTB

;trovevonglapchinhcuachuongtrinh

;=============================================================================
;CHUONGTRINHCON
;=============================================================================
delay_100ms

MOVLW

d100

MOVWF

count1

MOVLW

d199

MOVWF

counta

MOVLW

d1

MOVWF

countb

d1

;labelbatdauchuongtrinhcon
;doancodechochuongtrinhcondelay100ms

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

MOVLW

d100

GOTO

delay

Delay_200ms

d200

MOVLW

;labelbatdauchuongtrinhcondelay_100ms

;labelbatdauchuongtrinhcondelay_200ms

Ngiboco:

NguynTrungChnh

Tiliu:

TUT02.02

Ngy:

1/30/2006

Trang:

17/18

GOTO

delay

delay
MOVWF

count1

MOVLW

d199

MOVWF

counta

MOVLW

d1

MOVWF

countb

d1

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