untitled

Pasted Oct 8, 2026, 11:44 AM1 file179 lines

Scan to open on your phone

Point a camera at the QR code - it opens this exact paste, no app needed.

https://codepastes.com/paznabatata
untitled
/**
 * Departamento de Engenharia Electrot�cnica - ESTG
 * Microprocessadores
 *
 * Exemplo 1 - Interrup��es Externas
*   - Configura��o das interrup��es INT0 e INT1.
 *     INT0 de alta prioridade, activa no flanco descendente
 *     INT1 de alta prioridade, activa no flanco descendente
 *     Resist�ncias de pull-up inactivas.
 *
 */

/* header file para as bibliotecas de XC8 */
#include <xc.h>

/* defini��o da velocidade de rel�gio para a fun��o delay */
#define _XTAL_FREQ 4000000

/* configura��o do oscilador interno - Descomentar para a CURIOSITY BOARD*/
#pragma config FOSC = INTIO67

/* desactiva��o do modo de programa��o em baixa tens�o */
#pragma config LVP = ON
/* desactiva��o do temporizador Watch Dog Timer */
#pragma config WDTEN = OFF


/** Vari�veis Globais  */
volatile unsigned char incr = 0;

/**
 * Rotina de servi�o � Interrup��o de Alta Prioridade
 */
void __interrupt(high_priority) highISR(void)
{
    /** C�digo referente �s Interrup��es de Alta Prioridade*/
	// Interrup��o Externa INT0, no pino RB0
	if (INTCONbits.INT0IF && INTCONbits.INT0IE)
     {
        if (LATAbits.LATA4 == 0) // Se o LED estiver desligado...
           {
            LATAbits.LATA4 = 1; // ... ent�o liga
           }
           else
           {
            LATAbits.LATA4 = 0;   //Se o LED estiver ligado, ent�o desliga
           }

		/* Apaga a flag de Interrup��o */
		INTCONbits.INT0IF = 0;
	 }

    if (INTCON3bits.INT2IF && INTCON3bits.INT2IE)
     {
        if (LATAbits.LATA6 == 0) // Se o LED estiver desligado...
           {
            LATAbits.LATA6 = 1; // ... ent�o liga
           }
           else
           {
            LATAbits.LATA6 = 0;   //Se o LED estiver ligado, ent�o desliga
           }

		/* Apaga a flag de Interrup��o */
		INTCON3bits.INT2IF = 0;
	 }

}

/* rotina de interrup��o de baixa prioridade */
void __interrupt(low_priority) lowISR(void)
{
    /** C�digo referente �s Interrup��es de Baixa Prioridade*/
 	// Interrup��o Externa INT1, no pino RB1
	if (INTCON3bits.INT1IE && INTCON3bits.INT1IF)
     {
      if (LATAbits.LATA5 == 0) // Se o LED estiver desligado...
           {
            LATAbits.LATA5 = 1; // ... ent�o liga
           }
           else
           {
            LATAbits.LATA5 = 0;   //Se o LED estiver ligado, ent�o desliga
           }

 		/* Apaga a flag de Interrup��o */
		INTCON3bits.INT1IF = 0;
	 }
}
/**
 * Ponto de entrada da aplica��o.
 */
void main(void)
{

/* Configura��o do oscilador interno 16MHz */
    OSCCON = 0b01010000;   //101 = HFINTOSC/4 = 4 MHz
   	/*
     * <6-4> 16MHz(111)-1MHz(011) 101 = HFINTOSC/4 = 4 MHz
     */

	/*
	 * Configura��o das linhas associadas aos canais anal�gicos
	 * do m�dulo ADC - linhas digitais
 	 */
	ANSELA=0b00000000;
    ANSELB=0b00000000;
    ANSELC=0b00000000;
    ANSELD=0b00000000;
    ANSELE=0b00000000;

	/*
	 * Defini��o da direc��o das linhas - Entrada ou sa�da
	 */

    /* Porto linhas configurados como entradas RA0-RA3, sa�das RA4-RA7 */
    TRISA = 0b10000111;
    /* ou TRISA = 0x0F;
       TRISAbits.TRISA0 = 0 */
    /* porto B, linhas configurados como entradas */
    TRISB = 0b11111111;
    /* porto C, linhas configurados como entradas */
    TRISC = 0b11111111;
    /* porto C, linhas configurados como entradas */
    TRISD = 0b11111111;
    /* porto E, linhas configurados como entradas RA0-RA3, N�o existem linhas de RE4 a RE7*/
    TRISE = 0b00000111;

    /* Define que existem Interrup��es de Alta e Baixa Prioridade*/
	RCONbits.IPEN = 1;

/*
	 * configura��o da interrup��o INT0:
	 *  flanco descendente - Porque possui uma RPU
	 *  alta prioridade (INT0 � sempre de alta prioridade)
	 *  activa��o da interrup��o
	 */
	INTCON2bits.INTEDG0 = 0;
    INTCONbits.INT0IF = 0;
	INTCONbits.INT0IE = 1;

	/*
	 * configura��o da interrup��o INT1:
	 *  flanco descendente - Porque possuem uma RPU
	 *  baixa prioridade
	 *  activa��o da interrup��o
	 */
	INTCON2bits.INTEDG1 = 0;
    INTCON3bits.INT1IF = 0;
	INTCON3bits.INT1IP = 0;
	INTCON3bits.INT1IE = 1;

    INTCON2bits.INTEDG2 = 1;
    INTCON3bits.INT2IF = 0;
	INTCON3bits.INT2IP = 1;
	INTCON3bits.INT2IE = 1;

	/* desactiva��o dos pull-ups internos no porto B */
	INTCON2bits.RBPU = 0; // RPU internas desligadas porque existem RPU externas
    WPUB = 0b00000001;

	/* activa��o das interrup��es de baixa e alta prioridade */
	INTCONbits.GIEL = 1;   //H - Alta prioridade
	INTCONbits.GIEH = 1;   //L - Baixa prioridade

    /** Escrita nos pinos RA4-RA7 - sa�das ligadas aos LEDs*/
    LATAbits.LATA4=0;  // Desliga os LEDs associados aos pinos RA4 a RA6
    LATAbits.LATA5=0;
    LATAbits.LATA6=0;


	while (1) {	
        
    }

}


4,636 chars · codepastes.com