Advertisement
Guest User

Untitled

a guest
Dec 6th, 2016
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.15 KB | None | 0 0
  1. ;Projekt Tea-timer
  2. ;der timer 0 blinkt jede sekunde, während timer 1 läuft
  3. ;timer 5, 10; 15 min
  4. ;wird über interrupt gestartet
  5.  
  6. .def zaehler = r17
  7. .def tmp=r16
  8. .org 0x00 jmp RESET
  9. .org INT0addr jmp Interrupt0
  10. .org INT1addr jmp Interrupt1
  11. .org INT2addr jmp Interrupt2
  12. .org OVF0addr jmp Timer0Overflow
  13. .org OVF1addr jmp Timer1Overflow
  14.  
  15. loadTimer:
  16. push tmp
  17. in SREG, tmp
  18. push tmp
  19. ; Timer werden hier gesartet
  20. ;------Timer 0------
  21. ;Prescaler einstellen
  22. ldi r16, 0b00000101
  23. out TCCR0, r16
  24.  
  25. ;startwert Laden
  26. ldi r16, 244 ;haben wir ausgerchnet (4tel sekunde)
  27. out TCNT0, r16
  28.  
  29. ;-------Timer1-------
  30. ;Anfangswert timer 1 setzen
  31. ldi r16,0xff-high(6942) ;1min verzögerung
  32. out TCNT1H, r16
  33. ldi r16,0xff-low(6942)
  34. out TCNT1L, r16
  35.  
  36. ;Prescaler setzen
  37. ldi r16, 0b00000011
  38. out TCCR1B, r16
  39. pop tmp
  40. out tmp, SREG
  41. pop tmp
  42. ret
  43.  
  44. ;-------------------------Interrupt0--------------------------------
  45. Interrupt0:
  46. push tmp
  47. in SREG, tmp
  48. push tmp
  49. subi zaehler, 0x00
  50. brbc 1, Ende0
  51.  
  52. call loadTimer
  53.  
  54. ;Zaehler setzen
  55. ldi zaehler, 0x05
  56.  
  57. Ende0:
  58. pop tmp
  59. out tmp, SREG
  60. pop tmp
  61. reti
  62. ;-------------------------Interrupt1--------------------------------
  63. Interrupt1:
  64. push tmp
  65. in SREG, tmp
  66. push tmp
  67. subi zaehler, 0x00
  68. brbc 1, Ende1
  69. call loadTimer
  70. ;Zaehler setzen
  71. ldi zaehler, 10
  72. Ende1:
  73. pop tmp
  74. out tmp, SREG
  75. pop tmp
  76. reti
  77. ;-------------------------Interrupt2--------------------------------
  78. Interrupt2:
  79. push tmp
  80. in SREG, tmp
  81. push tmp
  82. subi zaehler, 0x00
  83. brbc 1, Ende2
  84. call loadTimer
  85. Ende2:
  86. pop tmp
  87. out tmp, SREG
  88. pop tmp
  89. reti
  90. ;------------------------Timer0---------------------------------
  91. Timer0Overflow:
  92. push tmp
  93. in SREG, tmp
  94. push tmp
  95. subi zaehler, 0x00
  96. ;wenn kein tee drin -> springe zu ende
  97. brbc 1, EndeT0
  98. ;timer 0
  99. ;startwert Laden
  100. ldi r16, 244 ;haben wir ausgerchnet (4tel sekunde)
  101. out TCNT0, r16
  102.  
  103. ;blinkt jedesmal (jede lampe)
  104. ldi r16, 0xff
  105. out PORTB, r16
  106.  
  107. EndeT0:
  108. pop tmp
  109. out tmp, SREG
  110. pop tmp
  111. reti
  112. ;--------------------------Timer1------------------------------
  113. Timer1Overflow:
  114. push tmp
  115. in SREG, tmp
  116. push tmp
  117. ;Anfangswert timer 1 setzen
  118. ldi r16,0xff-high(6942) ;1min verzögerung
  119. out TCNT1H, r16
  120. ldi r16,0xff-low(6942)
  121. out TCNT1L, r16
  122.  
  123. subi zaehler, 1
  124. brbc 1, Weiter
  125. ;code für nicht durchlaufene zeit
  126. ;Prescaler setzen, dann läuft er ned weiter
  127. ldi r16, 0b00000000
  128. out TCCR1B, r16
  129. Weiter:
  130. pop tmp
  131. out tmp, SREG
  132. pop tmp
  133. reti
  134.  
  135.  
  136. RESET:
  137. ;Stack definieren
  138. ldi r16, high(RAMEND)
  139. out SPH, r16
  140. ldi r16, low(RAMEND)
  141. out SPL, r16
  142.  
  143. ;ports deklaration
  144. ldi r16, 0xff ;Datenrichtung konfig.
  145. out DDRB, r16
  146.  
  147. ;---------interrupts und Timer definieren--------
  148. ;Int0 + int1
  149. ;Steigende Flanke von int0 und int1
  150. ldi r16, 0b00001111
  151. out MCUCR, r16
  152.  
  153. ;int2 Ihr müsst injt2 ned können
  154. ldi r16, 01000000
  155. out MCUCSR, r16
  156.  
  157. ;GICR - wir wollen int0
  158. ldi r16, 0b11100000
  159. out GICR, r16
  160. ;Interrupts freigeben
  161.  
  162. ;Timer 0 und 1 im Timsk starten
  163. ldi r16, 0b00000101
  164. out TIMSK, r16
  165. sei
  166.  
  167.  
  168. ;wir setzen beide timerVariablen auf 0
  169. ldi zaehler, 0x00
  170.  
  171.  
  172. Endlos:
  173.  
  174. jmp Endlos;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement