Esta es la solución (usando un 876):
Codigo:
//#include <18F452.h>
#include <16F876.h>
#fuses HS,NOWDT,NOPUT,NOLVP,NOBROWNOUT,NOWRT
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=PIN_C6,rcv=PIN_C7)
#include <stdlib.h>
unsigned long int ton=0;
unsigned long int toff=0;
#INT_RDA
void rsis(void)
{
char string[20];
//getc();
//printf("
Tiempo de encendido: ");
gets(string);
ton=atol(string);
printf("
Tiempo de apagado: ");
gets(string);
toff=atol(string);
printf("
Tiempo de encendido: ");
}
void main()
{
unsigned long int z;
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL); // Habilita todas las interrupciones.
//printf(" Presione una tecla para setear datos");
printf("
Tiempo de encendido: ");
//set_tris_d(0x00);
set_tris_b(0x00);
while(1)
{
//output_d(0xff);
output_b(0xff);
for(z=0; z<ton; z++)
//delay_us(10);
delay_ms(1);
//output_d(0x00);
output_b(0x00);
for(z=0; z<toff; z++) delay_ms(1);
}
}
Tenías algunos errores. Sobretodo lo que creo que te mareaba era el "pulse una tecla". Ten encuenta que al pulsar la tecla ese primer caracter ya formará parte del ton y si resulta que como primera tecla pulsas una letra pues en fin, sin comentarios.
Un saludo