john120
Banned
- Joined
- Aug 13, 2011
- Messages
- 257
- Helped
- 11
- Reputation
- 22
- Reaction score
- 10
- Trophy points
- 1,298
- Activity points
- 0
Hello everybody ,I have the following codes in MPLAB iwoudl ike to print out the index corresponding to any number (which meant frequency reads on T1CKI) of PIC16F877A , I tried to write down the codes below but for all frequency read I am getting the same index.
Please help on how I can find the index
Help on how I can find the index of any number reads from the probe of a function Generator.
Thanks
Please help on how I can find the index
Code:
#include <16f877a.h>
#DEVICE ADC=10
#Device *=16
#fuses HS,NOWDT,NOPROTECT,NOLVP,NOBROWNOUT,cpd
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#byte portc=0x07
#include "lcd.c"
#define ARRAY_SIZE 191
float value,value1,l,p1,p2,p3,v1,v2,v3;
int i,ti,found,q;
void frequency();
const float k[]={
12349,12341,12319,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,12094.99,12085,12070,12050,12025,
12015,12010,12000,11995,11990,11985,11970,11968.99,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,11274.99,11274,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};
const float j[]={
12359,12348,12340,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,12098,12097.99,12084.99,12069.99,12049.99,
12024.99,12014.99,12009.99,11999.99,11994.99,11989.99,11980,11969,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,11275,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,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,
};
void frequency ()
{
float value, value1;
output_low(PIN_C4);
set_timer1(0);
setup_timer_1(T1_EXTERNAL| T1_DIV_BY_8);
delay_ms(250);
setup_timer_1(T1_DISABLED);
value=get_timer1();
value1=(((value*8*4))/100);
delay_ms(1000);
printf(lcd_putc, "\f%f",value1);
delay_ms(2000);
for ( i =0,found=-1; i<ARRAY_SIZE ; i++)
delay_ms(2500);
printf(lcd_putc, "\f%f",l);
printf(lcd_putc, "\f%%");
delay_ms(1500);
}
void main()
{
set_tris_d(0x00);
set_tris_a(0xff);
set_tris_c(0x01);
lcd_init();
delay_us(200);
aba:delay_ms(1200);
printf(lcd_putc, "\fSinusoidal");
delay_ms(1500);
printf(lcd_putc, "\f%f",value1);
delay_ms(1500);
printf(lcd_putc, "\f%d",i);
delay_ms(1500);
while(true)
{
frequency();
if((input(PIN_A0)==0)&&(value1<= k[i])&&(j[i]<=value1))
{
printf(lcd_putc,"\fWait....");
//frequency();
delay_ms(150);
l=(0.1*i)+8.0;
output_high(PIN_C4);
delay_ms(5000);
lcd_gotoxy(6,2);
printf(lcd_putc,"\f%2.1f", l);
printf(lcd_putc,"\%%");
//output_high(PIN_C4);
delay_ms(10000);
//goto bi;
}
else if((value1>12360)||(value1<10120))
{
output_high(PIN_C4);
//printf(lcd_putc,"\f%f",value1);
delay_ms(1500);
printf(lcd_putc,"\f%d",i);
delay_ms(1500);
printf(lcd_putc,"\fConnectProbe");
delay_ms(1500);
printf(lcd_putc,"\fAndThen");
delay_ms(1500);
printf(lcd_putc,"\fPress");
delay_ms(1500);
printf(lcd_putc,"\fREDButton");
}
}
}
Thanks
Last edited by a moderator: