[STC单片机] 串口中断小问题

[复制链接]
1770|5
 楼主| puppet21 发表于 2013-10-24 16:41 | 显示全部楼层 |阅读模式
main()
{    ....
     P1 = 0XF0;
     ....
}

void dataset_int4() interrupt 4
{
        char receivein ;
        P1 = 0X05 ;
            if(RI)
         {....
         }
}
当程序是这样时,P1口开机马上显示的是0x05;
void dataset_int4() interrupt 4
{
        char receivein ;
            if(RI)
         {P1 = 0X05 ;
           ....
         }
}
这样后,开机才是P1 口 是0x55

各位看官有没明白?谁能告诉我这是为什么?开机串口中断马上触发了?虽然是空值,但这不太正常啊!求解!!
ayb_ice 发表于 2013-10-24 17:19 | 显示全部楼层
开机一般都要延时20~50MS,等待硬件稳定,开中断前一般都要清除标志位

void main(void)
{
        delay_20ms();
        
        RI = TI = 0;
        ES = 1;
        EA = 1;
        
        while(1)
        {
                ...
        }

}
NE5532 发表于 2013-10-24 19:47 | 显示全部楼层
看不明白,楼主自己明白不?通篇找不到0x55在哪里。

另外开中断之前需要清标志。
 楼主| puppet21 发表于 2013-10-25 08:56 | 显示全部楼层
NE5532 发表于 2013-10-24 19:47
看不明白,楼主自己明白不?通篇找不到0x55在哪里。

另外开中断之前需要清标志。 ...

嘿嘿~后来为了避免视觉误差,改为0xf0了,在main里面唯一的代码
 楼主| puppet21 发表于 2013-10-25 08:59 | 显示全部楼层
ayb_ice 发表于 2013-10-24 17:19
开机一般都要延时20~50MS,等待硬件稳定,开中断前一般都要清除标志位

void main(void)

都是有的,没贴出来而已,延时用了1秒。

后来问题解决了,我原先用的烧写器代替串口,烧写器在上电后就发送了握手的的指令,这因为如此才会执行了串口中断,后来直接插串口问题就不再出现了~谢谢各位啦!
NE5532 发表于 2013-10-25 10:17 | 显示全部楼层
看来问题还是你自己没有清标志。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

140

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部