在单片机Keil C开发环境中设计精确的延时函数.pdfVIP

在单片机Keil C开发环境中设计精确的延时函数.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
工程学

第 22 卷第 8 期 徐 州 工 程 学 院 学 报 2 007 年 8 月 V ol . 22 No . 8 Jo ur nal of Xuzhou In stitu t e o f Technolog A U G1 2 007 在 单 片 机 Keil C 开 发 环 境 中 设 计 精 确 的 延 时 函 数 张  宏 ,邢文生 (焦作大学 ,  河南  焦作  454000)   【摘  要 】 Keil C 语言是开发单片机系统常用 的语言 ,但不能象汇编语言一样预测代码执行 的指令周期 ,对外 围元件实现精确 的延时控制比较困难. 文章从 Keil C 的编译原理 出发 ,分析几种 延时函数 ,实现了精确 的延时效果 . 【关键词 】 单片机 ; Keil C 语言 ;延时 【中图分类号 】 TP3 68 . 1  【文献标识码 】A 【文章编号】167 320 704 (2 007) 0820064204 单片机的编程语言有汇编语言和 Keil C 语言等 . 相对汇编来说 , Keil C 具有代码编写方便 、易于维护 、 便于理解的优点 ,适合编写大的项 目, 已被广泛使用. 但它不能够象汇编代码那样直接计算 出每条语句 的执 行周期 ,无法预测代码执行的指令时间 ,在实时性方面不易保证. 如果某个外 围元件需要比较精确 的延时 ,用 计时器会浪费宝贵的单片机资源 ,那么如何在 Keil C 语言中编写出可 以实现精确延时的延时函数就具有很 重要的实用意义. 1  单片机工作原理及 Keil C 语言实现延时的机制 51 单片机系统由单片机 、晶振 、外围元件等组成. 使用时需要在单片机的时钟 引脚 X TA L 1 、X TAL 2 接 上石英 晶振或有源晶振 ,晶振的作用是 向单片机提供外部 的振荡脉冲. 单片机 内部有指令寄存器 PC ,在晶振 脉冲的作用下单片机一步步地执行指令寄存器所指 的命令 ,这就是单片机语言的执行过程. 单片机延时程序就是让单片机执行许多空操作. 单片机 Keil C 语言实现延时程序的实现机制如图 1 所 示. 由图 1 可 以看 出 , Keil C 编译器翻译器 的功能是将标准的 Keil C 语言生成单片机能够认识 的汇编指令 . Kei l C 环境中 ,如果想查看 Keil C 语言生成 的汇编指令 ,需要在程序编译成功后 ,启动菜单下 D ebu g 命令下 的 sta rt/ stop deb ug ses sion 项 ,系统就会 出现编译后对应 的汇编语句 ,并可以根据汇编语句计算 出延时的时 间. 51 单片机机器周期的是晶振频率的 1/ 12 ,每条汇编指令执行使用的所 占的机器周期不 同. 延时时间的计 算公式是 :总机器周期数 ×晶振频率/ 12 . 为了计算方便 ,假定本系统使用 的晶振是 12M Hz . 2  Keil C 语言实现延时程序分析 2 . 1 常见的延时代码 的分析 Keil C 语言实现延时一般使用循环语句 ,下面是经常使用 的延时代码 : voi d del a (u nsigned c har i) { for ( ; i ! = 0 ; i - - ) ; } Keil C 将循环体 for ( ; i ! = 0 ; i - - ) 转换成的汇编代码及其机器周期数如表 1. 收稿 日期 : 21 ( ) 作者简介 : 张  宏 19662 ,男 ,河南焦作人 ,副教授 ,主要从事计算机 自动控制技术研究. ·64 · © 张宏 ,等 : 在单片机 Keil C 开发环境中设计精确的延时函数 图 1  Keil C 语言延时的实现机制

文档评论(0)

fengbing + 关注
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档