📄 shiyan.c
字号:
#include<AT89x51.H>
sbit P10=P1^0;
//接在电动机中的一个口
sbit P11=P1^1;
//接在电动机中的另一个口
sbit P32=P3^2;
//使电动机快速转动的按钮
sbit P33=P3^3;
//使电动机正转的按钮
sbit P34=P3^4;
//使电动机反转的按钮
sbit P35=P3^5;
//使电动机慢速转动的按钮
/*************延时函数******************/
void delay(unsigned char i)//延时1ms的子程序
{
unsigned char j;
for(;i>0;i--)
for(j=0;j<248;j++);
}
/*********主程序**************/
main()
{
while(1)
//主循环,使单片机一直检测各个端口
{
//如果没有一个键按下时,则电机停止不动
if(P32==1&P33==1&P34==1&P35==1)
//如果电机的两个端口电平一样时,电机不转
{P10=1;P11=1;}
//如果按下快速转动的键时,先软件消抖
if(P32==0)
{
delay(2);
if(P32==0)
{
while(P35==1) //建立在P35没有按下的基础上,如果按下P34口时
//,然后再建立在没有按下P33和P35时,使电机转动,
//否则跳出循环
{
if(P34==0)
{
delay(1);//按下P34口是,有个软件延时
//消除抖动
if(P34==0)
{
while(P33==1&P35==1)
{P10=1;P11=0;} //使电机向一个方向转动
}
}
if(P33==0)//按下P33口是,有个软件延时
{ //消除抖动
delay(1);
if(P33==0)
{
while(P34==1&P35==1)
{P10=0;P11=1;} //使电机向另一个方向转动
}
}
}
}
}
//如果按下慢速转动的键时,先软件消抖
if(P35==0)
{
delay(2);
if(P35==0)
{
while(P32==1)
{
//建立在P32没有按下的基础上,如果按下P33口时
//,然后再建立在没有按下P34和P32时,使电机转动,
if(P33==0)
{ //否则跳出循环
delay(1);
if(P33==0)
{
P10=0;
while(P34==1&P32==1)
{
P11=1;
P11=0;
}
}
}
if(P34==0)//按下P34口是,有个软件延时
delay(1); //消除抖动
if(P34==0)
{ P11=0;
while(P33==1&P32==1)
{
P10=1;
P10=0;
}
}
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -