ayuda con mi codigo

Si eres principiante y tienes alguna consulta entra en este foro.
Responder
Mensaje
Autor
echeivan
Mensajes: 3
Registrado: 05/11/2019 5:38 pm

ayuda con mi codigo

#1 Mensaje por echeivan » 05/11/2019 5:46 pm

escribi un codigo para una clase de microcontroladores, el punto es lograr controlar una matriz led 8x8 con un joystick pero al profe le parecio buena idea decirme que cambie mi codigo, alguien podria ayudarme a escribir un codigo que haga lo mismo que el que ya escribi porfavor:(

Código: Seleccionar todo

unsigned int x, y;      //se declara a x y y como enteros
#define sw1 PORTC.RC0
 char i;
 char h;
 char m;



void main()
{
ADCON1=0x0D;   //configura los pines A0 Y A1 como entradas analogicas
TRISA=0XFF;   //puerto A como entradas analogicas
TRISB=0;  //puerto B como salida digital
TRISD=0;  //puerto D como salida digital

do{

                 if (sw1==1)
                 {

                        for (h=1;h<=10;h++)
                          {
                             PORTB=0B00000011;
                             PORTD=0B11100001;
                             Delay_ms(5);
                             PORTB=0B00000010;
                             PORTD=0B10101010;
                             Delay_ms(5);
                             PORTB=0B00000100;
                             PORTD=0B10101010;
                             Delay_ms(5);
                             PORTB=0B00001000;
                             PORTD=0B10000000;
                             Delay_ms(5);
                             PORTB=0B00010000;
                             PORTD=0B00001110;
                             Delay_ms(5);
                             PORTB=0B00100000;
                             PORTD=0B01000001;
                             Delay_ms(5);
                             PORTB=0B01000000;
                             PORTD=0B10101001;
                             Delay_ms(5);
                             PORTB=0B10000000;
                             PORTD=0B10001000;
                             Delay_ms(5);

                          }





                   }
                  else
                  {

x=ADC_Read(0)/128;  //lee el puerto analogico 0 y su valor lo divide entre 128, guardandolo como entero en x, ya que con esta división su minimo resultado es de 0 y su maximo resultado es 7
y=ADC_Read(1)/128;  //lee el puerto analogico 1 y su valor lo divide entre 128, guardandolo como entero en y......

PORTB= 0x01<<x;   //el valor en binario 00000001 hace un desplazamiento de x bits a la izquierda, ejemplo si x es 2, el resultado queda como 00000100 y lo imprime en el puerto B


PORTD= ~(0x01<<y); //el valor en binario 00000001 hace un desplazamiento de y bits a la izquierda, ejemplo si y es 7, el resultado queda como 10000000 y lo imprime en el puerto D
}     //aparte, complementa el valor resultante, ya que para la parte de las columnas necesitamos arrastrar un 0 logico, contrario a las filas que requiere un 1 logico
}
while(1)         ; //se repite de forma infinita
Última edición por mollok el 05/11/2019 9:58 pm, editado 1 vez en total.
Razón: Los códigos deben ir entre etiquetas 'code', botón </>

echeivan
Mensajes: 3
Registrado: 05/11/2019 5:38 pm

Re: ayuda con mi codigo

#2 Mensaje por echeivan » 05/11/2019 5:48 pm

estoy usando el PIC18f4550

dehm
Mensajes: 328
Registrado: 29/04/2011 7:31 am

Re: ayuda con mi codigo

#3 Mensaje por dehm » 07/11/2019 1:00 am

Pero te habrá dado algunas pautas para plantear el nuevo código, ¿no?
¿O se limita a decirte que lo cambies sin más?
Aprendiendo

Avatar de Usuario
kiko66
Mensajes: 39
Registrado: 11/10/2019 10:51 am

Re: ayuda con mi codigo

#4 Mensaje por kiko66 » 07/11/2019 10:44 am

hola echeivan

no entiendo mucho de microcontroladores, pero veo varias cosas que yo cambiaria: :roll:

- normalmente los includes y defines van arriba
- no veo la necesidad de tener variables globales
- hay un monton de variables sin definir por ej ADCON1
- el define que sustituye sw1 por PORTC.RC0 no esta definido su tipo
ni inicializado antes de compararlo
- la sangria del codigo deja un poco que desear
- en la ultima asignacion a PORTD haces una negacion a nivel de bits sobre el
desplazamiento que no comentas
- bajo el while supongo que falta cerrar llaves de main que no se habra copiado

lo mas inportante son la variables sin definir o inicializar, repasalo un poco y
vuelve a presentarlo a ver si hay suerte :wink:

espero te sirva para mejorar el codigo

saludos

echeivan
Mensajes: 3
Registrado: 05/11/2019 5:38 pm

Re: ayuda con mi codigo

#5 Mensaje por echeivan » 07/11/2019 1:18 pm

Muchas gracias amigo, haré todo lo que me dijiste :D

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados