原创 单片机软件延时出现问题-又是整型int惹的祸

2013-7-17 10:44 1670 14 14 分类: 工程师职场

单片机软件延时出现问题-又是整型int惹的祸

wxleasyland@sina.com

2013.7

 

用的是STC12C5A60S2的1T单片机,STC的软件(stc-isp-15xx-v6.24.exe)可以帮忙生成延时程序,比如1ms延时是:

void Delay1ms()                 //@11.0592MHz

{

         unsigned char i, j;

         _nop_();

         i = 11;

         j = 190;

         do

         {

                   while (--j);

         } while (--i);

}

 

拷到我的其它有时序要求程序中,结果发现功能异常,一直找不到原因,以前有一版本的程序用的延时也是STC生成的,功能正常,而这个程序却不行!

后来发现确实是延时不对,奇怪,找了很久也找不到原因。

后来将延时子程序Delay1ms()整体替代掉,OK了,终于发现,原来:

我只拷了精华段,没有拷unsigned char i, j;,而原程序中的是unsigned int i, j;!!!

int与char有天壤之别啊!

因为单片机做int的加减法运算,需要比char多很多的汇编指令,这样导致延时时间完全不一样了,多了好几倍!这里用C编程,看不出来,导致忽略了这个问题。

哎,用int已经出现过不少问题了。差一点,就差很多!

 

 

文章评论0条评论)

登录后参与讨论
我要评论
0
14
关闭 站长推荐上一条 /2 下一条