⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainloop.c

📁 这是一个89c52的USB固件系统的源码 使用keilc 生成hex文件 可直接烧录
💻 C
📖 第 1 页 / 共 3 页
字号:
		  if (anti_work_flag == 0){
	        cur_x ++;
		    x_z();
		  }
		  else{
		    cur_x --;
			x_f();
		  }
		}
	  }
	  if ((cc == 2)||(cc == 7)){
	    if (f1 > fabs((cur_x*1.0-bx)*(cur_x*1.0-bx)+(cur_y*1.0-1-by)*(cur_y*1.0-1-by)-r)){
	      if (XBYTE[xy(cur_order)] == 1){
		    if (anti_work_flag == 0)
  		      cur_off ++;
		    else
  		      cur_off --;
 		  }
		  if (anti_work_flag == 0){
	        cur_y --;
		    y_f();
		  }
		  else{
		    cur_y ++;
			y_z();
		  }
		}
	  }
	  if ((cc == 3)||(cc == 6)){
	    if (f1 > fabs((cur_x*1.0-bx)*(cur_x*1.0-bx)+(cur_y*1.0+1-by)*(cur_y*1.0+1-by)-r)){
	      if (XBYTE[xy(cur_order)] == 1){
		    if (anti_work_flag == 0)
  		      cur_off ++;
		    else
  		      cur_off --;
 		  }
		  if (anti_work_flag == 0){
	        cur_y ++;
		    y_z();
		  }
		  else{
		    cur_y --;
			y_f();
		  }
		}
	  }
	  if ((cc == 5)||(cc == 8)){
	    if (f1 > fabs((cur_x*1.0-1-bx)*(cur_x*1.0-1-bx)+(cur_y*1.0-by)*(cur_y*1.0-by)-r)){
	      if (XBYTE[xy(cur_order)] == 0){
		    if (anti_work_flag == 0)
  		      cur_off ++;
		    else
  		      cur_off --;
 		  }
	 	  if (anti_work_flag == 0){
	        cur_x --;
		    x_f();
	      }
		  else{
		    cur_x ++;
			x_z();
		  }
		}
	  }
	}
	if (anti_work_flag == 0){
	  ll = (long)(*((long *)(&(XBYTE[counterlen(cur_order)]))));
	  if (cur_off >= ll){
        XBYTE[xytype(cur_order)] = 0;
	    cur_order1 = (cur_order+1)%MAX_ORDER;
	    cur_order = (cur_order+1)%MAX_ORDER;
	    cur_off = 0;
		if (XBYTE[xytype(cur_order)] == 0){
		  work_status = 2;
	      e_order = 0;
	      cur_order1 = 0;
		  cur_order = 0;
		  send_req_order(0);
	      close_gao_pin();
		}
	  }
    }
	else{
	  if (cur_off == 0){
		anti_work_flag = 0;
	  }
	}
  }
  else{
  }

  if (anti_work_flag == 1){
    if (loop_off - cur_off >= 200){
	  cur_jing = old_cur_jing;
	  anti_work_flag = 0;
	}
  }
  RAMCS = 1;
  MCU_D12CS = 0;
}

void send_req_order(char order)
{
  cc = 0x85;
  RAMCS = 1;
  MCU_D12CS = 0;
  D12_WriteEndpoint(3, 1, &cc);  
}

open_gao_pin()
{
  MCU_D12CS = 1;
  RAMCS = 0;
  if (xiangxlx == 0)
    ch = get_x_y_port_byte(cur_x_step_order%10);
  else
    ch = get_x_y_port_byte(cur_x_step_order%6);
  ch = 255 - ch;
  ch = ch * 8;
  ch = ch & (0xff-7);
  out_8255_1_c(1);  // gaopin
  out_8255_1_a();
  ch += 4;
  out_8255_1_a();
  ch -= 4;
  out_8255_1_a();

  RAMCS = 1;
  MCU_D12CS = 0;
}

