Buenas, les hago una consulta tengo un programa que estoy haciendo es que cuaando tenga un 1 en el pin RB0 tengo que prender un led durante 1 minuto y dejarlo apagado por 5 minutos mientras tenga el un 1 en el pint RB0, aclaro que en esto soy muy nuevo, al usar delay al sacar la señal de RB0 no apaga como quiero el Led hasta que no termine el ciclo de los delay, me podria dar un ejemplo con timer adaptado a lo que tengo desde ya gracias y me ayudaria mucho entender los timer.
PIC 16f628a
#pragma config FOSC = INTOSCIO // Oscillator Selection bits (INTOSC oscillator: I/O function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = ON // RA5/MCLR/VPP Pin Function Select bit (RA5/MCLR/VPP pin function is MCLR)
#pragma config BOREN = OFF // Brown-out Detect Enable bit (BOD disabled)
#pragma config LVP = OFF // Low-Voltage Programming Enable bit (RB4/PGM pin has digital I/O function, HV on MCLR must be used for programming)
#pragma config CPD = OFF // Data EE Memory Code Protection bit (Data memory code protection off)
#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)
#include <xc.h>
#include <stdio.h>
#include <stdlib.h>
/*Velocidad del oscilador en este caso esta configurado para utilizar el osc interno del micro*/
#define _XTAL_FREQ 4000000
#define Entrada_12V PORTBbits.RB0
#define Entrada_12V_tris TRISBbits.TRISB0
#define Salida_rele PORTBbits.RB1
#define Salida_rele_tris TRISBbits.TRISB1
#define Salida_led PORTBbits.RB2
#define Salida_led_tris TRISBbits.TRISB2
#define estado PORTBbits.RB3
#define estado_tris TRISBbits.TRISB3
int i = 0;
void main(void)
{
Entrada_12V_tris = 1;
Salida_rele_tris = 0;
Salida_led_tris = 0;
Entrada_12V = 0;
Salida_rele = 0;
Salida_led = 0;
estado = 0;
estado_tris = 1;
do
{
if(Entrada_12V == 1)
{
for(i=0; i<60; i++)
{
Salida_rele = 1;
Salida_led = 1;
__delay_ms(1000);
}
for(i=0; i<300; i++)
{
Salida_rele = 0;
Salida_led = 1;
__delay_ms(1000);
}
}
}while(1);
}