Duda en circuito con pic de "organo electronico"

#1
Buenos dias compañeros de grupo
hace un par de semanas me dejaron hacer un "organo electronico"
el programa consiste a travez del puerto b0 a b6 matar una determinada frecuencia
por A0.

El programa funciona correctamente , es mas simula en proteus
El problema viene al momento de armarlo en el protoboard, no entiendo porque no
logro escuchar nada.:confused:

Agradeceria si me pudiesen guiar en que me estoy equivocando
aclaro que lo he probado con transistores y sin transistores a la salida
sin obtener resultados:unsure:

Código:
#include <16f628A.h>
#FUSES XT,NOWDT
#USE delay (clock=4M) //frecuencia del cristal 4 Mhz

#DEFINE ENTRADA0 PIN_B0
#DEFINE ENTRADA1 PIN_B1
#DEFINE ENTRADA2 PIN_B2
#DEFINE ENTRADA3 PIN_B3
#DEFINE ENTRADA4 PIN_B4
#DEFINE ENTRADA5 PIN_B5
#DEFINE ENTRADA6 PIN_B6
#DEFINE SALIDA PIN_A0

VOID MAIN()
{
SET_TRIS_B(0B00000000);//CONFIGURA EL PUERTO B 1ENTRADAS Y 0 SALIDAS
SET_TRIS_A(0B11111111);//CONFIGURO EL PUERTO C EN ESDTE CASO TODOS SALIDA
output_b(0b0000000000);



WHILE (TRUE)

{
if(INPUT(ENTRADA0)==1)
{
OUTPUT_HIGH(SALIDA);
DELAY_MS(62);
}
if(INPUT(ENTRADA1)==1)
{
OUTPUT_HIGH(SALIDA);
DELAY_MS(125);
}
if(INPUT(ENTRADA2)==1)
{
OUTPUT_HIGH(SALIDA);
DELAY_MS(250);
}
if(INPUT(ENTRADA3)==1)
{
OUTPUT_HIGH(SALIDA);
DELAY_MS(500);
}
if(INPUT(ENTRADA4)==1)
{
OUTPUT_HIGH(SALIDA);
DELAY_MS(1000);
}
if(INPUT(ENTRADA5)==1)
{
OUTPUT_HIGH(SALIDA);
DELAY_MS(2000);
}
if(INPUT(ENTRADA6)==1)
{
OUTPUT_HIGH(SALIDA);
DELAY_MS(2551);
}

else
 {
OUTPUT_LOW(SALIDA);
}

}
}
 
Última edición:
#2
En la protoboard la patilla MCLR la tienes conectada a tensión o al aire? conectalo a la tensión o sino añade en el programa #fuses NOMCLR
 
#7
Hola, sucede que intentas usar el puerto B cómo entrada, pero lo declaras cómo salida. Las entradas no tienen resistencias pull-dn.
Un voltímetro, no funciona en un circuito serie. Utiliza el altavoz en el colector si es piezoeléctrico. Si es del tipo electrodinámico, utiliza una resistencia de carga en colector y desacopla el altavoz con un condensador.
 
Última edición:
#8
Hola, sucede que intentas usar el puerto B cómo entrada, pero lo declaras cómo salida. Las entradas no tienen resistencias pull-dn.
Un voltímetro, no funciona en un circuito serie. Utiliza el altavoz en el colector si es piezoeléctrico. Si es del tipo electrodinámico, utiliza una resistencia de carga en colector y desacopla el altavoz con un condensador.
nuevamente mi codigo editado y diagrama
ahora mo me funciona ni en isis :confused:

Código:
#include <16f628A.h>
#FUSES XT,NOWDT
#USE delay (clock=4M) //frecuencia del cristal 4 Mhz

#DEFINE ENTRADA0 PIN_B0
#DEFINE ENTRADA1 PIN_B1
#DEFINE ENTRADA2 PIN_B2
#DEFINE ENTRADA3 PIN_B3
#DEFINE ENTRADA4 PIN_B4
#DEFINE ENTRADA5 PIN_B5
#DEFINE ENTRADA6 PIN_B6
#DEFINE SALIDA PIN_A0

VOID MAIN()
{
SET_TRIS_B(0B11111111);//CONFIGURA EL PUERTO B 1ENTRADAS 
SET_TRIS_A(0B00000000);//CONFIGURO EL PUERTO a EN ESDTE CASO TODOS SALIDA
output_b(0b0000000000);



WHILE (TRUE)

{
if(INPUT(ENTRADA0)==1)
{
OUTPUT_HIGH(SALIDA);
DELAY_MS(62);
}
if(INPUT(ENTRADA1)==1)
{
OUTPUT_HIGH(SALIDA);
DELAY_MS(125);
}
if(INPUT(ENTRADA2)==1)
{
OUTPUT_HIGH(SALIDA);
DELAY_MS(250);
}
if(INPUT(ENTRADA3)==1)
{
OUTPUT_HIGH(SALIDA);
DELAY_MS(500);
}
if(INPUT(ENTRADA4)==1)
{
OUTPUT_HIGH(SALIDA);
DELAY_MS(1000);
}
if(INPUT(ENTRADA5)==1)
{
OUTPUT_HIGH(SALIDA);
DELAY_MS(2000);
}
if(INPUT(ENTRADA6)==1)
{
OUTPUT_HIGH(SALIDA);
DELAY_MS(2551);
}

else
 {
OUTPUT_LOW(SALIDA);
}

}
}
 

Temas similares

Arriba