pero me surgió una duda mayor y quien es keyb1, es algún teclado externo o algo así?, lo he estado manejando con RTOs ya tengo las tareas pero no logro cuadrar los tiempo, le adjunto el código por RTOs:
#include <18f4550.h>
#fuses HS, NOWDT, NOBROWNOUT, NOMCLR, NOPROTECT, NOWRT
#use fast_io(B)
#use delay(clock=20000000)
#use rtos(timer=0,minor_cycle=1us)
float ret = 0;
#task(rate=16ms,max=1us) //tarea para los pulsadores
void pulsadores(){
for (;

{
delay_ms(500);
if(input(pin_B6)==0){// && ret <=8.33){
output_D(0b00001000); //esta salida es para un led que coloque para rastrear en donde esta ejecutandose el programa,
ret += 0.231; //es decir si el programa entro a la condición. esta condición es para incrementar el tiempo de disparo
}
else
if(input(pin_B7)==0){// && ret > 0){ //esta condición es para disminuir el tiempo de disparo, si ret es menor que cero el pulso pasaría a
output_D(0b00000000); //tiempos anteriores al del origen de la señal seno de 0°
ret -= 0.231;
}
}
}
#task(rate=16ms,max=1us)
void fases(){ //maneja las fases a 0 y 120°, coloque un retardo de 500ms para que tome un solo pulso
delay_ms(500);
delay_ms(1);
output_high(PIN_D0);
delay_ms(0.1);
output_low(PIN_D0);
}
Gracias
void main(void)
{
port_b_pullups(true);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_adc_ports(no_analogs);
set_tris_B(0b11111111);
set_tris_D(0b00000000);
output_low(PIN_D0);
output_low(PIN_D1);
output_low(PIN_D2);
rtos_run();
}