51单片机串口中断和产生波特率的定时器中断为什么不能同时开启?

测试情况:利用51单片机的定时器1的溢出率产生波特率,初始化串口并设置中断使能位ES=1,然后对定时器1也做了相应的配置,无意中设置ET1=1了,利用串口调试助手调试的结果是连续不断的收到了*这个字符。。第二次实验的时候把ET1=0,就可以正常的收发了、、
请问:为什么串口中断和定时器1中断不能同时开启呢?

利用51单片机的定时器1的溢出率产生波特率,并不需要打开 T1 的中断。

如果打开了,你就应该编写相应的中断程序。

如果,你没有写中断程序,那么,它中断后,自然就会给你添乱。追问

能更加深入的说明么?T1中断程序没有写,不做任何操作、、为什么会产生影响呢?

追答

楼主并没有编写 T1 中断程序,你以为,单片机就不做任何操作?

你如果开放了 T1 的中断,那么,每当 T1 定时溢出后,必定就会到
001BH 处,去执行 T1 的中断程序。

不管你写没写,单片机,都会执行 001BH 处的程序,直到执行 RETI,
才会返回断点。

楼主没有编写 T1 中断程序,逻辑上,已经错了,单片机,就被你弄糊涂了。
它把主程序当做中断程序来执行,这会产生什么影响,只有天知道。

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-06-12
如果串口也是用的T1,就不行。
如果不是,就可以。
第2个回答  2021-11-29
不知道解释对不对,可以参考。串口中断中定时器用的工作模式2,属于自动重装,如果再设置ET1=0,是不是就有冲突了?
相似回答