找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

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

查看数: 2570 | 评论数: 8 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2022-12-4 14:35

正文摘要:

数据类型计数延时的问题? 单片机源程序如下:

回复

ID:308903 发表于 2022-12-6 08:47
关键你这机器周期不是1us一次,可以进入 bebug 单独看看 delay 这段程序 ,当i = 1000000us,花了多久
ID:77589 发表于 2022-12-5 10:03
xuyaqi 发表于 2022-12-4 16:09
i=1000000也是可以的,你得耐心等待。

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

原来是这样,呵呵,脑壳昏
ID:883242 发表于 2022-12-4 17:47
long运算时间远大于1us,所以你的代码是正确的,但是需要极大地耐心来证明。
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:94031 发表于 2022-12-4 16:09
芙蓉焊料 发表于 2022-12-4 15:19
i=10000 就正常了,不应该啊,请老师解答

i=1000000也是可以的,你得耐心等待。
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:891876 发表于 2022-12-4 15:19
i=10000 就正常了,不应该啊,请老师解答

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

Powered by 单片机教程网

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