Estoy tratando de escribir un código que establecerá bit0 en PORTA en el PIC18F452 alto si se cumple alguna de las condiciones en las declaraciones IF. Estoy usando el depurador MPLAB ICD2 y el conjunto de herramientas Microchip C18. El código es el siguiente:
#include <p18f452.h>
void main (void)
{
// array containing vital sign values
unsigned char pulseR = 0x32; // syntax error
unsigned char sysP = 0x64;
unsigned char diasP = 0x26;
// acceptable limits for vital signs according to relavant heath officials
unsigned char pulseR_ULimit = 0xA0;
unsigned char pulseR_LLimit = 0x28;
unsigned char diastolic_ULimit = 0x5A;
unsigned char diastolic_LLimit = 0x3C;
unsigned char systolic_ULimit = 0x8C;
unsigned char systolic_LLimit = 0x5A;
TRISAbits.TRISA0 = 0;
//Comparing obtained values with acceptable limits
if (sysP < systolic_LLimit || sysP > systolic_ULimit)
{
PORTAbits.RA0 = 1;
}
else if (diasP < diastolic_LLimit || diasP > diastolic_ULimit )
{
PORTAbits.RA0 = 1 ;
}
else if (pulseR < pulseR_LLimit || pulseR > pulseR_ULimit )
{
PORTAbits.RA0 = 1;
}
else
PORTAbits.RA0 = 0;
}
Agregado:
La salida de la compilación es la siguiente:
Debug build of project `C:\Users\Owner\Desktop\School Files\ECNG 3006 2011\Labs\Lab 3\Softare-Hardware Only\Lab3_3.mcp' started.
Preprocessor symbol `__DEBUG' is defined.
Sat Nov 19 13:56:03 2011
----------------------------------------------------------------------
Clean: Deleting intermediary and output files.
Clean: Deleted file "C:\Users\Owner\Desktop\School Files\ECNG 3006 2011\Labs\Lab 3\Softare-Hardware Only\Lab3_3.mcs".
Clean: Done.
Couldn't locate build tool. Check tool locations.
----------------------------------------------------------------------
Debug build of project `C:\Users\Owner\Desktop\School Files\ECNG 3006 2011\Labs\Lab 3\Softare-Hardware Only\Lab3_3.mcp' failed.
Preprocessor symbol `__DEBUG' is defined.
Sat Nov 19 13:56:05 2011
----------------------------------------------------------------------
BUILD FAILED
¿Alguien puede ayudarme a solucionar este código?
Para configurar una salida, debe usar LATAbits.RA0 = x en lugar de PORTAbits.RA0 = x.
Además, intente agregar algunos corchetes. Prueba esto:
#include <p18f452.h>
void main (void)
{
// array containing vital sign values
unsigned char pulseR = 0x32; // syntax error
unsigned char sysP = 0x64;
unsigned char diasP = 0x26;
// acceptable limits for vital signs according to relavant heath officials
unsigned char pulseR_ULimit = 0xA0;
unsigned char pulseR_LLimit = 0x28;
unsigned char diastolic_ULimit = 0x5A;
unsigned char diastolic_LLimit = 0x3C;
unsigned char systolic_ULimit = 0x8C;
unsigned char systolic_LLimit = 0x5A;
TRISAbits.TRISA0 = 0;
//Comparing obtained values with acceptable limits
if ((sysP < systolic_LLimit)||(sysP > systolic_ULimit))
{
LATAbits.RA0 = 1;
}
else if ((diasP < diastolic_LLimit)||(diasP > diastolic_ULimit))
{
LATAbits.RA0 = 1 ;
}
else if ((pulseR < pulseR_LLimit)||(pulseR > pulseR_ULimit))
{
LATAbits.RA0 = 1;
}
else
{
LATAbits.RA0 = 0;
}
}
Ponga el TRISAbits.RA0 = 0;
después de la declaración de sus variables (deben declararse al comienzo de las rutinas)
Entonces, justo después unsigned char systolic_LLimit = 0x5A;
, debería compilar bien.
EDITAR: verifique que las opciones de compilación de su proyecto (Proyecto->Opciones de compilación->Proyecto) estén configuradas para el directorio de inclusión correcto. Aquí hay un clip de mi configuración para el último compilador C18 (es posible que tenga que buscar el suyo en su unidad C si está instalado en un lugar diferente o si usa una versión anterior)
EDITAR 2: sí, el archivo de encabezado que está utilizando es el problema. Si observa la estructura de TRISA, puede ver que los bits se denominan TRISAx:
extern volatile near unsigned char TRISA;
extern volatile near struct {
unsigned TRISA0:1;
unsigned TRISA1:1;
unsigned TRISA2:1;
unsigned TRISA3:1;
unsigned TRISA4:1;
unsigned TRISA5:1;
unsigned TRISA6:1;
} TRISAbits;
Entonces, si lo cambias, TRISAbits.TRISA0 = 0;
debería funcionar. Del mismo modo, es posible que deba cambiar otras cosas para cumplir con el archivo de encabezado.
O no cambie nada y simplemente comience a usar el último archivo de encabezado de microchips (debe estar en el directorio del compilador llamado \h (vea la imagen de arriba)
EDIT 3 - "no se puede encontrar la herramienta de compilación"
Esto significa que MPLAB no puede encontrar el ejecutable del compilador. Debe ir a "Proyecto -> Establecer ubicaciones de herramientas de idioma" y configurar correctamente los ejecutables de C18 Toolsuite.
Vea este hilo para una discusión sobre el tema. Este es un fragmento de cómo se ve en mi computadora portátil (tenga en cuenta que la ruta/archivo puede ser diferente en su computadora según la versión que esté usando):
#include <p18cxxx.h>
en su lugar. ¿Qué versión del compilador estás usando?C:\Users\Owner\Desktop\School Files\ECNG 3006 2011\Labs\Lab 3\Softare-Hardware Only\Lab3_3.mcp' failed. Preprocessor symbol
Se define la compilación de depuración del proyecto __DEBUG". ¿Por qué fallaría?
Oli Glaser
marrón
Oli Glaser
marrón
Oli Glaser