prjbrook

timer0 experiment.asm

Sep 24th, 2014
332
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.10 KB | None | 0 0
  1. .INCLUDE "TN85DEF.INC" ;ATTINY13 DEFINITIONS
  2. .DEF A = R16 ;GENERAL PURPOSE ACCUMULATOR
  3.  
  4. .ORG 0000
  5. ON_RESET:
  6. SBI DDRB,0 ;SET PORTB0 FOR OUTPUT
  7. LDI A,0b0000_0001 ;SET TIMER PRESCALER TO /1024
  8. OUT TCCR0B,A
  9.  
  10. MAIN_LOOP:
  11. SBI PINB,0 ;FLIP THE 0 BIT
  12. RCALL PAUSE ;WAIT
  13. RJMP MAIN_LOOP ;GO BACK AND DO IT AGAIN
  14.  
  15. PAUSE:
  16. PLUPE: IN A,TIFR ;WAIT FOR TIMER
  17. ANDI A,0b0000_0010 ;(TOV0)
  18. BREQ PLUPE
  19. LDI A,0b0000_0010 ;RESET FLAG
  20. OUT TIFR,A ;NOTE: WRITE A 1 (NOT ZERO)
  21. RET
  22. ;-----------------------------------------------------------------------------------------------------
  23. .INCLUDE "TN85DEF.INC" ;ATTINY13 DEFINITIONS
  24. .DEF A = R16 ;GENERAL PURPOSE ACCUMULATOR
  25.  
  26. .ORG 0000
  27. ON_RESET:
  28. SBI DDRB,0 ;SET PORTB0 FOR OUTPUT
  29. LDI A,0b0000_0001 ;SET TIMER PRESCALER TO /1024
  30. OUT TCCR0B,A
  31.  
  32. MAIN_LOOP:
  33. SBI PINB,0 ;FLIP THE 0 BIT
  34. RCALL PAUSE ;WAIT
  35. RJMP MAIN_LOOP ;GO BACK AND DO IT AGAIN
  36.  
  37. PAUSE:
  38. PLUPE: IN A,TIFR ;WAIT FOR TIMER
  39. ANDI A,0b0000_0010 ;(TOV0)
  40. BREQ PLUPE
  41. LDI A,0b0000_0010 ;RESET FLAG
  42. OUT TIFR,A ;NOTE: WRITE A 1 (NOT ZERO)
  43. RET
  44. waitForInPinHigh:
  45. sbic PORTB,2
  46. rjmp waitForInPinHigh
  47. ret
  48. waitForInPinLow:
  49. sbis PORTB,2
  50. rjmp waitForInPinLow
  51. ret
  52. startTimer:
  53. LDI A,0b0000_0001 ;SET TIMER PRESCALER TO /1024
  54. OUT TCCR0B,A
  55. ret
  56. timerLoop:
  57. IN A,TIFR ;WAIT FOR TIMER
  58. ANDI A,0b0000_0010 ;(TOV0)
  59. BREQ timerLoop
  60. LDI A,0b0000_0010 ;Push TOVO back down.RESET FLAG
  61. OUT TIFR,A ;NOTE: WRITE A 1 (NOT ZERO)
  62. ;if key pressed get out of loop and stop
  63. inc r18
  64. brne timerLoop
  65. inc r19
  66. brne timerloop
  67. inc r20
  68. rjmp timerloop
  69.  
  70. RET
  71. stopTimer:
  72. LDI A,0b0000_000 ;SET TIMER PRESCALER TO /1024
  73. OUT TCCR0B,A
  74. ret
Advertisement
Add Comment
Please, Sign In to add comment