完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在使用C语言编程时延时程序是非常常见的,但是实现一个精确的延时是不太容易的,在给一个朋友的公司产品做维护时,发现一段代码,可以实现微妙级的延时。看起来代码非常简单。但是我以前没有想到过。我们一起来看看这段代码。 //----------------------------------------------------------------------------- // Delay_us //----------------------------------------------------------------------------- // // Return Value : None // Parameters : 1. time_us - time delay in microseconds // range: 1 to 255 // // Creates a delay for the specified time (in microseconds) using TIMER2. The // time tolerance is approximately +/-50 ns (1/SYSCLK + function call time). // //----------------------------------------------------------------------------- void Delay_us (unsigned char time_us) { unsigned long int TM_LODAE; TR2 = 0; // Stop timer TF2H = 0; // Clear timer overflow flag TM_LODAE = 65535-(UINT)(SYSCLK/1000000) * (UINT)(time_us); // TMR2 = -( (UINT)(SYSCLK/1000000) * (UINT)(time_us) ); TMR2H = TM_LODAE>>8; TMR2L = TM_LODAE&0x00FF; TR2 = 1; // Start timer while (!TF2H); // Wait till timer overflow occurs TR2 = 0; // Stop timer } 前面一起住航分析一下该代码:
|
|
相关推荐
7个回答
|
|
不错,顶。。。。。
|
|
|
|
{:12:}{:12:}{:12:}{:12:}{:12:}
|
|
|
|
还不错,挺好的
|
|
|
|
谢谢分享。先收藏收藏,字数不够。
|
|
|
|
不回复是不是不可以收藏的呢
|
|
|
|
用定时器做延时
|
|
|
|
好贴,必须顶!好经验,要分享,才能共同学习,进步吗!
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
690 浏览 0 评论
735 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
624 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
1099 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1092 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11795 浏览 31 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 13:01 , Processed in 0.607773 second(s), Total 53, Slave 46 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号