TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Protheus5 en 02 de Mayo de 2005, 05:27:00

Título: Empalmar 2 bits de un puerto
Publicado por: Protheus5 en 02 de Mayo de 2005, 05:27:00
Hola a todos,

    tengo la siguiente duda, haber si podeis echarme una mano;

estoy controlando un MUX 4:1 con un 18F452, y para ello tengo que emplear 2 señales de control del mux, que son el bit.0 y el bit.1 del puerto C.

Ahora mismo lo hago de la siguiente manera:

#byte puertoc = 0xf82

#bit sel0=puertoc.0
#bit sel1=puertoc.1

entonces, para seleccionar la entrada cero, hago

sel0=0;
sel1=0;

para la entrada 1:
sel0=1;
sel1=0;

y asi para las cuatro.

Mi pregunta es que si puedo mediante alguna sentencia (o una estrustura, no se bien cómo) dirigirme a esos dos bits del puerto a la vez, para poner por ejemplo:

sel=1 ó sel=3

es decir, unir ambos y no escribir el estado de los dos cada vez que cambio de canal, sino dirigirme a los 2 de golpe.

Gracias
Título: RE: Empalmar 2 bits de un puerto
Publicado por: gauchosuizo en 02 de Mayo de 2005, 06:16:00
hola

asi como has definido los bits, yo haria lo siguiente:

puertoc = 3; //Bit 0 y 1

Tendria que funcionar y sino corrijanme.

Aloha
Título: RE: Empalmar 2 bits de un puerto
Publicado por: pocher en 02 de Mayo de 2005, 08:19:00
Sí, yo también creo que debiera:

#byte portc=0x06

.
.
.

portc=0;      // Entrada 0

portc=1;      // Entrada 1

portc=2;      // Entrada 2

portc=3;      // Entrada 3

Un saludo
Título: RE: Empalmar 2 bits de un puerto
Publicado por: fenix_jn en 02 de Mayo de 2005, 11:48:00
Exactamente solo asigna el puerto a una variable y escribe el valor decimal directamente
Título: RE: Empalmar 2 bits de un puerto
Publicado por: Protheus5 en 02 de Mayo de 2005, 14:34:00
Gracias por la ayuda amigos, pero a continuación me surge otra duda:

-- yo tengo el puerto C que es de 5 pines (debido a que c6 y c7 los tengo para la comunicacion serie), de los cuales c5,c4 y c3 son para controlar un driver de displays MAX7129 (son las señales de DIN, LOAD Y CLK, respectivamente).

Bien, para controlar el MUX del que os hablo usaré c0 y c1, pero como bien decis, si me dirijo a ellos para cambiar el canal del mux, empleando la sentencia portc=0, o portc=1,... TAMBIEN CAMBIO EL ESTADO DE LAS SEÑALES DEL DISPLAY, porque afecta a todos los bits del puerto!!!  Enfurruñado

Mi intencion era cambiar el estado de c0 y c1 sin modificar a todos a la vez.

Arrrrr.... no se... a lo mejor me estoy complicando un poco, y lo que deberia hacer es directamente pin_c0=(lo que sea) y pin_c1=(lo que sea) a lo bruto, pero no se, era por ver si habia algun metodo mejor.

Muchas gracias!
Título: RE: Empalmar 2 bits de un puerto
Publicado por: Nocturno en 02 de Mayo de 2005, 15:51:00
Si haces esto dejas el puerto como estaba del tercer bit en adelante, y sólo cambias los dos primeros:

portc = portc & 0xFC + un_numero_de_0_a_3
Título: RE: Empalmar 2 bits de un puerto
Publicado por: Protheus5 en 02 de Mayo de 2005, 16:11:00
Giño Originalidad sorprendente nocturno! Parece mentira que con las operaciones mas tontas (and, or,...)puedes conseguir lo que quieres... y yo rompiendome las cabeza....
 
Gracias a todos por el interes.

Por cierto, cuando termine el proyecto me gustaria ofreceros las fotos de todas las placas y demas mecanismos que esoty utilizando (ya que parte de el os la debo a vosotros ), pero me parece que a la hora de adjuntar archivos, tiene que ser desde una pagina web, y no directamente.

No se puede hacer de otra manera??

Un saludo a todos