TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: RobertoVilchez en 15 de Febrero de 2023, 23:54:49

Título: ERROR *** Error 12 "CODIGO.c" Line 60(9,18): Undefined identifier PORTBbits
Publicado por: RobertoVilchez en 15 de Febrero de 2023, 23:54:49
Estoy escribiendo un codigo en c para el funcionamiento de un microcontrolador, tengo todo lo necesario pero al compilar me indica el siguietne error: *** Error 12 "CODIGO.c" Line 60(9,18): Undefined identifier   PORTBbits

Comparto parte de mi codigo por si alguien pudiera decirme como oslucionarlo

Código: [Seleccionar]
#include <18f4550.h>
#include <delays.h>
#include <stdio.h>
#include <string.h>
#define LCD_ENABLE_PIN  PIN_C2
#define LCD_RS_PIN      PIN_C0
#define LCD_RW_PIN      PIN_C1
#define LCD_DATA4       PIN_C4
#define LCD_DATA5       PIN_C5
#define LCD_DATA6       PIN_C6
#define LCD_DATA7       PIN_C7
#include <LCD.C>
#include <xc.h>

#pragma config FOSC = HS, CPUDIV = OSC1_PLL2, PLLDIV = 4, WDT = OFF, BOR = OFF, PBADEN = OFF, MCLRE = ON, LVP = OFF

#define _XTAL_FREQ 20000000
#define DELAY 500

// Variables globales
int temperature = 0, humidity = 0;
unsigned char buf[5];

// Prototipos de funciones
void init();
void proceso1();
void proceso2();
void readTemperature();
void readHumidity();

void main() {
    init();
    while (1) {
        proceso1();
        proceso2();
    }
}

void init() {
    // Configuración de puertos
   // Configuramos los puertos RD2 y RD3 como salidas lógicas
   SET_TRIS_D(0xFC);
   // Configuramos el puerto RB2 y RB3 como entradas
   SET_TRIS_B(0x0C);
   // Configuramos los puertos RD4, RD5, RD6 y RD7 como salidas lógicas
   SET_TRIS_D(0xF0);
   // Configuramos el puerto RB5 y RB6 como entradas
   SET_TRIS_B(0x60);
   // Configuramos los puertos del bus C para el LCD
   SET_TRIS_C(0x80);

    // Inicializar el LCD
    lcd_init();
    // Mostrar mensaje de inicialización
    lcd_putc("Inicializando...");
}


void proceso1() {
    if (PORTBbits.RB6 == 1) {
        if (PORTBbits.RB3 == 1) {
            //Activar RD4 y mostrar mensaje de vaciado de tanque
            PORTDbits.RD4 = 1;
            Lcd_Clear();
            lcd_gotoxy(1, 1);
            lcd_putc("Vaciando tanque...");
           
            while (PORTBbits.RB3 == 1) {
                // Esperar hasta que el nivel mínimo sea 0
            }
           
            PORTDbits.RD4 = 0; // Deshabilitar salida
        } else {
            Lcd_Clear();
            lcd_gotoxy(1, 2);
            lcd_putc("Imposible vaciar");
            lcd_gotoxy(2, 1);
            lcd_putc("tanque");
           
            while (PORTBbits.RB6 == 1) {
                // Esperar hasta que el switch DESAGÜE se deshabilite
            }
        }
    } else {
        // Verificar si el switch CORTE está activo
        if (PORTBbits.RB5 == 1) {
        // Verificar si el sensor de nivel mínimo está deshabilitado
            if (PORTBbits.RB3 == 0) {
                Lcd_Clear();
                lcd_gotoxy(1, 2);
                lcd_putc("Tanque vacio,");
                lcd_gotoxy(2, 1);
                lcd_putc("imposible continuar");
               
                mostrar_mensaje("Reiniciar sistema al terminar corte", 0);
            } else {
                // Continuar al proceso 2
            }
        } else {
            if (PORTBbits.RB2 == 1) {
                // Continuar al proceso 2
            } else {
                Lcd_Clear();
                lcd_gotoxy(1, 2);
                lcd_putc("Llenando tanque");
                PORTDbits.RD5 = 1; // Habilitar salida
               
                while (PORTBbits.RB2 == 1) {
                // Esperar hasta que el tanque se llene
                }
            }
        }
    }
}
Título: Re:ERROR *** Error 12 "CODIGO.c" Line 60(9,18): Undefined identifier PORTBbits
Publicado por: Eduardo2 en 16 de Febrero de 2023, 00:30:48
... Undefined identifier   PORTBbits
Si no me estoy confundiendo con otra cosa, el nombre de la estructura es PORTBbits_t
Título: Re:ERROR *** Error 12 "CODIGO.c" Line 60(9,18): Undefined identifier PORTBbits
Publicado por: RobertoVilchez en 16 de Febrero de 2023, 00:36:19
No no, investigando más encontré que se debe usar INPUT(PIN_x) para leer la señal de entrada al microcontrolador en vez de lo que estaba usando.
Título: Re:ERROR *** Error 12 "CODIGO.c" Line 60(9,18): Undefined identifier PORTBbits
Publicado por: Eduardo2 en 16 de Febrero de 2023, 00:55:02
No no, investigando más encontré que se debe usar INPUT(PIN_x) para leer la señal de entrada al microcontrolador en vez de lo que estaba usando.
Son cosas distintas,  el error que te daba era por el nombre incorrecto. 
Otro tema es que el puerto se escribe en PORTB pero se lee en LATB , que son direcciones distintas
Título: Re:ERROR *** Error 12 "CODIGO.c" Line 60(9,18): Undefined identifier PORTBbits
Publicado por: uZYNQ en 16 de Febrero de 2023, 09:53:05

Citar
#include <xc.h>

 Que compilador estas usando? porque ese codigo es para XC8. y esa estructura PORTBbits es de XC8.