//*************************************************************************************************
//test code for int0, blink led on portD on receving interrupt
#include <p18f4450.h>
void main (void);
void InterruptHandlerHigh (void);
void main ()
{
int i=0;
INTCON2bits.INTEDG0=1;//m interrupt is rising edge
INTCONbits.INT0IE=1;//m enable interrupt
INTCONbits.GIEH = 1; //enable global interrupts
TRISB = 1; //set port b as input
TRISD=0; //set port d as output
while(1);//move in loop, gets out on receving interrupt and then comes back.
}//end main
// High priority interrupt vector
#pragma code InterruptVectorHigh = 0x08
void
InterruptVectorHigh (void)
{
_asm
goto InterruptHandlerHigh //jump to interrupt routine
_endasm
}
//----------------------------------------------------------------------------
// High priority interrupt routine
#pragma code
#pragma interrupt InterruptHandlerHigh
void
InterruptHandlerHigh ()
{ int i=0;
int j=0;
if (INTCONbits.INT0F)
{
INTCONbits.INT0IE=0;//m disable the interrupt
for(j=0;j<4;j++)//toggle the bit0 or portD on receiving interrupt
{
LATDbits.LATD0 = 1;
for( i=0;i<40000;i++);
LATDbits.LATD0 = 0;
for( i=0;i<40000;i++);
}
INTCONbits.INT0F=0; //m reset the flag
}
INTCONbits.INT0IE=1;//m enable the interrupt
}
//----------------------------------------------------------------------------
//*************************************************************************************************
#include <p18f4450.h>
#pragma config WDT = OFF, LVP = OFF, FOSC = INTOSC_HS
void main (void);
void InterruptHandlerLow (void);
void main (){
TRISC=0; //Port C = output
T0CON = 0b10000001; //prescaler = 4
INTCONbits.TMR0IE=1;
INTCONbits.GIE=1;
while(1);
}
//Low priority interrupt vector
#pragma code InterruptVectorLow = 0x18
void
InterruptVectorLow (void)
{
_asm
goto InterruptHandlerLow
_endasm
}
// Low priority interrupt routine
#pragma code
#pragma interrupt InterruptHandlerLow
void
InterruptHandlerLow (){
if (INTCONbits.TMR0IF){
LATC=~LATC;
INTCONbits.TMR0IF=0;
}
}
#include <p18f4450.h>
#pragma config WDT = OFF, LVP = OFF, FOSC = INTOSC_HS
void main (void);
void InterruptHandlerLow (void);
void main (){
TRISC=0; //Port C = output
/* T0CON = 0b10000001; //prescaler = 4
INTCONbits.TMR0IE=1; */
INTCONbits.GIE=1; //enable global interrupts
INTCON2bits.INTEDG0=1;//m interrupt is rising edge
INTCONbits.INT0IE=1;//m enable interrupt
PORTBbits.INT0=1;
while(1);
}
//Low priority interrupt vector
#pragma code InterruptVectorLow = 0x18
void
InterruptVectorLow (void)
{
_asm
goto InterruptHandlerLow
_endasm
}
// Low priority interrupt routine
#pragma code
#pragma interrupt InterruptHandlerLow
void
InterruptHandlerLow (){
/*if (INTCONbits.TMR0IF){
LATC=~LATC;
LATB=~LATB;
INTCONbits.TMR0IF=0;
}*/
if (INTCONbits.INT0F)
{
LATC=~LATC;
//LATB=~LATB;
INTCONbits.INT0F=0; //m reset the flag
}
INTCONbits.INT0IE=1;//m enable the interrupt
}
#include <p18f4450.h>
#pragma config WDT = OFF, LVP = OFF, FOSC = INTOSC_HS
void main (void);
void InterruptHandlerLow (void);
void main (){
TRISD=0; //Port C = output
T0CON = 0b10000000; //prescaler = 2
INTCONbits.TMR0IE=1;
INTCONbits.GIE=1;
while(1);
}
//Low priority interrupt vector
#pragma code InterruptVectorLow = 0x18
void
InterruptVectorLow (void)
{
_asm
goto InterruptHandlerLow
_endasm
}
// Low priority interrupt routine
#pragma code
#pragma interrupt InterruptHandlerLow
void
InterruptHandlerLow (){
if (INTCONbits.TMR0IF){
LATD^=1;
INTCONbits.TMR0IF=0;
}
}
#include <p18f4450.h>
#pragma config WDT = OFF, LVP = OFF, FOSC = INTOSC_HS
void main (void);
void InterruptHandlerLow (void);
void main (){
TRISC=0; //Port C = output
ADCON1=0x0e; //all digital
INTCON2bits.RBPU=0; //WPUs on
T0CON = 0b10000000; //prescaler = 2
INTCONbits.TMR0IE=1; //enable timer interrupts
INTCONbits.INT0IE=1; //enable Int0 interrupts
INTCONbits.GIE=1; //enable global interrupts
while(1);
}
//Low priority interrupt vector
#pragma code InterruptVectorLow = 0x18
void
InterruptVectorLow (void)
{
_asm
goto InterruptHandlerLow
_endasm
}
// Low priority interrupt routine
#pragma code
#pragma interrupt InterruptHandlerLow
void
InterruptHandlerLow (){
if (INTCONbits.TMR0IF){
LATC^=2;
INTCONbits.TMR0IF=0;
}
if (INTCONbits.INT0IF){
LATC^=2;
INTCONbits.INT0IF=0;
}
}
#pragma config WDT=OFF,LVP=OFF,FOSC=HSPLL_HS,PLLDIV=5,CPUDIV=OSC2_PLL3
Pommie.
Interpreted Basic is an efficient short cut to the PIC experience, but very inefficient speed and code wise, horses for courses. I propose that how you learn is critically important. The deep end can be fatally disappointing to start with.
Use PICAXE, Interupts are a no-brainer, software is free, unbelievably short learning curve
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?