TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: zensejjeflz 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
(http://s1.subirimagenes.com/privadas/previo/thump_354268dibujo1.jpg) (http://www.subirimagenes.com/privadas-dibujo1-354268.html)
-
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.
-
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);
}
-
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.
-
--------------------------------------------------------------------------------
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.