Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Large array in ccs c compiler with PIC16F877A

Status
Not open for further replies.

john120

Banned
Full Member level 5
Joined
Aug 13, 2011
Messages
257
Helped
11
Reputation
22
Reaction score
10
Trophy points
1,298
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.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top