hola, pues mira lo del contador es lo mismo que te presento yo, lo cual presentaste tu y yo modifique ligeramente, el programa que te presento lo pase a un micro, un 16f690, como el sensor no lo tengo, y el lcd tampoco, lo he hecho solo con el led, mira te dejo un video, el sensor virtual es una salida del pickit, al haber movimento, en ese caso se mantiene en uno la salida del pickit, el led se mentiene encendido
como vez aqui, al enviar un pulso por el pickit2, el programa enciende el led y lo apaga inmediatamente termina el delay, en tu caso es el tiempo que desear encendido el led, yo al programa como vez mas abajo le cargue 5.000 milisegundos, lo cual equivale a 5 segundos, si deseas 60 segundos, bueno haz el calculo, 60.000 milisegundos
el codigo es el siguiente,
#include "main.h"//fuses y cabecera pic
void main(void)
{
//lcd_init();
//LCD_PUTC("\fSensor Motion"); //escribes en pantalla
while(true) //entras a un bucle infinito
{
if(input(pin_a0)==1)//al detectar movimiento entra aqui, la salida del sensor subio a uno
{
output_high(pin_c0);//encendemos el led
//LCD_PUTC("\fPresencia...");//escribimos en la pantalla
while(input(pin_a0)){if(!input(pin_a0)){break;}}/*con esto el pic dejara encendido el led el tiempo que el sensor este en alto, una vez que baje, iniciara una cuenta regresiva para apagar el led*/
delay_ms(5000);//creamos la demora del led, para que se mantenga encendido durante x segundos, este tiempo debes editar para cambiar el tiempo de encendido del led
output_low(pin_c0);//apagamos el led
}
else //si la salida del sensor es 0 entra aqui
{
//LCD_PUTC("\fNo Presencia...");//escribe en la pantalla
delay_ms(200);//crea una demora de 200 milisegundos mucho tiempo resta fiabilidad al sensado
}
//al terminar las operaciones anteriores, vuelve al inicio, a comprobar el estado del sensor
}
}
en base es el mismo programa solo que deje como comentario lo que no uso, y coloque mis pines diponibles del pic.
espero el video te ayude! Saludos!