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

📄 move1.c

📁 控制电机运动的C51单片机程序,包括:定量运动,速度设置,状态查询等
💻 C
字号:
#include <reg52.h>
#include <absacc.h>
#include <9534.h>
#include <9534move.h>

static unsigned char out2;


void stop(unsigned char axis)
{
	switch(axis)
	{
	case 1:
		T3_8253_1=0x36;
		T3_8253_1=0x76;
		break;
	case 2:
		T3_8253_1=0xb6;
		T3_8253_2=0x36;
		break;
	case 3:
		T3_8253_2=0x76;
		T3_8253_2=0xb6;
		break;
	}
}	

unsigned int check_pulse(unsigned char axis)
{
	unsigned int a;
	unsigned char b,c;

	switch(axis)
	{
	case 1:
		T3_8253_1=0x40;
		c=T1_8253_1;
		b=T1_8253_1;
		break;
	case 2:
		T3_8253_2=0x00;
		c=T0_8253_2;
		b=T0_8253_2;
		break;
	case 3:
		T3_8253_2=0x80;
		c=T2_8253_2;
		b=T2_8253_2;
		break;
	}
	a=b*256+c;
	return a;
}	

bit check(unsigned char axis)
{
	switch(axis)
	{
	case 1:
		return (CE_IOH&0x20)==0?0:1;
	case 2:
		return (CE_IOH&0x40)==0?0:1;
	case 3:
		return (CE_IOH&0x80)==0?0:1;
	}
}
	
void change_speed(unsigned int speed,unsigned char axis)
{
	unsigned char speedL,speedH;
	speedH=speed/256;
	speedL=speed%256;
	switch(axis)
	{
	case 1:
		T0_8253_1=speedL;
		T0_8253_1=speedH;
		break;
	case 2:
		T2_8253_1=speedL;
		T2_8253_1=speedH;
		break;
	case 3:
		T1_8253_2=speedL;
		T1_8253_2=speedH;
		break;
	}
}
void delay_a()
{
	unsigned int d;
	//for(d=0;d<300;d++);
	for(d=0;d<10;d++);
}
	
void load_speed(bit brl,unsigned int length,unsigned int speed,bit dir,unsigned char axis)//脉冲产生
//void load_speed(unsigned int length,unsigned int speed,bit dir,unsigned char axis)//脉冲产生
{
	unsigned char lengthH,lengthL,speedH,speedL;
//	unsigned int d;

	if(length<1)	
		return;
	else
		length--;
	speedH=speed/256;
	speedL=speed%256;
	lengthH=length/256;
	lengthL=length%256;
	switch(axis)
	{
	case 1:
		if(dir==0)
	        out2&=0xfe;
	    else
	        out2|=0x01;
       	CE_IOH=out2;
		delay_a();
		if(length==0)
		{
			T3_8253_1=0x30;
			delay_a();
			T3_8253_1=0x36;
			break;
		}
		T3_8253_1=0x70;
		if(brl)
		{
			T1_8253_1=lengthL;
			T1_8253_1=lengthH;
		}
		//T3_8253_1=0x36;
		//delay_a();
		T3_8253_1=0x30;
		delay_a();
		T3_8253_1=0x36;
		T0_8253_1=speedL;
		T0_8253_1=speedH;
		break;
	case 2:
		if(dir==0)
	        out2&=0xfd;
	    else
	        out2|=0x02;
       	CE_IOH=out2;
		delay_a();
		if(length==0)
		{
			T3_8253_1=0xb0;
			delay_a();
			T3_8253_1=0xb6;
			break;
		}
		T3_8253_2=0x30;
		if(brl)
		{
			T0_8253_2=lengthL;
			T0_8253_2=lengthH;
		}
		//T3_8253_1=0xb6;
		//delay_a();
		T3_8253_1=0xb0;
		delay_a();
		T3_8253_1=0xb6;
		T2_8253_1=speedL;
		T2_8253_1=speedH;
		break;
	case 3:
		if(dir==0)	   
	        out2&=0xfb;
	    else
	        out2|=0x04;
       	CE_IOH=out2;
		delay_a();
		if(length==0)
		{
			T3_8253_2=0x70;
			delay_a();
			T3_8253_2=0x76;
			break;
		}
		T3_8253_2=0xb0;
		if(brl)
		{
			T2_8253_2=lengthL;
			T2_8253_2=lengthH;
		}
		//T3_8253_2=0x76;
		//delay_a();
		T3_8253_2=0x70;
		delay_a();
		T3_8253_2=0x76;
		T1_8253_2=speedL;
		T1_8253_2=speedH;
		break;
	}
}

⌨️ 快捷键说明

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