示例#1
0
main() {
   short output;
   long  count,max_count;

   error_count=0;
   resync();

   do {
      while((input_a() & 3)==sequence[seq_index]) ;
      seq_index=(seq_index+1)&3;
      if ((input_a() & 3)!=sequence[seq_index])
        resync();
      else {
         if(error_count==0)
           output_low(pin_a2);
         else
           --error_count;
         max_count=input_b()>>2;
         count++;
         if(count>max_count) {
           output=!output;
           output_bit(pin_a3,output);
           count=0;
         }
      }
   } while (true);
}
示例#2
0
void consumer(){
	assert(input_a()==1);
	assert(input_a()==2);
	assert(input_a()==3);
	assert(input_a()==4);
	assert(input_a()==5);
	assert(input_a()==6);
	assert(input_a()==7);
	assert(input_a()==8);
	assert(input_a()==9);
	assert(input_a()==10);
	report(1);
}
示例#3
0
void consumer(){
	wait_clocks(1000);
	assert(input_a()==1);
	wait_clocks(1000);
	assert(input_a()==2);
	wait_clocks(1000);
	assert(input_a()==3);
	wait_clocks(1000);
	assert(input_a()==4);
	wait_clocks(1000);
	assert(input_a()==5);
	wait_clocks(1000);
	assert(input_a()==6);
	wait_clocks(1000);
	assert(input_a()==7);
	wait_clocks(1000);
	assert(input_a()==8);
	wait_clocks(1000);
	assert(input_a()==9);
	wait_clocks(1000);
	assert(input_a()==10);
	report(1);
}
示例#4
0
void resync() {
   int value;

   if(error_count==4)
      output_high(pin_a2);
   else
     error_count++;

   value=input_a() & 3;
   if(value==sequence[0])
     seq_index=0;
   else if (value==sequence[1])
     seq_index=1;
   else if (value==sequence[2])
     seq_index=2;
   else if (value==sequence[3])
     seq_index=3;
}