📄 test51.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 + -