Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;
- ; AssemblerApplication4.asm
- ;
- ; Created: 13.12.2017 13:28:57
- ; Author : Mateusz
- ;
- ; Replace with your application code
- .include "m32def.inc"
- ; liczniki czasu
- .def minuty = R18
- .def dziesiatkisekund = R19
- .def sekundy = R20
- .def licznik1 = R21
- .def licznik2 = R22
- .def licznik3 = R23
- .cseg
- .org 0x0000
- ldi R16, 0x00 //port A w stanie wejsciowym do obslugi klawiatury
- out DDRA, R16
- ldi R16, 0xFF
- out DDRB, R16 //port B w stanie wyjsciowym do oblsugi wyswietlanych na wyswietlaczu cyfr
- out DDRD, R16 // port D w stanie wyjsciowym do obslugi ktory wyswietlacz jest aktywny
- out PORTA, R16 // podpiecie rezystorow pull-up do pinow portu A by utrzymac na nich stan wysoki
- Start: //petla oczekujaca na wcisniecie guzika start(podpietego pod pin AO)
- sbic PINA,PINA0 //jesli nie wcisnieto guzika, przeskoczy do etykiety START, jesli wcisnieto to pominie rjmp i wyjdzie z petli.
- rjmp Start
- Opoznienie:
- ldi minuty, 0
- Loop:
- ldi dziesiatkisekund,0
- Loop0:
- ldi sekundy, 0
- Loop1:
- nop
- rcall WYSWIETLANIE
- cpi sekundy, 9
- inc sekundy
- brne Loop1
- cpi dziesiatkisekund, 5
- inc dziesiatkisekund
- brne Loop0
- cpi minuty, 9
- inc minuty
- brne Loop
- rjmp Start
- WYSWIETLANIE:
- ldi licznik3, 255
- Loop3:
- ldi licznik2, 100
- Loop4:
- ldi licznik1, 50
- Loop5:
- sbis PINA,PINA1
- rcall Pauza
- sbis PINA,PINA3
- rcall RESET
- cpi licznik1, 0
- dec licznik1
- brne Loop5
- cpi licznik2, 0
- dec licznik2
- brne Loop4
- cpi licznik3, 0
- dec licznik3
- brne Loop3
- ret
- Pauza:
- sbis PINA,PINA3 // jesli nacisnieto przycisk reset to wykona nastepne polecenie i przejdzie do podprogramu RESET
- rcall RESET
- sbic PINA,PINA2 // jesli nacisnieto Wznow to pominie rjmp Pauza i wyjdzie z petli z powrotem do programu glownego
- rjmp Pauza //Pętla do etykieta Pauza
- ret
- RESET: // podprogram ustawia wartosci w rejestrach odpowiadajacych wyswietlanym na ekranie cyfrom na wartosci poczatkowe odpowiadajace cyfrom 0 : 0 0
- ldi minuty, 0
- ldi dziesiatkisekund, 0
- ldi sekundy, 0
- ret
- //Funkcje do wyświetlania poszczególnych liczb
- siedem:
- ldi Kolumna, 0xF8
- out PORTB,Kolumna
- zero:
- ldi Kolumna, 0xC0
- out PORTB,Kolumna
- jeden:
- ldi Kolumna, 0xF9
- out PORTB,Kolumna
- ret
- dwa:
- ldi Kolumna, 0xA4
- out PORTB,Kolumna
- ret
- trzy:
- ldi Kolumna, 0xB0
- out PORTB,Kolumna
- ret
- cztery:
- ldi Kolumna, 0x99
- out PORTB,Kolumna
- ret
- piec:
- ldi Kolumna, 0x92
- out PORTB,Kolumna
- ret
- szesc:
- ldi Kolumna, 0x82
- out PORTB,Kolumna
- ret
- osiem:
- ldi Kolumna, 0x80
- out PORTB,Kolumna
- ret
- dziewiec:
- ldi Kolumna, 0x90
- out PORTB,Kolumna
- ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement