小弟最近使用STC15W201S的芯片 遇到点问题 求大神啊

2019-07-15 16:37发布

我在P3口接了共阳的LED  用串口中断来控制亮灭   中断程序如图  每次我发送0x02 LED闪一下就灭了  不加后面的灭灯程序就正常  我觉得程序是进入了后面的灭灯程序 但是我不知道是怎么进去的 并没有使dat[2]=0x00啊 好多方法试过了 求大神 好纠结
程序图 程序图
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
BYYHAHA
1楼-- · 2019-07-15 20:54
我又试了一下  貌似是进入中断后就一直在中断程序里  跳回不到主程序了
dengxc
2楼-- · 2019-07-15 21:08

STC15W系列单片机的中断系统好象有问题,for语句在中断服务函数中执行不了,忘记了还存在其它什么问题,不知道是什么原因。
你没有必要在中断服务函数中执行太多语句,LED的控制在其它函数中进行。为你提供一个可供参考的程序思路。
main()
{
        初始化;
        for(;;)
        {
                flag=1;
                while(flag);
                LED();
        }
}
void LED()
{
                if(dat1==0x02)
                {
                        P3=0;       
                }
                if(dat1==0)
                {
                        P3=0xff;
                }
}
void Uart(void) interrupt 4 using 1
{
        if(RI==1)
        {
                dat1=SBUF;
                RI=0;
                flag=0;
        }
        if(TI==1)
        {
                TI=0;
        }
}
BYYHAHA
3楼-- · 2019-07-16 01:26
dengxc 发表于 2015-7-13 18:18
STC15W系列单片机的中断系统好象有问题,for语句在中断服务函数中执行不了,忘记了还存在其它什么问题,不知道是什么原因。
你没有必要在中断服务函数中执行太多语句,LED的控制在其它函数中进行。为你提供一个可供参考的程序思路。
main()

但是如果哟啊接收一组数据的话  在中断函数当中是要用到for循环来接受这组数据啊  哎 好烦恼
BYYHAHA
4楼-- · 2019-07-16 03:47
dengxc 发表于 2015-7-13 18:18
STC15W系列单片机的中断系统好象有问题,for语句在中断服务函数中执行不了,忘记了还存在其它什么问题,不知道是什么原因。
你没有必要在中断服务函数中执行太多语句,LED的控制在其它函数中进行。为你提供一个可供参考的程序思路。
main()

我又尝试了一下  灯还是亮一下就灭了 我感觉就像是自动把dat1清零了  而且我第二次发送数据感觉单片机就不能接收了一样  我用了你发的程序  把关灯的条件改成dat1==0x01 发送0x01居然无效 而发送0x02开灯是有效的 好奇怪
BYYHAHA
5楼-- · 2019-07-16 06:50
 精彩回答 2  元偷偷看……
G28197
6楼-- · 2019-07-16 10:45
大神,这款单片机的时钟频率怎么设置啊

一周热门 更多>