die erste funktion habe ich mal hinbekommen

nur mich interessiert jetzt wirklich wieso es beim ersten programm läuft und beim zweiten nicht.

mit breakpoints kenne ich mich nicht aus.

Code:
#define eins 500


void softdelay();
void erste();


static unsigned int patt1=0x0001;

void main(void)
{
	DP2= 0xFFFF;

	
	
	while(1)	
	{
		int i=0;

		for(i=0; i<=1000; i++)
		{
		
			 if(eins%i)
				erste();

			softdelay();
		}

	}
}

void erste(void)
{
	 if (patt1<=0x0070)
	 	patt1= patt1<<1;
	else 
		patt1=0x0001;

	P2=patt1;
}


void softdelay()
{
	unsigned long j=0;

	for (j=0; j<500000; j++)
	{};
}
2.tes
Code:
#define eins 500


void softdelay();
void erste();



void main(void)
{
	DP2= 0xFFFF;

	
	
	while(1)	
	{
		int i=0;

		for(i=0; i<=1000; i++)
		{
		
			 if(eins%i)
				erste();

			softdelay();
		}

	}
}

void erste(void)
{
	 if (P2<=0x0070)
	 	P2= P2<<1;
	else 
		P2=0x0001;
}


void softdelay()
{
	unsigned long j=0;

	for (j=0; j<500000; j++)
	{};
}