本帖最后由 hrg13579 于 2018-1-9 15:48 编辑
#include<reg52.h>
unsigned int a;
void main()
{
TMOD=0x20; //设置定时器工作方式 1
TH1=0xfd; //设置定时器1初值
TL1=0xfd;
TR1=1; //开启定时器1
REN=1; //启动串行口接收数据
SM0=0; //设置串行口工作方式为1
SM1=1;
while(1)
{
while(RI) //查询法,当串行口检测到有数据接收时,硬件自动让RI置1,开始向CPU申请中断。再把收到的数据通过SBUF赋给P1
{
RI=0; // 本程序无需申请中断操作,软件置RI=0,让其取消中断,执行P1=SBUF语句。如不取消则RI一直向CPU申请中断而不执行下面语句
P1=SBUF; //把收到的串口端数据赋给P1
for(a=0;a<10;a++)
{
SBUF=P1;
}
}
}
}
我现在要实现,PC发一条,单片机回10条。可是现在是发1条回1条。这个code有啥问题啊? |