I am using PIC16F877A to perform a calculation. But some error occurred after I include some trigonometry function and I have no idea with the error.
The errors state as below:
Error [1253] double.c; 55. could not find space (145 bytes) for auto/param block
Error [1253] C:\main display\delay.c; 35. could not find space (145 bytes) for auto/param block
My code is shown below:
//Project: Ultrasonic Range Finder Lesson
//Programmer: Shahrulnizam Mat Rejab
//PIDeg_C: PIDeg_C16F877Deg_A
//Deg_Crystal Frequency: 4MHz
#include <pic.h>
#include <htc.h>
#include <math.h>
#include <stdio.h>
#include "MyPIC16F874.h"
#include "delay.h"
#include "delay.c"
#include "lcd.h"
//Configuration
//=====================================================================
__CONFIG ( 0x3E31 );
#define BAUD 9600
#define _XTAL_FREQ 4000000
void pic_init(void);
void main()
{
const int Base1 = 200, Base2 = 200;
int display = 0;
int check = 0;
int X_cor = 0, Y_cor = 0;
double Range1, Range2, Range3;
double Xa_cor = 0, Ya_cor = 0, Xb_cor = 0, Yb_cor = 0, Xc_cor = 0, Yc_cor = 0;
double Deg_A = 0, Deg_B = 0, Deg_C = 0;
pic_init(); //initialize PIC
lcd_init(); //initialize LCD
lcd_goto(1,0); //select first line
lcd_puts("X : cm"); //display string
lcd_goto(2,0); //select second line
lcd_puts("Y : cm"); //display string
for(;
{
Range1 = 100;
Range2 = 100;
Range3 = 120;
check = Range1 * Range2 * Range3;
if (check > 0)
display = 1;
else
display = 0;
if (display == 1)
{
Deg_A = acos((Range1*Range1+Base1*Base1-Range1*Range1)/(2*Range1*Base1));
Xa_cor = Range1*cos(Deg_A);
Ya_cor = Range1*sin(Deg_A);
Deg_B = acos((Range2*Range2+Base1*Base1-Range1*Range1)/(2*Range2*Base1));
Xb_cor = Range2*cos(Deg_B);
Yb_cor = Range2*sin(Deg_B);
Deg_C = acos((Range3*Range3+Base2*Base2-Range2*Range2)/(2*Range3*Base2));
Xc_cor = Range3*sin(Deg_C);
Yc_cor = Range3*cos(Deg_C);
X_cor = ((Xa_cor)+(Base1-Xb_cor)+(Base1-Xc_cor))/3;
Y_cor = ((Ya_cor)+(Yb_cor)+(200-Yc_cor))/3;
lcd_goto(1, 5);
lcd_number(X_cor, 5, 3);
__delay_ms(100);
lcd_goto(2, 5);
lcd_number(Y_cor, 5, 3);
__delay_ms(100);
}
}
}
The errors state as below:
Error [1253] double.c; 55. could not find space (145 bytes) for auto/param block
Error [1253] C:\main display\delay.c; 35. could not find space (145 bytes) for auto/param block
My code is shown below:
//Project: Ultrasonic Range Finder Lesson
//Programmer: Shahrulnizam Mat Rejab
//PIDeg_C: PIDeg_C16F877Deg_A
//Deg_Crystal Frequency: 4MHz
#include <pic.h>
#include <htc.h>
#include <math.h>
#include <stdio.h>
#include "MyPIC16F874.h"
#include "delay.h"
#include "delay.c"
#include "lcd.h"
//Configuration
//=====================================================================
__CONFIG ( 0x3E31 );
#define BAUD 9600
#define _XTAL_FREQ 4000000
void pic_init(void);
void main()
{
const int Base1 = 200, Base2 = 200;
int display = 0;
int check = 0;
int X_cor = 0, Y_cor = 0;
double Range1, Range2, Range3;
double Xa_cor = 0, Ya_cor = 0, Xb_cor = 0, Yb_cor = 0, Xc_cor = 0, Yc_cor = 0;
double Deg_A = 0, Deg_B = 0, Deg_C = 0;
pic_init(); //initialize PIC
lcd_init(); //initialize LCD
lcd_goto(1,0); //select first line
lcd_puts("X : cm"); //display string
lcd_goto(2,0); //select second line
lcd_puts("Y : cm"); //display string
for(;
{
Range1 = 100;
Range2 = 100;
Range3 = 120;
check = Range1 * Range2 * Range3;
if (check > 0)
display = 1;
else
display = 0;
if (display == 1)
{
Deg_A = acos((Range1*Range1+Base1*Base1-Range1*Range1)/(2*Range1*Base1));
Xa_cor = Range1*cos(Deg_A);
Ya_cor = Range1*sin(Deg_A);
Deg_B = acos((Range2*Range2+Base1*Base1-Range1*Range1)/(2*Range2*Base1));
Xb_cor = Range2*cos(Deg_B);
Yb_cor = Range2*sin(Deg_B);
Deg_C = acos((Range3*Range3+Base2*Base2-Range2*Range2)/(2*Range3*Base2));
Xc_cor = Range3*sin(Deg_C);
Yc_cor = Range3*cos(Deg_C);
X_cor = ((Xa_cor)+(Base1-Xb_cor)+(Base1-Xc_cor))/3;
Y_cor = ((Ya_cor)+(Yb_cor)+(200-Yc_cor))/3;
lcd_goto(1, 5);
lcd_number(X_cor, 5, 3);
__delay_ms(100);
lcd_goto(2, 5);
lcd_number(Y_cor, 5, 3);
__delay_ms(100);
}
}
}