CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to CCS Technical Support

condition always true for loop

 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
zeyad



Joined: 24 Feb 2015
Posts: 22

View user's profile Send private message

condition always true for loop
PostPosted: Wed Feb 25, 2015 1:59 pm     Reply with quote

Code:

#include <16f877a.h>
#fuses   HS,NOLVP,NOWDT,NOPROTECT
#use     delay(clock=20M)
void s1()
{
unsigned short table[4]={3,6,12,9};
int i;
for (i=0;i<200;i++)
{
output_b(table[i]);

}
}
void s2()
{
unsigned short table[4]={3,6,12,9};
int i;
for (i=0;i<600;i++)                         // ? condition always true ?
{
output_b(table[i]);

}
}

void s3()
{
output_b(3);
delay_ms(50);
output_b(6);
delay_ms(50);
output_b(12); 
delay_ms(50);
output_b(9);
delay_ms(50);output_b(3);
delay_ms(50);
output_b(6);
delay_ms(50);
output_b(12); 
delay_ms(50);
output_b(9);
delay_ms(50);output_b(3);
delay_ms(50);
output_b(6);
delay_ms(50);
output_b(12); 
delay_ms(50);
output_b(9);
delay_ms(50);output_b(3);
delay_ms(50);
output_b(6);
delay_ms(50);
output_b(12); 
delay_ms(50);
output_b(9);
delay_ms(50);output_b(3);
delay_ms(50);
output_b(6);
delay_ms(50);
output_b(12); 
delay_ms(50);
output_b(9);
delay_ms(50);output_b(3);
delay_ms(50);
output_b(6);
delay_ms(50);
output_b(12); 
delay_ms(50);
output_b(9);
delay_ms(50);output_b(3);
delay_ms(50);
output_b(6);
delay_ms(50);
output_b(12); 
delay_ms(50);
output_b(9);
delay_ms(50);output_b(3);
delay_ms(50);
output_b(6);
delay_ms(50);
output_b(12); 
delay_ms(50);
output_b(9);
delay_ms(50);
}

void s4()
{
output_b(3);
delay_ms(50);
output_b(6);
delay_ms(50);
output_b(12); 
delay_ms(50);
output_b(9);
delay_ms(50);output_b(3);
delay_ms(50);
output_b(6);
delay_ms(50);
output_b(12); 
delay_ms(50);
output_b(9);
delay_ms(50);output_b(3);
delay_ms(50);
output_b(6);
delay_ms(50);
output_b(12); 
delay_ms(50);
output_b(9);
delay_ms(50);output_b(3);
delay_ms(50);
output_b(6);
delay_ms(50);
output_b(12); 
delay_ms(50);
output_b(9);
delay_ms(50);output_b(3);
delay_ms(50);
output_b(6);
delay_ms(50);
output_b(12); 
delay_ms(50);
output_b(9);
delay_ms(50);output_b(3);
delay_ms(50);
output_b(6);
delay_ms(50);
output_b(12); 
delay_ms(50);
output_b(9);
delay_ms(50);output_b(3);
delay_ms(50);
output_b(6);
delay_ms(50);
output_b(12); 
delay_ms(50);
output_b(9);
delay_ms(50);output_b(3);
delay_ms(50);
output_b(6);
delay_ms(50);
output_b(12); 
delay_ms(50);
output_b(9);
delay_ms(50);output_b(3);
delay_ms(50);
output_b(6);
delay_ms(50);
output_b(12); 
delay_ms(50);
output_b(9);
delay_ms(50);output_b(3);
delay_ms(50);
output_b(6);
delay_ms(50);
output_b(12); 
delay_ms(50);
output_b(9);
delay_ms(50);output_b(3);
delay_ms(50);
output_b(6);
delay_ms(50);
output_b(12); 
delay_ms(50);
output_b(9);
delay_ms(50);output_b(3);
delay_ms(50);
output_b(6);
delay_ms(50);
output_b(12); 
delay_ms(50);
output_b(9);
delay_ms(50);
}

void main()
{

setup_adc_ports(NO_ANALOGS);
set_tris_d(0xff);
//set_tris_b(0x00);

while(true)
{

if (input(pin_d0))
{
s1();
}
 if (input(pin_d1))
{
s2();
}
if (input(pin_d2))
{
s3();
}
if (input(pin_d3))
{
s4();
}


}
}

When i am compiling this code condition always true is coming at the message box.
temtronic



Joined: 01 Jul 2010
Posts: 9229
Location: Greensville,Ontario

View user's profile Send private message

PostPosted: Wed Feb 25, 2015 2:01 pm     Reply with quote

