[ valter @ 21.12.2005. 18:39 ] @
moze li neko da mi pojasni na koji nacin se u ovom podprogramu javlja zakasnjenje od 1s. Molim za odgovor jer meni nista nije jasno, treba mi formula kako se racunaju mikrosekunde da bi dobio 1s Code: _1s ; Cekanje 1 sekunda bsf STATUS,RP0 ; Bira se BANK1, radi pristupa registrima unutar ove banke movlw b'00000111' ; Ucitaj konstantu movwf OPTION_REG ; Preskaler dodeljen tajmeru, faktor deljenja je '256' bcf STATUS,RP0 ; Bira se BANK0, radi pristupa registrima unutar ove banke clrf TMR0 ; Obrisi vrednost u tajmeru clrf INTCON ; Obrisi poslednju setovanu vrednost 'T0IF' movlw h'0F' ; Ucitaj '15' decimalno movwf BR0 ; Stavi u brojac BR0 L1 btfss INTCON,T0IF ; Da li je tajmer prekoracio vrednost d'65536'? goto L1 ; Nije, vrati se na ciklus clrf INTCON ; Obrisi poslednju setovanu decfsz BR0,f ; Jeste, umanji BR0 za 1, da li je BR0 '0' goto L1 ; Nije, vrati se na L1 bsf STATUS,RP0 ; Bira se BANK1, radi pristupa registrima unutar ove banke clrf OPTION_REG ; Preskaler dodeljen tajmeru, faktor deljenja je '2' bcf STATUS,RP0 ; Bira se BANK0, radi pristupa registrima unutar ove banke clrf TMR0 ; Obrisi vrednost u tajmeru clrf INTCON ; Obrisi poslednju setovanu vrednost 'T0IF' movlw h'21' ; Ucitaj '33' decimalno movwf BR0 ; Stavi u brojac BR0 L2 btfss INTCON,T0IF ; Da li je tajmer prekoracio vrednost d'512'? goto L2 ; Nije, vrati se na ciklus clrf INTCON ; Obrisi poslednju setovanu decfsz BR0,f ; Jeste, umanji BR0 za 1, da li je BR0 '0' goto L2 ; Nije, vrati se na L2 return i jos nesto zasto je movlw b'00000111' a ne b'10000111' |