单片机软件延时出现问题-又是整型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条评论)
登录后参与讨论