Advertisement
Guest User

codeXXXX

a guest
Dec 13th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.52 KB | None | 0 0
  1. ;
  2. ; AssemblerApplication4.asm
  3. ;
  4. ; Created: 13.12.2017 13:28:57
  5. ; Author : Mateusz
  6. ;
  7.  
  8.  
  9. ; Replace with your application code
  10. .include "m32def.inc"
  11. ; liczniki czasu
  12. .def minuty = R18
  13. .def dziesiatkisekund = R19
  14. .def sekundy = R20
  15. .def licznik1 = R21
  16. .def licznik2 = R22
  17. .def licznik3 = R23
  18. .cseg
  19. .org 0x0000
  20. ldi R16, 0x00 //port A w stanie wejsciowym do obslugi klawiatury
  21. out DDRA, R16
  22. ldi R16, 0xFF
  23. out DDRB, R16 //port B w stanie wyjsciowym do oblsugi wyswietlanych na wyswietlaczu cyfr
  24. out DDRD, R16 // port D w stanie wyjsciowym do obslugi ktory wyswietlacz jest aktywny
  25. out PORTA, R16 // podpiecie rezystorow pull-up do pinow portu A by utrzymac na nich stan wysoki
  26. Start: //petla oczekujaca na wcisniecie guzika start(podpietego pod pin AO)
  27. sbic PINA,PINA0 //jesli nie wcisnieto guzika, przeskoczy do etykiety START, jesli wcisnieto to pominie rjmp i wyjdzie z petli.
  28. rjmp Start
  29.  
  30.  
  31.  
  32. Opoznienie:
  33. ldi minuty, 0
  34. Loop:
  35. ldi dziesiatkisekund,0
  36. Loop0:
  37. ldi sekundy, 0
  38. Loop1:
  39. nop
  40. rcall WYSWIETLANIE
  41. cpi sekundy, 9
  42. inc sekundy
  43. brne Loop1
  44. cpi dziesiatkisekund, 5
  45. inc dziesiatkisekund
  46. brne Loop0
  47. cpi minuty, 9
  48. inc minuty
  49. brne Loop
  50. rjmp Start
  51.  
  52.  
  53. WYSWIETLANIE:
  54. ldi licznik3, 255
  55. Loop3:
  56. ldi licznik2, 100
  57. Loop4:
  58. ldi licznik1, 50
  59. Loop5:
  60. sbis PINA,PINA1
  61. rcall Pauza
  62. sbis PINA,PINA3
  63. rcall RESET
  64.  
  65. cpi licznik1, 0
  66. dec licznik1
  67. brne Loop5
  68. cpi licznik2, 0
  69. dec licznik2
  70. brne Loop4
  71. cpi licznik3, 0
  72. dec licznik3
  73. brne Loop3
  74. ret
  75.  
  76. Pauza:
  77. sbis PINA,PINA3 // jesli nacisnieto przycisk reset to wykona nastepne polecenie i przejdzie do podprogramu RESET
  78. rcall RESET
  79. sbic PINA,PINA2 // jesli nacisnieto Wznow to pominie rjmp Pauza i wyjdzie z petli z powrotem do programu glownego
  80. rjmp Pauza //Pętla do etykieta Pauza
  81. ret
  82.  
  83. RESET: // podprogram ustawia wartosci w rejestrach odpowiadajacych wyswietlanym na ekranie cyfrom na wartosci poczatkowe odpowiadajace cyfrom 0 : 0 0
  84. ldi minuty, 0
  85. ldi dziesiatkisekund, 0
  86. ldi sekundy, 0
  87. ret
  88.  
  89. //Funkcje do wyświetlania poszczególnych liczb
  90. siedem:
  91. ldi Kolumna, 0xF8
  92. out PORTB,Kolumna
  93.  
  94. zero:
  95. ldi Kolumna, 0xC0
  96. out PORTB,Kolumna
  97.  
  98. jeden:
  99. ldi Kolumna, 0xF9
  100. out PORTB,Kolumna
  101. ret
  102.  
  103. dwa:
  104. ldi Kolumna, 0xA4
  105. out PORTB,Kolumna
  106. ret
  107.  
  108. trzy:
  109. ldi Kolumna, 0xB0
  110. out PORTB,Kolumna
  111. ret
  112.  
  113. cztery:
  114. ldi Kolumna, 0x99
  115. out PORTB,Kolumna
  116. ret
  117.  
  118. piec:
  119. ldi Kolumna, 0x92
  120. out PORTB,Kolumna
  121. ret
  122.  
  123. szesc:
  124. ldi Kolumna, 0x82
  125. out PORTB,Kolumna
  126. ret
  127.  
  128. osiem:
  129. ldi Kolumna, 0x80
  130. out PORTB,Kolumna
  131. ret
  132.  
  133. dziewiec:
  134. ldi Kolumna, 0x90
  135. out PORTB,Kolumna
  136. ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement