Autor Tema: ERROR *** Error 12 "CODIGO.c" Line 60(9,18): Undefined identifier PORTBbits  (Leído 551 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado RobertoVilchez

  • PIC10
  • *
  • Mensajes: 2
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
                }
            }
        }
    }
}
« Última modificación: 16 de Febrero de 2023, 00:08:47 por RobertoVilchez »

Desconectado Eduardo2

  • PIC24F
  • *****
  • Mensajes: 965
Re:ERROR *** Error 12 "CODIGO.c" Line 60(9,18): Undefined identifier PORTBbits
« Respuesta #1 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

Desconectado RobertoVilchez

  • PIC10
  • *
  • Mensajes: 2
Re:ERROR *** Error 12 "CODIGO.c" Line 60(9,18): Undefined identifier PORTBbits
« Respuesta #2 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.

Desconectado Eduardo2

  • PIC24F
  • *****
  • Mensajes: 965
Re:ERROR *** Error 12 "CODIGO.c" Line 60(9,18): Undefined identifier PORTBbits
« Respuesta #3 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
« Última modificación: 16 de Febrero de 2023, 00:57:03 por Eduardo2 »

Desconectado uZYNQ

  • PIC16
  • ***
  • Mensajes: 123
Re:ERROR *** Error 12 "CODIGO.c" Line 60(9,18): Undefined identifier PORTBbits
« Respuesta #4 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.