Advertisement
Guest User

Untitled

a guest
Oct 20th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. LDI R25, 0xFF
  16.  
  17. SBIS PINA, 0
  18. CALL Placeone
  19. SBIC PINA, 0
  20. CALL Placezero
  21.  
  22. SBIS PINA, 1
  23. CALL Placeone
  24. SBIC PINA, 1
  25. CALL Placezero
  26.  
  27. SBIS PINA, 2
  28. CALL Placeone
  29. SBIC PINA, 2
  30. CALL Placezero
  31.  
  32. SBIS PINA, 3
  33. CALL Placeone
  34. SBIC PINA, 3
  35. CALL Placezero
  36.  
  37.  
  38. Main:
  39. Call Output
  40.  
  41.  
  42. CHECK_INCREMENT:
  43.     SBIC PINA, 4
  44.     RJMP CHECK_DECREMENT
  45.     CALL Increment
  46.         LatchI:
  47.             CALL LDelay
  48.             SBIC PINA, 4
  49.             RJMP CHECK_DECREMENT
  50.             RJMP LatchI
  51.  
  52. CHECK_DECREMENT:
  53.     SBIC PINA, 3
  54.     RJMP StopWatch
  55.     Decrement:
  56.         cp R18,R17
  57.         BREQ LOOP_TO_15;
  58.         SUB R18,R19
  59.         LatchD:
  60.             CALL LDelay
  61.             SBIC PINA, 3
  62.             RJMP StopWatch
  63.             RJMP LatchD
  64.  
  65. StopWatch:
  66.     SBIC PINE, 6
  67.     RJMP Main
  68.     Loop:
  69.         CALL Timer
  70.         CALL Increment
  71.         CALL Output
  72.         SBIC PINE, 6
  73.         RJMP Main
  74.         RJMP Loop
  75.  
  76. RJMP Main
  77.  
  78.  
  79. LOOP_TO_0:
  80.     LDI R18, 0
  81.     RET
  82.  
  83. LOOP_TO_15:
  84.     LDI R18, 15
  85.     RET
  86.  
  87. Increment:
  88.     ADD R18, R19
  89.     cp R18,R20
  90.     BREQ LOOP_TO_0;
  91.     RET
  92.  
  93.  
  94. Timer:
  95.     LDI R25,255
  96.     L_outer1:
  97.         LDI R26, 255
  98.         L_middle1:
  99.             LDI R27, 25
  100.             L_inner1:
  101.                 DEC R27
  102.                 BRNE L_inner1
  103.             DEC R26
  104.             BRNE L_middle1
  105.         DEC R25
  106.         BRNE L_outer1
  107.         RET
  108.  
  109. LDelay:
  110.     LDI R25, 25
  111.     L_outer:
  112.         LDI R26, 25
  113.         L_middle:
  114.             LDI R27, 25
  115.             L_inner:
  116.                 DEC R27
  117.                 BRNE L_inner
  118.             DEC R26
  119.             BRNE L_middle
  120.         DEC R25
  121.         BRNE L_outer
  122.         RET
  123.  
  124. Output:
  125.     LDI R21, 0
  126.     ADD R21, R18
  127.     LDI R30, 0
  128.     LDI R28, 4  ;Loop 4 times
  129.         Loop1:
  130.             CLC
  131.             ROR R21
  132.             ROL R30
  133.             DEC R28
  134.             BRNE Loop1
  135.     COM R30 ;Output needs to be complemented, output is active low
  136.     OUT PORTD, R30  ;Outputs the answer to the LEDs
  137.     RET
  138.  
  139. Placezero:
  140.     CLC
  141.     ROR R21
  142.     ROL R18
  143.     RET
  144. Placeone:
  145.     CLC
  146.     ROR R25
  147.     ROL R18
  148.     RET
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement