TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Mauricio Padilla en 15 de Abril de 2021, 13:59:05

Título: TIMER1, PIC18F4550_ ASIGNAR RETARDO A PULSADOR.
Publicado por: Mauricio Padilla en 15 de Abril de 2021, 13:59:05
HOLA, BUENAS TARDES.
ESTOY COMENZANDO EN ESTE MUNDO DE PROGRAMCION DE MICROCONTROLADORES.
MI OBJETIVO ES: PRENDER UN LED DESPUES DE HABER DEJADO PRESIONADO 5 SEGUNDOS UN PULSADOR. NO LOGRO HACERLO, YA QUE TRATO DE USAR TIMER1.
EN ESTE CODIGO SOLAMENTE PUDE ENCENDER EL LED PRESIONANDO 5 VECES EL PULSADOR.
AYUDAAAA!!!

#include <18F4550.h>                      //Incluimos la librería 18F4550
#device ADC=10                            //Conversor Analógico digital a 10 bits.
#fuses HS, NOWRT, NOWDT,NOPROTECT, NOPUT, NOLVP  //Configuración de fusibles.
#use delay(crystal=4MHz)                  //Frecuencia de oscilador 4MHz. Para el 18F4550 Cristal externo escribir "crystal"
#use fast_io(d)                           //Define el Puerto D para respuesta rápida.

#INT_Timer1                               //Habilitamos la función de interrupción por desbordamiento de timer1
void Desbordamiento_TIMER1()              //Función de interrupción por desbordamiento de timer1
{   
IF(INPUT(PIN_c0)==1){ //Si el boton está presionado

 
   output_toggle(pin_d1);
   output_toggle(pin_d2);
   output_toggle(pin_d3);
   output_toggle(pin_d4);
   output_toggle(pin_d5);
   output_toggle(pin_d6);
   set_timer1(65531);    //Cargamos a TMR1 con 65531 para que despues de 5 pulsos llegue a 65536 y se desborde el timer1.
}
  }

void main (void)                          //Función Principal.
{
If(input(pin_c0)==1)
   
   setup_adc_ports(NO_ANALOGS, VSS_VDD);  //No se utilizará Entradas Analógicas.
   set_tris_b(0x00);                      //Configuramos el puerto B como salida.
   set_tris_d(0x00);                      //Configuramos el puerto D como salida.
   output_d(0x00);                        //Configuramos los pines del puerto D a nivel bajo.
   output_b(0x00);                        //Configuramos los pines del puerto B a nivel bajo.
   setup_timer_1(T1_EXTERNAL|T1_DIV_BY_1); //Timer1 como contador | Pre escaler a 1.
   set_timer1(65531);                     //Cargamos a TIMR1 con 65531 para que despues de 5 pulsos llegue a 65536 y se desborde el timer1.
   enable_interrupts(INT_Timer1);         //Habilitamos la interrupción por desbordamiento de timer1.
   enable_interrupts(GLOBAL);             //Habilitamos las interrupciones Globales.
   
   while(true)                            //Bucle infinito.
   {
      output_low(PIN_D0);                 //Ponemos a nivel bajo el pin RD0.
      delay_ms(500);                      //Retardo de 500 ms.
      output_high(PIN_D0);                //Ponemos a nivel alto el pin RD0.
      delay_ms(500);                      //Retardo de 500 ms.
   }
}
Título: Re:TIMER1, PIC18F4550_ ASIGNAR RETARDO A PULSADOR.
Publicado por: Eduardo2 en 15 de Abril de 2021, 14:08:32
Código: [Seleccionar]
   setup_timer_1(T1_EXTERNAL|T1_DIV_BY_1); //Timer1 como contador | Pre escaler a 1.
   set_timer1(65531);       //Cargamos a TIMR1 con 65531 para que despues de 5 pulsos llegue a 65536 y se desborde el timer1.

Con eso va a desbordar a los 5us.