小女子一边看视频,一边学
单片机串口的实验,下面是视频中没有问题的程序,可以成功地发送和接收相关的值:
void usartconfigura
tion()
{
SCON=0x50;
TMOD=0x20;
PCON=0x80;//波特率加倍
TH1=0xFA;
TL1=0xFA;
TR1=1;
ES=1;
EA=1;
}
void usart() interrupt 4
{
unsigned char receive,i;
receive=SBUF;
RI=0;
SBUF=receive;
while(!TI);
TI=0;
}
void main()
{
usartconfiguration();
while(1);
{
}
}
在此想自己在电脑中输入参数,实现对电机运动的控制,如输入1,电机正转,输入2,电机反转;于是将usart()函数改为:
void usart() interrupt 4
{
unsigned char receive,i;
receive=SBUF;
RI=0;
SBUF=receive;
if(receive==1)
{
for(i=0;i<8;i++)
{
P1=tap1;//tap1控制电机正转
delay(50);//已定义了delay函数
}
}
if(receive==2)
{
for(i=0;i<8;i++)
{
P1=tap2;//tap2控制电机反转
delay(50);
}
}
while(!TI);
TI=0;
}
红 {MOD}部分是后面添加用于控制电机,但是这样下来,发送数值,
不仅电机不会转动,而且电脑中也不能接收到数值,请问这是为什么????
我看单片机例程,其中一个介绍输入数字用来控制LED灯,但用的是RS232串口,请问有什么区别??
小女子菜鸟一枚,希望大家赐教!!
一周热门 更多>