You are on page 1of 1

PIC mikroračunari – asemblersko programiranje

Generiranje vremenskih kašnjenja bez upotrebe Timera0

Kašnjenja možemo generirati petljama u kojim se ništa konkretno ne dešava osim što
se troši procesorsko vrijeme. Neku memorijsku lokaciju ili varijablu umanjujemo u svakom
prolazu za 1 i testiramo njenu vrijednost sa 0. Ako je njena vrijednost jednaka 0 izlazimo iz
petlje. Radi generiranja većih vremenskih kašnjenja možemo petlje ugnježñivati jednu u
drugu. U sljedećem programskom kodu za pic16f84a imamo vanjsku petlju j i unutrašnju
petlju k. Unutrašnja petlja se smanjuje 10 puta i zatim smanji vanjsku jednom, znači ukupno
kašnjenje je j x k ili 10 x 10 smanjivanja.

j equ h'0c' ; zamjena memorijske lokacije 0c sa slovom j


k equ h'0d' ; zamjena memorijske lokacije 0d sa slovom k
movlw d'10' ; punjenje j i k sa vrijednošću 10
movwf j
jloop movwf k
kloop decfsz k, f ; unutrašnja petlja k
goto kloop
decfsz j, f ; vanjska petlja j
goto jloop

Ključna instrukcija u ovome programu je decfsz k,f koja znači: „smanji k za 1 i ako je
rezultat te operacije 0 preskoči iduću instrukciju“. Ako se iza decfsz instrukcije nalazi goto
kao što je to ovdje to znači i „smanji k za 1 i idi nazad osim ako rezultat smanjenja nije 0“.

Dvije ugnježñene petlje proizvešće kašnjenje j x k, za svaku vanjsku odbrojava se


cijela unutrašnja petlja. Ako je frekvencija oscilatora 4MHz, a znamo da se za 4 takta
oscilatora izvrši jedna instrukcija i da sve instrukcije osim instrukcija grananja traju 4 takta ili
jedan vremenski ciklus, znači da svako smanjenje ili instrukcija nosi tačno 1µs. Na taj način
možemo generirati precizna vremenska kašnjenja.

-1- Autor: Ilija Mrenica

You might also like