Int 0 und timer bitte um Hilfe

OP #1502666
Lesenswert?

$regfile = "m8def.dat"
$crystal = 4000000
Config Timer1 = Timer, Prescale = 64
Config Portc = Output
Config Portd.4 = Output
Led Alias Portc.0
Led2 Alias Portc.1
Led3 Alias Portc.2
Led4 Alias Portc.3
Led5 Alias Portc.4
Led6 Alias Portc.5
Led7 Alias Portd.4

Dim A As Single
Dim B As Single
Dim C As Single
Config Portd.2 = Input
Config Portd.3 = Input
On Timer1 Timer_irq

 Config Int0 = Rising
 Config Int1 = Rising

Const Timervorgabe = 39886
Portd.2 = 1
Portd.3 = 1
Enable Timer1
Enable Interrupts
 Enable Int0
 Enable Int1
 On Int0 Isr_von_int0
 On Int1 Isr_von_int1


Do
If B = 1 Then
Gosub Sub1
End If
If B = 2 Then
B = 0
End If
Loop

Sub1:
If A = 2 Then
   Toggle Led
   Toggle Led2
   Toggle Led3
   Toggle Led4
   Led7 = 0
A = 0
End If
If A = 0 Then
   Led7 = 1
End If
Return

Timer_irq:
  Timer1 = Timervorgabe
        Incr A
   Return

Isr_von_int0:
    Incr B
 Return

Isr_von_int1:
    Incr C
 Return


Irgendwie hab ich nen Brett vorm Kopf

Atmega 8 4 MHZ intern
OP #1502724
Lesenswert?

$regfile = "m8def.dat"
$crystal = 4000000
Config Timer1 = Timer, Prescale = 64
Config Portc = Output
Config Portd.4 = Output
Led Alias Portc.0
Led2 Alias Portc.1
Led3 Alias Portc.2
Led4 Alias Portc.3
Led5 Alias Portc.4
Led6 Alias Portc.5
Led7 Alias Portd.4

Dim A As Single
Dim B As Bit
Dim C As Single
Config Portd.2 = Input
Config Portd.3 = Input
On Timer1 Timer_irq

 Config Int0 = Rising
 Config Int1 = Rising

Const Timervorgabe = 39886
Portd.2 = 1
Portd.3 = 1
Enable Timer1
Enable Interrupts
 Enable Int0
 Enable Int1
 On Int0 Isr_von_int0
 On Int1 Isr_von_int1


Do
If B = 0 Then
Gosub Sub1
End If
If B = 1 Then
Gosub Sub2
End If
Loop

Sub1:
If A = 2 Then
   Toggle Led
   Toggle Led2
   Toggle Led3
   Toggle Led4
   Led7 = 0
A = 0
End If
If A = 0 Then
   Led7 = 1
End If
Return

Sub2:
   Led = 0
   Led7 = 0
   Led3 = 0
   Led2 = 0
   Led4 = 0
   Led5 = 0
   Led6 = 0
Return
Timer_irq:
  Timer1 = Timervorgabe
        Incr A
   Return

Isr_von_int0:
  If B = 1 Then
  Reset B
  Else
  Set B
  End If
 Return

Isr_von_int1:
  If C = 1 Then
  Reset C
  Else
  Set C
  End If
 Return


So funzt es un nu noch INT1

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren