# Programación de un PIC con Dipswitch



## garzon (Feb 4, 2012)

buenas tardes 

pic 16f877a
intento  programar un pic  con dip switch que cuando  yo active el dip swith en una salida del mico se prenda un led y  cuando la quite se apague alguien   me explicase esto


----------



## D@rkbytes (Feb 5, 2012)

garzon dijo:


> buenas tardes
> 
> pic 16f877a
> intento  programar un pic  con dip switch que cuando  yo active el dip switch en una salida del micro se prenda un led y  cuando la quite se apague alguien   me explicase esto


¿En que lenguaje piensas hacer el programa?


----------



## garzon (Feb 5, 2012)

me gustaria hacerlo en   asm


----------



## D@rkbytes (Feb 5, 2012)

garzon dijo:


> me gustaria hacerlo en asm


Ok. Bien, para poderte ayudar es necesario que tu realizes el programa.
Cuando algo se te complique, entonces podremos ver en que estas mal.
Nota: Lo que quieres hacer es muy facil. (Mover el contenido de un registro a otro)
El diseño del sistema que quieres hacer se veria como esto.

Suerte y hasta luego.


----------



## garzon (Feb 6, 2012)

ok esta noche  intentare   gracias    y una pregunta que es rp1


----------



## D@rkbytes (Feb 6, 2012)

garzon dijo:


> ok esta noche  intentare   gracias    y una pregunta que es rp1


Saludos. El componente RP1 (RP = RESPACK) = Paquete de resistores, en este caso 8
Es un pequeño arreglo de resistores en donde todo un lado de sus pines pueden estar conectados entre sí, ser independientes, o formar una cierta conexión interna. 
Hay de varios valores y en un montaje ahorran espacio al estar dentro de un encapsulado.
Físicamente los podrás ver en algunos diseños como en esta foto.








Existen comercialmente varios modelos, y también se pueden armar manualmente.


----------



## richi123 (Feb 6, 2012)

lo mejor es que propongas tu codigo y te ayudemos sobre la marcha

Saludos


----------



## garzon (Feb 7, 2012)

eh realizado este pero   aun   no estoy muy seguro    de la condicion del dipswitch
hice este  escucho   opiniones


----------



## D@rkbytes (Feb 7, 2012)

garzon dijo:


> eh realizado este pero   aun   no estoy muy seguro    de la condicion del dipswitch
> hice este  escucho   opiniones


Ok. Saludos.
Bien, pues casi te acercas al programa que ya tenia hecho 
Al que hiciste le sobraron unas cosas y le faltaron otras.
Y en si no hacia nada. 
El que yo hice estaba programado para los puertos C como entradas y D como salidas.
Como usaste los puerto B como entradas y C como salidas, solo modifique los puertos.
Ok. Aqui dejo el programa que adjuntaste con los cambios que realize, mas el que yo tenia hecho.
Te recomiendo, ya que es buena costumbre, que comentes lo mas que puedas cada segmento
de código que escribas, ya que de esa manera podras saber que es lo que estas haciendo.
Hay veces que aunque sea uno mismo el que hizo el programa, cuando lo retomas,
ya no sabes y ni te acuerdas para que escribiste tal función, o que hacia.
Revisa las modificaciones que realize sobre tu código. como veras no hay mucha ciencia.
PD. Incluida la simulación en ISIS
Suerte y hasta luego.


----------



## garzon (Feb 7, 2012)

que  version es este proteus? es que lo intento abrir y no me funciona  o un pantallaso del programa


----------



## D@rkbytes (Feb 8, 2012)

garzon dijo:


> que  version es este proteus? es que lo intento abrir y no me funciona  o un pantallaso del programa


Ok. Saludos.
La simulación esta creada con la versión 7.8 SP2


----------



## garzon (Feb 8, 2012)

osea que es el mismo  circuiito que esta en la parte  de arriba ?


----------



## D@rkbytes (Feb 8, 2012)

garzon dijo:


> osea que es el mismo  circuiito que esta en la parte  de arriba ?


Sip. Solo que como tu usaste los puertos B como entradas y C como salidas.
En el reciente ejemplo que envie, solo los recorri.


----------



## garzon (Feb 10, 2012)

ah muchas gracias      
estare mirando


