Autor Tema: Control de puerto para teclado matricial  (Leído 2213 veces)

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

Desconectado Somag!

  • PIC10
  • *
  • Mensajes: 12
Control de puerto para teclado matricial
« en: 12 de Diciembre de 2016, 23:40:14 »
Buenas tardes quisiera saber si alguien me puede ayudar, utilizo PIC C COMPILER...
se supone que cuando pongo
set_tris_b(0x0F);
el nibble alto esta como salida y el nibble bajo esta como entrada.
La cuestión es que cuando quiero poner un número 14 en la salida, todo el puerto se me pone como salida y yo solo quiero que ese 14 se ponga en el nibble alto sin tener que poner
   output_bit(pin_b4,0);
   output_bit(pin_b5,1);
   output_bit(pin_b6,1);
   output_bit(pin_b7,1);

Le agradecería mucho a quien me pueda ayudar :oops:

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Control de puerto para teclado matricial
« Respuesta #1 en: 12 de Diciembre de 2016, 23:43:06 »
Pone al comienzo del programa:

Código: C
  1. #USE FAST_IO(B)

Asi CCS no agrega codigo y no te lo cambia por salida al usar el output

Desconectado Somag!

  • PIC10
  • *
  • Mensajes: 12
Re:Control de puerto para teclado matricial
« Respuesta #2 en: 12 de Diciembre de 2016, 23:57:25 »
ho gracias si funciono :-/ :-/
Ya no se cambia todo el puerto como salida,pero el 14 sigue sin aparecer :c
tengo que poner el 224, osea
0x0E=14
0XE0=224
:shock:
pero por ahí va mi problema
« Última modificación: 13 de Diciembre de 2016, 00:08:19 por Somag! »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Control de puerto para teclado matricial
« Respuesta #3 en: 13 de Diciembre de 2016, 00:13:25 »
Y eso es por que los bits del puerto que estas intentando cambiar son los superiores.


El puerto B es un registro de 8 bits ( o pensalo como una variable de 8 bits en que cada bit representa un pin )

B7 B6 B5 B4 B3 B2 B1 B0

Desde B0 a B3 los tenes como entradsa, asi que el valor que deberias cargar son los 4 bits de mas peso, es decir de B4 a B7, si lo ponemos en binario al 14 seria:

1  1  1  0  x   x   x   x   ( Las x son las entradas y lo que no nos importa, pero luego le ponemos un cero )

Ese numero pasado a hexadecimal es 0xE0, o en decimal 224.

Espero que se entienda el porque tenes que poner 0xE0 y no 0x0E

Ahora si tu salidas fueran B0 a B3, deberias usar 0x0E


Desconectado Somag!

  • PIC10
  • *
  • Mensajes: 12
Re:Control de puerto para teclado matricial
« Respuesta #4 en: 13 de Diciembre de 2016, 00:31:48 »
Ha si cierto, va gracias!!!! :-)


 

anything