close_gao_pin()
{
  MCU_D12CS = 1;
  RAMCS = 0;
  if (xiangxlx == 0)
    ch = get_x_y_port_byte(cur_x_step_order%10);
  else
    ch = get_x_y_port_byte(cur_x_step_order%6);
  ch = 255 - ch;
  ch = ch * 8;
  ch = ch & (0xff-7);
  out_8255_1_c(0);  // gaopin
  out_8255_1_a();
  ch += 4;
  out_8255_1_a();
  ch -= 4;
  out_8255_1_a();
  RAMCS = 1;
  MCU_D12CS = 0;
}

open_mac()
{
  MCU_D12CS = 1;
  RAMCS = 0;
  if (xiangxlx == 0)
    ch = get_x_y_port_byte(cur_y_step_order%10);
  else
    ch = get_x_y_port_byte(cur_y_step_order%6);
  ch = 255 - ch;
  ch = ch * 8;
  ch = ch & (0xff-7);
  ch ++;
  out_8255_1_c(0);  // tingji
  out_8255_1_a();
  ch += 4;
  out_8255_1_a();
  ch -= 4;
  out_8255_1_a();

  RAMCS = 1;
  MCU_D12CS = 0;
}

close_mac()
{
  MCU_D12CS = 1;
  RAMCS = 0;
  if (xiangxlx == 0)
    ch = get_x_y_port_byte(cur_y_step_order%10);
  else
    ch = get_x_y_port_byte(cur_y_step_order%6);
  ch = 255 - ch;
  ch = ch * 8;
  ch = ch & (0xff-7);
  ch ++;
  out_8255_1_c(1);  // tingji
  out_8255_1_a();
  ch += 4;
  out_8255_1_a();
  ch -= 4;
  out_8255_1_a();

  RAMCS = 1;
  MCU_D12CS = 0;
}

open_mot()
{
  MCU_D12CS = 1;
  RAMCS = 0;
//X
  if (xiangxlx == 0)
    ch = get_x_y_port_byte(cur_x_step_order%10);
  else
    ch = get_x_y_port_byte(cur_x_step_order%6);
  ch = 255 - ch;
  ch = ch * 8;
  ch = ch & (0xff-7);
  if (gaopzt == GAOPIN_KAI)
    out_8255_1_c(1);  // gaopin
  else
    out_8255_1_c(0);  // gaopin
  out_8255_1_a();
  ch += 4;
  out_8255_1_a();
  ch -= 4;
  out_8255_1_a();
//Y
  if (xiangxlx == 0)
    ch = get_x_y_port_byte(cur_y_step_order%10);
  else
    ch = get_x_y_port_byte(cur_y_step_order%6);
  ch = 255 - ch;
  ch = ch * 8;
  ch = ch & (0xff-7);
  ch ++;
  out_8255_1_c(0);  // tingji
  out_8255_1_a();
  ch += 4;
  out_8255_1_a();
  ch -= 4;
  out_8255_1_a();
//V
  ch = get_u_v_port_byte(cur_v_step_order);
  ch = 255 - ch;
  ch = ch * 8;
  ch = ch & (0xff-7);
  ch += 3;
  out_8255_1_c(1);  // dianji
  out_8255_1_a();
  ch += 4;
  out_8255_1_a();
  ch -= 4;
  out_8255_1_a();

//U
  ch = get_u_v_port_byte(cur_u_step_order);
  ch = 255 - ch;
  ch = ch * 8;
  ch = ch & (0xff-7);
  ch += 2;
  out_8255_1_c(0);  // kaiji
  out_8255_1_a();
  ch += 4;
  out_8255_1_a();
  ch -= 4;
  out_8255_1_a();

  RAMCS = 1;
  MCU_D12CS = 0;
}

close_mot()
{
  MCU_D12CS = 1;
  RAMCS = 0;
  ch = get_u_v_port_byte(cur_v_step_order);
  ch = 255 - ch;
  ch = ch * 8;
  ch = ch & (0xff-7);
  ch += 3;
  out_8255_1_c(0);  // dianji
  out_8255_1_a();
  ch += 4;
  out_8255_1_a();
  ch -= 4;
  out_8255_1_a();

  RAMCS = 1;
  MCU_D12CS = 0;
}

