找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1066|回复: 6
收起左侧

这是用单片机控制二相步进机的程序,求大佬解析。

[复制链接]
ID:511977 发表于 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)
}
}

回复

使用道具 举报

ID:372939 发表于 2019-4-15 21:24 | 显示全部楼层
这个不复杂呀,就是个时序而已
回复

使用道具 举报

ID:511977 发表于 2019-4-16 20:59 | 显示全部楼层
这个程序,主函数大概看得懂,知道delay函数,STEP函数是啥,然后不懂sbit位运算之后的东西。属于萌新。
回复

使用道具 举报

ID:511977 发表于 2019-4-16 21:00 | 显示全部楼层
superIOT 发表于 2019-4-15 21:24
这个不复杂呀,就是个时序而已

时序?不懂
回复

使用道具 举报

ID:286252 发表于 2019-4-17 11:49 | 显示全部楼层
sbit是位定义,例如sbit DIR=P1^0;你可以看成DIR的控制状态就是P1.0口的输入/输出状态,程序里面的DIR是控制电机的转动方向,STEP函数是电机的转动节拍(没弄过两相的步进电机,这是从程序上的个人理解)。位定义这些可以看看百度资料。
回复

使用道具 举报

ID:511977 发表于 2019-4-20 19:03 | 显示全部楼层
忍者神龟2018 发表于 2019-4-17 11:49
sbit是位定义,例如sbit DIR=P1^0;你可以看成DIR的控制状态就是P1.0口的输入/输出状态,程序里面的DIR是控 ...

好的,谢谢。
回复

使用道具 举报

ID:432823 发表于 2019-4-21 13:19 | 显示全部楼层
正转3200步,延时后,反转3200步,延时后,反复200次。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表