#include<reg52.h>
#include<intrins.h> //因为要用到左右移函数,所以加入这个头文件
#define uchar unsigned char
#define uint unsigned int
typedef unsigned int u16; //对数据类型进行声明定义
typedef unsigned char u8;
unsigned char Dat;
unsigned char i,j;
void flag1();
void flag2();
sbit moto1=P1^0; //定义电机1管脚
sbit moto21=P1^1; //定义电机2管脚
sbit moto22=P1^2;
sbit led1=P2^0; //定义P2.0口是led1
sbit led2=P2^6; //定义P2.1口是led2
sbit led3=P2^4;
void main()
{
moto1=0;
moto21=0;
moto22=0;
led3=0;
SCON=0x50;
PCON=0x00;
TMOD=0x20;
EA=1;
ES=1;
TL1=0xfd; //波特率9600
TH1=0xfd;
TR1=1;
while(1)
{
}
}
void serial() interrupt 4 //串行中断服务函数
{
Dat=SBUF; //把收到的信息从SBUF放到buf中
RI=0;
if(Dat==1)
{
flag1(); // 指令1
}
else //指令2
{
flag2();
}
}
void delay(u16 i) //延时函数
{
while(i--);
}
void flag1()
{
led3=1;
moto1=1;
led1=0;
for(i=0;i<100;i++) //循环100次,也就是大约5S
{
delay(5000); //大约延时50ms
}
moto1=0; //关闭电机1
led1=1; //关闭指示灯
while(1)
{
moto21=1; //电机2正转
moto22=0;
led2=0;
for(j=0;j<195;j++)
{
delay(5000);
}
moto21=1; //停车
moto22=1;
for(j=0;j<5;j++)
{
delay(5000);
}
moto21=0; //反转
moto22=1;
led2=~led2;
for(j=0;j<195;j++)
{
delay(5000);
}
moto21=1; //停车
moto22=1;
for(j=0;j<5;j++)
{
delay(5000);
}
}
}
void flag2() //电机1、2停止
{
while(1)
{
moto1=0;
moto21=1;
moto22=1;
led1=1;
led2=1;
led3=0;
}
}
你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答
本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。
因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。