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

📄 weldrobot.c

📁 Welding Robot controller C Embedded Program on micro-controller.
💻 C
字号:

#device  PIC16F877 *=16 ADC=10
#include <16F877.h>
#include <math.h>

#FUSES NOWDT                 	//No Watch Dog Timer
#FUSES HS                    	//High speed Osc (> 4mhz)
#FUSES NOPUT                 	//No Power Up Timer
#FUSES NOPROTECT             	//Code not protected from reading
#FUSES BROWNOUT              	//Reset when brownout detected
#FUSES LVP                   	//Low Voltage Programming on B3(PIC16) or B5(PIC18)
#FUSES NOCPD                 	//No EE protection
#FUSES NOWRT                 	//Program memory not write protected
#FUSES NODEBUG               	//No Debug mode for ICD

#use delay(clock=20000000)
#use rs232(baud=115200,parity=N,xmit=PIN_C6,rcv=PIN_C7)

//--- global definitions ------------------------------------------------------

#define SAMPLING_TIME    10
#define SPOT_TIME        2

#define MENU_MODE        111
#define MENU_SPEED       119
#define MENU_AMP         123
#define MENU_GAP         125
#define MENU_SEG         126

#define MAX_MODE         5
#define MAX_SPEED        30
#define MAX_AMP          100
#define MAX_GAP          999
#define MAX_SEG          999

#define MIN_MODE         1
#define MIN_SPEED        3
#define MIN_AMP          1
#define MIN_GAP          1
#define MIN_SEG          1

#define WELDING          PIN_E0
#define DIRECTION        PIN_D0

//--- global variables declaration --------------------------------------------

// input values
int    inMode        = 1;     // 1: continuous, 2: intermitted, 3: spot
int    inSpeed       = 6;     // mm/s
int16  inAmp       = 10;    // mm
int16  inGap         = 100;   // mm
int16  inSeg         = 100;   // mm
int16  inWeaveSpeed  = 200;   // pwm duty value

// flow control variables
int    menu      = 0;
int1   run       = 0;
int1   useWeaver = 1;

//--- modules import ----------------------------------------------------------

#include <rom.c>
#include <led.c>
#include <key.c>
#include <motor.c>
#include <weaver.c>
#include <process.c>

//--- programme start here -----------------------------------------------------


void main () {

  // initialize

  output_low(WELDING);   // turn off welding machine
  output_low(ENA);       // turn off robot motor


  setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);
  setup_timer_1(t1_external | t1_div_by_1);   // encoder counter
  setup_timer_2(t2_div_by_1,255,1);           // pwm frequency

  setup_ccp1(ccp_pwm);
  set_pwm1_duty(0);

  setup_ccp2(ccp_pwm);
  set_pwm2_duty(0);

  setup_adc_ports(an0_an1_an3);
  setup_adc(adc_clock_internal);

  set_tris_b(0xF1);

  loadParams();   // load saved parameters
  detectWeaver();   // check weaver availability

  enable_interrupts(int_rb);   // keypad interrupt
  enable_interrupts(int_rtcc);
  enable_interrupts(global);

  set_timer0(60);


  while (1) {

  	if (run) {
      // get weave speed
      set_adc_channel(0);
      delay_us(10);
      inWeaveSpeed = read_adc();
      set_adc_channel(1);
      set_pwm2_duty(inWeaveSpeed);

      // start
      set_timer1(0);
      loadParams();   // avoid unsaved parameters

      //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333

      switch (inMode) {
      case 1:
         //set_pwm2_duty(0);
      	runCont();
      	break;
      case 2:
      	runInt();
      	break;
      case 3:
      	runSpot();
      	break;
      case 4:
      	runTrapezoid();
      	break;
      case 5:
      	runSquare();
      	break;
      }
  	}else {
  		menu = input_d();
      menu = menu >> 1;
      switch (menu) {
        case MENU_MODE:
          display(inMode);
          break;
        case MENU_SPEED:
          display(inSpeed);
          break;
        case MENU_AMP:
          display(inAmp);
          break;
        case MENU_GAP:
          display(inGap);
          break;
        case MENU_SEG:
          display(inSeg);
          break;
      }

      delay_ms(50);
  	}

  }
}

⌨️ 快捷键说明

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