- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第2卷第4期 南 阳 理工 学 院 学报 V01.2No.4
2 OFNANYANGINSTITUTE.0FTECHNOLOGY
0.10年7月 JOURNAL Jul.20lO
文章编号:1674—5132(20lOl04一0017一03
Keil
C下用软件精确延时的实现
鲁庆宾,邵艳玲
(南阳理工学院河南南阳473004)
摘要:在单片机的应用系统中。经常需要用到不同精度的时间延时,在不同场合下,延时时间可能从几微秒到几
秒。实现延时的方法有很多种,在汇编语言中很容易实现高精度的时间延时,在高级语言中,循环延时的精度很难
计算。本文对比常用的延时方法。给m在Keilc下不同的指令对应的汇编指令,计算其执行时间,得到延时时间的
精确计算,以满足不同场合的需求。
关键词:Keilc;汇编语言;单片机;精确延时;定时器
中固分类号:TP309.05文献标识码:A
#includeintrins.h
void
O 前言 delay()
{
单片机因为体积小、功能强、控制灵活的特点在 一NOP一();
各个领域内有着非常广泛的应用,控制过程中经常 }
会遇到不同精度的时间需求,如键盘去抖延时、数据 当调用该函数时,首先一条长调用指令LCALL
传输过程延时,时间可以是毫秒级,而在单总线温度 占2个机器周期,NOP指令占1个机器周期,返回指
令RET占2个机器周期…,共计5个机器周期,函
传感器Dsl8820的使用中,延时要求精确到微
秒级…。 数延时5¨s。
用汇编语言实现这些延时,是非常简单的事情, 一NOP一();指令每增加一条,延时时间增
因为延时时间很容易计算。 加l¨s。
但是汇编语言是针对具体的微处理器而特有
的。除了通用性差,不可移植的特点外,最大的问题 令的数目。
是对于初学者来说,学习难度大,很难掌握。因此, 1.2 for循环延时
在单片机的开发过程中,最多的是使用单片机的高 程序如下:
Void
级语言编程环境,如KeiIC。 delay()
在Keil {
C下,不同延时程序的编写方法其延时
char
c下写延时函数时要 i;
时间区别非常大,所以在Keil unsigned
注意编程技巧,针对不同的延时要求精度和延时时 for(i=O;i1;i++);
间选择不同的方法。 }
该段程序对应的反汇编语言指令为:
l使用软件延时
原创力文档


文档评论(0)