微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 程序在运行到延时函数时会卡死,不知为什么,有时发生,有时不发生这种情况.(STC15F2K60S2+keil4)

程序在运行到延时函数时会卡死,不知为什么,有时发生,有时不发生这种情况.(STC15F2K60S2+keil4)

时间:10-02 整理:3721RD 点击:
我一直使用STC系列单片机,现在发现个问题,关于延时函数的.
方式一:for(i=0;i<ms;i++).
方式二:for(i=ms;i>0;i--).
方式三:do{.....} while(--ms);
发现方式一在程序中很容易出现卡死的现象,方式二三基本不出现.但是有时也会卡死,不知在使用延时函数时有什么注意的没有?
程序结构如下:
1/各类函数声明及各种定义
2/主程序
3/声明函数
在主程序中一运行到延时函数,程序就走不动了.也搞不清为什么.

要防止溢出,unsigned char型不要大于255之类的。

使用过多款STC15系列单片机,包括STC15F2K60S2,没有遇到小编的问题,应该不是硬件毛病。

觉得应该是编程问题

重来没有遇到过,

因為 方式1  進行彙編語言解釋時多出4個指令   並且在 i<ms 處調用前部分的值進行轉跳
0會印發處理異常

建議改用  方式2    精簡指令 提升內存訪問的質量減少不確定型
這種情況多見於C編譯的指令執行效率和異常  彙編語句暫時還沒有發生

仿真一下  看看是不是內存溢出后丟失引發

方式一我一個師傅很久之前都不讓我用了,,當時他就給我解釋了這麼多   他是彙編 出身   

谢谢啊,我试一下,我的程序写的比较长,CODE=17000,之前没有出现过,后来不知怎么就不行了,一到延时就卡死.而且我把程序功能减一减就又没有问题了,

十有八九小编ms用的16位而i用的8位,延时函数调用时ms给了个大于255的数据

没有遇到小编的问题

感谢大家关注,今天终于找到原因了,变量定义太多了,XDATA不能超过2000.也不知为什么.

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top