|
功能要求:當(dāng)安鍵KEY1安下且長(zhǎng)安時(shí)步進(jìn)電機(jī)正轉(zhuǎn)70度停止,當(dāng)松開(kāi)時(shí)電機(jī)反轉(zhuǎn)原位置。
小白寫(xiě)了個(gè)程序控制不了,安下鍵只能正轉(zhuǎn)70度就停了,松開(kāi)安鍵不能反轉(zhuǎn),沒(méi)反應(yīng)。問(wèn)題在哪里,請(qǐng)大俠指點(diǎn),非常感謝!
#include <reg51.h>
#include <absacc.h>
#define uchar unsigned char
#define uint unsigned int
sbit P10=P1^0;
#define KEY_Status P10
#define UP 20
#define DOWN 30
#define STOP 40
void delay()//延時(shí)程序
{
unsigned i,j,k;
for(i=0;i<0x02;i++)
for(j=0;j<0x02;j++)
for(k=0;k<0xff;k++);
}
void SetpP() //步進(jìn)電機(jī)正轉(zhuǎn)70度停止
{
uint j;
j=155; //正轉(zhuǎn)70度
while(j--)
{
P2=0X08;//控制正轉(zhuǎn)
delay();
delay();
P2=0X04;
delay();
delay();
P2=0X02;
delay();
delay();
P2=0X01;
delay();
delay();
}
while(1) ;
}
void SetpN()
{
uint j;
j=155; //反轉(zhuǎn)70度
while(j--)
{
P2=0X01;//控制反轉(zhuǎn) //0011
delay();
delay();
P2=0X02;//0110
delay();
delay();
P2=0X04;//1100
delay();
delay();
P2=0X08;//1001
delay();
delay();
}
while(1) ;
}
void Stop()
{
P2=0X00;//電機(jī)停止
delay();
delay();
}
main()
{
unsigned char i;
i=0; //將i初始化為0
P2=0x00;
while(1)
{
if(KEY_Status==0) //如果鍵按下
{
delay(); //延時(shí)一段時(shí)間 按鍵消抖
delay();
if(KEY_Status==0) //如果再次檢測(cè)到S1鍵按下
i++; //i自增1
if(i==3) //如果i=4,重新將其置為1
i=1;
}
switch(i)
{
case 1:KEY_Status==0;SetpP();break; //步進(jìn)電機(jī)正轉(zhuǎn)70度停止
case 2:KEY_Status==1;SetpN();break; //步進(jìn)電機(jī)反轉(zhuǎn)70度回原位
// case 3:P2=0x00; Stop();break; //步進(jìn)電機(jī)停止
default:P2=0x00;
}
}
}
|
-
51.png
(38.4 KB, 下載次數(shù): 106)
下載附件
2020-9-10 16:38 上傳
|