----------



## alucard11s (Abr 9, 2012)

Hola a todos.......espero me puedan ayudar......................yo necesito el programar el pic 16f84a, con un dip switch de 4 conectado al puerto A, y en las salida puerto B un display anodo, que cuando este el switch mande un numero en binario, en el display lo muestre en hexadecimal........por ejemplo en el switch='0111' el display=7 o switch='1011' display=b

les dejo el codigo, espero y me ayuden.......donde tengo duda es que no me respeta los saltos con el BTFSS, de antemano gracias


----------



## jegj (Nov 30, 2015)

Buenas noches me gustaria saber si me pueden ayudar a realizar un proyecto en mikroC. Trabaje con el PIC16F877A y un dip-switch de 4, y al poner en alto uno de los canales del dip switch tiene que mostrar una secuencia en los LED's pero no lo hace. Espero pronta respuesta. Gracias anticipadamente.


----------



## D@rkbytes (Nov 30, 2015)

El puerto A tiene conversores de análogo a digital en los pines que estás usando como entradas. (RA0 a RA3)
Necesitas configurar el registro ADCON1 para hacer que esos pines funcionen en modo digital.

Agrega ADCON1 = 0x07; en el void main, y elimina el TRISA = 0xFF;
TRISX = 0xFF es el valor por defecto para todos los puertos. (Como entradas al iniciar)
Así que configurar todo un puerto como entradas resulta redundante.


----------



## einsten (Dic 1, 2015)

Dime. ¿Con cada valor que le pongas a los dipswitch, quieres obtener diferencia secuencia?


----------



## jegj (Dic 10, 2015)

Hola muchas gracias D@rkbytes lo hice e inmediatamente funcionó. Ahora tengo otro problema,este es un proyecto que me toca realizar. Yo se que esta mal lo que he hecho pero quisiera saber en que. Lo que toca que hacer es: "Realizar la programacion y simulacion de un sistema que realice el conteo de las pulsaciones de un pulsador y vaya almacenando el valor en un registro de una memoria 24LC00 y un PIC16F877A. El valor guardado se debe visualizar en un LCD(16 lineas)". Gracias.


----------



## D@rkbytes (Dic 10, 2015)

Ok. Ese programa está muy mal.
Si tienes conectada la pantalla al puerto B, no debes utilizar los pines que usa, a menos que hagas una sincronización.

El conteo de pulsos no está bien que lo hagas dentro del bucle principal.
El PIC cuenta con tres entradas para contar pulsos externos. (T0CKI, T1CKI y CCP)
Éstas corresponden por orden mostrado, a: Timer 0 Clock Input, Timer 1 Clock Input y Capture/Compare/PWM


----------



## jegj (Dic 11, 2015)

Si, la verdad es que no entendia muy bien eso y copie partes de codigos que el profesor nos habia enviado.

Lo volvi a hacer y logre que en el LCD se visualizara el conteo de las pulsaciones, pero no se como almacenar el valor en la memoria 24LC00 (y si es necesaria la comunicacion I2C o no).


----------



## D@rkbytes (Dic 11, 2015)

jegj dijo:


> no sé cómo almacenar el valor en la memoria 24LC00 (y si es necesaria la comunicación I2C o no).


Claro que es necesario el uso de I2C, porque es el protocolo de comunicación de las memorias EEPROM tipo 24LCXXX

Busca en la carpeta de instalación de mikroC y encontrarás ejemplos de cómo acceder a éste tipo de memorias.

El ejemplo del método simple es mostrado para un PIC18F45K22, así que debes tener eso en consideración porque se usan registros diferentes a los PIC16.


----------



## jegj (Dic 12, 2015)

Muchas gracias por su ayuda


----------



## MASTERR (Ene 4, 2016)

Hola, mire el proyecto que necesitas. La parte que hiciste del contador esta bien, le agregue la parte de la memoria 24LC00 y el protocolo I2C. Me base en un ejemplo que encontre en un pdf.No estoy muy seguro si esta bien porque en la trama de escritura de la EEPROM aparecen: S A0 A dato A p, no aparecen ni el primer ni el segundo byte de direccion, no se porque. Espero que te sirva.


----------



## jegj (Ene 6, 2016)

Muchas Gracias


----------

