Device = 18F4550
XTAL = 48
ALL_DIGITAL=true
Symbol T0PS0 = T0CON.0 ' Timer0 Prescaler Select bit
Symbol T0PS1 = T0CON.1 ' Timer0 Prescaler Select bit
Symbol T0PS2 = T0CON.2 ' Timer0 Prescaler Select bit
Symbol PSA = T0CON.3 ' Timer0 Prescaler Assignment bit
Symbol T0SE = T0CON.4 ' Timer0 Source Edge Select bit
Symbol T0CS = T0CON.5 ' Timer0 Clock Source Select bit
Symbol T08BIT = T0CON.6 ' Timer0 8-bit/16-bit Control bit
Symbol TMR0ON = T0CON.7 ' Timer0 On/Off Control bit
Symbol TMR0IF = INTCON.2 ' TMR0 Overflow Interrupt Flag
Symbol TMR0IE = INTCON.5 ' TMR0 Overflow Interrupt Enable
Symbol GIE = INTCON.7 ' Global Interrupt Enable
Symbol GIEL = INTCON.6
Symbol INTEDG = INTCON2.6 ' External Interrupt0 Edge Select bit
Symbol INTE = INTCON.4 ' External RB0 Interrupt Enable
Symbol INTF = INTCON.1 ' External Interrupt Flage
Dim i As Byte
Dim f As Word
Dim serv1 As Word
Dim serv2 As Word
serv1=1434
serv2=1443
TRISB=$ff
f=0
GoTo over_subs
ON_INTERRUPT GoTo INPUT_INTERRUP ' Point to the interrupt handler and ENABLE global interrupts
'-----------------------------------------------------------------------------------------
INPUT_INTERRUP:
If INTF = 1 Then ' Check if external interrupt
Inc f
INTF=0
If INTEDG = 0 Then
INTEDG = 1
Else
INTEDG = 0
End If
Context Restore
EndIf
If TMR0IF=1 Then
TMR0IF=0
Inc i
If i>2 Then
TMR0LH=250
If i>3 Then
i=0
Servo PORTD.2,serv1
Servo PORTD.1,serv2
End If
End If
TMR0LH=0
Context Restore
End If
'------------------------------------------------------------------------------------------
'-----------------------------------------------------------------------------------------
over_subs:
GIE = 0 ' disable interrupts
T0PS0=1
T0PS1=1
T0PS2=1
PSA=0
T0SE=0
T0CS=0
T08BIT=1
TMR0ON=1
TMR0IE=1
INTE = 1 'enable RB0 interrupt
GIE = 1 'enable interrupts
'-----------------------------------------------------------------------------------------
main:
If f<4 Then 'si no pongo este if no tiene en cuenta al while
While f<4
serv1=1600
Wend
Else
serv1=3000
DelayMS 1000
f=0
EndIf
GoTo main