大神啊,我搞了好久沒想明白,我這樣寫的是錯的嗎,為啥不行啊,我要奔潰了,紅色是串口部分
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar flag,temp;
sbit IN1=P1^0;
sbit IN2=P1^1; /*底盤轉動*/
sbit IN3=P2^0;
sbit IN4=P2^1; /*手臂上下升降*/
sbit IN5=P2^2;
sbit IN6=P2^3; /*機械手抓取*/
void init()
{
TMOD=0X20; //定時器1的工作方式2
SCON=0X50; //串行口的工作方式1 且REN=1
TH1=0XFD;
TL1=0XFD;
EA=1; //開啟總中斷
TR1=1; //開啟定時器1
ES=1; //開啟串行口中斷
}
void delay(uchar z)
{
uint x,y;
for(x=110;x--;x>0)
for(y=z;y--;y>0);
}
void right ()
{
IN1=1;
IN2=0;
delay(10);
}
void left()
{
IN1=0;
IN2=1;
delay(10);
}
void up()
{
IN3=1;
IN4=0;
delay(10);
}
void down()
{
IN3=0;
IN4=1;
delay(10);
}
void capture() //抓取
{
IN5=1;
IN6=0;
delay(10);
}
void loosen() //松開
{
IN5=0;
IN6=1;
delay(10);
}
void main ()
{
init();
while(1)
{
if(flag==1)
{
flag=0;
SBUF=temp;
TI=0;
switch(temp)
{
case 'U':
up();
break;
case 'D':
down();
break;
case 'R':
right();
break;
case 'L':
left();
break;
case 'C':
capture();
break;
case 'T':
loosen();
break;
}
}
}
}
void supend() interrupt 4 //串行口中斷函數
{
if(RI)
{
RI=0;
temp=SBUF;
flag=1;
}
}
|