谁能帮我翻译一下啊,最好每一句,跪求大神啊
发布网友
发布时间:2024-03-13 16:17
我来回答
共1个回答
热心网友
时间:2024-11-22 13:07
是一个用2个按键控制步进电机正转、反转和快慢的程序,
参数定义:
#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 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
{ int t;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(t>=200)
{
t=0;
flag=~flag;
}
t++;
}