Advertisement
Guest User

Untitled

a guest
Nov 19th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.08 KB | None | 0 0
  1. /*
  2. * AssemblerApplication2.asm
  3. *
  4. * Created: 2017-11-15 14:22:38
  5. * Author: Student
  6. */
  7.  
  8. ; PROJEKT PRZYCISK 1
  9. .include "m32def.inc"
  10. .def Jeden = R16
  11. .def Dwa = R17
  12. .cseg
  13. .org 0x0666
  14.  
  15. jmp Start
  16. Start:
  17. ldi Dwa, HIGH(RAMEND)
  18. out SPH, Dwa
  19. ldi Jeden, LOW(RAMEND)
  20. out SPL, Jeden
  21. ldi Jeden, 0xFF
  22. out DDRB, Jeden //Ustawiamy port B na wyjściowy
  23. ldi Dwa, 0x00
  24. out DDRA, Dwa //Ustawiamy port A na wejściowy
  25. ldi Dwa, 0xFF
  26. out PORTA, Dwa //Podpinamy rezystory pull-up do pinów portu A
  27. Petla:
  28.  
  29. in R24, PINA // Zapisujemy wartość z Portu A do rejestru R24
  30.  
  31. cpi r24, 1 // Sprawdzamy czy nie został wciśnięty klawisz W1. Jeśli tak zapala się flaga Z
  32. breq Przycisk //Jeśli flaga Z jest zapalona to przejdź do Przycisk
  33.  
  34. cpi r24, 2 //Sprwadzamy czy nie został wciśnięty klawisz W2. Jeśli tak zapala się flaga Z
  35. breq Przycisk2 //Jeśli flaga Z jest zapalona to przejdź do Przycisk2
  36.  
  37. rjmp Petla //Powrót do oczekiwania na Sygnał
  38.  
  39. Przycisk:
  40. inc XH // Licznik wciśnięć klawisza W1 XH jest to rejestr 27
  41. rcall Opoznienie
  42. rcall Loop1
  43. ret
  44.  
  45. Przycisk2:
  46. out PORTB, XH // Wyświetlanie na diodach ilości wciśnięć
  47. rcall Opoznienie // Wywołanie funkcji Opoznienie
  48. rcall Loop1 // Wywołanie funkcji Loop1
  49. ret
  50.  
  51.  
  52. Opoznienie:
  53. ldi R20, 250
  54. ret
  55.  
  56. Loop:
  57. ldi R19, 10
  58. rjmp Loop0
  59.  
  60. Loop0:
  61. ldi R18, 17
  62. rjmp Loop1
  63.  
  64.  
  65. Loop1: // Funkcja wykonująca około milion operacji
  66. nop // Mikrokontroler jest ostawiony na 200kHz więc zajmie to około 5s
  67. dec R18
  68. cpi R18, 0 //Porównanie wartości rejestru R18 do Zera. Jeśli R18 jest równe zero zapala się flaga Z
  69. brne Loop1 //Jeśli flaga Z nie jest zapalona to przejdź do Loop1
  70. dec R19
  71. cpi R19, 0 //Porównanie wartości rejestru R19 do Zera. Jeśli R19 jest równe zero zapala się flaga Z
  72. brne Loop0 //Jeśli flaga Z nie jest zapalona to przejdź do Loop0
  73. dec R20
  74. cpi R20, 0 //Porównanie wartości rejestru R20 do Zera. Jeśli R20 jest równe zero zapala się flaga Z
  75. brne Loop //Jeśli flaga Z nie jest zapalona to przejdź do Loop
  76. ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement