在串口中断函数中接收了数据、然后发送出去、结果卡机、、
到底在串口中断中能不能发数据??、
------解决方案--------------------
查看允许发送位有没有置位?
另外,LZ采用的发送方式是中断还是查询?
对应的标志和中断有没有写错
------解决方案--------------------
LZ采用的发送方式是中断还是查询?
------解决方案--------------------
发是一定能发的,关键看你有没有清串口发送和接收中断标志,没清的话会不停的进中断,卡机就很正常了!
------解决方案--------------------
void serial_port0() interrupt 4 using 1
{
unsigned char c;
if(TI) /*If TI=1, must be transmit complete interrupt*/
{
TI=0;
if(ser0_count>ser0_counts)
{
ser0_count=0;
}
else SBUF=ser0_data[ser0_count++];
}
else if(RI) /*Else If RI=1, must be receive complete interrupt*/
{
RI=0;
------解决方案--------------------
很肯定地回答你:可以
------解决方案--------------------
串口中断接收单个数据然后发送回去可能不会出错 ,但是如果接收完再经过很长的时间处理然后再发送回去就会出错 因为接收中断还没返回可能就有下一串口中断来了 所以最好不要在中断中处理太多事情 接收的数据可以先存在缓冲区 返回中断在处理。
------解决方案--------------------
发是一定能发的,关键看你有没有清串口发送和接收中断标志,没清的话会不停的进中断,卡机就很正常了!
------解决方案--------------------
你是在串口接收中断发送数据的吗?换个地方发送吧