I am very new at programming and I am trying to read a square pulse train coming into one of my digital GPIO pins of my PIC12 microcontroller. I have to "sample" and then store the incoming signal so that I have a bunch of 1's and 0's saved (possibly in an array). I have to save the amount of 1's and 0's I get(which are sampled in packets of 8, 4 times over) and calculate the number of 1's or 0's into an average. Anyone know how I can accomplish this in C code?

Here is the code I have so far:

Code:
#define one_or_zero GP4       //My I/O variable assignment for this                                           //pin
void getONEorZERO(void)	//This function gets 4 samples(A                                                 //through D)
					//, all 8 bits long from the General                                               // Purpose input.
{
	char A=1;	//Flag for SampleA0,A1 performed first.
	char B=0;	//Flag for SampleB0,B1 performed second.
	char C=0;	//Flag for SampleC0,C1 performed third.
	char D=0;	//Flag for SampleD0,D1 performed last.
	if(A=1)
	{
		for(i=0;i<8;i++)
		{
			if(one_or_zero==0)
			{
				sampleA_result|=(sampleA[i])<<(7-i);	
				//here I am hoping to get the bit, 
				//then place it into a specific location of the                                 //array.
				//This entire function can definitely be 
				//simplified by using pointers, but I don't                                       //really know how.
			}											
			if(one_or_zero==1)
			{
				sampleA_result|=(sampleA[i])<<(7-i);
			}
		}
		A=0;
		B=1;
	}
	if(B=1)
	{
		for(i=0;i<8;i++)
		{
			if(one_or_zero==0)
			{
				sampleB_result|=(sampleB[i])<<(7-i);
			}
			if(one_or_zero==1)
			{
				sampleB_result|=(sampleB[i])<<(7-i);
			}
		}
		B=0;
		C=1;
	}
	if(C=1)
	{
		for(i=0;i<8;i++)
		{
			if(one_or_zero==0)
			{
				sampleC_result|=(sampleC[i])<<(7-i);
			}
			if(one_or_zero==1)
			{
				sampleC_result|=(sampleC[i])<<(7-i);
			}
		}
		C=0;
		D=1;
	}
	if(D=1)
	{
		for(i=0;i<8;i++)
		{
			if(one_or_zero==0)
			{
				sampleD_result|=(sampleD[i])<<(7-i);
			}
			if(one_or_zero==1)
			{
				sampleD_result|=(sampleD[i])<<(7-i);
			}
		}
		D=0;
		A=1;
	}
}