Large array in ccs c compiler with PIC16F877A

Status
Not open for further replies.

john120

Banned
Joined
Aug 13, 2011
Messages
257
Helped
11
Reputation
22
Reaction score
10
Trophy points
1,298
Visit site
Activity points
0
Hello everybody,can you plz help me to handle the problem I have using two very large array of 200 digits each;this is combined with if statement which makes the comparison but the result is not coming but it is re printing on the lcd the text which has to be printed on the screen before comparison;see my codes here below:
#include <16f877a.h>
#DEVICE ADC=10
#Device *=16
#fuses HS,NOWDT,NOPROTECT,NOLVP,NOBROWNOUT
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#include "lcd.c"
//#define ARRAY_SIZE 191
#define ARRAY_SIZE 250


float voltsf,volts;
float value;
float value1;
int i,found;


unsigned int adc_value;

int search;
float l;

const float j[]={12359,12348,12319,12318,12303,12301,12280,12264,12261.2,12245,12230,12230,12210,12200,12199.99,
12199.96,12179.99,12179.38,12169.99,12159.99,12151.29,12149.99,12120,12099.99,12098.99,12094.99,12097.99,12084.99,
12069.99,12049.99,12024.99,12014.99,12009.99,11999.99,11994.99,11989.99,11980,11968.99,11968.99,11959.99,11954.99,
11949.99,11944.99,11939.99,11934.99,11929.99,11899.99,11880,11869.99,11840.99,11832.39,11822.29,11811.99,11809.99,11799.99,11749.49,11738.49,11736.49,11734.99,11724.99,11714.99,11699.99,11684.99,11674.99,11659.99,11644.99,11629.99,
11599.97,11584.99,11574.99,11564.99,11549.99,11525,11514.99,11504.99,11498.7,11439.99,11429.99,11417.99,11434.99,
11425.99,11414.99,11403.99,11395.99,11385.59,11374.99,11364.99,11354.99,11344.99,11334.99,11299.98,11284.99,11274.99,11249.98,11234.99,11224.99,11214.99,11199.49,11184.99,11174.99,11164.99,11149.99,11134.99,11119.99,11090,11079.99,
11064.99,11051.99,11034.99,11024.99,11009.99,10997.98,10984.99,10974.99,10963.99,10951.99,10939.99,10924.99,10914.99,
10899.99,10884.99,10874.99,10861.99,10849.99,10819.99,10799.99,10784.99,10774.99,10764.99,10758.99,10758.59,10758.29,
10748.19,10734.99,10724.99,10711.99,10699.99,10684.99,10671.99,10660.99,10649.99,10631.99,10623.99,10612.99,10609.99,
};

const float k[]={10599.99,10579.99,10559.99,10549.99,10539.99,10529.99,10519.49,10514.99,10499.99,10484.99,10469.99,10454.99,10439.99,
10424.99,10411.99,10399.99,10384.99,10369.99,10354.99,10330,10319.99,10299.99,10289.98,10274.99,10264.99,10259.99,
10249.99,10239.99,10224.99,10214.99,10209.99,10199.99,10184.99,10181.99,10179.99,10174.99,10169.99,10164.99,10159.99,
10159.99,10149.99,10144.99,10139.99,10129.99,10124.99,10134.99,12349,12341,12340,12315,12300.9,12289,12260,12262,12248,12230.01,12229.99,12209.99,12200.01,12199.99,
12179.95,12180,12179.39,12170,12160,12151.3,12150,12120,12100,12099,12095,12098,12085,12070,12050,12025,12015,12010,12000,11995,11990,11985,11970,11969,11960,11955,11950,11945,11940,11935,11930,11900,11885,11870,11841,11832.4,11822.3,11812,11810,11800,11790,11738.5,11736.5,11735,11725,11715,11700,11685,11675,11660,11645,11630,11599.99,11585,11575,11565,11550,11535,11515,11505,11498.8,11440,11430,11418,11415,11426,11415,11404,11396,11385.6,11375,11365,11355,11345,11335,
11299.99,11285,11275,11275,11235,11225,11215,11199.5,11185,11175,11165,11150,11135,11120,11105,11080,11065,11052,11035,11025,11010,10997.99,10985,10975,10964,10952,10940,10925,10915,10900,10885,10875,10862,10850,10820,10800,10785,10775,10765,10759,
10758.6,10758.3,10748.2,10735,10725,10712,10700,10685,10672,10661,10650,10632,10624,10613,10610,10600,10580,10560,10550,10540,10530,10519.5,10515,10500,10485,10470,10455,10440,10425,10412,10400,10385,10370,10355,10340,10320,10300,10289.99,10275,10265,
10260,10250,10240,10225,10215,10210,10200,10185,10182,10180,10175,10170,10165,10160,10155,10155,10145,10140,10135,10125,10120,10130,
};

void main()
{
set_tris_c(0xff);
set_tris_b(0x00);
lcd_init();
delay_us(200);
printf(lcd_putc,"\fWELCOME IN");
delay_ms(1500);
printf(lcd_putc,"\fEMBEDDED SYSTEMS");
delay_ms(1500);

set_timer1(0);
setup_timer_1(t1_external | T1_DIV_BY_1);
delay_ms(1000);
setup_timer_1(T1_DISABLED);
value=get_timer1();
value1=value;
printf(lcd_putc,"\f%f",value1);
delay_ms(1500);

while(1)
{

while(input(PIN_C5)!=1)
{
for ( i =0,found=-1;i <ARRAY_SIZE ; i++)
if((value1<= j)&&(k<=value1))
{

l=(0.1*i)+8.0;
printf(lcd_putc,"\f%2.1d", i);
delay_ms(1500);
printf(lcd_putc,"\f%2.1f", l);
printf(lcd_putc,"\%%");
delay_ms(1500);
break;
}
}
}}


When I press the button the lcd prints the first two lines text:"Welcome in embedded systems"

When I replace those large arrays with the smallest the output is a digits which is the wanted result.

Please help to solve the issue.

Thanks!!
 

Status
Not open for further replies.
Cookies are required to use this site. You must accept them to continue using the site. Learn more…