2、你滴单片机串口收/发中断是能分开设置是否中断滴么?看你程序收用中断发用查询,51不能分设吧?
3、在没有FIFO的单片机里,一般串口收/发完成1个字节会中断一次,看你程序貌似是发完一串字符才置位TI,这样用当然是不对滴。正确的方法是发完一个字漏缓弊侍节中断后再发下一个字节(有点烦是吧^_^)试试下面的方式调返卜模试:
unsigned char s[]={0,1,2,3,4,5,6,7,8,9}
unsigned char len = 10
void sio_int() interrupt 4//串口中断函数
{
if (RI )
{
RI = 0
……
}
if(TI)
{
TI = 0
if(len)
{
SBUF = s[10 - len ]
len--
}
}
}
出现这种情况,原因比较多,可以尝试以下方法解决:1、进入BIOS,在电源管理菜单中,看看“RME EventWake up”(PME事件唤醒早郑数),一项是否是“Enable”(默认值),如是,将它改为“Disable”。
2、右击我的电脑选“属性——高级——启动和故障恢复——设置”,在打开的对话框中去掉“系统失败”中的“自动重新启动”前的“√”去掉,按“确定”。
3、 打开控制面板——性能和维护——电源选项——高级电源管理——勾选“启用高陆首级电源管理支持”,按“确定”。
4、有时关机时先拔掉网线故障排除,这可能是网线质量或接口故丛销障引起的
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)