Autor Tema: pulsadores puerto D evaluar las entradas  (Leído 1473 veces)

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

Desconectado zensejjeflz

  • PIC10
  • *
  • Mensajes: 6
pulsadores puerto D evaluar las entradas
« en: 19 de Febrero de 2009, 14:48:31 »
hola a todos, intento conformar un teclado con 6 pulsadores en el puerto D para un control de temperatura, en CCS para ello eh intentado valerme de la declaracion for para hacer iteraciones desde el pin2 hasta el pin 7 del puerto y emplear la función input(PIN_Di) justamente el indice  "i" es la que intento hacer variar. aquí mi programa.

#include <16f877A.h>
#use delay(clock=4000000)
#include <D:\proteus_pic16f84a\owen\lcds.c>
//#use standard_io (A)

#define PIN_Di 62
#byte tris_c = 0x87
#byte tris_d = 0x88
#byte c_port = 7
#byte d_port = 8

void main(void)
{
   int i,value;
   
   set_tris_d(0xFC);
   lcd_init();
   
   while(1)
   {
    lcd_gotoxy(8,2);
    lcd_putc("");
   
    for (i=2;i<=7;i++)
  {
  value=input(PIN_Di);
  printf(lcd_putc,"level: %d",value);
  delay_ms(500);
    }
 }
}

por ahora mi objetivo era displayar en un LCD el estado de cada pin sin conseguirlo,
espero todas las sugerencias y alcances. gracias

 
« Última modificación: 19 de Febrero de 2009, 14:51:57 por zensejjeflz »

Desconectado jim_17

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 309
    • Blog personal
Re: pulsadores puerto D evaluar las entradas
« Respuesta #1 en: 19 de Febrero de 2009, 15:56:02 »
Primeramente hay una cosa que no entiendo y es el #define PIN_Di 62, Si lo usas para definir el pin D2, tienes que hacer #define PIN_Di 66. Despues si quieres ir aumentando el valor de PIN_Di, tienes que hacer lo siguiente:

for (i=Pin_Di;i<=71;i++)
  {
  value=input(i);
  printf(lcd_putc,"level: %d",value);
  delay_ms(500);
    }
 }
}


Salu2.
« Última modificación: 19 de Febrero de 2009, 21:09:32 por jim_17 »
Share the world !

Blog's

http://www.area0x33.com

Desconectado pablomanieri

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 639
Re: pulsadores puerto D evaluar las entradas
« Respuesta #2 en: 19 de Febrero de 2009, 16:24:56 »
Deberías usar algo así
  for (i=2;i<=7;i++)
  {
value=bit_test(input_d(),i);
  printf(lcd_putc,"level: %d",value);
  delay_ms(500);
    }


Desconectado zensejjeflz

  • PIC10
  • *
  • Mensajes: 6
Re: pulsadores puerto D evaluar las entradas
« Respuesta #3 en: 19 de Febrero de 2009, 20:31:43 »
bien gracias muchachos ambos códigos funcionan a la perfección, seguiré desarrollando el código para realizar funciones distintas con cada tecla. Claro me aligerarían a carga sus sugerencias de como encaminar el propósito.

Desconectado mi_chell2002

  • PIC10
  • *
  • Mensajes: 15
CONFIGURACIÓN PORTX (X=A,B,C,D) PIC 16F877A
« Respuesta #4 en: 27 de Febrero de 2009, 16:36:38 »
 
--------------------------------------------------------------------------------
hola a todos los amigos del foro, disculpen si no se donde tengo que preguntar ya que soy nuevo en el foro.
estoy complicado con la configuración del PORTA  especificamente y los demás puertos como entradas DIGITALES  i/0. Lo unico que quiero hacer por ahora es que cuando en una patita del PORTA  supongamos AR3 externamente yo aplique un volaje ( un unico pulso) de 5V  equivalente a un uno logico este sea tomado y asingado internamente a una función BIT. CON ESTE UNO LOGICO ASIGNADO A UNA FUNCION O VARIABLE INTERNA QUIERO  HACER UNAS CONDICIONES USANDO WHILE O IF. adjunto programa que he desarrollado y modificado muchas veces y no me funciona. LES AGRADECERE SU GENTIL AYUDA , EPERO SUS ACOTACIONES. aqui va el programa.

#pragma bit bit0 @ PORTB.0
#pragma bit bit1 @ PORTA.1

void main()

{
   
   TRISA=0xFF;
   TRISB=0x00;
   ADCON1=0b00000110; // ¿esta bien esta configuración? ¿ de esta forma quedan configurados todos los puertos como I/O o solo el PORTA.?
 
 while(1)
     {
      while(PORTA==0x01)//cuando en el PORTA tega en el bit1 5v debería ocurrir lo que sigue mas abajo.

       {
        bit0=bit1;
        bit0=!bit0;
       }
     }


POR FAVOR ALGUIEN QUE ME AYUDE...ESTOY ESTANCADO.


 

anything