yes....

while(true) ...
{
..
...
..
}

this condition( the while( true))
is always true....

jay
PCM programmer



Joined: 06 Sep 2003
Posts: 21708

View user's profile Send private message

PostPosted: Wed Feb 25, 2015 2:05 pm     Reply with quote

Quote:
void s2()
{
unsigned short table[4]={3,6,12,9};
int i;
for (i=0;i<600;i++) // ? condition always true ?
{
output_b(table[i]);

}
}

Look in the CCS manual, in the Type Specifiers section. What is an 'int'
equivalent to (int8), and what is the maximum size number that can fit
in an int8 ?
http://www.ccsinfo.com/downloads/ccs_c_manual.pdf
asmboy



Joined: 20 Nov 2007
Posts: 2128
Location: albany ny

View user's profile Send private message AIM Address

PostPosted: Wed Feb 25, 2015 4:51 pm     Reply with quote

function s3() and s4() are very interesting.

I am trying to think of a useful purpose for them as they evaluate to basically
a port pins change (reiterated to no purpose)
and a (ultimate ) delay.

and

s1() which handily over runs the index delimit of the array it pesters.

what do you believe is happening when these little code gems execute??

is this a Proteus tail chasing program ?


Last edited by asmboy on Thu Feb 26, 2015 9:02 am; edited 1 time in total
ckielstra



Joined: 18 Mar 2004
Posts: 3680
Location: The Netherlands

View user's profile Send private message

PostPosted: Wed Feb 25, 2015 11:03 pm     Reply with quote

We like to see the short example programs. Why post all your 205 lines?
This takes us a lot of time to figure out what your problem is.

We like short programs like:
Code:
#include <16f877a.h>
#fuses   HS,NOLVP,NOWDT,NOPROTECT
#use     delay(clock=20M)

void main()
{
    unsigned short table[4]={3,6,12,9};
    int i;
    for (i=0;i<600;i++)                         // ? condition always true ?
    {
        output_b(table[i]);
    }
}

Please, next time make your program small as possible to show your problem. It is polite to us and is also a good way of debugging; in removing all the excess code you often will find the solution yourself.

Besides all the other problems already mentioned: There is a bug in the array:
Code:
unsigned short table[4]={3,6,12,9};
In the CCS compiler a 'short int' == 'int1'. So, can only hold 1 bit (0 or 1). To avoid these type of problems it is best to never use types like int, short or long. Better use int1, int8, int16.

Did I already say your code makes no sense at all?
- You have only 4 values in the array but then you want to output 600 values?
- No comments in the code about what it is supposed to do.
- Function names that say nothing about what the function is supposed to do like s1, s2?
It will be a long night before your homework is finished...
zeyad



Joined: 24 Feb 2015
Posts: 22

View user's profile Send private message

thank you pcm programmer. it works. but the code still didnt
PostPosted: Thu Feb 26, 2015 4:00 am     Reply with quote

PCM programmer wrote:
Quote:
void s2()
{
unsigned short table[4]={3,6,12,9};
int i;
for (i=0;i<600;i++) // ? condition always true ?
{
output_b(table[i]);

}
}

Look in the CCS manual, in the Type Specifiers section. What is an 'int'
equivalent to (int8), and what is the maximum size number that can fit
in an int8 ?
http://www.ccsinfo.com/downloads/ccs_c_manual.pdf


thank you pcm programmer. it works. but the code still don't work
zeyad



Joined: 24 Feb 2015
Posts: 22

View user's profile Send private message

still didn't work
PostPosted: Thu Feb 26, 2015 4:04 am     Reply with quote

ckielstra wrote:
We like to see the short example programs. Why post all your 205 lines?
This takes us a lot of time to figure out what your problem is.

We like short programs like:
Code:
#include <16f877a.h>
#fuses   HS,NOLVP,NOWDT,NOPROTECT
#use     delay(clock=20M)

void main()
{
    unsigned short table[4]={3,6,12,9};
    int i;
    for (i=0;i<600;i++)                         // ? condition always true ?
    {
        output_b(table[i]);
    }
}

Please, next time make your program small as possible to show your problem. It is polite to us and is also a good way of debugging; in removing all the excess code you often will find the solution yourself.

Besides all the other problems already mentioned: There is a bug in the array:
Code:
unsigned short table[4]={3,6,12,9};
In the CCS compiler a 'short int' == 'int1'. So, can only hold 1 bit (0 or 1). To avoid these type of problems it is best to never use types like int, short or long. Better use int1, int8, int16.

