在单片机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期 徐 卅I T 程 学 院 学 报 2007年 8月 Vol_22 NO.8 JournalofXuzhou InstituteofTechnology AUG. 2007 在单片机 KeilC开发环境中设计精确的延时函数 张 宏 ,邢文生 (焦作大学. 河 南 焦作 454000) 【摘 要1 KeilC语言是开发单片机系统常用 的语言,但不能象汇编语言一样预测代码执行 的指令周期,对外围元件实现精确的延时控制比较困难.文章从 KeilC的编译原理 出发,分析几种 延 时函数,实现 了精确 的延时效果. 【关键词】 单片机 ;KeilC语言;延时 【中图分类号1 TP368.1 【文献标识码】A 【文章编号】1673—0704(2007)08—0064—04 单片机的编程语言有汇编语言和KeilC语言等.相对汇编来说 ,KeilC具有代码编写方便、易于维护、 便于理解的优点,适合编写大的项 目,已被广泛使用.但它不能够象汇编代码那样直接计算 出每条语句 的执 行周期,无法预测代码执行的指令时间,在实时性方面不易保证.如果某个外围元件需要比较精确的延时 ,用 计时器会浪费宝贵的单片机资源,那么如何在 KeilC语言中编写出可以实现精确延时的延时函数就具有很 重要的实用意义. 1 单片机工作原理及 KeilC语言实现延时的机制 51单片机系统由单片机 、晶振、外围元件等组成.使用时需要在单片机 的时钟引脚 XTAI1、XTAL2接 上石英晶振或有源晶振,品振的作用是向单片机提供外部的振荡脉冲.单片机内部有指令寄存器 PC,在晶振 脉冲的作用下单片机一步步地执行指令寄存器所指的命令 ,这就是单片机语言的执行过程. 单片机延时程序就是让单片机执行许多空操作.单片机 KeilC语言实现延时程序的实现机制如图 1所 示.由图 1可以看m,KeilC编译器翻译器的功能是将标准的KeilC语言生成单片机能够认识的汇编指令. KeilC环境巾,如果想查看 KeilC语言生成的汇编指令 ,需要在程序编译成功后,启动菜单下Debug命令下 的start/stopdebugsession项 ,系统就会出现编译后对应的汇编语句,并可以根据汇编语句计算出延时的时 间.51单片机机器周期的是晶振频率的 1/12,每条汇编指令执行使用的所 占的机器周期不 同.延时时间的计 算公式是 :总机器周期数 ×晶振频率 /12.为了计算方便 ,假定本系统使用的晶振是 12MHz. 2 KeilC语言实现延时程序分析 2.1 常见的延时代码的分析 KeilC语言实现延时一般使用循环语句 ,下面是经常使用的延时代码 :· voiddelay (unsignedchari) 』 for(;i!一 0;i一一); } KeilC将循环体 for(;i!一 0;i )转换成的汇编代码及其机器周期数如表 1. 收稿 日期 :200703—21 作者简介 :张 宏 (1966),男,河南焦作人 ,副教授 ,主要从事计算机 自动控制技术研究 · 64 · 维普资讯 张宏 ,等 :在单片机 KeilC开发环境 中设计精确的延时函数 l 根据延时函数的总指令周期计算出延时时间 图 1 KeilC语言延 时的实现机制 Fig.1 ThedelayfunctionwithKeilC 表 1 循环体 for(:i!一 0;i一一)转换成的汇编代码 Table1 Th

文档评论(0)

fengbing + 关注
文档贡献者

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

1亿VIP精品文档

相关文档