#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;
}
}
为啥用串口助手发1flag1可以启动,发其他的flag2不能运行还是怎么的,电机不停!!
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 有问必答小助手 2021-06-12 22:31关注
你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答
本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。
因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。解决 无用评论 打赏 举报
悬赏问题
- ¥15 cgictest.cgi文件无法访问
- ¥20 删除和修改功能无法调用
- ¥15 kafka topic 所有分副本数修改
- ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
- ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?
- ¥40 串口调试助手打开串口后,keil5的代码就停止了
- ¥15 电脑最近经常蓝屏,求大家看看哪的问题
- ¥60 高价有偿求java辅导。工程量较大,价格你定,联系确定辅导后将采纳你的答案。希望能给出完整详细代码,并能解释回答我关于代码的疑问疑问,代码要求如下,联系我会发文档
- ¥50 C++五子棋AI程序编写
- ¥30 求安卓设备利用一个typeC接口,同时实现向pc一边投屏一边上传数据的解决方案。