Pwm8_8.asm
1 | .nolist
| 2 | .include "1200def.inc"
| 3 | .list
| 4 |
| 5 | .def PWM0 = r1
| 6 | .def PWM1 = r2
| 7 | .def PWM2 = r3
| 8 | .def PWM3 = r4
| 9 | .def PWM4 = r5
| 10 | .def PWM5 = r6
| 11 | .def PWM6 = r7
| 12 | .def PWM7 = r8
| 13 |
| 14 | .def PWM_Counter = r9
| 15 | .def Save_SREG = r10
| 16 | .def int_acc = r16
| 17 |
| 18 | .org OVF0addr
| 19 | rjmp int_t0
| 20 |
| 21 | int_t0:
| 22 | in Save_SREG, SREG
| 23 | in int_acc, TCNT0
| 24 | ori int_acc, -64 ;interrupt every 66 cycle
| 25 | out TCNT0, int_acc
| 26 | inc PWM_Counter
| 27 |
| 28 | cp PWM_Counter, PWM0
| 29 | rol int_acc
| 30 | cp PWM_Counter, PWM1
| 31 | rol int_acc
| 32 | cp PWM_Counter, PWM2
| 33 | rol int_acc
| 34 | cp PWM_Counter, PWM3
| 35 | rol int_acc
| 36 | cp PWM_Counter, PWM4
| 37 | rol int_acc
| 38 | cp PWM_Counter, PWM5
| 39 | rol int_acc
| 40 | cp PWM_Counter, PWM6
| 41 | rol int_acc
| 42 | cp PWM_Counter, PWM7
| 43 | rol int_acc
| 44 | out PORTB, int_acc
| 45 |
| 46 | out SREG, Save_SREG
| 47 | reti ;33 cycle
|
|