单片机问题:能不能解释一下下面的程序啊,步进电机控制程序,用c语言编的

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code zheng[]={
0xf3,0xf6,0xfc,0xf9};
uchar code fan[]={0xf9,0xfc,0xf6,0xf3};
//uchar t;
bit flag=0;
uint shijian;
uchar temp;
void delay(uint z)
{
uint i,j;
for(i=0;i<z;i++)
for(j=0;j<80;j++);
}
/*void timer_init()
{
TMOD=0X01;//???0,??1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
EA=1;
TR0=1;
} */
void motor_z()
{
uchar i;
for(i=0;i<4;i++)
{
P1=zheng[i];
delay(shijian);
}
}
void motor_f()
{
uchar i;
for(i=0;i<4;i++)
{
P1=fan[i];
delay(shijian);
}
}
void keyscan()
{
P3=0XFF;
delay(1);
if(P3!=0xff)
{ temp=P3;
switch(temp)
{
case 0xfe:
{flag=~flag;break; }
case 0xfd:
{if(shijian<=60)
{shijian=50;}
else
{shijian=shijian-100;}
break; }
case 0xfb:
{if(shijian>=600)
{shijian=650;}
else
{shijian=shijian+100;}
break; }
default : break;
}
while(temp==P3);
}
}
void main()
{
shijian=350;
//timer_init();
while(1)
{
keyscan();
if(flag==0)
{
motor_z(); }
else
{
motor_f();
}
}
}
/*void timer() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(t>=200)
{ t=0;
flag=~flag;
}
t++;
} */

    使用定时器,每10s,电机转动方向改变

    检测扫描键盘,实现变向,加速和减速

追问

主要是这一块看不太懂,可不可解释一下啊

追答

P3^0接反向按键,P3^1接减速按键,P3^2接加速按键
读入P3端口的值,比较看是哪个按键按下,然后改变flag(方向)或shijian(速度)

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网