Hallo Leute,

ich habe mal eine Frage:
Ich habe eine LED, die an einem ATmega168 mit einem Vorwiderstand angeschlossen ist und möchte diese von 100 % Leistung runterdimmen.
Dazu habe ich hier schon die Suchfunktion benutzt aber nicht wirklich was gefunden.
Dann habe ich bei mikrocontroller.net gesucht und einen Artikel für Assembler gefunden, aber der ist für den ATmega8 geschrieben:

Code:
.include "m8def.inc"
 
.def temp  = r16
 
.def PWMCount = r17
 
.def ocr_1 = r18                      ; Helligkeitswert Led1: 0 .. 127
.def ocr_2 = r19                      ; Helligkeitswert Led2: 0 .. 127
.def ocr_3 = r20                      ; Helligkeitswert Led3: 0 .. 127
.def ocr_4 = r21                      ; Helligkeitswert Led4: 0 .. 127
.def ocr_5 = r22                      ; Helligkeitswert Led5: 0 .. 127
.def ocr_6 = r23                      ; Helligkeitswert Led6: 0 .. 127
 
.org 0x0000
        rjmp    main                  ; Reset Handler
.org OVF0addr
        rjmp    timer0_overflow       ; Timer Overflow Handler
 
main:
        ldi     temp, LOW(RAMEND)     ; Stackpointer initialisieren
        out     SPL, temp
        ldi     temp, HIGH(RAMEND)
        out     SPH, temp
	
        ldi     temp, 0xFF            ; Port B auf Ausgang
        out     DDRB, temp
 
        ldi     ocr_1, 0
        ldi     ocr_2, 1
        ldi     ocr_3, 10
        ldi     ocr_4, 20
        ldi     ocr_5, 80
        ldi     ocr_6, 127
 
        ldi     temp, 0b00000001      ; CS00 setzen: Teiler 1
        out     TCCR0, temp
 
        ldi     temp, 0b00000001      ; TOIE0: Interrupt bei Timer Overflow
        out     TIMSK, temp
 
        sei
 
loop:   rjmp    loop
 
timer0_overflow:                      ; Timer 0 Overflow Handler
        inc     PWMCount              ; den PWM Zähler von 0 bis
        cpi     PWMCount, 128         ; 127 zählen lassen
        brne    WorkPWM
        clr     PWMCount
 
WorkPWM:
        ldi     temp, 0b11000000      ; 0 .. Led an, 1 .. Led aus
 
        cp      PWMCount, ocr_1       ; Ist der Grenzwert für Led 1 erreicht
        brlt    OneOn
        ori     temp, $01
 
OneOn:  cp      PWMCount, ocr_2       ; Ist der Grenzwert für Led 2 erreicht
        brlt    TwoOn
        ori     temp, $02
 
TwoOn:  cp      PWMCount, ocr_3       ; Ist der Grenzwert für Led 3 erreicht
        brlt    ThreeOn
        ori     temp, $04
 
ThreeOn:cp      PWMCount, ocr_4       ; Ist der Grenzwert für Led 4 erreicht
        brlt    FourOn
        ori     temp, $08
 
FourOn: cp      PWMCount, ocr_5       ; Ist der Grenzwert für Led 5 erreicht
        brlt    FiveOn
        ori     temp, $10
 
FiveOn: cp      PWMCount, ocr_6       ; Ist der Grenzwert für Led 6 erreicht
        brlt    SetBits
        ori     temp, $20
 
SetBits:                              ; Die neue Bitbelegung am Port ausgeben
        out     PORTB, temp
 
        reti
(Quelle: http://www.mikrocontroller.net/artic...-Tutorial:_PWM)

Da ich aber mit C arbeiten möchte hilft mir der Code nicht wahrlich weiter.
Ich würde mich freuen, wenn ihr mir Tipps geben könntet, die mir bei der Umsetzung helfen würden.
Danke im Voraus!