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