es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Programa del Microcontrolador PIC 18LF46K42

Estoy usando MPLABX para escribir un programa simple para el microcontrolador PIC 18LF46K42 que encenderá y apagará LEDs después de cierto retraso. El compilador no reconoce los registros “TRISB” y “LATB”. Parece que me faltan algunos archivos de encabezado. No estoy seguro cuál es el problema. Estoy usando un compilador CCS C. Aquí está mi código:

#include <18LF46K42.h>

#include <stdio.h>

#include <stdlib.h>

#define SCL_PIN PIN_C3

#define SDA_PIN PIN_C4

// Código de declaración de I2C

pin_select SCL1OUT = SCL_PIN

pin_select SCL1IN = SCL_PIN

pin_select SDA1OUT = SDA_PIN

pin_select SDA1IN = SDA_PIN

use delay(internal=16Mhz)

use rs232(baud=4800, stream=RS232_2 , xmit=PIN_E1, rcv=PIN_E0, timeout=2000)

use i2c(I2C1,stream=IICBUS, master, FORCE_HW)

void delay_ms ( int delay );

void delay_ms ( int delay )
{
int ms, i;

for ( ms = 0; ms < delay; ms ++ )
for ( i = 0; i < 5; i ++ );
}

void main()
{
TRISB = 0x00; // Set PORTB as output PORT
LATB = 0xFF;     // Set PORTB high initially (All LEDs on)

while ( 1 )
{
  LATB = ~LATB;      // Toggle the value of PORTB
         delay_ms ( 1000 );   // Delay of 1 sec
}
}

Estoy obteniendo los siguientes errores:
C:\MicrocontrollerTest\PIC18Test.X\main.c:39:4: Error#12 Identificador no definido TRISB:
C:\MicrocontrollerTest\PIC18Test.X\main.c:40:4: Error#12 Identificador no definido LATB:
C:\MicrocontrollerTest\PIC18Test.X\main.c:44:4: Error#12 Identificador no definido LATB:

No estoy seguro si necesito usar un compilador diferente o si me falta algún archivo de encabezado.</stdlib.h></stdio.h>

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que los registros TRISB y LATB no son reconocidos por el compilador CCS C. Esto podría deberse a la falta de archivos de encabezado o a una configuración incorrecta del compilador. Para resolver este problema, intenta incluir el archivo de encabezado “p18f46k22.h” en lugar de “18LF46K42.h”.

    Además, asegúrate de que se haya seleccionado el dispositivo correcto en MPLABX y de que las propiedades del proyecto estén configuradas correctamente para el compilador CCS C. Verifica que se esté utilizando el #pragma correcto para definir el dispositivo.

    También es importante tener en cuenta que TRISB y LATB son registros específicos del dispositivo y es posible que no estén disponibles en todos los microcontroladores. Consulta la hoja de datos del microcontrolador para confirmar la disponibilidad de estos registros.

    Código corregido con el cambio en el archivo de encabezado:
    “`
    include <p18f46k22.h>
    #include <stdio.h>
    #include <stdlib.h>

    #define SCL_PIN PIN_C3
    #define SDA_PIN PIN_C4

    // Código de declaración de I2C
    #pin_select SCL1OUT = SCL_PIN
    #pin_select SCL1IN = SCL_PIN
    #pin_select SDA1OUT = SDA_PIN
    #pin_select SDA1IN = SDA_PIN

    #use delay(internal=16Mhz)
    #use rs232(baud=4800, stream=RS232_2 , xmit=PIN_E1, rcv=PIN_E0, timeout=2000)
    #use i2c(I2C1,stream=IICBUS, master, FORCE_HW)

    void delay_ms ( int delay );

    void delay_ms ( int delay )
    {
    int ms, i;

    for ( ms = 0; ms < delay; ms ++ )
    for ( i = 0; i < 5; i ++ );
    }

    void main()
    {
    TRISB = 0x00; // Establecer PORTB como puerto de salida
    LATB = 0xFF; // Establecer inicialmente PORTB en alto (todos los LEDs encendidos)

    while ( 1 )
    {
    LATB = ~LATB; // Alternar el valor de PORTB
    delay_ms ( 1000 ); // Retardo de 1 segundo
    }
    }
    “`</stdlib.h></stdio.h></p18f46k22.h>

Comments are closed.