找回密码
 注册
关于网站域名变更的通知
查看: 799|回复: 10
打印 上一主题 下一主题

51单片机延时函数

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-3-11 09:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
51单片机延时函数
4 O, C( c8 t  }9 `
1 a5 W& N; {2 I# d- d% `. w% F
) |) w- U" L( @8 j* B) k

C程序中可使用不同类型的变量来进行延时设计。经实验测试,使用unsigned char类型具有比unsigned int更优化的代码,在使用时应该使用unsigned char作为延时变量。 以某晶振为12MHz的单片机为例,晶振为12MHz即一个机器周期为1us。扩展阅读:汇编延时程序算法详解

一. 500ms延时子程序

程序:

void delay500ms(void)

{

unsigned char i,j,k;

for(i=15;i>0;i--)

for(j=202;j>0;j--)

for(k=81;k>0;k--);

}

计算分析:

程序共有三层循环

一层循环n:R5*2 = 81*2 = 162us DJNZ 2us

二层循环m:R6*(n+3) = 202*165 = 33330us DJNZ 2us + R5赋值 1us = 3us

三层循环: R7*(m+3) = 15*33333 = 499995us DJNZ 2us + R6赋值 1us = 3us

循环外: 5us 子程序调用 2us + 子程序返回 2us + R7赋值 1us = 5us

延时总时间 = 三层循环 + 循环外 = 499995+5 = 500000us =500ms

计算公式:延时时间=[(2*R5+3)*R6+3]*R7+5

游客,如果您要查看本帖隐藏内容请回复


; }3 ?9 j" S# b! L3 |3 k# e

该用户从未签到

3#
发表于 2021-3-1 13:37 | 只看该作者

该用户从未签到

4#
发表于 2021-3-9 16:43 | 只看该作者
谢谢楼主分享

该用户从未签到

6#
发表于 2021-3-27 18:46 | 只看该作者
6666666666666

该用户从未签到

9#
发表于 2021-4-11 20:34 | 只看该作者
感谢分享666666666666

该用户从未签到

10#
发表于 2021-4-14 08:50 | 只看该作者
感谢楼主分享,非常感谢
1 |8 A0 F5 S# O

该用户从未签到

11#
发表于 2021-4-14 13:33 | 只看该作者
还是用定时器最好$ }% E5 {/ @( d; m2 c
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-21 21:30 , Processed in 0.093750 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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