TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: micro_pepe en 20 de Marzo de 2007, 19:16:31

Título: Configurar pins 12F509
Publicado por: micro_pepe en 20 de Marzo de 2007, 19:16:31
Hola, he buscado ejemplos en el foro, pero no entiendo como se configuran los pins para entrada o salida en un PIC12F509. Este modelo es un poco distinto a otros de la familia 12F.

Espero que me puedan ayudar, saludos.
Título: Re: Configurar pins 12F509
Publicado por: Nocturno en 21 de Marzo de 2007, 04:19:48
Estos micros no tienen un registro TRIS en la memoria, como la mayoría de los PIC que conocemos.
Para establecer el estado de sus pines implementan un comando TRIS con la siguiente sintaxis:
TRIS Load TRIS Register
Syntax: [ label ] TRIS f
Operands: f = 6
Operation: (W) → TRIS register f
Status Affected: None
Description: TRIS register ‘f’ (f = 6 or 7) is
loaded with the contents of the W
register


Dicho en cristiano: cargas en el registro W el valor que quieres asignar al TRIS y luego ejecutas el comando TRIS 6.

Este ejemplo de código lo utilizo en un programa para un 10F que utiliza el mismo sistema que el 12F509:

   #asm
      clrf w
      tris 6
      movlw 64
      option
   #endasm

Obviamente no he sido capaz de hacerlo en C, por lo que tuve que insertar #asm...#endasm en mi programa.
Título: Re: Configurar pins 12F509
Publicado por: dhmejia en 21 de Marzo de 2007, 09:37:24
Para estos pic en ccs el tris se configura como el puerto b:

por ejemplo:   
Código: C
  1. set_tris_b(0)

saludos
Título: Re: Configurar pins 12F509
Publicado por: micro_pepe en 21 de Marzo de 2007, 18:33:04
Gracias por las respuestas, efectivamente poniendo: set_tris_b(0) compila bien.

Por otro lado la idea de incluir instrucciones en asm es buena, quizas existan problemas similares que se puedan solucionar así.

Saludos.
Título: Re: Configurar pins 12F509
Publicado por: RiBerZerO en 23 de Marzo de 2007, 17:17:34
Todos los puertos que utilizas funcionan bien, ya que yo estaba trabajando con un 10F220, y tuve un pequeño problema con la utilizacion de 1 pin, ya que por defecto tenia, un registro no direccionable que hacia que el puerto sirviera para entrada de un timer, esto lo solucione insertando ASM, en C, es facil y puedes utilizar los llamados a funciones, y las funciones definidas en C :-/