Hallo Teslanikola
wenn ich mir selber helfen könnte , dann hätte ich die frage doch nicht in ein forum gestellt.
ist ja auch OK, ich und vermutlich auch alle anderen hier sind gerne bereit Dir zu helfen.
Wozu ICH nicht bereit bin, und das Thema hatten wir hier schonmal, ist Deine Arbeit zu machen. Ich erkläre Dir gerne wie man mit Interrupts umgeht, ich schaue auch gerne mal über Deinen Code und gebe meinen Senf dazu was man imo besser oder anders machen könnte. Aber Programmieren mußt Du Dein Programm schon selbst.
Sorry, wenn ich so böse war, aber wer 2 Stunden damit beschäftigt war herrauszufinden wie man 2 Timer als Counter und timer zusammen bringt und nach den 2 stunden soweit wie vorher ist dem brennt schon mal ein Fusebit durch.
Armer schwarzer Kater!
Aber warum fragst Du dann nicht nach DEM womit Du ein Problem hast? Du fragst immer nur danach wer eine Lösung hat. Am besten gleich für das ganze Programm.
Wie Du 2 Interrupts ans laufen bringst ... kein Problem ...
Im abgekupferten Code hast Du für Timer0 stehen:
On Timer0 Overflow_Routine_Timer0
Enable Interrupt
Genau das "On Timer ..." fehlt für Timer 1!
On Timer0 Overflow_Routine_Timer0
On Timer1 Overflow_Routine_Timer1
Enable Interrupt
Mit On Timer0 (1) sagst Du dem Compiler das er 1. den Overflow-Interrupt einschalten soll und du sagst ihm 2. wohin er bei einem Interrupt springen soll. Nämlich zum Lable Overflow_Routine...
Also z.B.
Code:
$regfile = "M8def.dat"
Dim Var1 as Byte
Dim Var2 as Byte
On Timer0 Test1
On Timer1 Test2
Enable Interrupt
Config Timer0 = Timer, Prescale = 1
Config Timer1 = Timer, Prescale = 1
Do
loop
Test1:
incr Var1
Return
Test2:
incr Var2
Return
Schau Dir im Simulator mal an was mit den Variablen Var1 & Var2 passiert und wann es passiert. Klar?
Ciao,
Werner
Lesezeichen