Hola a todos los foreros!..
He hecho un nuevo tema puesto que necesito ayuda con mi proyecto y quizás a otra persona le pueda servir o interesar. Resulta que estoy haciendo un sistema en donde está compuesto por 4 pulsadores que se encuentran normalmente abierto (en estado 0), al pulsarse pasa a 1 lógico. Estoy utilizando el microcontrolador PIC16F628A y lo estoy programando en MikroC.
Lo que necesito es que al no estar pulsando nada el micro esté en modo de bajo consumo (sleep), al presionarse cualquier pulsador entonces el micro se despertará y realizará la función indicicada.. Luego, tras liberarse el micro regrese en modo Sleep. Esto lo estoy haciendo con el modo de ahorrar batería, puesto que esta alimenta el circuito.
La siguiente programación ya me funciona, pero quiero agregarle el modo sleep y no sé como hacerlo. Ayúdame si!
Gracias!!
sbit led at RA1_bit;
char est[]={0,0,0,0,0};
void main() {
porta=0x00; portb=0x00;
trisa=0x00; trisb=0xF0;
CMCON=0x07;
led=1;
UART1_init(9600); delay_ms(700);
led=0;
while(1){
if(est[1]==0 && Button(&PORTB,4,2,1)){RB0_bit=1; led=1; delay_ms(110); UART1_write_text("A$"); delay_ms(30); RB0_bit=0; est[1]=1;}
if(est[1]==1 && Button(&PORTB,4,2,0)){led=0; est[1]=0;}
if(est[2]==0 && Button(&PORTB,5,2,1)){RB0_bit=1; led=1; delay_ms(110); UART1_write_text("B$"); delay_ms(30); RB0_bit=0; est[2]=1;}
if(est[2]==1 && Button(&PORTB,5,2,0)){RB0_bit=1; led=0; delay_ms(110); UART1_write_text("C$"); delay_ms(30); RB0_bit=0; est[2]=0;}
if(est[3]==0 && Button(&PORTB,6,2,1)){RB0_bit=1; led=1; delay_ms(110); UART1_write_text("D$"); delay_ms(30); RB0_bit=0; est[3]=1;}
if(est[3]==1 && Button(&PORTB,6,2,0)){RB0_bit=1; led=0; delay_ms(110); UART1_write_text("C$"); delay_ms(30); RB0_bit=0; est[3]=0;}
if(est[4]==0 && Button(&PORTB,7,2,1)){RB0_bit=1; led=1; delay_ms(110); UART1_write_text("E$"); delay_ms(30); RB0_bit=0; est[4]=1;}
if(est[4]==1 && Button(&PORTB,7,2,0)){led=0; est[4]=0;}
}
}