unsigned char get_x_y_port_byte(char cc)
{
  if (xiangxlx == 0){
    if (cc == 0){
      return 0x1+0x2;
    }
    else if (cc == 1){
      return 0x1+0x2+0x4;
    }
    else if (cc == 2){
      return 0x2+0x4;
    }
    else if (cc == 3){
      return 0x2+0x4+0x8;
    }
    else if (cc == 4){
      return 0x4+0x8;
    }
    else if (cc == 5){
      return 0x4+0x8+0x10;
    }
    else if (cc == 6){
      return 0x8+0x10;
    }
    else if (cc == 7){
      return 0x8+0x10+0x1;
    }
    else if (cc == 8){
      return 0x10+0x1;
    }
    else if (cc == 9){
      return 0x10+0x1+0x2;
    }
  }
  else{
    if (cc == 0){
      return 0x1;
    }
    else if (cc == 1){
      return 0x1+0x2;
    }
    else if (cc == 2){
      return 0x2;
    }
    else if (cc == 3){
      return 0x2+0x4;
    }
    else if (cc == 4){
      return 0x4;
    }
    else if (cc == 5){
      return 0x4+0x1;
    }
  }
}

unsigned char get_u_v_port_byte(char cc)
{
  if (cc == 0){
    return 0x1;
  }
  else if (cc == 1){
    return 0x1+0x2;
  }
  else if (cc == 2){
    return 0x2;
  }
  else if (cc == 3){
    return 0x2+0x4;
  }
  else if (cc == 4){
    return 0x4;
  }
  else if (cc == 5){
    return 0x4+0x1;
  }
}

out_8255_1_a()
{
  DISABLE;
  RAMCS = 1;
  PCS = 0;
  A0 = 0;
  A1 = 0;
  P2 = ch;
  READ = 1;
  WRITE = 1;
  WRITE = 0;
  WRITE = 1;
  PCS = 1;
  RAMCS = 0;
  ENABLE;
}

out_8255_1_c(char cc)
{
  DISABLE;
  RAMCS = 1;
  PCS = 0;
  A0 = 0;
  A1 = 1;
  P2 = cc;
  READ = 1;
  WRITE = 1;
  WRITE = 0;
  WRITE = 1;
  PCS = 1;
  A0 = 0;
  A1 = 0;
  RAMCS = 0;
  ENABLE;
}

x_z()
{
  if (diandbz == 1){
    if (diand_axis == 3){
      u_z();
	  return;
	}
  }
  cur_x_step_order ++;
  if (xiangxlx == 0)
    cur_x_step_order %= 10;
  else if (xiangxlx == 1)
    cur_x_step_order %= 6;
  else
    return;
  ch = get_x_y_port_byte(cur_x_step_order);
  ch = 255 - ch;
  ch = ch * 8;
  ch = ch & 0xf8;
  if (gaopzt == GAOPIN_KAI)
    out_8255_1_c(1);  // gaopin
  else
    out_8255_1_c(0);  // gaopin
  out_8255_1_a();
  ch += 4;
  out_8255_1_a();
  ch -= 4;
  out_8255_1_a();
}

x_f()
{
  if (diandbz == 1){
    if (diand_axis == -3){
      u_f();
	  return;
	}
  }
  if (cur_x_step_order == 0){
    if (xiangxlx == 0)
      cur_x_step_order = 9;
	else if (xiangxlx == 1)
      cur_x_step_order = 5;
	else
	  return;
  }
  else
    cur_x_step_order --;
  if (xiangxlx == 0)
    cur_x_step_order %= 10;
  else if (xiangxlx == 1)
    cur_x_step_order %= 6;
  else
    return;
  ch = get_x_y_port_byte(cur_x_step_order);
  ch = 255 - ch;
  ch = ch * 8;
  ch = ch & 0xf8;
  if (gaopzt == GAOPIN_KAI)
    out_8255_1_c(1);  // gaopin
  else
    out_8255_1_c(0);  // gaopin
  out_8255_1_a();
  ch += 4;
  out_8255_1_a();
  ch -= 4;
  out_8255_1_a();
}

