Esempio n. 1
0
void main(void) {
  /* put your own code here */
  	EnableInterrupts;
    
  	DDR1AD0 =	DDRT	= 0xFF;	
	PT1AD0	= 	PTT		= 0x00;
	
	set_baud_rate(9600);
		 
	send();	
	fct_set(8,2,58);
	disp_on(1,1,1);
	entry_mode(1,0);	
	clear_disp();

	char  val,buf[16] ;
	
#define go 5000
	while(1)
	{
		memset(buf,0,16);
		for(int v=0,i =0; i<16 ; i++)
		{   v=0;
			while(	chk_rx() >= 0	? 0:
					i==0 			? 1:
					v++ < go		? 1:
					0);
			if (v >= go){	break;	}
			buf[i]=fetch_char();				
		}
		return_home();
		clear_disp();
		prt_str(buf);	
	}
	 
  for(;;) {
    _FEED_COP(); /* feeds the dog */
  } /* loop forever */
  /* please make sure that you never leave main */
}
Esempio n. 2
0
// -----------------------------------------------------------------
void staple_mcrg(int dir1, int block) {
  register int i, dir2;
  register site *s;
  int j, bl, start, disp[4];    // Displacement vector for general gather
  msg_tag *tag0, *tag1, *tag2, *tag3, *tag4, *tag5, *tag6;
  matrix tmat1, tmat2;

  bl = 1;
  for (j = 1; j < block; j++)
    bl *= 2;                    // Block size

  start = 1;                    // Indicates staple sum not initialized
  // Loop over other directions
  for (dir2 = XUP; dir2 <= TUP; dir2++) {
    if (dir2 != dir1) {
      // Get link[dir2] from direction 2 * dir1
      clear_disp(disp);
      disp[dir1] = 2 * bl;
      tag0 = start_general_gather_site(F_OFFSET(link[dir2]),
                                       sizeof(matrix), disp,
                                       EVENANDODD, gen_pt[0]);
      wait_general_gather(tag0);

      // Get link[dir1] from direction dir2
      clear_disp(disp);
      disp[dir2] = bl;
      tag1 = start_general_gather_site(F_OFFSET(link[dir1]),
                                       sizeof(matrix), disp,
                                       EVENANDODD, gen_pt[1]);
      wait_general_gather(tag1);

      // Get link[dir1] from direction dir1 + dir2
      clear_disp(disp);
      disp[dir1] = bl;
      disp[dir2] = bl;
      tag2 = start_general_gather_site(F_OFFSET(link[dir1]),
                                       sizeof(matrix), disp,
                                       EVENANDODD, gen_pt[2]);
      wait_general_gather(tag2);

      // Get link[dir2] from direction -dir2
      clear_disp(disp);
      disp[dir2] = -bl;
      tag3 = start_general_gather_site(F_OFFSET(link[dir2]),
                                       sizeof(matrix), disp,
                                       EVENANDODD, gen_pt[3]);
      wait_general_gather(tag3);

      // Get link[dir1] from direction -dir2
      clear_disp(disp);
      disp[dir2] = -bl;
      tag4 = start_general_gather_site(F_OFFSET(link[dir1]),
                                       sizeof(matrix), disp,
                                       EVENANDODD, gen_pt[4]);
      wait_general_gather(tag4);

      // Get link[dir1] from direction dir1 - dir2
      clear_disp(disp);
      disp[dir1] = bl;
      disp[dir2]= -bl;
      tag5 = start_general_gather_site(F_OFFSET(link[dir1]),
                                       sizeof(matrix), disp,
                                       EVENANDODD, gen_pt[5]);
      wait_general_gather(tag5);

      // Get link[dir2] from direction 2 * dir1 - dir2
      clear_disp(disp);
      disp[dir1] = 2 * bl;
      disp[dir2] = -bl;

      tag6 = start_general_gather_site(F_OFFSET(link[dir2]),
                                       sizeof(matrix), disp,
                                       EVENANDODD, gen_pt[6]);
      wait_general_gather(tag6);

      // Upper staple
      if (start) {          // The first contribution to the staple
        FORALLSITES(i, s) {
          mult_nn(&(s->link[dir2]), (matrix *)(gen_pt[1][i]), &tmat1);
          mult_nn(&tmat1, (matrix *)(gen_pt[2][i]), &tmat2);
          mult_na(&tmat2, (matrix *)(gen_pt[0][i]), &(s->tempmat2));
        }
        start = 0;
      }
      else {