单片机循环里面接收PC数据
voidserial()interrupt4using3{if(RI==1){unsignedcharshuju;//定义接收数据变量RI=0;shuju=SBUF;//...
void serial () interrupt 4 using 3
{
if (RI==1)
{
unsigned char shuju; //定义接收数据变量
RI = 0;
shuju=SBUF; //接收到PC数据
if(shuju == 1) //当接收到 1 执行循环
{
while(1)
{
motor_rev(); //电机正转
}
}
}
}
请问大家,循环里面要怎么接收PC数据,然后在退出循环 展开
{
if (RI==1)
{
unsigned char shuju; //定义接收数据变量
RI = 0;
shuju=SBUF; //接收到PC数据
if(shuju == 1) //当接收到 1 执行循环
{
while(1)
{
motor_rev(); //电机正转
}
}
}
}
请问大家,循环里面要怎么接收PC数据,然后在退出循环 展开
2个回答
展开全部
while(1) 最好放到main里面处理..不要再串口中断里处理..这样的话就拖住了时序..
你在中断里放个标记位.再main的while里面判断就ok了..能明白我的意思么?
你在中断里放个标记位.再main的while里面判断就ok了..能明白我的意思么?
追问
你的意思是把while(1)放在主程序里面,中断接收到一个标志用来启动主程序里面的while(1)循环,中断收到另一个标准就退出主程序里面的循环。
追答
"启动主程序里面的while(1)" 这句话说的不对..while是一直运行的...在这个一直运行的里面判断.
while(1)
{
//判断串口是否收到数据
if(Uart_Rec_Flag == 1)
{
Uart_Rec_Flag = 0;
//添加你需要处理的事务
}
}
大致结构就是这样的.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询