Hi All,
I have a 40X2 program that needs 2 separate interrupt routines to run one after the other to allow different input pins at different times.
I tried two interrupts but it will only allow one routine.
Part of the program needs to use a.0 to drive b.2 quickly on and off as necessary and the second part of the program uses an interrupt to use a.1 and drive b.3 on and off quickly.
I've used 'setint off' in the program to turn it off after the first interrupt.
How do I set up one interrupt to do this in different parts of the program?
This is part of the first interrupt:
this is part of the second interrupt.
Is there a way of accomplishing this easily?
Regards Mark
I have a 40X2 program that needs 2 separate interrupt routines to run one after the other to allow different input pins at different times.
I tried two interrupts but it will only allow one routine.
Part of the program needs to use a.0 to drive b.2 quickly on and off as necessary and the second part of the program uses an interrupt to use a.1 and drive b.3 on and off quickly.
I've used 'setint off' in the program to turn it off after the first interrupt.
How do I set up one interrupt to do this in different parts of the program?
This is part of the first interrupt:
Code:
[color=Black]camera:
[/color][color=Blue]write [/color][color=Purple]b20[/color][color=Black],[/color][color=Navy]8
[/color][color=Blue]read [/color][color=Purple]b20[/color][color=Black],[/color][color=Purple]b21
[/color][color=Blue]setint [/color][color=Navy]%00000001[/color][color=Black],[/color][color=Navy]%00000001[/color][color=Black],a [/color][color=Green]; activate interrupt when pin a.0 only goes high
[/color][color=Blue]serout a.7[/color][color=Black],[/color][color=Blue]n2400[/color][color=Black],[/color][color=Blue]([/color][color=Navy]254[/color][color=Black],[/color][color=Navy]230[/color][color=Blue]) [/color][color=Green]'program counter
[/color][color=Blue]serout a.7[/color][color=Black],[/color][color=Blue]n2400[/color][color=Black],[/color][color=Blue]([/color][color=Black]#[/color][color=Purple]b21[/color][color=Blue])
for [/color][color=Purple]b3 [/color][color=DarkCyan]= [/color][color=Navy]1 [/color][color=Blue]to [/color][color=Navy]10 [/color][color=Green]'timer for glycerin
[/color][color=Blue]serout a.7[/color][color=Black],[/color][color=Blue]n2400[/color][color=Black], [/color][color=Blue]([/color][color=Navy]254[/color][color=Black],[/color][color=Navy]148[/color][color=Blue])
serout a.7[/color][color=Black],[/color][color=Blue]n2400[/color][color=Black],[/color][color=Blue]([/color][color=Red]"Glycerin Drain "[/color][color=Black],#[/color][color=Purple]b3[/color][color=Blue])
[/color][color=Green]rem if pina.0=1 then high b.2 'open V2 glycerin drain
rem endif
rem if pina.0=0 then low b.2 'close V2 glycerin drain
rem endif
[/color][color=Blue]pause [/color][color=Navy]100
[/color][color=Blue]if [/color][color=Purple]pina.0 [/color][color=DarkCyan]= [/color][color=Navy]1 [/color][color=Blue]then [/color][color=Black]camera
[/color][color=Blue]if [/color][color=Purple]b3[/color][color=DarkCyan]=[/color][color=Navy]10 [/color][color=Blue]then [/color][color=Black]water
[/color][color=Blue]next [/color][color=Purple]b3
[/color][color=Green]rem low b.0
[/color][color=Blue]goto [/color][color=Black]camera
[/color]
[color=Blue]interrupt:
high b.2 [/color][color=Green]; switch output on
[/color][color=Blue]pause [/color][color=Navy]50
[/color][color=Blue]if [/color][color=Purple]pina.0 [/color][color=DarkCyan]= [/color][color=Navy]1 [/color][color=Blue]then [/color][color=Black]interrupt [/color][color=Green]; loop here until the interrupt cleared
[/color][color=Blue]low b.2
[/color][color=Purple]b3[/color][color=DarkCyan]=[/color][color=Navy]0
[/color][color=Blue]pause [/color][color=Navy]2000 [/color][color=Green]; wait 2 seconds
[/color][color=Blue]setint [/color][color=Navy]%00000001[/color][color=Black],[/color][color=Navy]%00000001[/color][color=Black],a [/color][color=Green]; re-activate interrupt
[/color][color=Blue]return [/color][color=Green]; return from sub[/color]
this is part of the second interrupt.
Code:
[color=Black]camerawater:
[/color][color=Blue]write [/color][color=Purple]b20[/color][color=Black],[/color][color=Navy]14
[/color][color=Blue]read [/color][color=Purple]b20[/color][color=Black],[/color][color=Purple]b21
[/color][color=Blue]setint [/color][color=Navy]%00000010[/color][color=Black],[/color][color=Navy]%00000010[/color][color=Black],a [/color][color=Green]; activate interrupt when pin a.0 only goes high
[/color][color=Blue]serout a.7[/color][color=Black],[/color][color=Blue]n2400[/color][color=Black],[/color][color=Blue]([/color][color=Navy]254[/color][color=Black],[/color][color=Navy]230[/color][color=Blue]) [/color][color=Green]'program counter
[/color][color=Blue]serout a.7[/color][color=Black],[/color][color=Blue]n2400[/color][color=Black],[/color][color=Blue]([/color][color=Black]#[/color][color=Purple]b21[/color][color=Blue])
serout a.7[/color][color=Black],[/color][color=Blue]n2400[/color][color=Black],[/color][color=Blue]([/color][color=Navy]254[/color][color=Black],[/color][color=Navy]128[/color][color=Blue])
serout a.7[/color][color=Black],[/color][color=Blue]n2400[/color][color=Black],[/color][color=Blue]([/color][color=Red]"Water Drain"[/color][color=Blue])
for [/color][color=Purple]b6[/color][color=DarkCyan]=[/color][color=Navy]1 [/color][color=Blue]to [/color][color=Navy]5 [/color][color=Green]'timer for water drain
[/color][color=Blue]serout a.7[/color][color=Black],[/color][color=Blue]n2400[/color][color=Black],[/color][color=Blue]([/color][color=Navy]254[/color][color=Black],[/color][color=Navy]192[/color][color=Blue])
serout a.7[/color][color=Black],[/color][color=Blue]n2400[/color][color=Black],[/color][color=Blue]([/color][color=Black]#[/color][color=Purple]b6[/color][color=Black],[/color][color=Red]" Water drain timer"[/color][color=Blue])
[/color][color=Green]rem if pina.1=1 then high b.3 'V3 open water drain op4
rem endif
rem if pina.1=0 then low b.3 'V3 close water drain
rem endif
[/color][color=Blue]if [/color][color=Purple]pina.1 [/color][color=DarkCyan]= [/color][color=Navy]1 [/color][color=Blue]then [/color][color=Black]camerawater
[/color][color=Blue]pause [/color][color=Navy]500 [/color][color=Green]'timer for water drain
[/color][color=Blue]if [/color][color=Purple]b6[/color][color=DarkCyan]=[/color][color=Navy]5 [/color][color=Blue]then [/color][color=Black]water
[/color][color=Blue]next [/color][color=Purple]b6
[/color][color=Blue]goto [/color][color=Black]water
[/color]
[color=Blue]interrupt:
high b.3 [/color][color=Green]; switch output 1 on
[/color][color=Blue]pause [/color][color=Navy]50
[/color][color=Blue]if [/color][color=Purple]pina.1 [/color][color=DarkCyan]= [/color][color=Navy]1 [/color][color=Blue]then [/color][color=Black]interrupt [/color][color=Green]; loop here until the interrupt cleared
[/color][color=Blue]low b.3
pause [/color][color=Navy]2000 [/color][color=Green]; wait 2 seconds
[/color][color=Blue]setint [/color][color=Navy]%00000010[/color][color=Black],[/color][color=Navy]%00000010[/color][color=Black],a [/color][color=Green]; re-activate interrupt
[/color][color=Blue]return [/color][color=Green]; return from sub[/color]
Is there a way of accomplishing this easily?
Regards Mark