找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2563|回复: 8
打印 上一主题 下一主题
收起左侧

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

[复制链接]
跳转到指定楼层
楼主
数据类型计数延时的问题?

单片机源程序如下:






分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
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也是可以的,你得耐心等待。
回复

使用道具 举报

5#
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 。
回复

使用道具 举报

6#
ID:883242 发表于 2022-12-4 17:47 | 只看该作者
long运算时间远大于1us,所以你的代码是正确的,但是需要极大地耐心来证明。
回复

使用道具 举报

7#
ID:891876 发表于 2022-12-4 18:01 | 只看该作者
Hephaestus 发表于 2022-12-4 17:47
long运算时间远大于1us,所以你的代码是正确的,但是需要极大地耐心来证明。

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

使用道具 举报

8#
ID:77589 发表于 2022-12-5 10:03 | 只看该作者
xuyaqi 发表于 2022-12-4 16:09
i=1000000也是可以的,你得耐心等待。

这是正确的
回复

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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