打印
[STM8]

关于STM8单片机的if嵌套问题

[复制链接]
4036|29
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
请问下各位使用STM8单片机的高手,STM8s003f3P6最多能嵌套使用几个if语句????为什么我这样嵌套 到第3级程序就不对了?

while(1)
{
   if()
   {
    if()
     {
        if()
        {
        }
        if()
        {
        }

     }
   }
}

到红色这里程序就不按写的执行了
沙发
想做大牛的小马| | 2014-7-24 08:20 | 只看该作者
不懂,没试过但是觉得应该再多也没有问题。。又不是递归总在吃栈。。。。~

使用特权

评论回复
板凳
尛舞icc|  楼主 | 2014-7-24 08:26 | 只看该作者
想做大牛的小马 发表于 2014-7-24 08:20
不懂,没试过但是觉得应该再多也没有问题。。又不是递归总在吃栈。。。。~ ...

哥们,我试了好多次   结果都是失败的...不知道怎么回事   用别的单片机都没问题, 就这个单片机同样的程序  就运行到第3级 就不执行了 第2条 if语句了

使用特权

评论回复
地板
mmuuss586| | 2014-7-24 08:31 | 只看该作者

可能你程序有问题吧;
程序发上来,让大家看下;
就4个if,而已;

使用特权

评论回复
5
Rain_King| | 2014-7-24 08:38 | 只看该作者
是在不行可以看汇编的啊............

使用特权

评论回复
6
尛舞icc|  楼主 | 2014-7-24 08:45 | 只看该作者
Rain_King 发表于 2014-7-24 08:38
是在不行可以看汇编的啊............

大哥  我汇编没学

使用特权

评论回复
7
尛舞icc|  楼主 | 2014-7-24 08:49 | 只看该作者
mmuuss586 发表于 2014-7-24 08:31
可能你程序有问题吧;
程序发上来,让大家看下;
就4个if,而已;

                while(1)
                {
                        if(rcvflag==1)
                        {       
                               
                                if(rcvdata==addr)
                                {
                                       
                                        switch(rcvdata&0x00000f)
                                        {
                                                case 8:break;
                                                case 4:break;
                                                case 2:PC3=1;  
                                                case 1:PC3=0;
                                                default:break;
                                        }
                                }
                          }
                  }

使用特权

评论回复
8
尛舞icc|  楼主 | 2014-7-24 08:51 | 只看该作者
尛舞icc 发表于 2014-7-24 08:49
while(1)
                {
                        if(rcvflag==1)

switch(rcvdata&0x00000f)
                                        {
                                                case 8:  break;
                                                case 4:  break;
                                                case 2:  PC3=1;  
                                                case 1:  PC3=0;
                                                default: break;
                                        }
前面那个变表情了    这里面不执行了

使用特权

评论回复
9
Rain_King| | 2014-7-24 08:59 | 只看该作者
尛舞icc 发表于 2014-7-24 08:51
switch(rcvdata&0x00000f)
                                        {
                                ...

你的不执行指的神马意思??是执行不到这里,还是程序跑飞??

使用特权

评论回复
10
Rain_King| | 2014-7-24 09:01 | 只看该作者
我觉得是你条件的问题,检验办法非常简单:
所有if条件里面的条件变成1,看是否执行...如果可以,那就说是可以嵌套的......

使用特权

评论回复
11
尛舞icc|  楼主 | 2014-7-24 09:23 | 只看该作者
Rain_King 发表于 2014-7-24 08:59
你的不执行指的神马意思??是执行不到这里,还是程序跑飞??

有点像程序跑飞了,又有点不像 执行了嵌套后的第一个if,第2个就不执行了

使用特权

评论回复
12
尛舞icc|  楼主 | 2014-7-24 09:25 | 只看该作者
Rain_King 发表于 2014-7-24 09:01
我觉得是你条件的问题,检验办法非常简单:
所有if条件里面的条件变成1,看是否执行...如果可以,那就说是 ...

在AVR单片机里面试过, 一样的程序 移植过来就出问题了

使用特权

评论回复
13
Rain_King| | 2014-7-24 10:10 | 只看该作者
尛舞icc 发表于 2014-7-24 09:25
在AVR单片机里面试过, 一样的程序 移植过来就出问题了

这个不是重点,重点是首先你应该证明可否嵌套......排除条件不成立的原因....

使用特权

评论回复
14
尛舞icc|  楼主 | 2014-7-24 10:12 | 只看该作者
Rain_King 发表于 2014-7-24 10:10
这个不是重点,重点是首先你应该证明可否嵌套......排除条件不成立的原因.... ...

好的   明白了  3Q

使用特权

评论回复
15
xjjspace| | 2014-7-24 12:26 | 只看该作者
我在STVD上试了下,是可以的,楼主找找其他原因。又不是函数递归调用,正常来说,就这几层判断还是没问题的。

QQ图片20140724122525.jpg (40.6 KB )

QQ图片20140724122525.jpg

使用特权

评论回复
16
正版长小强| | 2014-7-24 12:44 | 只看该作者
Case2:后边有没有Break;

使用特权

评论回复
17
mmuuss586| | 2014-7-24 13:08 | 只看该作者

楼上正解,CASE 2,3:都加break看看;

使用特权

评论回复
18
zgc5824049| | 2014-7-24 15:34 | 只看该作者
是switch好一点还是if好一点如果条件比较多的话

使用特权

评论回复
19
lyn3210| | 2014-7-24 16:51 | 只看该作者
这过东东,我见过,是编译错误,见编译后的汇编代码.

使用特权

评论回复
20
Rain_King| | 2014-7-24 16:52 | 只看该作者
zgc5824049 发表于 2014-7-24 15:34
是switch好一点还是if好一点如果条件比较多的话

没有哪个好这一说,根据应用来的,如果你的条件是单个的数,也就是一种种情况,当然switch要好,如果是范围性的,当然是if要好....

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

67

主题

230

帖子

2

粉丝