Hier der Code...
Code:
 

'******************************************************
'Prozessor: ATMega8L
'R/C_Kanal einlesen
'
'Hardware:
'R/C-Kanal an D.2 (INT0)
'LED an C.0
'LED an C.1
'LED an C.2
'******************************************************

$regfile "m8def.dat"
$crystal = 1000000

Config Lcdpin = Pin , Db4 = Portd.7 , Db5 = Portb.0 , Db6 = Portb.1 , Db7 = Portb.2 , E = Portd.6 , Rs = Portd.5
Config Lcd = 16 * 2



'Konfiguration der I/O-Ports´s
Config Pind.2 = Input                                       'R/C Pulseingang
Config Pinb.3 = Output                                      'PWM Ausgang
Config Pind.7 = Output
Config Pinb.0 = Output
Config Pinb.1 = Output
Config Pinb.2 = Output
Config Pind.6 = Output
Config Pind.5 = Output
Portd.2 = 1


'Konfiguration des Timer1
Config Timer1 = Timer , Prescale = 1

'Konfiguration des INT0
'Interrupt bei jedem Flankenwechsel (0->1 und 1->0)
Config Int0 = Change

'======================================================
'Deklarationen
'======================================================

Dim Reading As Bit
Dim Rc_value As Word
Dim Error As Bit

'======================================================
'Initialisierungen
'======================================================

'Zuweisung der Interrupt-Service-Routinen
On Int0 Rc_read
On Timer1 Rc_error

'Timer-Freigabe
Enable Timer1
Stop Timer1

'PWM-Timer
Enable Timer2
Timer2 = 0
Start Timer2

'Freigabe der Interrupt-Routinen
Enable Int0
Enable Interrupts

Cls
Lcd "Timerwert:"

'Den Cursor ausschalten
Cursor Off


'======================================================
'Hauptprogramm-Schleife
'======================================================

Do

'LED an bei Fehler (Timer-Überlauf)
Portc.2 = Not Error

'Den Timerwert ausgeben
   Locate 1 , 12
   Lcd Rc_value ; "     "

'Erzeugung des PWM-Signals
Ocr2 = Rc_value

Loop



End

'======================================================
'ISR für INT0 - R/C-Kanal lesen
'======================================================
Rc_read:
'Den Timer starten mit steigender Flanke
If Reading = 0 Then
   Start Timer1
   Reading = 1
   Set Portc.0
'Den Timer stoppen mit fallender Flanke
Else
   Stop Timer1
   Rc_value = Timer1
   Timer1 = 0
   Reading = 0
End If
'Error-Bit rücksetzen
Error = 0
Return

'======================================================
'ISR für Timer1 - Fehlerhandling
'======================================================
Rc_error:
'Error-Bit setzen
Error = 1
Reading = 0
Stop Timer1
Rc_value = 0

Return