标题: 这是用单片机控制二相步进机的程序,求大佬解析。 [打印本页]

作者: 白马银枪梅子酒    时间: 2019-4-15 18:43
标题: 这是用单片机控制二相步进机的程序,求大佬解析。
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit DIR=P1^0;
sbit STP=P1^1;
sbit MS1=P1^2;
sbit MS2=P1^3;
sbit MS3=P1^4;
sbit EN=P1^5;
sbit key1=P0^0;
sbit key2=P0^1;
sbit key3=P0^2;
sbit key4=P0^3;
sbit key5=P0^4;
sbit key6=P0^5;
sbit key7=P0^6;
sbit key8=P0^7;
int i;
void delay(int ms)
{
int i;
for(i=0;i<ms;i++)
{
-nop-();
-nop-();
-nop-();
-nop-();
}
}
void step(int steps)
{
int i;
for(i=0;i<=steps;i++)
{
STP=1;
delay(100)
STP=1;
delay(100)
}
}
void main()
{
MS1=0;
MS2=0;
MS3=0;
EN=0;
for(i=0;i<200;i++)
{
DIR=0;
step(3200)
delay(1000)
DIR1;
step(3200)
delay(1000)
}
}


作者: superIOT    时间: 2019-4-15 21:24
这个不复杂呀,就是个时序而已
作者: 白马银枪梅子酒    时间: 2019-4-16 20:59
这个程序,主函数大概看得懂,知道delay函数,STEP函数是啥,然后不懂sbit位运算之后的东西。属于萌新。
作者: 白马银枪梅子酒    时间: 2019-4-16 21:00
superIOT 发表于 2019-4-15 21:24
这个不复杂呀,就是个时序而已

时序?不懂
作者: 忍者神龟2018    时间: 2019-4-17 11:49
sbit是位定义,例如sbit DIR=P1^0;你可以看成DIR的控制状态就是P1.0口的输入/输出状态,程序里面的DIR是控制电机的转动方向,STEP函数是电机的转动节拍(没弄过两相的步进电机,这是从程序上的个人理解)。位定义这些可以看看百度资料。
作者: 白马银枪梅子酒    时间: 2019-4-20 19:03
忍者神龟2018 发表于 2019-4-17 11:49
sbit是位定义,例如sbit DIR=P1^0;你可以看成DIR的控制状态就是P1.0口的输入/输出状态,程序里面的DIR是控 ...

好的,谢谢。
作者: yaoji123    时间: 2019-4-21 13:19
正转3200步,延时后,反转3200步,延时后,反复200次。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1