Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //L02 zadatak 5
- .equ delayCnt = 9 // ovo racunamo sa onom formulom za X
- .def tmp = r16
- .cseg
- rjmp reset
- reset:
- ldi tmp,high(RAMEND)
- out SPH, tmp
- ldi tmp, low(RAMEND)
- out SPL, tmp
- ldi tmp, 0xff // cijeli port je aktivan,ali ugasen
- out DDRA, tmp
- out PORTA , tmp
- main:
- rcall loadingbar
- rcall delay
- rjmp main
- /*
- fl = 1 / 0.4 <- frekvencija koja nam treba (u onoj formuli)
- X = (7372800+(1/0,4)) / ((1/0,4)*197122)) = 15
- */
- loadingbar:
- push tmp //pusha na stack
- in tmp, PORTA //ucita podatak s porta
- /*
- ako je tmp == 0x00
- tmp = 0xff -> sve ih ugasimo
- inace
- lsr tmp
- */
- cpi tmp, 0x00 // comparea da vidi ako su upaljene i onda digne zero flag ako jesu
- brne inace
- ldi tmp, 0xff
- rjmp end
- inace:
- lsr tmp
- end:
- out PORTA, tmp
- pop tmp // vraca iz stacka
- ret
- delay:
- push r17
- push r18
- push r19
- clr r17
- clr r18
- ldi r19, delayCnt
- delay_loop:
- dec r17 ; 0,255 , 254... , 0
- brne delay_loop
- dec r18 ; 0,255,254,...,0
- brne delay_loop
- dec r19 ; n,n-1
- brne delay_loop
- pop r19
- pop r18
- pop r17
- ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement