Advertisement
Guest User

asdf

a guest
Oct 20th, 2019
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.16 KB | None | 0 0
  1. LDI R24, 0x20
  2. LDI R25, 0x30
  3. LDI R16, 0xFF ;255 used for logic
  4. LDI R17, 0 ;0 used for logic
  5. LDI R18, 0 ;Counting Register
  6. LDI R19, 0x01 ;Increment number
  7. LDI R20, 0x10 ;Overflow Value
  8. OUT DDRE, R24
  9. OUT PORTE, R25
  10. OUT DDRA, R17 ;PA in input mode
  11. OUT PORTA, R16 ;enable pull-up for PA
  12. OUT DDRD, R16 ; PD in output mode
  13. OUT PORTD, R16 ; Turn off all LEDs
  14.  
  15. Main:
  16. Call Output
  17.  
  18. UpdateSound:
  19. sbis pina, 5
  20. ldi R22, 21
  21. sbis pina, 5
  22. ldi R23, 199
  23. sbis pina, 6
  24. ldi R22, 11
  25. sbis pina, 6
  26. ldi R23, 99
  27. sbis pina, 7
  28. ldi R22, 42
  29. sbis pina, 7
  30. ldi R23, 142
  31.  
  32.  
  33. CHECK_INCREMENT:
  34. SBIC PINA, 4
  35. RJMP CHECK_DECREMENT
  36. CALL Increment
  37. LatchI:
  38. CALL LDelay
  39. SBIC PINA, 4
  40. RJMP CHECK_DECREMENT
  41. RJMP LatchI
  42.  
  43. CHECK_DECREMENT:
  44. SBIC PINA, 3
  45. RJMP StopWatch
  46. Decrement:
  47. cp R18,R17
  48. BREQ LOOP_TO_15;
  49. SUB R18,R19
  50. LatchD:
  51. CALL LDelay
  52. SBIC PINA, 3
  53. RJMP StopWatch
  54. RJMP LatchD
  55.  
  56. StopWatch:
  57. SBIC PINE, 6
  58. RJMP Main
  59. Loop:
  60. CALL Timer
  61. CALL Increment
  62. CALL Output
  63. SBIC PINE, 6
  64. RJMP Main
  65. RJMP Loop
  66.  
  67. RJMP Main
  68.  
  69.  
  70. LOOP_TO_0:
  71. LDI R18, 0
  72. Call Sound
  73. done:RJMP Stopwatch
  74.  
  75. LOOP_TO_15:
  76. LDI R18, 15
  77. Call Sound
  78. RJMP LatchD
  79.  
  80. Sound:
  81. sbi ddre, 4
  82. ldi r25, 80
  83. soundloop:
  84. sbi porte, 4
  85. call sound1
  86. cbi porte, 4
  87. call sound1
  88. dec r25
  89. brne soundloop
  90. rjmp done
  91. sound1: mov R26, R22
  92. mov R27, R23
  93. L1: dec r27
  94. brne L1
  95. dec r26
  96. brne L1
  97. ret
  98.  
  99. Increment:
  100. ADD R18, R19
  101. cp R18,R20
  102. BREQ LOOP_TO_0;
  103. RET
  104.  
  105.  
  106. Timer:
  107. LDI R25,255
  108. L_outer1:
  109. LDI R26, 255
  110. L_middle1:
  111. LDI R27, 25
  112. L_inner1:
  113. DEC R27
  114. BRNE L_inner1
  115. DEC R26
  116. BRNE L_middle1
  117. DEC R25
  118. BRNE L_outer1
  119. RET
  120.  
  121. LDelay:
  122. LDI R25, 25
  123. L_outer:
  124. LDI R26, 25
  125. L_middle:
  126. LDI R27, 25
  127. L_inner:
  128. DEC R27
  129. BRNE L_inner
  130. DEC R26
  131. BRNE L_middle
  132. DEC R25
  133. BRNE L_outer
  134. RET
  135.  
  136. Output:
  137. LDI R21, 0
  138. ADD R21, R18
  139. LDI R30, 0
  140. LDI R28, 4 ;Loop 4 times
  141. Loop1:
  142. CLC
  143. ROR R21
  144. ROL R30
  145. DEC R28
  146. BRNE Loop1
  147. COM R30 ;Output needs to be complemented, output is active low
  148. OUT PORTD, R30 ;Outputs the answer to the LEDs
  149. RET
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement