Correcto firepic esa era la falla, gracias por su colaboración. Les cuento que hace mucho tiempo que
programo en assembler, desafortunadamente me demoré demasiado para cambiarme al C; Ahora estoy decidido a hacerlo;
empecé por pasar mis programas más sencillos de assembler a lenguaje C, pero este me está dando en la cabeza,
les cuento en que consiste:
Inicialmente debe poner en UNO los pines RC0 y RC1.
despues
Mientras el pin RB0 permanezca en 1 no pasa nada,
si pasa a cero durante aproxi...SIETE segundos,
debe poner en CERO el pin RC1 durante cinco segundos, volverlo a UNO y retornar a inicio.
Hasta aquí el programa me funciona muy bien, pero la dificultad aparece cuando debo agregarle lo
siguiente:
Durante el retardo de aproxi...SIETE segundos si RB0 retorna a UNO,
inmediatamente debe poner el pin RC0 en cero por medio segundo, ponerlo nuevamente a UNO y retonar a inicio o
si durante este mismo retardo, RB1 pasa al estado CERO, inmediatamente debe irse para inicio
teniendo siempre presente de colocar nuevamente RC0 y RC1 en UNO.
Si durate el retardo de cinco segundos RB0 cambia nuevamente al estado UNO, inmediatamente debe colocar
RC0 en CERO por medio segundo, retornarlo nuevamente a UNO e irse para inicio.
No se si me hice entender. De todas maneras, el programa que realicé en C me hace algunas cosas, pero no todo,
estos retardos condicionados, no se como hacerlos en C, ahí les pego el programa si me indican que es lo que le
falta o cómo debo hacerlo. Si es necesario también les pego el programa en assembler, que si me funciona bien.
#include "C:\Archivos de programa\PICC\hopper.h"
char n=' ';
int cont= 0;
unsigned char x=0;
int i;
int j;
void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_spi(FALSE);
setup_counters(RTCC_INTERNAL,RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
output_high (pin_c0);
output_high (pin_c1);
for(;
{
if (!input (pin_b0))
{
for(i=0;i<100;i++)
{
delay_ms(500);
if (input (pin_b0))
{
output_low (pin_c0);
delay_ms (2000);
output_high (pin_c0);
break;
}
if (!input (pin_b1))
break;
}
output_low (pin_c0);
for(i=0;i<9;i++)
{
if(input (pin_b0))
{
output_low (pin_c1);
delay_ms (2000);
output_high (pin_c1);
break;
}
delay_ms(1000);
output_high(pin_c0);
break;
}
}
}
}