Scan to open on your phone
Point a camera at the QR code - it opens this exact paste, no app needed.
https://codepastes.com/paznabatatauntitledPlain Text
/**
* 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