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

📄 test51.c

📁 单片机使用stk642-050芯片控制四相电机。
💻 C
字号:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define T 100000    // 10ms定时常量宏定义

sbit M11=P0^0;
sbit M12=P0^1;
sbit M14=P0^2;
sbit M15=P0^3;
sbit EN1=P0^4;
sbit CWB1=P0^5;
sbit RET1=P0^6;
sbit CLK1=P0^7;

sbit M1=P2^0;
sbit M2=P2^1;
sbit M4=P2^2;
sbit M5=P2^3;
sbit EN=P2^4;
sbit CWB=P2^5;
sbit RET=P2^6;
sbit CLK=P2^7;

sbit S01=P1^0;
sbit S02=P1^1;
sbit S03=P1^2;
sbit S04=P1^3;


void main()
{
	TMOD=0x11;
  	EA = 1;
	ET0 = 1;
	ET1 = 1;
	/* 设置为4相激励 */
	M1 = 1;
	M2 = 1;
	M11 = 1;
	M12 = 1;
	/* 设置为环形转向轨迹 */
	M4 = 1;
	M5 = 1;
	M14 = 1;
	M15 = 1;
	EN = 0;							// 切断驱动输出
	EN1 = 0;	
	RET = 0;						// 归位输入无效
	RET1 = 0;
	CWB = 1;						// 初始设置为顺时针方向
	CWB1 = 1;
	while(1)
	{
			if(S01==0)
 		    {
				EN = 1;				// 打开驱动输出
				TH0 = -T/256;   	// 改变T可以改变步进电机转动速度  
  				TL0 = -T%256;
				TR0 = 1;			// 定时器0开始计数
			}
			else
			{
				TR0=0;
				EN=0;
			}
			if(S02==0)
			{
				EN1 = 1;				// 打开驱动输出
				TH1 = -T/256;   	// 改变T可以改变步进电机转动速度  
  				TL1 = -T%256;
				TR1 = 1;			// 定时器0开始计数
			}
			else
			{
				TR1=0;
				EN1=0;
			}
	}
}

void time0() interrupt 1 using 1  
{
	/* 定时10ms,产生20ms周期的时钟,也就是50Hz的时钟 */
	TH0 = -T/256;  
	TL0 = -T%256;
	CLK = ~CLK;
}

void time1() interrupt 3 using 3  
{
	/* 定时10ms,产生20ms周期的时钟,也就是50Hz的时钟 */
	TH1 = -T/256;  
	TL1 = -T%256;
	CLK1 = ~CLK1;
}

⌨️ 快捷键说明

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