请教单片机的串口通信问题,当执行SBUF=1;是否会触发void zhong() interrupt 4中断
请教各位老师:今天写了一个程序:key(){...if(){SBUF=1;...}}voidzhong()interrupt4{...}key(){...SBUF=1;i...
请教各位老师:
今天写了一个程序:
key()
{
...
if()
{
SBUF=1;
...
}
}
void zhong() interrupt 4
{...}
key()
{
...
SBUF=1;
if()
{
...
}
}
void zhong() interrupt 4
{...}
请问各位老师,我这句SBUF=1;放在IF语句里面和放在IF语句前面一句执行出来的结果有相当大的差异。只是一个放在if前面。一个放在if后面的区别。if语句里的语句为真。
小弟是新手,请教一下: SBUF=1;这个语句执行会对哪些标志为产生影响?以及是否会触发串口中断??
以上请指教。
谢谢! 展开
今天写了一个程序:
key()
{
...
if()
{
SBUF=1;
...
}
}
void zhong() interrupt 4
{...}
key()
{
...
SBUF=1;
if()
{
...
}
}
void zhong() interrupt 4
{...}
请问各位老师,我这句SBUF=1;放在IF语句里面和放在IF语句前面一句执行出来的结果有相当大的差异。只是一个放在if前面。一个放在if后面的区别。if语句里的语句为真。
小弟是新手,请教一下: SBUF=1;这个语句执行会对哪些标志为产生影响?以及是否会触发串口中断??
以上请指教。
谢谢! 展开
2个回答
展开全部
如果打开了串口,那么是可以触发串口中断的。
当发送完成时TI = 1,即触发串口发送中断。
当然需要你初始化好相应的波特率什么的才能进行正常的通信。
至于你将SBUF放在if内外的差别,应该是你别的地方引起的。理论上如果
if条件为真,那么就会执行if语句的内容的。
另外如果你串行中断你还需要处理接收数据的结果时候,应该这样写
void zhong() interrupt 4
{
if(RI)
{ RI = 0;
...}
if(TI)
{ TI = 0;
...}
}
当发送完成时TI = 1,即触发串口发送中断。
当然需要你初始化好相应的波特率什么的才能进行正常的通信。
至于你将SBUF放在if内外的差别,应该是你别的地方引起的。理论上如果
if条件为真,那么就会执行if语句的内容的。
另外如果你串行中断你还需要处理接收数据的结果时候,应该这样写
void zhong() interrupt 4
{
if(RI)
{ RI = 0;
...}
if(TI)
{ TI = 0;
...}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询