世纪电源网社区logo
社区
Datasheet
标题
返回顶部
讨论

单片机中的延时程序的延时时间怎样计算的?

[复制链接]
查看: 330 |回复: 7
1
t6665248
  • 积分:1001
  • |
  • 主题:25
  • |
  • 帖子:180
积分:1001
LV6
高级工程师
  • 2023-3-21 16:35:36
单片机中的延时程序的延时时间怎样计算的?比如,延迟 1S,2S等等
收藏收藏
nc965
  • 积分:93657
  • |
  • 主题:115
  • |
  • 帖子:27354
积分:93657
版主
  • 2023-3-21 19:00:03
  • 倒数6
 
一般用一个计数器溢出标志累加到一个变量,直到变量溢出时刻
Uoresei
  • 积分:427
  • |
  • 主题:10
  • |
  • 帖子:49
积分:427
LV6
高级工程师
  • 2023-3-22 14:53:51
  • 倒数5
 
比如
c51单片机的定时器1
是16位定时器
那么就是最大是65536
如果晶振频率是12MHZ
那么
最大定时时间是65.536毫秒
你定时一秒
就可以把定时器装初值
是15536
15536加到65536
正好是50毫秒
经过20次50毫秒
那么就是1s

atmega8LC
  • 积分:382
  • |
  • 主题:9
  • |
  • 帖子:50
积分:382
LV4
初级工程师
  • 2023-3-23 13:49:41
  • 倒数4
 
如果用循环语句实现的循环,没法计算,但是可以通过软件仿真看到具体时间,但是一般精精确延时是没法用循环语句实现的。
如果想精确延时,一般需要用到定时器,延时时间与晶振有关系,单片机系统一般常选用11.059 2 MHz、12 MHz或6 MHz晶振。第一种更容易产生各种标准的波特率,后两种的一个机器周期分别为1 μs和2 μs,便于精确延时。本程序中假设使用频率为12 MHz的晶振。最长的延时时间可达216=65 536 μs。若定时器工作在方式2,则可实现极短时间的精确延时;如使用其他定时方式,则要考虑重装定时初值的时间(重装定时器初值占用2个机器周期)。

Bibiers
  • 积分:616
  • |
  • 主题:17
  • |
  • 帖子:88
积分:616
LV6
高级工程师
  • 2023-3-24 10:52:40
  • 倒数3
 
用c语言写1s延时方法——定时器查询方式

希望我的程序能对大家的实验起到帮助。

//*************定时器查询方式12MHz 1s延时

void DELAY(void)

{

unit i=0;

TMOD=0X00;//设置为定时器1(T1)工作于方式0

TH1=0X3C;//高4位

TL1=0XB0;//低4位

TR1=1;//启动定时器

while(i<20)

{

if(TF1==1)//查询T1溢出标志

{

TF1=0;

i ;

}

}

}

TMOD=0X00首先设置为定时器1(T1)工作于方式0

定时时间:t=(2^(16)-定时器的初始值)*系统时钟周期*12^(1-T1x12)

即当T1x12=0时系统为12分频计数脉冲周期系统时钟周期的12倍(12MHz时1个计数脉冲周期时间为t=1us)

当设置定时时间为50ms时:定时器的初始值T=2^(16)-50*(10^3)=15536。15536转换为16进制后为3CB0(h).设置定时器的初始值的方法TH1为高4位(TH1=0X3C),TL1为低4位(TL1=0XB0)。

每当定时器的值从15536(定时器的初始值)加到65536( 2^(16) )时会溢出,这时TF1=1,然后定时器从15536重新开始加。

while(i<20):while循环让定时器循环20次,每次循环时间为50ms,即定时时间为t=50*20=1000ms=1s.


nc965
  • 积分:93657
  • |
  • 主题:115
  • |
  • 帖子:27354
积分:93657
版主
  • 2023-3-24 12:38:05
  • 倒数2
 
尽量少的语句、尽量少的循环次数,最大限度减少指令周期,才有精度
沧浪一生
  • 积分:425
  • |
  • 主题:14
  • |
  • 帖子:63
积分:425
LV6
高级工程师
最新回复
  • 2023-3-30 15:03:30
  • 倒数1
 

如果用循环语句实现的循环,没法计算,但是可以通过软件仿真看到具体时间,但是一般精精确延时是没法用循环语句实现的。

如果想精确延时,一般需要用到定时器,延时时间与晶振有关系,单片机系统一般常选用11.059 2 MHz、12 MHz或6 MHz晶振。第一种更容易产生各种标准的波特率,后两种的一个机器周期分别为1 μs和2 μs,便于精确延时。本程序中假设使用频率为12 MHz的晶振。最长的延时时间可达216=65 536 μs。若定时器工作在方式2,则可实现极短时间的精确延时;如使用其他定时方式,则要考虑重装定时初值的时间(重装定时器初值占用2个机器周期)。


热门技术、经典电源设计资源推荐

世纪电源网总部

地 址:天津市南开区黄河道大通大厦8层

电 话:400-022-5587

传 真:(022)27690960

邮 编:300110

E-mail:21dy#21dianyuan.com(#换成@)

世纪电源网分部

广 东:(0755)82437996 /(138 2356 2357)

北 京:(010)69525295 /(15901552591)

上 海:(021)24200688 /(13585599008)

香 港:HK(852)92121212

China(86)15220029145

网站简介 | 网站帮助 | 意见反馈 | 联系我们 | 广告服务 | 法律声明 | 友情链接 | 清除Cookie | 小黑屋 | 不良信息举报 | 网站举报

Copyright 2008-2024 21dianyuan.com All Rights Reserved    备案许可证号为:津ICP备10002348号-2   津公网安备 12010402000296号