文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院程序开发C/C++51单片机Keil C延时程序的简单研究
精品推荐
特别推荐
·C语言编程易犯毛病集合
·C语言编程常见问题解答(目录)
·C#程序开发中的常用函数汇总
·C/C++笔试、面试题目大汇总
·Beej的网络socket编程指南
·socket编程原理
·C语言的常用库函数使用方法分析及用途
·在C语言中如何处理时间和日期
·C++设计模式之Singleton
·VC++动态链接库编程之MFC扩展 DLL
热点TOP10
·进程和线程编程
·C语言编程易犯毛病集合
·打字游戏
·Awk 基础入门:Awk 实例编程
·asp.net中调用javascript函数实现多功能日期控件示例
·C语言编程常见问题解答之常用函数的包含文件(1)
·C# GridView 排序及分页
·C #中的几个线程同步对象方法
·无废话C#设计模式之三:Abstract Factory
·C# DataGridView隔行显示不同的颜色

51单片机Keil C延时程序的简单研究

日期:2008年6月1日 作者: 查看:[大字体 中字体 小字体]


任何人都可以在注明原作者和出处的前提下随意转载这篇文章,但不得用于商业目的。


    应用单片机的时候,经常会遇到需要短时间延时的情况。需要的延时时间很短,一般都是几十到几百微妙(us)。有时候还需要很高的精度,比如用单片机驱动DS18B20的时候,误差容许的范围在十几us以内,不然很容易出错。这种情况下,用计时器往往有点小题大做。而在极端的情况下,计时器甚至已经全部派上了别的用途。这时就需要我们另想别的办法了。
    以前用汇编语言写单片机程序的时候,这个问题还是相对容易解决的。比如用的是12MHz晶振的51,打算延时20us,只要用下面的代码,就可以满足一般的需要:
        mov     r0, #09h
loop:   djnz    r0, loop
51单片机的指令周期是晶振频率的1/12,也就是1us一个周期。mov r0, #09h需要2个极其周期,djnz也需要2个极其周期。那么存在r0里的数就是(20-2)/2。用这种方法,可以非常方便的实现256us以下时间的延时。如果需要更长时间,可以使用两层嵌套。而且精度可以达到2us,一般来说,这已经足够了。
    现在,应用更广泛的毫无疑问是Keil的C编译器。相对汇编来说,C固然有很多优点,比如程序易维护,便于理解,适合大的项目。但缺点(我觉得这是C的唯一一个缺点了)就是实时性没有保证,无法预测代码执行的指令周期。因而在实时性要求高的场合,还需要汇编和C的联合应用。但是是不是这样一个延时程序,也需要用汇编来实现呢?为了找到这个答案,我做了一个实验。
    用C语言实现延时程序,首先想到的就是C常用的循环语句。下面这段代码是我经常在网上看到的:
void delay2(unsigned char i)
{
    for(; i != 0; i--);
}
到底这段代码能达到多高的精度呢?为了直接衡量这段代码的效果,我把 Keil C 根据这段代码产生的汇编代码找了出来:
             ; FUNCTION _delay2 (BEGIN)
                                           ; SOURCE LINE # 18
;---- Variable 'i' assigned to Register 'R7' ----
                                           ; SOURCE LINE # 19
                                           ; SOURCE LINE # 20
0000         ?C0007:
0000 EF                MOV     A,R7
0001 6003              JZ      ?C0010
0003 1F                DEC     R7
0004 80FA              SJMP    ?C0007

[1] [2] [3] 下一页 




上一篇:256色汉字显示程序

下一篇:a simple menu programme

相关文章:
·《龙珠大冒险》攻击技巧研究(GBA) - 龙珠Z攻略秘籍 - 龙珠Z
·Windows Vista Ultimate中文旗舰版下载+简单破解(支持迅雷HTTP & BT)
·添加或删除启动时自动运行的程序
·Photoshop十余种漂亮照片边框简单制作技巧
·简单方法查找黑客老巢
·IE新开窗口最大化最简单有效方法
·FC API(JSR 75)简单讲解
·教你简单方法查找黑客的老巢
·不用任何软件(木马程序)盗取账号密码
·网站图片进行搜索引擎优化研究
相关软件:
·C语言程序设计
·Windows环境下32位汇编语言程序设计
·零起点教你如何破解软件和制作注册机 and 视频+程序
·硅谷 C++程序设计视频教程 齐幼菊
·刘其奇单片机视频教程1-17 CSF 本人听过的最好的单片机视频教程
·C语言程序设计视频教程 CSF 教材:谭浩强《c程序设计》
·FLASH个人简历源程序(FLA)
·热带鱼水族箱屏幕保护程序 V2.0 汉化版
·Matlab程序设计
·93全国硕士研究生入试政治试题(文科)

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:viphot