Funcionamiento de contador con sleep
Posted: Mon Oct 26, 2020 9:58 pm
Hola,
tengo el programa que adjunto y necesitaría una pequeña aclaración de como implementar la función de sleep. En concreto el programa es el siguiente:
Esta realizado con un pic 16F628A para generar un emisor de 8 canales con oscilador interno. El programa en si funciona bien, pero al funcionar alimentado con batería me consume bastante y se agota rápidamente.
Consta de un teclado de 8 teclas, asignadas a los pines A0 a A7. Funcionado de la siguiente manera:
1º.- Inicialmente para que todo el teclado se active se necesita el tener pulsado de forma continua A0 durante al menos 2 segundos.
2º.-El teclado se mantiene activado durante 5 minutos esperando la acción sobre cualquier tecla, si pasado ese tiempo no se ha detectado ninguna tecla pulsada, el teclado queda desactivado.
3º.- Si se detecta la pulsación de cualquier tecla se activa a correspondiente salida en código BCD por los pines B0 a B3.
Bien me gustaría saber como implementar la función sleep de forma que mientras se esta en espera de los 5 minutos, el pic estuviera dormido y pasado ese tiempo el teclado quedase desactivado, pero que con la acción de cualquier tecla, el pic despertase y ejecutase acción correspondiente a la teca asociada.
Se que para dormir el pic debería de usar un bloque de C con la instrucción: ASM("sleep"); pero no encuentro el lugar apropiado de colocarlo y quizás usar un pin de B4 a B7 por cambio de estado para sacarlo del reposo. Pero no encuentro la forma de realizarlo.
¿Podrían ayudarme con este problema?
Muchas Gracias de antemano
tengo el programa que adjunto y necesitaría una pequeña aclaración de como implementar la función de sleep. En concreto el programa es el siguiente:
Esta realizado con un pic 16F628A para generar un emisor de 8 canales con oscilador interno. El programa en si funciona bien, pero al funcionar alimentado con batería me consume bastante y se agota rápidamente.
Consta de un teclado de 8 teclas, asignadas a los pines A0 a A7. Funcionado de la siguiente manera:
1º.- Inicialmente para que todo el teclado se active se necesita el tener pulsado de forma continua A0 durante al menos 2 segundos.
2º.-El teclado se mantiene activado durante 5 minutos esperando la acción sobre cualquier tecla, si pasado ese tiempo no se ha detectado ninguna tecla pulsada, el teclado queda desactivado.
3º.- Si se detecta la pulsación de cualquier tecla se activa a correspondiente salida en código BCD por los pines B0 a B3.
Bien me gustaría saber como implementar la función sleep de forma que mientras se esta en espera de los 5 minutos, el pic estuviera dormido y pasado ese tiempo el teclado quedase desactivado, pero que con la acción de cualquier tecla, el pic despertase y ejecutase acción correspondiente a la teca asociada.
Se que para dormir el pic debería de usar un bloque de C con la instrucción: ASM("sleep"); pero no encuentro el lugar apropiado de colocarlo y quizás usar un pin de B4 a B7 por cambio de estado para sacarlo del reposo. Pero no encuentro la forma de realizarlo.
¿Podrían ayudarme con este problema?
Muchas Gracias de antemano