PIC32 Asignar bit de puerto a variable (en C)

1

Los pines a los que conecto algunos LED pueden cambiar durante el desarrollo (y enrutamiento), por lo que me gustaría asignar los bits del Puerto a una variable (de modo que si el LED tiene que estar conectado a otro puerto, solo tengo que cambiar el puerto asignado a la variable y en lugar de actualizar cada llamada en el código).

Me gustaría hacer algo de lo siguiente en C:


#define myvariable = PORTB.RB11;
#define myvariable2 = PORTB.RB12;

main(){
    if(...)  myvariable = 1;     // B11 is HIGH
    else myvariable = 0;         // B11 is LOW
    if(...)  myvariable2 = 1;
    else myvariable2 = 0;
}

¿Alguien sabe cómo hacer esto?

Me encantaría que pudieras publicar las dos líneas de código. (asignación y uso)

¡Gracias!

    
pregunta ndrizza

2 respuestas

1

Si observa el archivo de encabezado del dispositivo, debería encontrar las uniones definidas para acceder a bits individuales de IO y otros registros.

por ejemplo desde el código Pic24: no estoy seguro si PIC32 es el mismo

#define thepin LATBbits.LATB13

thepin=0;
    
respondido por el mikeselectricstuff
1

Tiendo a usar muchas definiciones y estructuras con enumeraciones para evitar que mi código esté vinculado a un periférico en particular, o a veces a una familia particular de microcontroladores. El código siguiente asume que emitir un 1 enciende el LED y un 0 lo apaga. Al utilizar define, es menos probable que se confundan estas cosas al codificar y depurar.

 #define LED1_TRIS (TRISAbits.TRISA1)
 #define LED1_IO (PORTAbits.RA1)
 #define SET_INPUT (1)
 #define SET_OUTPUT (0)
 #define LED_ON (1)
 #define LED_OFF (0)

 /* Set as an output. */
 LED1_TRIS = SET_OUTPUT;
 /* Turn LED on. */
 LED1_IO = LED_ON;
 /* Wait. */
 Nop();
 /* Turn LED off. */
 LED1_IO = LED_OFF;
    
respondido por el Joshua

Lea otras preguntas en las etiquetas