TODOPIC

Lenguajes de programación para PC => C, C#, C++ => Mensaje iniciado por: Eche99 en 05 de Noviembre de 2019, 22:55:31

Título: ayuda con mi codigo
Publicado por: Eche99 en 05 de Noviembre de 2019, 22:55:31
realice un codigo para una practica de microcontroladores pero un chistoso lo copio y tengo que cambiarlo, la verdad es que no se me ocurre nada mas, no soy muy bueno programando... estoy usando un PIC18f4550 y la idea de la practica es controlar una matriz led de 8x8 con un joystick. tambien agregue una opcion para que dibuje algo en la m atriz. mucgas gracias

nsigned int x, y;      //se declara a x 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