31/08/2012 Interrupciones en PICS Interrupciones en PIC Departamento de Electrónica Fundación San Valero Interrupciones en PICS 1 31/08/2012 Interrupciones en PICS Interrupciones en PICS 2 31/08/2012 Interrupciones en PICS Interrupciones en PICS 3 31/08/2012 Ejemplo Interrupciones Interrupciones: ¿Dónde colocar la subrutina? #include<16F84A> #use delay(clock=4000000) -> AQUÍ #int_TIMER0 subrutina_TIMER0(){ } main(){ } Configurar las interrupciones: enable_interrupts(INT_RTCC); enable_interrupts(GLOBAL); Ejemplo Interrupciones Ejemplo utilización de interrupciones: #include<16F84A> #use delay(clock=4000000) int flag=0; //Variable global #int_TIMER0 subrutina_TIMER0(){ if(flag==1) if(flag==0) flag=1-flag; } main(){ output_bit(PINB0,1); output_bit(PINB0,0); set_tris_b(0x00); //Configurar B=salidas enable_interrupts(INT_RTCC); //Configurar interrupciones enable_interrupts(GLOBAL); setup_timer_0(RTCC_DIV_1|RTCC_INTERNAL); //Conf. TMR0 set_timer0(0xFF); //Establecer frecuencia de parpadeo while(TRUE); //Bucle infinito } 4 31/08/2012 Ejemplo Interrupciones Programación por interrupciones: Programación por interrupciones int cont=0, velocidad1=0, velocidad2=0; #int_TIMER0 subrutina_TIMER0(){ cont++; if(cont=NUM_VELOCIDADES){ output_bit(MOTOR_1,1); output_bit(MOTOR_2,1); cont=0; } if(cont==velocidad1) output_bit(MOTOR_1,0); if(cont==velocidad2) output_bit(MOTOR_1,0); } 5