单片机串口发送数据不及时怎么处理?

2025-03-25 07:43:14
推荐回答(3个)
回答1:

不是很明白你要实现的功能。
你的中断函数里写的是如果接收到串口信息时,就将标志位置1,同时获取此时P1口的按键状态。
然后主程序检测到标志位被置1,就将刚刚获取的P1口按键状态发回给上位机是这样吗?
不用说了,肯定是这样。
我说说你程序的问题吧,首先你的P1口到底接了些什么外围电路我不知道,如果是按键,还分哪类按键呢,比如拔动开关,或者是普通按键。如果是拔动开关的话,那麽这个程序也没多大问题。因为拔动开关是可以让你的按键电平锁定在高电平或低电平的,但如果是普通按键的话,那麽你的程序就很大问题了。
首先要产生RX信号,让程序进入中断,同时你的按键要按下。两步要同时。所以导致你要不断地按,狂按。
其实如果你的单片机不接收上位机传来的串口信号,可以直接去掉中断的。
while(1)
{
if(P1!=0XFF) // 证明有按键按下
{
pd1=P1; //将值取出。
while(P1!=0xff) ; //直到松手。

SBUF=pd1; //SUBF接受/发送缓冲器
P2=pd1;
//delay(); 这句delay没多大意义。
while(TI==0);
TI=0;
Flag=0;
}

}
也可能是我误解了你的意思,有什么问题欢迎一起探讨,希望我的回答对你有帮助。

回答2:

怎么可能?你改一下延时时间试试看、还有加一下按键程序、注意消抖

回答3:

具体实现什么功能?