Essays.club - Ensayos gratis, notas de cursos, notas de libros, tareas, monografías y trabajos de investigación
Buscar

Como se puede Detectar cuando un botón ha sido presionado.

Enviado por   •  3 de Enero de 2019  •  596 Palabras (3 Páginas)  •  292 Visitas

Página 1 de 3

...

cont1++; //conteo de productos

cont3=1; //reinicio de conteo

}

}

if(cont1==20){

T0CONbits.TMR0ON=1;//Activa el timer

AL=1; //Activa alarma

fin=1; //

}

}

}

}

Diagrama de flujo

[pic 2]

- Proceso de oscilación.

Programa

//definicion de frecuencia

#define _XTAL_FREQ 4000000

//declaracion de variables

#define led PORTDbits.RD1

volatile int contador1=0,xn=0,temp1=0,temp2=0,contador2=0;

void interrupt isr(void){ //rutina interrupcion

//Boton A

if(INTCONbits.INT0IF==1){// si el flag esta en 1 sucedio la interrupción

INTCONbits.INT0IF=0;//borrar flag

xn=1; //variable del bucle del boton A

led=~led; //niega estado de led

T0CONbits.TMR0ON=1;//Activa el timer

}

//Boton B

if(INTCON3bits.INT1IF==1){// si el flag esta en 1 sucedio la interrupción

INTCON3bits.INT1IF=0;//borrar flag

xn=2; //variable = a 2 del bucle de Botob B

led=~led; //niega estado del pin

T0CONbits.TMR0ON=1;//Activa el timer

}

//tiempo de oscilación

if(INTCONbits.TMR0IF==1){// si el flag esta en 1 sucedio la interrupción

INTCONbits.TMR0IF=0;//borrar flag

//2 segundos

if(temp1==1){ //condición para el tiempo de Boton A

contador1++; //incremeto en 1

TMR0H=63582/256;

TMR0L=63582%256;

if(contador1==4){ //condicion para 2 segundos

led=~led; //niega estado del pin

contador1=0; //reinicio contador

temp1=0; //reinicio variable del bucle del boton A

}

}

//0.5 segundos

if(temp2==1){ //condición para el tiempo de Boton A

contador2++; //incremeto en 1

TMR0H=63582/256;

TMR0L=63582%256;

if(contador2==1){ //condicion para 0.5 segundos

led=~led; //niega estado del pin

contador2=0; //reinicio contador

temp2=0; //reinicio variable del bucle del boton B

}

}

}

}

void configuracion(void) { //funcion para la configuracion del micro

ADCON1=0x0F; //conifugurar pines analogos a digitales

TRISDbits.TRISD1=0; //Pin de salida

T0CON=0b00000111;//Pre escala de 256, oscilador de 4MHz, Tiempotemp=1ms

//Configuracion Interrupciones

INTCONbits.GIE=1; //Activacion Interrupciones Globales.

INTCONbits.INT0IE=1; //Activacion de Interrupcion INT0.

INTCONbits.INT0IF=0; //Flag(Bandera) de Interrupcion en INT0.

INTCON2bits.INTEDG0=1; //indica el flanco de subida INT0

//interrupcion externa

INTCON3bits.INT1IE=1; //Activacion de Interrupcion INT1.

INTCON3bits.INT1F=0; //Flag(Bandera) de Interrupcion en INT1.

INTCON2bits.INTEDG1=1; //indica el flanco de subida INT1

//interrupcion de timer

INTCONbits.TMR0IE=1; //Activacion de Interrupcion Timer 0. //HABILITA LA INTERRUPCION DE TIMER 0

INTCONbits.TMR0IF=0; //Flag(Bandera) de Interrupcion en 0.

TMR0H=63582/256;

TMR0L=63582%256; //Valor Real del Timer 255-Valor Formula = Resultado De la Operacion

}

int main(int argc, char** argv) {

configuracion();

while(1){

if(xn==1){ //bucle Boton A

temp1=1;

}

if(xn==2){ //Bucle Boton B

temp2=1;

}

}

}

Diagrama de flujo

[pic 3]

...

Descargar como  txt (6.4 Kb)   pdf (53.6 Kb)   docx (17.1 Kb)  
Leer 2 páginas más »
Disponible sólo en Essays.club