Advertisement
Guest User

Untitled

a guest
Jun 15th, 2019
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;
  2. ; zahlenschloss.asm
  3. ;
  4. ; Created: 15/06/2019 14:18:32
  5. ; Author : winshit
  6. ;
  7.  
  8. ; naming definitions
  9. .def Temp         = 16
  10. .def Digit        = R20
  11. .def Fail         = R21
  12. .def ButtonStates = R22
  13. .def digit1       = R25
  14. .def digit2       = R26
  15. .def digit3       = R27
  16. .def digit4       = R28
  17.  
  18.  
  19. ; input and output pins
  20. ldi Temp, 0b00111111
  21. out DDRB, Temp
  22.  
  23. ldi Temp, 0b00001111
  24. out DDRD, Temp
  25.  
  26. clr Temp
  27. out DDRA, Temp
  28.  
  29.  
  30. ; init vars
  31. ldi digit1, 0b00000000
  32. ldi digit2, 0b00001000
  33. ldi digit3, 0b00000001
  34. ldi digit4, 0b00000101
  35.  
  36. ; init stackpointer
  37. ldi Temp, high(RAMEND)
  38. out SPH, Temp
  39. ldi Temp, low(RAMEND)
  40. out SPL, Temp
  41.  
  42.  
  43. ; endless loop
  44. MAIN:   ldi Fail, 0b00000000
  45.        
  46.         ; set light, read digit #1
  47.         ldi Temp, 0b00000001
  48.         out PORTB, Temp
  49.         call POLL_BUTTONS
  50.         cp digit, digit1
  51.         brne INC_FAIL
  52.  
  53.         ; set light, read digit #2
  54.         ldi Temp, 0b00000011
  55.         out PORTB, Temp
  56.         call POLL_BUTTONS
  57.         cp digit, digit2
  58.         brne INC_FAIL
  59.  
  60.         ; set light, read digit #3
  61.         ldi Temp, 0b00000111
  62.         out PORTB, Temp
  63.         call POLL_BUTTONS
  64.         cp digit, digit3
  65.         brne INC_FAIL
  66.  
  67.         ; set light, read digit #4
  68.         ldi Temp, 0b00001111
  69.         out PORTB, Temp
  70.         call POLL_BUTTONS
  71.         cp digit, digit4
  72.         brne INC_FAIL
  73.  
  74.         clr Temp
  75.         cp Fail, Temp
  76.         brne ...
  77.  
  78.         rjmp MAIN
  79.  
  80. INC_FAIL:
  81.         inc  Fail
  82.  
  83. POLL_BUTTONS:
  84.         ; check if increment was pressed
  85.         in Temp, PINA
  86.         ldi Temp, 0b10000000
  87.         and Temp, PINA
  88.         cpi Temp, 0
  89.         brne COMPARE_PREV
  90.  
  91.         inc digit
  92.  
  93.         cp
  94.  
  95. COMPARE_PREV:
  96.         cpi ButtonState, 1
  97.         breq ldi Temp, 1
  98.  
  99. LED_SUCCESS:
  100.         ldi Temp, 0b00010000
  101.         out PORTB, Temp
  102.  
  103. LED_ERROR:
  104.         ldi Temp, 0b00100000
  105.         out PORTB, Temp
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement