|
问题:
程序如下:程序可以实现,但是我想要让他:比如我发A他运动然后发B他立马就会跑到B的程序里!{黄色部分}我这个程序只能A的1000次循环完了才能接受到信号B进入信号B的程序里‘
还有一个就是我想让他到达我需要的额那个速度时可以停在那个速度上行驶!请问我该怎么修改!
新手问题多多请包涵
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar a,i,flag,t,temp;
void delay(uint j) /* 简易延时函数 */
{
for(j;j>0;j--);
}
sbit IN1=P1^1;
sbit IN2=P1^2;
sbit ENA=P1^3;
sbit IN3=P1^4;
sbit IN4=P1^5;
sbit ENB=P1^6;
sbit IN11=P2^1;
sbit IN22=P2^2;
sbit ENA1=P2^7;
sbit IN33=P2^4;
sbit IN44=P2^5;
sbit ENB1=P2^6;
void init()
{
TMOD=0X22; //定时器1的方式2 八位自动重装
SCON=0X50; //串行口工作方式1 REN=1启动串行口接受数据
TH1=0XFD;
TL1=0XFD;
EA=1;
TR1=1;
ES=1;
// TMOD=0x02; /* 设定T0的工作模式为2 */
TH0=0x87; /* 装入定时器的初值 ,120us,频率83HZ*/
TL0=0x87;
EA=1;
ET0=1; /* 定时器0允许中断 */
TR0=1;
}
void zhengjia()
{
for(i=1;i<=100;i++) //正向加速
{
IN1=0;
IN2=1;
IN3=0;
IN4=1;
IN11=1;
IN22=0;
IN33=1;
IN44=0;
delay(1000);
}
}
void zhnegjian()
{
for(i=100;i>0;i--) //正向减速
{
IN1=0;
IN2=1;
IN3=0;
IN4=1;
IN11=1;
IN22=0;
IN33=1;
IN44=0;
delay(1000);
}
}
void fanjia()
{
for(i=1;i<=100;i++) //反向加速
{
IN1=1;
IN2=0;
IN3=1;
IN4=0;
IN11=0;
IN22=1;
IN33=0;
IN44=1;
delay(1000);
}
}
void fanjian()
{
for(i=100;i>0;i--) //反向加速
{
IN1=1,
IN2=0,
IN3=1,
IN4=0,
IN11=0,
IN22=1,
IN33=0,
IN44=1,
delay(1000);
}
}
void main()
{
init();
while(1)
{
if(flag==1)
{
ES=0;
flag=0;
SBUF=a;
TI=0;
ES=1;
switch(a)
{
case 'A': 正向加速
zhengjia();
break;
case 'B': 正向减速
zhnegjian();
break;
case 'C': 反向加速
fanjia();
break;
case 'D': 反向减速
fanjian();
break;
}
}
}
}
void timerr() interrupt 4 //串行中断函数
{
if(RI) //发送完数据后RI=1;检测RI是否为0
{
RI=0;
a=SBUF;
flag=1;
}
}
void timer0() interrupt 1 /* T0中断服务程序 */
{
TH0=0xc8; /* 装入定时器的初值 */
TL0=0xc8;
t++;
if (t<i)
{
ENA=1; ENA1=1;
ENB=1; ENB1=1;
}
else
{
ENA=0; ENA1=0;
ENB=0; ENB1=0;
}
if(t==100)
t=0;
}
|
评分
-
查看全部评分
|