Ativar Interrupção Externa PIC18F4550 e XC Compiler

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Ativar Interrupção Externa PIC18F4550 e XC Compiler

Mensagempor klebernst » 14 Out 2014 21:03

Olá pessoal!

O meu objetivo é fazer com que toda vez que for acionada a Interrupção externa (RB0) o estado do led ligado a RD0 seja invertido, mas não funciona.
O que vocês notam de errado no código?
Código: Selecionar todos
#include <xc.h>
//#include <delays.h>
#include<pic18f4550.h>

#pragma config FOSC = HS        // Oscillator Selection bits (HS oscillator (HS))
#pragma config WDT = OFF
#pragma config LVP = OFF

int a;
void interrupt int0(void)             // High priority interrupt
{
    //for (a=0; a<1000; a++){}
    INTCONbits.INT0F = 0;
   
    PORTDbits.RD0 = !PORTDbits.RD0;//!PORTDbits.RD0;
    //PORTDbits.RD0 = 1;
   
}

void interrupt low_priority   LowIsr(void)    //Low priority interrupt
{
   
}



void main(void)
{
    ADCON1 = 15; //Desabilita canal a/d
   
    TRISAbits.RA5 = 0;
    PORTAbits.RA5 = 1; // transistor que habilita os leds no kit
    TRISD = 0;
    PORTD = 0;
    TRISB = 0b00000011;

    INTCONbits.GIE = 1;
    INTCONbits.GIEH = 1;
    INTCONbits.GIEL = 1;
    INTCONbits.INT0IE = 1; //habilita INT0
    INTCONbits.INT0F = 0; //Abaixa a flag de INT0
    RCONbits.IPEN = 1; // Habilita interrupção com nível de prioridade Alto = 0x08 baixo = 0x18


    while(1)
    {
      PORTDbits.RD7 = 1;//Não faz nada
    }
}

klebernst
Bit
 
Mensagens: 5
Registrado em: 09 Fev 2014 13:18

Re: Ativar Interrupção Externa PIC18F4550 e XC Compiler

Mensagempor xultz » 15 Out 2014 08:29

Eu não lembro direito, mas para escrever no pino você não deveria usar o registrador LATDbits.LATD0?
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Re: Ativar Interrupção Externa PIC18F4550 e XC Compiler

Mensagempor tcpipchip » 16 Out 2014 06:54

Código: Selecionar todos
void main()
{
    TRISD=0;                      // Configure PortD as output port
    INTCON=0x10;                  // Enable INT0
    INTCON2=0;                    // Set Falling Edge Trigger for INT0

    INTCON.GIE=1;    // Enable The Global Interrupt
    while(1)
    {
        LATD=0x55;       //Set some value at PortD
    }
}

void interrupt()              // Interrupt ISR
{
    INTCON.INT0IF=0;          // Clear the interrupt 0 flag
    LATD=~LATD;               // Invert (Toggle) the value at PortD
    Delay_ms(1000);           // Delay for 1 sec
}
------------------------------------------
http://www.youtube.com/tcpipchip
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x