[STC单片机] 这个 Delay1ms() 写错了吧?

[复制链接]
 楼主| 新下级学 发表于 2023-11-28 20:06 | 显示全部楼层 |阅读模式
本帖最后由 新下级学 于 2023-11-28 20:21 编辑

这是淘宝店家给我的例程,一调用就会复位。写错了吧?
芯片是 STC8G1K08A-8PIN。
static void Delay1ms()
{
    //  Fosc: 11.0592MHz
    unsigned char i, j;

    _nop_();
    i = 11;
    j = 190;
    do
    {
        while (--j)
            ;
    } while (--i);
}



ly2023 发表于 2023-11-29 08:46 | 显示全部楼层
本帖最后由 ly2023 于 2023-11-29 08:48 编辑

楼主可以试试这么调,你用最新isp软件下载试下,最新软件下载地址:www.STCAI.com/gjrj

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

点评

有定时器就不要用阻塞延时。  发表于 2023-11-29 09:58
一叶倾城wwq 发表于 2023-11-29 09:03 | 显示全部楼层
你是开了看门狗吧,死循环延时不喂狗当然复位了
coody 发表于 2023-11-29 12:54 | 显示全部楼层
这种循环必然会结束,不会导致复位,应该是你程序有别的问题,比如看门狗溢出、堆栈溢出。
 楼主| 新下级学 发表于 2023-11-30 19:09 | 显示全部楼层
一叶倾城wwq 发表于 2023-11-29 09:03
你是开了看门狗吧,死循环延时不喂狗当然复位了

我原来的程序也没有看门狗,加了 Delay1ms() 就总复位。
 楼主| 新下级学 发表于 2023-11-30 19:10 | 显示全部楼层
ly2023 发表于 2023-11-29 08:46
楼主可以试试这么调,你用最新isp软件下载试下,最新软件下载地址:www.STCAI.com/gjrj
...

谢谢!里面的 j,是不是一开始从 15 减到 0,然后就从 255 开始减了?
STCMCUNT015 发表于 2023-12-1 09:05 | 显示全部楼层
是的,因为 i 定义为unsigned char类型,取值范围0~255,减到0后溢出重新从255开始。

点评

減到零會溢出?  发表于 2023-12-29 10:32
zwsam 发表于 2023-12-21 09:07 | 显示全部楼层
xionghaoyun 发表于 2023-12-21 17:44 | 显示全部楼层
关狗 或者 用for循环delay  在for循环中喂狗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

254

主题

668

帖子

3

粉丝
快速回复 返回顶部 返回列表