Advertisement
perjespersson

Almost LABB3 done

Dec 12th, 2018
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.12 KB | None | 0 0
  1. .org 0000
  2. jmp START
  3. .org INT0addr
  4. rjmp BCD
  5. .org INT1addr
  6. jmp MUX
  7.  
  8. .def Raknare = r20
  9.  
  10.  
  11. START:
  12. ;Set stack
  13. ldi r16,HIGH(RAMEND)
  14. out SPH,r16
  15. ldi r16,LOW(RAMEND)
  16. out SPL,r16
  17.  
  18. ;Ladda rotation på display
  19. ldi r16,$03
  20. out DDRB,r16
  21. ldi r16,$00
  22. out PORTB,r16
  23.  
  24. ENABLE_INTERUPTION:
  25. ldi r16,(1<<INT0)|(1<<INT1)
  26. out GICR,r16
  27. ldi r16, (1<<ISC01)|(1<<ISC00)|(1<<ISC11)|(1<<ISC10)
  28. out MCUCR,r16
  29.  
  30. RESET:
  31. ldi r16,HIGH(TIME)
  32. mov ZH,r16
  33. ldi r16,LOW(TIME)
  34. mov ZL,r16
  35. ;Clear Display
  36. ldi r16,$0
  37. st Z,r16
  38. std Z+1,r16
  39. std Z+2,r16
  40. std Z+3,r16
  41.  
  42.  
  43. ;PORT FÖR DISPLAy
  44. ldi r16,$FF
  45. out DDRA,r16
  46. sei
  47.  
  48. DONE:
  49. rjmp DONE ; Så att programmet fortsätter att leva
  50.  
  51. BCD:
  52. ;Pusha sreg
  53. push r16
  54. in r16, SREG
  55. push r16
  56.  
  57. ldi r16,HIGH(TIME)
  58. mov ZH,r16
  59. ldi r16,LOW(TIME)
  60. mov ZL,r16
  61.  
  62. ld r22,Z ; LADDA IN VÄRDEN FRÅN TIME
  63. ldd r23,Z+1
  64. ldd r24,Z+2
  65. ldd r25,Z+3
  66.  
  67. ADD_SEC_ENTAL: ; BÖRJA ADDERA
  68. inc r22
  69. cpi r22,10
  70. brne ALL_DONE
  71. ldi r22,0 ; ÄR SIFFRAN 10, LADDA MED 0 OCH GÅ NER OCH FYLL PÅ TIOTAL
  72.  
  73. ADD_SEC_TIOTAL:
  74. inc r23
  75. cpi r23,6
  76. brne ALL_DONE
  77. ldi r23,0
  78.  
  79. ADD_MIN_ENTAL:
  80. inc r24
  81. cpi r24,10
  82. brne ALL_DONE
  83. ldi r24,0
  84.  
  85. ADD_MIN_TIOTAL:
  86. inc r25
  87. cpi r25,6
  88. brne ALL_DONE
  89. ldi r25,0
  90.  
  91. ALL_DONE:
  92. st z,r22
  93. std z+1,r23 ; STOREA NYA VÄRDET
  94. std z+2,r24
  95. std z+3,r25
  96.  
  97.  
  98. pop r16
  99. out SREG,r16
  100. pop r16
  101. reti
  102.  
  103. MUX:
  104. ;Pusha sreg
  105. push r16
  106. in r16, SREG
  107. push r16
  108.  
  109. inc Raknare
  110. sbrc Raknare,2
  111. ldi Raknare,0
  112. call SHOW
  113. out PORTB, Raknare
  114.  
  115. pop r16
  116. out SREG,r16
  117. pop r16
  118. reti
  119.  
  120. SHOW:
  121. ldi r16,HIGH(TIME)
  122. mov ZH,r16
  123. ldi r16,LOW(TIME)
  124. mov ZL,r16
  125. add ZL,Raknare ; Pekar ut var i time
  126. ld r16,Z
  127. push ZH
  128. push ZL
  129. ldi ZH, HIGH(TAB * 2)
  130. ldi ZL, LOW(TAB * 2)
  131. add ZL, r16
  132. lpm r16,Z
  133. pop ZL
  134. pop ZH
  135. out PORTA,r16
  136. ret
  137.  
  138. TAB:
  139. .db $FC,$60,$DA,$F2,$66,$B6,$BE,$E0,$FE,$F6
  140.  
  141.  
  142. .dseg
  143. TIME: .byte 4
  144. DISPLAY: .byte 1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement