Banner publicitario de PCBWay

Duda en circuito con pic de "organo electronico"

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);
}

}
}

10383975_1595732680643793_6056950363663627306_n.jpg
 
Última edición:
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:
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);
}

}
}

1374111_1595791343971260_5229375200071988451_n.jpg
 
Atrás
Arriba