.nolist
.include "m8def.inc"
.list
.equ gr1 = 38226
.equ gr2 = 34059
.equ gr3 = 30339
.equ gr4 = 28636
.equ gr5 = 25510
.equ gr6 = 22727
.equ gr7 = 20251
.cseg
.org 0
rjmp start ;skok do poczatku programu
reti
reti
reti
reti
reti
rjmp TIMER1_COMPA ;przewanie timera
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;program glowny
start:
;wlaczenie obslugi przerwan
cli
;zaladowanie adresu konca pamieci - obsluga stosu
ldi R16, HIGH(RAMEND)
out SPH, R16
ldi R16, LOW(RAMEND)
out SPL, R16
////////////////////////////////////////////////
;ustawienia timera - i hope it'l work
ldi R16, 0
out TCCR1A, R16
;wyzerowanie licznika
out TCNT1H, R16
out TCNT1L, R16
ldi R16, (1<<WGM12)|(1<<CS11)
out TCCR1B, R16
///////////////////////////////////////////////
;ustawienie linii D2 i D3 - diody LED
sbi DDRD, 2
sbi DDRD, 3
;wartosc wysoka - diody nie swieca
sbi PORTD, 2
sbi PORTD, 3
///////////////////////////////////////////////
;ustawienie linii D7 i B0 - przyciski
cbi DDRD, 7
cbi DDRB, 0
;wartosc wysoka dla tych linii
sbi DDRD, 7
sbi DDRB, 0
///////////////////////////////////////////////
;ustawienia linii PC3 (tester) i PC2 (grajek)
sbi DDRC, 2
cbi DDRC, 3
sbi PORTC, 2
////////////////////////////////////////////////
;jakis konkret by sie przydal
petla:
;opusc instrukcje jesli przycisk SW1 jest wcisniety
sbis PIND, 7
rjmp muzodajnia
sbis PINB, 0
rjmp muzodajnia2
///////////////////////////////////////////////////
;czyszczenie -> zgas diode 1 i 2
sbi PORTD, 3
sbi PORTD, 2
rjmp petla
///////////////////////////////////////////////////
muzodajnia:
;let's do this!!!
;zapalanie diody!
cbi PORTD, 3
;ustawienie TIMERA1 nr 1
;wartosc rganiczna 1
ldi R16, high(gr1)
out OCR1AH, R16
ldi R16, low(gr1)
out OCR1AH, R16
;engage
ldi R16, (1<<OCIE1A)
out TIMSK, R16
rcall Czekaj1sekunde
;wartosc rganiczna 2
ldi R16, high(gr2)
out OCR1AH, R16
ldi R16, low(gr2)
out OCR1AH, R16
;engage
ldi R16, (1<<OCIE1A)
out TIMSK, R16
rcall Czekaj1sekunde
;wartosc rganiczna 3
ldi R16, high(gr3)
out OCR1AH, R16
ldi R16, low(gr3)
out OCR1AH, R16
;engage
ldi R16, (1<<OCIE1A)
out TIMSK, R16
rcall Czekaj1sekunde
;wartosc rganiczna 4
ldi R16, high(gr4)
out OCR1AH, R16
ldi R16, low(gr4)
out OCR1AH, R16
;engage
ldi R16, (1<<OCIE1A)
out TIMSK, R16
rcall Czekaj1sekunde
;wartosc rganiczna 5
ldi R16, high(gr5)
out OCR1AH, R16
ldi R16, low(gr5)
out OCR1AH, R16
;engage
ldi R16, (1<<OCIE1A)
out TIMSK, R16
rcall Czekaj1sekunde
;wartosc rganiczna 6
ldi R16, high(gr6)
out OCR1AH, R16
ldi R16, low(gr6)
out OCR1AH, R16
;engage
ldi R16, (1<<OCIE1A)
out TIMSK, R16
rcall Czekaj1sekunde
;wartosc rganiczna 7
ldi R16, high(gr7)
out OCR1AH, R16
ldi R16, low(gr7)
out OCR1AH, R16
;engage
ldi R16, (1<<OCIE1A)
out TIMSK, R16
rcall Czekaj1sekunde
rjmp petla;
//////////////////////////////////////////////////
muzodajnia2:
;let's do this!!!
;zapalanie diody!
cbi PORTD, 2
;ustawienie TIMERA1 nr 7
;wartosc rganiczna 7
ldi R16, high(gr7)
out OCR1AH, R16
ldi R16, low(gr7)
out OCR1AH, R16
;engage
ldi R16, (1<<OCIE1A)
out TIMSK, R16
rcall Czekaj1sekunde
;wartosc rganiczna 6
ldi R16, high(gr6)
out OCR1AH, R16
ldi R16, low(gr6)
out OCR1AH, R16
;engage
ldi R16, (1<<OCIE1A)
out TIMSK, R16
rcall Czekaj1sekunde
;wartosc rganiczna 5
ldi R16, high(gr5)
out OCR1AH, R16
ldi R16, low(gr5)
out OCR1AH, R16
;engage
ldi R16, (1<<OCIE1A)
out TIMSK, R16
rcall Czekaj1sekunde
;wartosc rganiczna 4
ldi R16, high(gr4)
out OCR1AH, R16
ldi R16, low(gr4)
out OCR1AH, R16
;engage
ldi R16, (1<<OCIE1A)
out TIMSK, R16
rcall Czekaj1sekunde
;wartosc rganiczna 3
ldi R16, high(gr3)
out OCR1AH, R16
ldi R16, low(gr3)
out OCR1AH, R16
;engage
ldi R16, (1<<OCIE1A)
out TIMSK, R16
rcall Czekaj1sekunde
;wartosc rganiczna 2
ldi R16, high(gr2)
out OCR1AH, R16
ldi R16, low(gr2)
out OCR1AH, R16
;engage
ldi R16, (1<<OCIE1A)
out TIMSK, R16
rcall Czekaj1sekunde
;wartosc rganiczna 1
ldi R16, high(gr1)
out OCR1AH, R16
ldi R16, low(gr2)
out OCR1AH, R16
;engage
ldi R16, (1<<OCIE1A)
out TIMSK, R16
rcall Czekaj1sekunde
rjmp petla;
/////////////////////////////////////////////////
Czekaj1sekunde:
ldi R19, 0
czekaj1sekunde2:
ldi R20, 0
czekaj1sekunde0:
ldi R21, 0
czekaj1sekunde1:
inc R21
cpi R21, 250
brlo czekaj1sekunde1
inc R20
cpi R20, 249
brlo czekaj1sekunde0
inc R19
cpi R19, 4
brlo czekaj1sekunde2
ret
//////////////////////////////////////////////////
TIMER1_COMPA:
sbis PINC, 3
sbi PORTC, 2
sbic PINC, 3
cbi PORTC, 2
reti