Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .include "m32def.inc" ;deklaracja biblioteki
- ldi R16, HIGH(RAMEND) ;załadowanie adresu końca pamięci[stała RAMEND - zdefiniowana w pliku m32def.inc](starszej jego część)
- out SPH, R16 ;załadowanie zawartości rejestru R16 do SPH(starszej części)
- ldi R16, LOW(RAMEND) ;załadowanie (mlodszej czesci) adresu konca pamieci sram do R16
- out SPL, R16 ;przepisanie R16 do SPL - rejestru który przechowuje wskażnik końca stosu(młodszej czesci)
- sbi DDRD, 7 ;ustawienie DDR7 jako port wyjsciowy
- sbi PORTD, 7 ;ustawienie stanu wysokiego na PORTD7 (dioda wl)
- cbi DDRB, 0 ;ustawienie DDR0 jako port wejsciowy
- sbi PORTD, 0 ;podciągnięcie linii wejściowej
- petla: ;etykieta glowna (petla nieskonczona)
- sbic PIND, 0 ;sprawdzenie czy bit 0 jest wyzerowany (wcisniety przycisk), jesli nie to pomin kolejna instrukcje
- rjmp nb ;skocz do nb
- sbi PORTD, 7 ;ustawienie stanu wysokiego na PORTD7 (dioda wl)
- rjmp petla
- nb:
- cbi PORTD, 7 ;ustawienie stanu niskiego na PORTD7 (dioda wyl)
- rcall delay ;skok względny do etykiety delay
- sbi PORTD, 7 ;ustawienie stanu wysokiego na PORTD7 (dioda wl)
- rcall delay
- rjmp petla
- delay: ;etykieta, ktorej zawartosc ma na celu opoznienie kolejnych instrukcji o 250 ms
- ldi R16, $A7
- WGLOOP0:
- ldi R17, $02
- WGLOOP1:
- ldi R18, $F8
- WGLOOP2:
- dec R18 ;pomniejsz o 1
- brne WGLOOP2 ;skocz jesli nie jest rowne
- dec R17
- brne WGLOOP1
- dec R16
- brne WGLOOP0
- nop ;nic nie rob (ostatnie przejscie petli)
- ret ;powrot do miejsca z ktorego nastapil skok
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement