E/S digital: Hardware asociado El pic 16F877A puede disponer de hasta 33 lineas digitales de E/S PortA: 6, PortB: 8, PortC: 8, PortD: 8, PortE: 3 Precauciones a tener en cuenta: • El PORTA dispone de 6 pines. Epin RA4 está implementado como colector abierto, por lo tanto es obligatorio conectar una resistencia de pull-up cuando se configura como salida. • El PORTB es de ocho pines y dispone, internamente, de unas resistencias de pull-up que se pueden habilitar poniendo a ‘0’ el bit RBPU del registro (OPTION_REG<7>) • El PORTC se compone de ocho pines multiplexados con varios periféricos (USART, I2C) y dispone de buffers Trigger Schmitt. • El PORTD dispone de ocho pines que funcionan como entradas Trigger Schmitt cuando se configuran como entradas o como TTL cuando se configuran como salidas. • El PORTE dispone de tres pines de propósito general. (c) Domingo Llorente 2010 1 E/S digital: Función de configuración El compilador CCS dispone de la funcion set_tris_x() para configurar cualquier pin como estrada o salida digital. Ej1: Configurar entradas digitales: set_tris_x(0xFF); // Configura el puerto x como entrada digital // Donde x puede ser a,b,c,d ó e. Ej2: Configurar salidas digitales: set_tris_x(0x00); // Configura el puerto x como salida digital // Donde x puede ser a,b,c,d ó e. Ej3: Configurar entradas y salidas en el mismo puerto: set_tris_b(0xF0); // Configura RB0..RB3 como salidas digitales // y RB4..RB7 como entradas. Nota: También se puede utilizar la notación binaria: set_tris_b(0b11110000); (c) Domingo Llorente 2010 2 E/S digital: Funciones de lectura El compilador CCS dispone de dos funciones para realizar la lectura del estado de una línea o puerto, previamente configurado como entrada digital. Lectura de un puerto: valor=input_x(); // Donde x puede ser a,b,c,d o e y valor debe // ser una variable de 8 bits. Lectura del estado de un pin: estado=input(pin); // Donde pin puede ser (pin_A0, pin_B7,etc ) // y la variable “estado” debe ser del tipo bit (c) Domingo Llorente 2010 3 E/S digital: Lectura del valor de un puerto (c) Domingo Llorente 2010 4 E/S digital: Lectura del estado de un pin (c) Domingo Llorente 2010 5 E/S digital: Escritura de un dato en un puerto (c) Domingo Llorente 2010 6 E/S digital: Poner a nivel alto un pin de salida (c) Domingo Llorente 2010 7 E/S digital: Poner a nivel bajo un pin de salida (c) Domingo Llorente 2010 8 E/S digital: Cambiar el estado de un pin de salida (c) Domingo Llorente 2010 9 E/S digital: Directiva #USE_FAST_IO(PORT) (c) Domingo Llorente 2010 10 E/S digital: Tipos básicos de datos (c) Domingo Llorente 2010 11