Did I already say your code makes no sense at all?
- You have only 4 values in the array but then you want to output 600 values?
- No comments in the code about what it is supposed to do.
- Function names that say nothing about what the function is supposed to do like s1, s2?
It will be a long night before your homework is finished...


void s2()
{
unsigned long table[4]={3,6,12,9};
unsigned long i;
for (i=0;i<600;i++)
{
output_b(table[i]);

}
}

still code is not working
zeyad



Joined: 24 Feb 2015
Posts: 22

View user's profile Send private message

PostPosted: Thu Feb 26, 2015 4:07 am     Reply with quote

asmboy wrote:
function s3() and s4() are very interesting.

I am trying to think of a useful purpose for them as they evaluate to basically
a port pins change change
and a (ultimate ) delay.

and

s1() which handily over runs the index delimit of the array it pesters.

what do you believe is happening when these little code gems execute??

is this a Proteus tail chasing program ?


yes it is a proteus tail chasing program .
oxo



Joined: 13 Nov 2012
Posts: 219
Location: France

View user's profile Send private message

Re: still didn't work
PostPosted: Thu Feb 26, 2015 4:47 am     Reply with quote

zeyad wrote:

Code:
void s2()
{
unsigned long table[4]={3,6,12,9};
unsigned long i;
for (i=0;i<600;i++)
{
output_b(table[i]);

}
}


still code is not working


600 values of index, but table is only 4 items..

Maybe programming is not for you.
ELCouz



Joined: 18 Jul 2007
Posts: 427
Location: Montreal,Quebec

View user's profile Send private message

PostPosted: Thu Feb 26, 2015 4:07 pm     Reply with quote

zeyad wrote:
asmboy wrote:
function s3() and s4() are very interesting.

I am trying to think of a useful purpose for them as they evaluate to basically
a port pins change change
and a (ultimate ) delay.

and

s1() which handily over runs the index delimit of the array it pesters.

what do you believe is happening when these little code gems execute??

is this a Proteus tail chasing program ?


yes it is a proteus tail chasing program .


Proteus topic should be locked up!

They are in no way representative to a real setup!
_________________
Regards,
Laurent

-----------
Here's my first visual theme for the CCS C Compiler. Enjoy!
Mike Walne



Joined: 19 Feb 2004
Posts: 1785
Location: Boston Spa UK

View user's profile Send private message

Re: still didn't work
PostPosted: Thu Feb 26, 2015 5:52 pm     Reply with quote

zeyad wrote:
......
.....

still code is not working
You've been told why it's not working.

Also read the forum guidelines, and search for references to Proteus/ISIS.

Mike
ckielstra



Joined: 18 Mar 2004
Posts: 3680
Location: The Netherlands

View user's profile Send private message

PostPosted: Fri Feb 27, 2015 2:17 pm     Reply with quote

When I tell you it is best to use variable types like 'int8' and 'int16' but you choose to use 'unsigned long' instead, then I feel like you don't respect me. Still, your program isn't working and you want us to help you?

Sorry, here on this forum we are not easy to students. We are not going to do your homework. You will have to put in some effort and up till now you did not enough. Your problem is easy, something for a first programming lesson. Just reading any book on the C language will be enough to fix your program.

You say your program isn't working, but you haven't told us what it is supposed to do. We can't read your mind, so give us as much information as possible. We asked you this before but you didn't answer that question.

From your other thread I get an idea of what you want but instead of guessing I want you to tell us.

I also suggest you read this thread again. One major reason for your program failing has been answered two times. Perhaps you don't understand all answers, but then say so and we can explain better. Just ignoring the answers and then asking the same question again is not polite and makes you look stupid.

ckielstra wrote:
It will be a long night before your homework is finished...
I was wrong. For you it will take a week to finish this problem.
ELCouz



Joined: 18 Jul 2007
Posts: 427
Location: Montreal,Quebec

View user's profile Send private message

PostPosted: Fri Feb 27, 2015 3:10 pm     Reply with quote

Smile Smile Smile
_________________
Regards,
Laurent

-----------
Here's my first visual theme for the CCS C Compiler. Enjoy!


Last edited by ELCouz on Fri Feb 27, 2015 3:20 pm; edited 8 times in total
Ttelmah



Joined: 11 Mar 2010
Posts: 19518

View user's profile Send private message

PostPosted: Fri Feb 27, 2015 3:18 pm     Reply with quote

More constructive than your comment.....

The point is that the core reasons the code fails, have been listed by at least two posters, and ignored, also the problems are 'basic C', which is _not_ what this forum is for.

The original poster needs to get a C textbook, and start with some very basic exercises.
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group