TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado 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
-
hola
asi como has definido los bits, yo haria lo siguiente:
puertoc = 3; //Bit 0 y 1
Tendria que funcionar y sino corrijanme.
Aloha
-
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
-
Exactamente solo asigna el puerto a una variable y escribe el valor decimal directamente
-
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!!! 
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!
-
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
-
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