pkjapan 发表于 2013-8-22 08:55:26

遇到个奇葩问题,用keil u4 编译个51程序,有些函数不执行?

把这个程序烧到stc12单片机上,串口收到的数据经竟然没有经过加密处理,把key_buf定义成全局的也不行??

我确认加密程序没有问题。

难道是编译器把这个子函数忽略了?还是直接优化掉了?

有人遇到过类似问题么?


void RF_Txkey(uchar add,uchar data1,uchar data2,uchar data3) //数据加密发送
{       
        uchar data key_buf={1,2,3,4,5,6,7,8};       
        key_buf=data1;
        key_buf=data2;                               
        key_buf=data3;                               
        key_buf=add;
                                                    
       //加密上面的数据 ,然后串口发送出去
                      Encrypt(key_buf,TEAkey);
                               

                                        kinbuf=key_buf;Com_go();
                                        kinbuf=key_buf;Com_go();                                               
                                        kinbuf=key_buf;Com_go();
                                        kinbuf=key_buf;Com_go();
                                        kinbuf=key_buf;Com_go();
                                        kinbuf=key_buf;Com_go();
                                        kinbuf=key_buf;Com_go();       
                                        kinbuf=key_buf;Com_go();
}

wye11083 发表于 2013-8-22 08:58:07

检查优化选项,有可能是优化掉了。Keil uV2编译选项改一下会出现函数消失的现象。

wangyy@dianzi 发表于 2013-8-22 09:27:55

把编译后的信息贴出来,看看内存什么的,还有就是在什么地方调用!

pkjapan 发表于 2013-8-22 10:02:08

wangyy@dianzi 发表于 2013-8-22 09:27 static/image/common/back.gif
把编译后的信息贴出来,看看内存什么的,还有就是在什么地方调用!

编译提示没有任何关于这个函数的信息。。。

pkjapan 发表于 2013-8-22 10:23:41

uchar data volitilekey_buf={1,2,3,4,5,6,7,8};会怎样?

lwb807 发表于 2013-8-22 16:49:03

优化级别太高了?? volatile uchar data key_buf={1,2,3,4,5,6,7,8};      不就知道是不是被优化了。
页: [1]
查看完整版本: 遇到个奇葩问题,用keil u4 编译个51程序,有些函数不执行?