Creé este programa para el PIC funciona algo así como un dimmer (control de fase)... el asunto concreto es que el programa funiona como lo esperaba. mediante una entrada anologo digital regulo los distintos tiempos de disparo...pero mi conflicto es que necesito controlar estos tiempos de disparos mediante el PC..... (el circuito de conecxion PIC PC está bastante claro y no tengo problema con esto)..... pero no se como utilizar los conmandos del compilador C para lograr el objetivo.
en otras palabras que modificaciones debo hacer al programa??
Espero que se entienda la duda.
PROGRAMA
------------------------------------------
#include <16F873.h>
#fuses HS,NOWDT,NOPROTECT
#use delay(clock=2000000)
void main ()
{
BYTE entrada;
BYTE salida;
BYTE i;
setup_adc_ports(AN0); //A0 imput analogo
SETUP_ADC(ADC_CLOCK_DIV_32); //
set_tris_b(0b00000100); //
while(TRUE)
{
entrada = READ_ADC();
salida = entrada/13;
OUTPUT_BIT(PIN_B0,0);
OUTPUT_BIT(PIN_B1,0);
if(INPUT(PIN_B2)==1)
{
OUTPUT_BIT(PIN_B0,1);
if(salida<10)
{
for(i=salida;i>0;i--) // retardo del disparo semiciclo positivo.
{
delay_ms( 2 );
}
OUTPUT_BIT(PIN_B1,1); // comienza el disparo semiciclo positivo.
while(INPUT(PIN_B2)==1)
{
delay_us( 125 );
}
OUTPUT_BIT(PIN_B1,0); // se detine el disparo semiciclo positivo.
}
else
{
if(salida==10) // Sin disparo
{
OUTPUT_BIT(PIN_B1,0);
While(INPUT(PIN_B2)==1)
{
delay_us( 125 );
}
}
else
{
While(INPUT(PIN_B2)==1)
{
delay_us( 125 );
}
for(i=20 - salida;i>0;i--) // retardo del disparo semiciclo negativo.
{
delay_ms( 2 );
}
OUTPUT_BIT(PIN_B1,1);
while(INPUT(PIN_B2)==0) // comienza el disparo semiciclo negativo.
{
delay_us( 125 );
}
OUTPUT_BIT(PIN_B1,0);
}
}
}
}
}
---------------------------
Atte
en otras palabras que modificaciones debo hacer al programa??
Espero que se entienda la duda.
PROGRAMA
------------------------------------------
#include <16F873.h>
#fuses HS,NOWDT,NOPROTECT
#use delay(clock=2000000)
void main ()
{
BYTE entrada;
BYTE salida;
BYTE i;
setup_adc_ports(AN0); //A0 imput analogo
SETUP_ADC(ADC_CLOCK_DIV_32); //
set_tris_b(0b00000100); //
while(TRUE)
{
entrada = READ_ADC();
salida = entrada/13;
OUTPUT_BIT(PIN_B0,0);
OUTPUT_BIT(PIN_B1,0);
if(INPUT(PIN_B2)==1)
{
OUTPUT_BIT(PIN_B0,1);
if(salida<10)
{
for(i=salida;i>0;i--) // retardo del disparo semiciclo positivo.
{
delay_ms( 2 );
}
OUTPUT_BIT(PIN_B1,1); // comienza el disparo semiciclo positivo.
while(INPUT(PIN_B2)==1)
{
delay_us( 125 );
}
OUTPUT_BIT(PIN_B1,0); // se detine el disparo semiciclo positivo.
}
else
{
if(salida==10) // Sin disparo
{
OUTPUT_BIT(PIN_B1,0);
While(INPUT(PIN_B2)==1)
{
delay_us( 125 );
}
}
else
{
While(INPUT(PIN_B2)==1)
{
delay_us( 125 );
}
for(i=20 - salida;i>0;i--) // retardo del disparo semiciclo negativo.
{
delay_ms( 2 );
}
OUTPUT_BIT(PIN_B1,1);
while(INPUT(PIN_B2)==0) // comienza el disparo semiciclo negativo.
{
delay_us( 125 );
}
OUTPUT_BIT(PIN_B1,0);
}
}
}
}
}
---------------------------
Atte