C/Visual C - Ayuda desplazamiento de bit

 
Vista:
sin imagen de perfil

Ayuda desplazamiento de bit

Publicado por Federico (2 intervenciones) el 30/10/2013 01:38:27
Buenos dias, estoy empezando a programar un 18F4550 y estoy intentando hacer funcionar el siguiente programa que cumpla las siguientes condiciones:

Inicio: PORT A entrada, PORT D salida. Pin RD0 en alto;
Al presionar el pulsador(a +vcc) ubicado en el puerto RA0 la salida deberia configurarse de manera que el pin en alto del PORT D sea el siguiente, osea RD1.

Tal vez examinando el programa sea mas facil la interpretacion.
--------------------------------------------------------------------------------------------------------------
#byte PORTD=0x88
#byte PORTA=0X85

int corrimiento(int valor); //DECLARO CORRIMIENTO

void main(){
set_tris_a(0xff);
set_tris_d(0x00);

int a=0b00000001;
int i=0;
int z;

output_d(a);
comienzo:
if(bit_test(PORTA,0)==1)
output_d(corrimiento(a));
else goto comienzo;

}
int corrimiento(int valor){ // DEFINO CORRIMIENTO
int c=0b00000000;
c=valor<<1;
return c;
}
--------------------------------------------------------------------------------------------------------------
Mi gran problema es que al inicial el programa el pin RD0 comienza en alto pero al presionar el pulsador de RA0 la salida no se desplaza.
Desde ya, muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda desplazamiento de bit

Publicado por Tom (619 intervenciones) el 30/10/2013 11:32:10
¿ Estás seguro de que en los puertos puedes escribir tipos int ? Los valores que manejas parecen char (byte).
Tendrías que revisar, por si acaso, output_d() a ver qué hace.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda desplazamiento de bit

Publicado por Federico (2 intervenciones) el 30/10/2013 13:29:27
Si estoy seguro, ya he echo algunos programas poniendo un int en el output_d(), por las dudas esta tarde voy a probar cambiando los int por char, muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar