Пример #1
0
interrupt void c_int11()         	//interrupt service routine
{
   output_sample(AIC_buffer.samples);   	//output data
   AIC_buffer.samples= input_sample(); 	    //input data
   intflag = TRUE;
   return;
}
Пример #2
0
interrupt void c_int11()         //interrupt service routine
{
   short sample_data;

   sample_data = input_sample(); //input data
   output_sample(sample_data);   //output data
   return;
}
Пример #3
0
interrupt void c_int11() //interrupt service routine
{
int i, outval= 0;
short X = 0;
if(stabilizeOutput++ < STABILIZE_LEN) //delay start to Stabilize
{
r[0] = input_sample();
output_sample(0);
return;
}
if(encSeqNum < MAX_DATA_LENGTH) //modulate data sequence
{
outval = (int) sigAmp[encodeSeq[encSeqNum]]*phi_1[encSymbolVal++];
if(encSymbolVal>=N) {encSeqNum++; encSymbolVal=0; }
output_sample(outval);
}
else output_sample(0); //0 if MAX_DATA_LENGTH exceeded
r[rNum++] = (short) input_sample();//input signal
buffer[buflen++] = r[rNum - 1];
if(beginDemod) //demod received signal
{
if(decSeqNum<2 && rNum==N) { //account for delay in signal
decSeqNum ++; rNum = 0; }
if(rNum == N) //synchronize to symbol length
{
rNum = 0;
for(i=0; i<N; i++) //correlate with basis function
X += r[i]*phi_1[i];
decodeSeq[decSeqNum-2] = (X >= 0) ? 1: 0; //do detection
if(++decSeqNum == MAX_DATA_LENGTH+2) //print received sequence
{
for(i=0; i<decSeqNum-2; i++)
printf("Received Value: %d\n", decodeSeq[i]);
exit(0);
}
}
}
else { beginDemod = 1; rNum = 0; }
}