找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1497|回复: 8
收起左侧

简单的程序不简单,请问为什么LED不闪烁?51单片机数据类型计数延时的问题?

[复制链接]
ID:891876 发表于 2022-12-4 14:35 | 显示全部楼层 |阅读模式
数据类型计数延时的问题?

单片机源程序如下:
3.JPG

2.JPG



回复

使用道具 举报

ID:891876 发表于 2022-12-4 15:19 | 显示全部楼层
i=10000 就正常了,不应该啊,请老师解答
回复

使用道具 举报

ID:1055594 发表于 2022-12-4 16:05 | 显示全部楼层
建议延迟函数这样写,这样是1s。(uint为unsigned int)你那种不规范。。。。。。
void delay(uint time)
{
        uint i,j;
        for(i=0;i<time;i++)
                for(j=0;j<155;j++)
                        ;
}
回复

使用道具 举报

ID:94031 发表于 2022-12-4 16:09 | 显示全部楼层
芙蓉焊料 发表于 2022-12-4 15:19
i=10000 就正常了,不应该啊,请老师解答

i=1000000也是可以的,你得耐心等待。
回复

使用道具 举报

ID:342822 发表于 2022-12-4 17:11 | 显示全部楼层
1个机器周期等于12个振荡周期,振荡周期也叫时钟周期,时钟周期即晶振的单位时间发出的脉冲数,
如12MHZ=12×10的6次方,即每秒发出12000000个脉冲信号,那么发出一个脉冲的时间就是时钟周期,
即1/12微秒;如11.0592MHZ=11.0592×10的6次方,即每秒发出11059200个脉冲信号,
那么发出一个脉冲的时间就是时钟周期,即1/11.0592微秒)。

在51单片机中,1个机器周期等于12个振荡周期,则在计算定时时间t时:

计数值N乘以机器周期Tcy就是定时时间t 。
回复

使用道具 举报

ID:883242 发表于 2022-12-4 17:47 | 显示全部楼层
long运算时间远大于1us,所以你的代码是正确的,但是需要极大地耐心来证明。
回复

使用道具 举报

ID:891876 发表于 2022-12-4 18:01 | 显示全部楼层
Hephaestus 发表于 2022-12-4 17:47
long运算时间远大于1us,所以你的代码是正确的,但是需要极大地耐心来证明。

原来是这样,呵呵,脑壳昏
回复

使用道具 举报

ID:77589 发表于 2022-12-5 10:03 | 显示全部楼层
xuyaqi 发表于 2022-12-4 16:09
i=1000000也是可以的,你得耐心等待。

这是正确的
回复

使用道具 举报

ID:308903 发表于 2022-12-6 08:47 | 显示全部楼层
关键你这机器周期不是1us一次,可以进入 bebug 单独看看 delay 这段程序 ,当i = 1000000us,花了多久
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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