Autor Tema: como leer todo el puerto B del pic 16f877a  (Leído 11687 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado japifer_22

  • PIC18
  • ****
  • Mensajes: 405
como leer todo el puerto B del pic 16f877a
« en: 27 de Septiembre de 2009, 20:36:34 »
hola gente otra vez. estoy teniendo un problema de creatividad y acudo a ustedes para que me den una manito. les comento quiero leer el puerto B del pic, este puerto lo tengo configurado como solo entrada, pero quiero chequear si estas entradas estan en 1 o 0. tambin quiero hacer que una variable X tome este registro del puerto. por ejemplo X=11001011.  como puedo hacer esto alguna idea ??
bueno saludos y espero que me puedan ayudar

estoy trabajando en CCS C.

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: como leer todo el puerto B del pic 16f877a
« Respuesta #1 en: 27 de Septiembre de 2009, 21:08:49 »
Al principio de tu codigo pone la siguiente directiva:
#byte PORTB = 0x106

De ahi en mas podes ver y cambiar el estado del puerto de la siguiente manera:
int8 x;
x=PORTB;
PORTB=0xFF;

saludos!!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: como leer todo el puerto B del pic 16f877a
« Respuesta #2 en: 27 de Septiembre de 2009, 21:29:49 »
Sino usando las directivas de CCS:

Código: C
  1. int x;
  2.  
  3. x=input_b();
  4.  
  5. output_b(x);
  6. output_b(0xAA);

Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado japifer_22

  • PIC18
  • ****
  • Mensajes: 405
Re: como leer todo el puerto B del pic 16f877a
« Respuesta #3 en: 27 de Septiembre de 2009, 22:24:06 »
hola grax por las respuestas era lo que andava buscando, nose que me paso hoy pero ando cero creatividad. :mrgreen:


PD: lean el mensaje de abajo, es otra pregunta  :oops: :oops:
« Última modificación: 07 de Diciembre de 2009, 01:03:43 por japifer_22 »

Desconectado japifer_22

  • PIC18
  • ****
  • Mensajes: 405
Re: como leer todo el puerto B del pic 16f877a
« Respuesta #4 en: 07 de Diciembre de 2009, 01:01:33 »
hola de nuevo, parece que no es la creatividad sino de aprender mas  :?, por que ahora tengo el siguiente problema, el cual llevo 3 dias dandole sin conseguir nada.se trata de que hace un tiempo atras hice una alarma para mi casa por que me entraron a robar, y bueno me funciono bien, es decir funciona bien todavia, pero yo quiero cambiar el sistema de ver las zonas activadas, ya que en estos momentos las visualizo mediante led, pero quiero cambiar esta por una lcd 2x20. por una parte leo los 8 sensores por el puerto b del pic maestro mediante la linea x=input_B();, esto anda bien pero quiero cambiar el esclavo, donde aqui biene mi pregunta. si yo resivo este valor de x por rs232 en el esclavo, como puedo hacer que este valor me diga que zonas estan activadas en la lcd ???? saviendo que al tener las 8 zonas o mejor dicho el puerto B entero con sensores me puede generar 255 conbinaciones de activacion y desactivacion de zonas.
dicho en otras palabras, si yo tengo el puerto B con solo B0 y B2 en alto y todo los demas en bajos del master, enviandole por consiguiente al esclavo esta misma convinacion del puerto B del master, como podria hacer que por la lcd me diga que solo esta activado las zonas 1 y 3. bueno pero esto se tiene que dar para todas las conbinaciones que puede tomar el puerto B del master.
alguna idea al respecto ???????

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: como leer todo el puerto B del pic 16f877a
« Respuesta #5 en: 07 de Diciembre de 2009, 01:13:09 »
Puedes hacer un bit_test(x,0) para saber por ejemplo si esta activada la Zona 1, y dependiendo de su valor escribir en el LCD.

Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado japifer_22

  • PIC18
  • ****
  • Mensajes: 405
Re: como leer todo el puerto B del pic 16f877a
« Respuesta #6 en: 07 de Diciembre de 2009, 02:02:00 »
hola suky esta bien lo que dices..... , osea entindo pero el punto esque al pasar mediante la rs 232 el valor de x se va por el putc(x); hacia el esclavo y el esclavo lo recive por la interrupcion #int_RDA el cual queda guardado en lectura=GETC(); donde lectura es int, entonces para saver por ejemplo el estado de la zona 1 seria bit_test(lectura,0); ?????

PD: recordar que yo en el esclavo quiero ver como esta el puerto B del master, reflejando este en una lcd, pero en el esclavo reitero va la lcd. ademas la variable x del master es int16, o puede ser int nada más ???????

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: como leer todo el puerto B del pic 16f877a
« Respuesta #7 en: 07 de Diciembre de 2009, 09:04:20 »
Por mas que hagas todo eso con el dato, si lo haces correctamente se mantendrá igual. En el esclavo lo único que haces es guardarlo en une variable global y testearla con bit_test cuando sea necesario.



Saludos!
No contesto mensajes privados, las consultas en el foro


 

anything