y_z()
{
  if (diandbz == 1){
    if (diand_axis == 4){
      v_z();
	  return;
	}
  }
  cur_y_step_order ++;
  if (xiangxlx == 0)
    cur_y_step_order %= 10;
  else if (xiangxlx == 1)
    cur_y_step_order %= 6;
  else
    return;
  ch = get_x_y_port_byte(cur_y_step_order);
  ch = 255 - ch;
  ch = ch * 8;
  ch = ch & 0xf8;
  ch ++;
  out_8255_1_c(0);  // tingji
  out_8255_1_a();
  ch += 4;
  out_8255_1_a();
  ch -= 4;
  out_8255_1_a();
}

y_f()
{
  if (diandbz == 1){
    if (diand_axis == -4){
      v_z();
	  return;
	}
  }

  if (cur_y_step_order == 0){
    if (xiangxlx == 0){
      cur_y_step_order = 9;
	}
	else if (xiangxlx == 1){
      cur_y_step_order = 5;
	}
	else
	  return;
  }
  else
    cur_y_step_order --;
  if (xiangxlx == 0)
    cur_y_step_order %= 10;
  else if (xiangxlx == 1)
    cur_y_step_order %= 6;
  else
    return;
  ch = get_x_y_port_byte(cur_y_step_order);
  ch = 255 - ch;
  ch = ch * 8;
  ch = ch & 0xf8;
  ch ++;
  out_8255_1_c(0);  // tingji
  out_8255_1_a();
  ch += 4;
  out_8255_1_a();
  ch -= 4;
  out_8255_1_a();
}

u_z()
{
  cur_u ++;
}

u_f()
{
  cur_u --;
}

v_z()
{
  cur_v ++;
}

v_f()
{
  cur_v --;
}

init_j8255()
{
  DISABLE;
  JCS = 0;
  PCS = 1;
  A0 = 1;
  A1 = 1;
  P2 = 0x80;
  READ = 1;
  WRITE = 1;
  WRITE = 0;
  WRITE = 1;
  JCS = 1;
  ENABLE;
}

init_p8255()
{
  DISABLE;
  PCS = 0;
  JCS = 1;
  A0 = 1;
  A1 = 1;
  P2 = 0x82;
  READ = 1;
  WRITE = 1;
  WRITE = 0;
  WRITE = 1;
  PCS = 1;
  ENABLE;
}

send_loop_msg()
{
  cc = 0x90;
  RAMCS = 1;
  MCU_D12CS = 0;
  D12_WriteEndpoint(3, 1, &cc);  
}

delay1()
{
  for (i=0;i<1000;i++);
}

void send_cur_pos(char axis,char order)
{
  DISABLE;
  if (order == 0){
    cc = 0x80+axis;
    RAMCS = 1;
    MCU_D12CS = 0;
    ENABLE;
    D12_WriteEndpoint(3, 1, &cc);
  }
  else{
    MCU_D12CS = 1;
    RAMCS = 0;
	if (order < 5){
      cc = XBYTE[2400+axis*5+order-1];
	  cc &= 0x7f;
	}
	else{
	  cc = 0;
      if (XBYTE[2400+axis*5] > 127)
	    cc |= 8;
      if (XBYTE[2400+axis*5+1] > 127)
	    cc |= 4;
      if (XBYTE[2400+axis*5+2] > 127)
	    cc |= 2;
      if (XBYTE[2400+axis*5+3] > 127)
	    cc |= 1;
	}
    RAMCS = 1;
    MCU_D12CS = 0;
    ENABLE;
    D12_WriteEndpoint(3, 1, &cc);    
  }
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -