本帖最后由 看起来很无聊 于 2016-7-17 11:29 编辑
这是我自己写的一个程序,刚开始步进电机是停止的,按下按键后步进电机转动,但是再按下按键时,步进电机并不会停止。应该怎么改呢或者有什么思路其他的方法?
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit key1=P3^4; //暂停还有停止
unsigned char code F_Rotation[4]={0x03,0x06,0x0c,0x09};//正转表格
unsigned char code B_Rotation[4]={0x03,0x09,0x0c,0x06};//反转表格
void delay(uchar i)//延时
{
uchar j;
while( i--){
for(j=0;j<250;j++)
{;}
}
}
void main()
{
uchar i,j;
uchar flag=0; //控制步进电机停止还是运转
if(key1==0) {
delay(5);
if(key1==0)
{
flag=~flag;
while(!key1);
}
}
while(flag)
{
j=0;
for(i=0;i<192;i++)
{
P1 = 0x00;
P1 = F_Rotation[j];//这里只有正转是为了测试
j++;
if(j>=4) j=0;
delay(2);
}
delay(200);
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
#define uint unsigned int
#define uchar unsigned char
sbit key1=P3^4; //暂停还有停止
unsigned char code F_Rotation[4]={0x03,0x06,0x0c,0x09};//正转表格
unsigned char code B_Rotation[4]={0x03,0x09,0x0c,0x06};//反转表格
void delay(uchar i)//延时
{
uchar j;
while( i--){
for(j=0;j<250;j++)
{;}
}
}
void main()
{
uchar i,j;
uchar flag=0; //控制步进电机停止还是运转
if(key1==0) {
delay(5);
if(key1==0)
{
flag=~flag;
while(!key1);
}
}
while(flag)
{
j=0;
for(i=0;i<192;i++)
{
P1 = 0x00;
P1 = F_Rotation[j];//这里只有正转是为了测试
j++;
if(j>=4) j=0;
delay(2);
}
delay(200);
}
}
#define uint unsigned int
#define uchar unsigned char
sbit key1=P3^4; //暂停还有停止
unsigned char code F_Rotation[4]={0x03,0x06,0x0c,0x09};//正转表格
unsigned char code B_Rotation[4]={0x03,0x09,0x0c,0x06};//反转表格
void delay(uchar i)//延时
{
uchar j;
while( i--){
for(j=0;j<250;j++)
{;}
}
}
void main()
{
uchar i,j;
uchar flag=0; //控制步进电机停止还是运转
if(key1==0) {
delay(5);
if(key1==0)
{
flag=~flag;
while(!key1);
}
}
while(flag)
{
j=0;
for(i=0;i<192;i++)
{
P1 = 0x00;
P1 = F_Rotation[j];//这里只有正转是为了测试
j++;
if(j>=4) j=0;
delay(2);
}
delay(200);
}
}
#define uint unsigned int
#define uchar unsigned char
sbit key1=P3^4; //暂停还有停止
unsigned char code F_Rotation[4]={0x03,0x06,0x0c,0x09};//正转表格
unsigned char code B_Rotation[4]={0x03,0x09,0x0c,0x06};//反转表格
void delay(uchar i)//延时
{
uchar j;
while( i--){
for(j=0;j<250;j++)
{;}
}
}
void main()
{
uchar i,j;
uchar flag=0; //控制步进电机停止还是运转
if(key1==0) {
delay(5);
if(key1==0)
{
flag=~flag;
while(!key1);
}
}
while(flag)
{
j=0;
for(i=0;i<192;i++)
{
P1 = 0x00;
P1 = F_Rotation[j];//这里只有正转是为了测试
j++;
if(j>=4) j=0;
delay(2);
}
delay(200);
}
}
那个按键控制flag 当按一下是flag反向再通过while(flag)控制步进电机停止还是转动
一周热门 更多>