Ich habe mich vor kurzem auch mal mit dem Thema PWM beschäftigt.
Bin zuerst auch daran gescheitert dass waitus nur Konstanten verwendet und habe es dann mit waitms probiert.
Hier mein Ergebnis (für einen Tiny13V):



Code:
'============================================================
'
' ************************************
' ***                              ***
' ***    Dimmendes Blinklicht      ***
' ***                              ***
' ************************************
'
' µC: ATtiny13
' +Ub: 3,00 V
'
'
'============================================================

$regfile = "ATtiny13.DAT"
$crystal = 128000                                           'Frequenz des internen 128kHz-Oszillators

Config Portb = &B00011000                                   'Pinb.3 und 4 auf 'Ausgang', Rest auf 'Eingang' schalten
Portb = &B11100111                                          'Pullups zuschalten, außer für Pinb.3 und .4
Stop Adc                                                    'A/D-Wandler abschalten, um Strom zu sparen
Stop Ac                                                     'Analog-Komparator abschalten, um Strom zu sparen

Dim A As Byte
Dim B As Byte
Dim Stufen As Byte

Stufen = 20

Do

For A = 0 To Stufen
B = Stufen - A
Gosub Pwm
Next
For A = Stufen To 0 Step -1
B = Stufen - A
Gosub Pwm
Next
Waitms 1000

Loop

Pwm:
        Portb.3 = 1
        Waitms A
        Portb.3 = 0
        Waitms B
        Return

End