;initialize timer interrupt rollover counter at 64 steps
step64 = 63
R_DutyNew = 0
R_Duty = 0
R_Dir = 0
;Main program code
;send out R_Motor forward signal
R_DutyNew = b'10100000' ;dir-fwd, 50% duty cycle
;interrupt service routine
sub PWMduty
If step64 = 63 And R_Duty = 0 Then ;start new interrupt period
R_Duty = R_DutyNew AND b'00111111' ;fetch new duty update register
R_Dir = R_DutyNew AND b'10000000' ;check motor dir bit
...
...
end if
;Call this R_Motor forward
If R_duty > 0 AND R_Dir = 1 Then
sbi PortB.0
else
cbi PortB.0
end if
...
...
...
step64 = step64 - 1 ;decrement interrupt rollover counter
If step64 = 0 Then ;start new period counter
step64 = 63
end if
R_Duty = R_Duty - 1 ;decrement duty cycle on time
end sub