Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * AssemblerApplication2.asm
- *
- * Created: 2017-11-15 14:22:38
- * Author: Student
- */
- ; PROJEKT PRZYCISK 1
- .include "m32def.inc"
- .def Jeden = R16
- .def Dwa = R17
- .cseg
- .org 0x0666
- jmp Start
- Start:
- ldi Dwa, HIGH(RAMEND)
- out SPH, Dwa
- ldi Jeden, LOW(RAMEND)
- out SPL, Jeden
- ldi Jeden, 0xFF
- out DDRB, Jeden //Ustawiamy port B na wyjściowy
- ldi Dwa, 0x00
- out DDRA, Dwa //Ustawiamy port A na wejściowy
- ldi Dwa, 0xFF
- out PORTA, Dwa //Podpinamy rezystory pull-up do pinów portu A
- Petla:
- in R24, PINA // Zapisujemy wartość z Portu A do rejestru R24
- cpi r24, 1 // Sprawdzamy czy nie został wciśnięty klawisz W1. Jeśli tak zapala się flaga Z
- breq Przycisk //Jeśli flaga Z jest zapalona to przejdź do Przycisk
- cpi r24, 2 //Sprwadzamy czy nie został wciśnięty klawisz W2. Jeśli tak zapala się flaga Z
- breq Przycisk2 //Jeśli flaga Z jest zapalona to przejdź do Przycisk2
- rjmp Petla //Powrót do oczekiwania na Sygnał
- Przycisk:
- inc XH // Licznik wciśnięć klawisza W1 XH jest to rejestr 27
- rcall Opoznienie
- rcall Loop1
- ret
- Przycisk2:
- out PORTB, XH // Wyświetlanie na diodach ilości wciśnięć
- rcall Opoznienie // Wywołanie funkcji Opoznienie
- rcall Loop1 // Wywołanie funkcji Loop1
- ret
- Opoznienie:
- ldi R20, 250
- ret
- Loop:
- ldi R19, 10
- rjmp Loop0
- Loop0:
- ldi R18, 17
- rjmp Loop1
- Loop1: // Funkcja wykonująca około milion operacji
- nop // Mikrokontroler jest ostawiony na 200kHz więc zajmie to około 5s
- dec R18
- cpi R18, 0 //Porównanie wartości rejestru R18 do Zera. Jeśli R18 jest równe zero zapala się flaga Z
- brne Loop1 //Jeśli flaga Z nie jest zapalona to przejdź do Loop1
- dec R19
- cpi R19, 0 //Porównanie wartości rejestru R19 do Zera. Jeśli R19 jest równe zero zapala się flaga Z
- brne Loop0 //Jeśli flaga Z nie jest zapalona to przejdź do Loop0
- dec R20
- cpi R20, 0 //Porównanie wartości rejestru R20 do Zera. Jeśli R20 jest równe zero zapala się flaga Z
- brne Loop //Jeśli flaga Z nie jest zapalona to przejdź do Loop
- ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement