john120
Banned
- 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!!
#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!!