|
最近我常用的一个函数出了点异样,大虾米现身了!!!HOHO
函数如下:
- unsigned int SysTim;
- unsigned int PreTim1;
- unsigned int PreTim2;
- unsigned int LenTim(unsigned int preTim, unsigned int sysTim)
- {
- if (preTim > sysTim)
- {
- return (0x7fff);
- }
- return (sysTim - preTim);
- }
- int main()
- {
- unsigned int timLen;
- while(SysTim < 100)
- {
- SysTim++;
- if (LenTim(PreTim1, SysTim) > 50) //第一种对比方法
- {
- printf("PreTim1 OK\n");
- PreTim1 = SysTim;
- }
- timLen = LenTim(PreTim2, SysTim); //第二种对比方法
- if (timLen > 50)
- {
- printf("PreTim2 OK\n");
- PreTim2 = SysTim;
- }
- }
- }
复制代码
注:此函数用在16位单片机上,int形数据占16位存储空间。
在PC机上用C-Free编译运行时,两种方法都是正确的,没有出现异常。
俺平时用的都是第一种对比方法,一直都可以正常运行,
这次建立一个新工程后,运行这一对比过程的时候一直都无法进入判断,
检查程序没有发现不对头,从网上看到一种说法,尽量使用第二种对比,
这样的程序稳定,我试了一下还真行了,只是到现在也不明白为什么,
人多力量大,大家帮忙讨论一下,这里面有什么说法没有呢。
谢谢大家!
当然了,如果程序中有不合适的地方还请指正,HOHO
|
|