take a look at this page
http://www.micahcarrick.com/04-26-2005/pic-interrupts-gpsim.html



--- Jean-Paul <[EMAIL PROTECTED]> escribió:

> Hello Ivan,
> 
> The task you are describing is as simple as RA1 =
> !RB0.
> 
> To use interrupts in any controller (so in PICs
> too), you have several things 
> to configure:
> - choose whether the interrupt routine will react to
> a state or to an edge;
> - choose that an ISR will react at all, i.e. allow
> interrupts in general, the 
> one you use in particular, once before entering the
> main loop.
> 
> In the interrupt service routine itself, two cases
> are possible according to 
> the type and model of controller:
> - the flag that is set by the interrupting event
> gets reset by hardware upon 
> execution of the ISR;
> or
> - you have to explicitly reset the flag yourself
> inside the ISR.
> Either way, the flag has to be reset.
> 
> You'll want to check all that in the specs of your
> controller, then code your 
> program so that:
> - interrupts are allowed for both edges on RB0
> (startup);
> - RA1 = 0 upon a trailing (falling) edge (ISR)
> - RA1 = 1 upon a leading (rising) edge (ISR)
> - The main loop will do nothing, that's the idea
> with interrupts.
> 
> It's not that terrible, Ivan ;-)
> 
> Regards
> JP
> 
> Le Lundi 28 Janvier 2008 19:06, Ivan Petrushev a
> écrit :
> > Hello,
> > I'm new to SDCC and microcontrollers - my first
> two very simple
> > programs burned into PIC16F88 and working! :)
> > Now I'm trying something little harder than just
> lighting LEDs - I
> > want to try the interrupt system.
> > PIC16F88 has one external interrupt - on pin RB0.
> > I'm trying the following very simple program, but
> something is wrong:
> > #define __16f88
> > #include"pic/pic16f88.h"
> >
> > typedef unsigned int word;
> > word at 0x2007  __CONFIG = 0x3f70;
> >
> > void isr_high(void) interrupt 1 {
> >         if (RB0 == 1) RA1 = 0;
> > }
> > void main(void) {
> >         TRISA = 0;
> >         while(1) {
> >                 RA1 = 1;
> >         }
> > }
> >
> > I expect when I run this to have pin RA1 '1',
> untill RB0 is pulled
> > '1'. Then RA1 should go '0' untill RB0 is
> released.
> > I'm running that at gpsim and there RA1 is always
> '1'. When I run the
> > program step by step I see it never enters the
> interrupt code section.
> > So, how can I define an interrupt? I've searched a
> lot through the
> > documentation of SDCC and the only piece of value
> I've found is the
> > 'void isr_high interrupt 1' function I'm using.
> >
> > Is there a more complicated/simplified way to code
> an interrupt?
> >
> > Thanks,
> > Ivan.
> >
> >
>
-------------------------------------------------------------------------
> > This SF.net email is sponsored by: Microsoft
> > Defy all challenges. Microsoft(R) Visual Studio
> 2008.
> >
>
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> > _______________________________________________
> > Sdcc-user mailing list
> > Sdcc-user@lists.sourceforge.net
> >
>
https://lists.sourceforge.net/lists/listinfo/sdcc-user
> 
> -- 
> Never jump into a loop!
> 
>
-------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio
> 2008.
>
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> _______________________________________________
> Sdcc-user mailing list
> Sdcc-user@lists.sourceforge.net
>
https://lists.sourceforge.net/lists/listinfo/sdcc-user
> 



      Tarjeta de crédito Yahoo! de Banco Supervielle.
Solicitá tu nueva Tarjeta de crédito. De tu PC directo a tu casa. 
www.tuprimeratarjeta.com.ar 

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Sdcc-user mailing list
Sdcc-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sdcc-user

Reply via email to