TODOPIC
Lenguajes de programación para PC => C, C#, C++ => Mensaje iniciado 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