hab jetzt nochmal ein neues Programm geschrieben, welches mit weniger Hardware auskommt (also nur 2 ext. Interrupts) und sonst nichts ;-)
Dadurch hast du nicht immer diese blöde Timer-isr und hast mehr Zeit für andere sachen.
Hier mal der Code:
Aber hier noch die Antworten auf deine Frage, falls du lieber den ersten Code verwenden möchtest:Code:$regfile = "m32def.dat"
$crystal = 16000000
$framesize = 80
$hwstack = 80
$swstack = 80
Config Lcd = 20 * 4
Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.4 , Rs = Portc.5
Config Lcdbus = 4
Initlcd
Cls
Cursor Off
Config Pind.2 = Input
Portd.2 = 0
Config Pind.3 = Input
Portd.3 = 0
Config Int0 = Rising
On Int0 Kanal_1
Enable Int0
Config Int1 = Rising
On Int1 Kanal_2
Enable Int1
Dim Kanal(2) As Word
Dim Rc(2) As Word
Enable Interrupts
Do
Locate 1 , 1
Lcd "Servo(1): " ; Rc(1) ; " "
Locate 2 , 1
Lcd "Servo(2): " ; Rc(2) ; " "
Waitms 100
Loop
End
Kanal_1:
While Pind.2 = 1
Waitus 10
Incr Kanal(1)
Wend
Rc(1) = Kanal(1)
Kanal(1) = 0
Return
Kanal_2:
While Pind.3 = 1
Waitus 10
Incr Kanal(2)
Wend
Rc(2) = Kanal(2)
Kanal(2) = 0
Return
Im label "Servo_input" schreibst du nach "Servo_wert_read = Servo_wert " noch "servo_wert = 0".
Das mit dem disablen der Interrupts kannst du dir sparen, da diese sowieso standartmäßig disabled sind (also in isr's) ;-)
Solltest du es doch verwenden wollen (aus welchen Gründen auch immer), könntest du auch "Disable Timer1" schreiben, dann wird nur dieser disabled.
Gruß
Chris