timer2.s 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. ;Incs and Defs----------------------------------------------------------
  2. .include "atm328p.inc"
  3. .include "global.inc"
  4. ;Initialisierungen------------------------------------------------------
  5. .global timer2_init
  6. timer2_init:
  7. sts TCCR2A, false ;clear Registers
  8. sts TCCR2B, false
  9. sts TCNT2, false
  10. sts TIMSK2, false
  11. ldi timer2_r, (1<<CS20)|(1<<CS21)|(1<<CS22)
  12. sts TCCR2B, timer2_r ;Prescaler x1024 (60Hz)
  13. sts timer2_bool, false ;set Variables
  14. sts timer2_cnt, false
  15. ret
  16. ;Interrupt-Handler------------------------------------------------------
  17. .global timer2_OVF
  18. timer2_OVF:
  19. push timer2_r
  20. lds timer2_r, timer2_cnt ;Timer-Scaling
  21. inc timer2_r
  22. lds temp, timer2_MAX
  23. cp timer2_r, temp
  24. brne .+22
  25. ;timed actions
  26. in timer2_r, PORTC ;toggle PINC
  27. lds temp, timer2_var
  28. eor timer2_r, temp
  29. out PORTC, timer2_r
  30. lds timer2_r, timer2_bool ;toggle Variable
  31. com timer2_r
  32. sts timer2_bool, timer2_r
  33. clr timer2_r
  34. sts timer2_cnt, timer2_r
  35. pop timer2_r
  36. reti