11 de mayo de 2010

Definir puertos como entradas o salidas

Cuando vamos a utilizar los puertos para leer sensores o manejar actuadores debemos especificar si estos puertos serán entradas o salidas, es decir, definir la dirección de los datos.

Para definir todas las líneas del puerto "P0" como entradas:
P0 = 0xFF; // todos los bits del puerto cero como entradas

Para definir un puerto como salidas, no hace falta hacer nada, en este micro, por defecto están configurados como salidas.

Puedes ver un ejemplo en el siguiente código.
Este programa lee un bit del puerto "P0" y activa una salida en el puerto "P1":

sfr P0=0x80;
sfr P1=0x90;
sbit P0_0=P0^0;
sbit P1_7=P1^7;

void main(void){

P0=0xFF; // definimos todo el puerto P0 como entradas
// el puerto P1 configurado como salida por defecto

while (1){

if (P0_0==0) P1_7=1; // comprueba nivel bit P0.0
else P1_7=0;

}}

Nota: Si no tienes en cuenta este paso definiendo la dirección de los datos, cuando simules en el compilador Keil, tendrás un error y en ocasiones el programa podrá terminar inesperadamente.

Prueba a compilar y simular este programa sin definir la dirección de los puertos y observa como al cambiar el estado de los bits en los puertos, el programa se bloquea (trabajando con la versión 2 de Keil).

No hay comentarios: