c语言串口中断,为什么要使ES=0?
答案:1 悬赏:20
解决时间 2021-01-09 13:23
- 提问者网友:几叶到寒
- 2021-01-08 14:37
c语言串口中断,为什么要使ES=0?
最佳答案
- 二级知识专家网友:洎扰庸人
- 2021-01-08 14:58
串口发送和接收都会产生中断,这里的写法是发送数据时关闭串口中断,发送完成才打开串口中断,那么串口中断就只是接收中断。
串口中断函数建议这样写,把接收和发送的中断区分出来
void ser()interrupt 4
{
if(RI==1)//接收的中断
{
RI=0;//取消本次接收中断申请,方便进入下次中断
P1=SBUF;//SBUF写在后是把接受寄存器的值赋给P1
a=SBUF;
flag=1;
}else//发送中断在发送完成时产生的中断
{
TI=0;//发送中断只执行清TI标志
}
}
串口中断区分后在发送数据时
设置ES=0也还是一样是关发送中断;
不设置ES=0则发送一个字节进入中断,中断里面也只是执行TI=0,这个时间基本可以忽略;
为了效率更高点还是发送时关闭串口中断,发送完成打开串口中断
串口中断函数建议这样写,把接收和发送的中断区分出来
void ser()interrupt 4
{
if(RI==1)//接收的中断
{
RI=0;//取消本次接收中断申请,方便进入下次中断
P1=SBUF;//SBUF写在后是把接受寄存器的值赋给P1
a=SBUF;
flag=1;
}else//发送中断在发送完成时产生的中断
{
TI=0;//发送中断只执行清TI标志
}
}
串口中断区分后在发送数据时
设置ES=0也还是一样是关发送中断;
不设置ES=0则发送一个字节进入中断,中断里面也只是执行TI=0,这个时间基本可以忽略;
为了效率更高点还是发送时关闭串口中断,发送完成打开串口中断
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