#include<reg52.h>
#define uchar unsigned char
#define uint unsigned uint
uchar a;
void init()
{
TMOD=0x20; //设置定时器1为方式2
PCON=0x00; //设置SMOD(PCON.7)为0,波特率不加倍
TH1=0xfd; //设置波特率初值为9600
TL0=0xfd; //
TR1=1; //启动定时器1
REN=1; //使能接收
SM0=0; //
SM1=1; //设置串口为工作方式1
EA=1; //打开总中断开关
ES=1; //打开串口中断开关
}
void main(void)
{
init();
while(1);
}
void ser() interrupt 4
{
ES=0;
RI=0; //将接收中断标志位清0
a= SBUF; //将接收到的数据赋给a
switch(a)
{
case 31: P2=0x17; break; //前进
case 34: P2=0x1b; break; //右转
case 33: P2=0x27; break; //左转
case 32: P2=0x2b; break; //后退
case 37: P2=0x00; break; //停止
case 35: P2=0x17; break; //加速
case 36: P2=0x2b; break; //减速
default: break;
}
ES=1;
}
大家帮我看看那里不对,怎么会没反应
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar a;
void init()
{
TMOD=0X20; //设置定时器1为方式2
TH1=0xfd ;
TL1=0xfd ; //装初值
TR1=1; //启动定时器1
REN=1; // 使能接收
SM0=0;
SM1=1; //设置串口为工作方式1
EA=1; // 打开总中断开关
ES=1; // 打开串口中断开关
}
void main()
{
init();
while(1);
}
void ser() interrupt 4
{
ES=0;
RI=0; //将接受中断标志位清0;
a=SBUF; //将接受到的数据赋值给a
switch(a)
{
case 65: P2=0X17; break; // 发送的是A 前进指令
case 66: P2=0X1B; break; // 发送的是B 右转指令
case 67: P2=0X27; break; // 发送的是C 左转指令
case 68: P2=0X2B; break; // 发送的是D 后退指令
case 97: P2=0X00; break; //发送的是a 停止指令
case 98: P2=0X00; break; //发送的是b 停止指令
case 99: P2=0X00; break; //发送的是c 停止指令
case 100: P2=0X00; break; //发送的是d 停止指令
//P2口是我的电机驱动的控制端
default: break;
}
ES=1;
}
一周热门 更多>