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.

ccs c suitch buttons and array management 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
Activity points
0
Hello everybody can some body help me to solve the issue of push buttons in my program here,see the codes:
#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 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};
const float t[]={
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};
const float u[]={
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};
const float s[]={
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,
};

//one array divided into 3 arrays
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};

const float m[]={
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};
//11274.99
const float n[]={
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};

const float p[]={
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 main()
{
//set_tris_c(0xff);
set_tris_b(0x00);
set_tris_c(0xff);
lcd_init();
delay_us(200);


kj: printf(lcd_putc,"\fLoad165");
delay_ms(5000);
break;


kji:
set_timer1(0);
setup_timer_1(t1_external | T1_DIV_BY_8);
// delay_ms(1000);
delay_ms(250);

setup_timer_1(T1_DISABLED);
value=get_timer1();
// value1=((value*32)-56936)/100;
value1=((value*32)-59528)/100;
printf(lcd_putc,"\f%f",value1);
delay_ms(1500);

while(true)
{
if(input(PIN_C4)==0)
{
if(input(PIN_C4)==0)
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);
output_high(PIN_B6);
delay_ms(1500);
printf(lcd_putc,"\f%2.1f", l);
printf(lcd_putc,"\%%");
delay_ms(1500);
output_low(PIN_B6);
goto kj;
// break;
}

else if((value1<= m)&&(t<=value1))
{
l=(0.1*i)+13.0;
printf(lcd_putc,"\f%2.1d", i);
delay_ms(1500);
lcd_gotoxy(4,1);
printf(lcd_putc,"\f%2.1f", l);
printf(lcd_putc,"\%%");
delay_ms(1500);
goto kagabo;
//break;
}
else if((value1<= n)&&(u<=value1))
{
l=(0.1*i)+18.0;
printf(lcd_putc,"\f%2.1d", i);
delay_ms(1500);
lcd_gotoxy(4,1);
printf(lcd_putc,"\f%2.1f", l);
printf(lcd_putc,"\%%");
delay_ms(1500);
goto kagabo;
// break;
}
else if((value1<= p)&&(s<=value1))
{
l=(0.1*i)+23.0;
printf(lcd_putc,"\f%2.1d", i);
delay_ms(1500);
lcd_gotoxy(4,1);
printf(lcd_putc,"\f%2.1f", l);
printf(lcd_putc,"\%%");
delay_ms(1500);
goto kagabo;
//break;
}
else
delay_ms(5);
lcd_gotoxy(4,1);
printf(lcd_putc,"\fConnect Probe");
delay_ms(5);
//break;
}


if((input(PIN_c5)==0))

{

if((input(PIN_c5)==0))
{
delay_ms(100);
printf(lcd_putc, "\fSineWave");
delay_ms(2000);
}
}

if((input(PIN_c6)==0))
{

if((input(PIN_c6)==0))
{
delay_ms(100);
printf(lcd_putc, "\fSquare");
delay_ms(2000);
}
}





}
}
I am using ccs c compiler and PIC16F877A;when I push the buttons there is no reaction of the display;the buttons I am using are referred to this link:**broken link removed**
 
Last edited:

use !input(PIN_cx) instead of input(PIN_cx)==0.

Note: x can be 0,1,2,...7

- - - Updated - - -

Can you show me the circuit design?
 

use !input(PIN_cx) instead of input(PIN_cx)==0.

Note: x can be 0,1,2,...7

- - - Updated - - -

Can you show me the circuit design?

I am unable to attach it here but,I am simulating using proteus.
No other special properties associated with the buttons shown;I use them but there are not working as it must because some time they work others not.and when I measure their resistances there are some how high.

Thanks
 

Why are you double-checking the input signal with two IFs ? If you need some delay between inputs you can simply put a delay call. Try like this for your inputs:
Code:
// defining checking for the high or low state
// set as you need: 0: low, 1: high
#define CHECK_STATUS 0

// define the time to wait between inputs
#define INPUT_DELAY 250 // ms


/* Put the next code in your main() function and 
 * complete the code with anything you want it to do
 */
while (1){
	if((input(PIN_c4) == CHECK_STATUS)){
		// PIN_c4 has been pressed
		
		/* do code for c4 here */
		
	} else if((input(PIN_c5) == CHECK_STATUS)){
		// PIN_c5 has been pressed
		
		/* do code for c5 here */
		
	} else if((input(PIN_c6) == CHECK_STATUS)){
		// PIN_c6 has been pressed
		
		/* do code for c6 here */
		
	}
	
	// Wait a little before the next input
	delay_ms(INPUT_DELAY);
}

p.s. To attach the simulation file create a zip archive with it. The forum attachments do not allow some type of files to be uploaded.
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top