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
#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
}
}
}
}
}