1.想设置p3.2、p3.3、p3.4三个开关分别控制停止、正转、反转。2.并且电机只能在0至正转30范围内转,不能超出范围转。3.转速180转每分钟。4。在原点处有一个行程开关p1.6,用于电机反转回归原点用。5.用共阴极接法。******即按p3.3时电机一直正转直到30圈或按p3.2停,按p3.4时一直反转至触碰行程开关为止或按停止按钮。另外辛苦帮忙把注释写的更详细一点点,您知道自学很痛苦的吧~~自学了好久依旧不能自己搞定,求大侠们帮帮忙啦!!谢谢
电机用的是57两相四线混合式步进电机。
一个脉冲1.8℃
ä¸ä¸ªèå²èµ°1.8âãè¿éè¦ä»ä¹ï¼
å¤§ä¾ ä¸å®å¸®å¸®å¿
#include
#define uchar unsigned char
#define uint unisgned int
uint s;
uchar key;
sbit keystop=P3^2;
sbit keypos=P3^3;
sbit keyneg=P3^4;
sbit limit=P1^6;
sbit pluse=P1^0;
sbit dir=P1^1;
void t0isr() interrupt 1
{
TH0=(65536-3333)/256;
TL0=(65536-3333)%256;
pluse=~pluse;
if(dir==0)s++;
if(s>=6000){s=0;TR0=0;}
if(limit==0 && dir==1){s=0;TR0=0;}
}
main()
{
TMOD=0x01;
TH0=(65536-3333)/256;
TL0=(65536-3333)%256;
ET0=1;
EA=1;
s=0;
key=0;
while(1)
{
keyscan();
switch(key)
{
case 1:TR0=0;break;
case 2:TR0=1;dir=0;break;
case 3:TR0=1;dir=1;break;
default:break;
}
}
}
æä¸ä¸ªé误ï¼æä¹æ¹å¢ï¼
å¦å°åäºä¸ä¸ªå½æ°
keyscan()
{
if(keystop==0)
{
while(keystop==0);
key=1;
}
if(keypos==0)
{
while(keypos==0);
key=2;
}
if(keyneg==0)
{
while(keyneg==0);
key=3;
}
}
è¾è¦äºè¾è¦äºï¼è¿æ两个é误ï¼æå®å¨è§£å³ä¸äºï¼è¿ä¸¤ä¸ªé误é½æ¾ç¤ºçæ¯ä¸»å½æ°{ }çé误ï¼æä¹æ¹ï¼
#include
#define uchar unsigned char
#define uint unsigned int
uint s;
uchar key;
sbit keystop=P3^2;
sbit keypos=P3^3;
sbit keyneg=P3^4;
sbit limit=P1^6;
sbit pluse=P1^0;
sbit dir=P1^1;
void t0isr() interrupt 1
{
TH0=(65536-3333)/256;
TL0=(65536-3333)%256;
pluse=~pluse;
if(dir==0)s++;
if(s>=6000){s=0;TR0=0;}
if(limit==0 && dir==1){s=0;TR0=0;}
}
void keyscan()
{
if(keystop==0)
{
while(keystop==0);
key=1;
}
if(keypos==0)
{
while(keypos==0);
key=2;
}
if(keyneg==0)
{
while(keyneg==0);
key=3;
}
}
main()
{
TMOD=0x01;
TH0=(65536-3333)/256;
TL0=(65536-3333)%256;
ET0=1;
EA=1;
s=0;
key=0;
while(1)
{
keyscan();
switch(key)
{
case 1:TR0=0;break;
case 2:TR0=1;dir=0;break;
case 3:TR0=1;dir=1;break;
default:break;
}
}
}