欢迎来到天天文库
浏览记录
ID:34488927
大小:100.49 KB
页数:3页
时间:2019-03-06
《单片机c语言的精确延时程序设计new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、经验交流EXPERIENCEEXCHANGE※单片机C语言的精确延时程序设计■东北电力学院盛文利现在单片机的开发中,C语言以其方便、灵活、逻法,在生成目标代码时,会有所不同。开发人员必须研辑性强、易于维护和可移植性好等强大优势,占据了单究它生成的汇编语言代码,来保证时间的准确性。这也片机开发的主要地位。过去,由于单片机C语言本身存许是除了使用嵌入汇编或直接编写汇编函数的唯一方在的缺陷,加之单片机工程项目本身都不大,C语言在法。其实在单片机的C编译器中,已经有足够底层操作单片机中的应用没有被重视。在C语言环境下,只需关方面的扩展,所以这里只考虑纯C语言的方
2、法。心程序的逻辑关系,实现细节则由编译器完成,这为快3延时程序设计速开发提供了条件,也大大减小了开发工作量。但同时,实现细节就不被控制了,这个问题对于经常重视实以德国Keil公司的C51编译器为例,目前它已被公认为业界的标准。以下讨论均假设51单片机时钟晶振现细节的单片机,就必须要得到解决。好在一般的C语为6MHz,以小模式下编译,这时程序指令执行的最小言编译器都提供嵌入汇编、与汇编互调用和汇编级的代单位是2μs。如果使用非英特尔且内核优化过的单片码察看等功能。现以KeilC51(见参考文献[1])下的单总线器件程序开发为例,说明解决方法。机,应切换回普
3、通模式,或仔细研究它的时序。以DS18B20为例,临时在程序中需要延时2μs,那么可以1单总线协议器件用下述程序。单总线协议(1wirebusprotocol)是单总线器件数据传#include输协议。因为数据(也可以包括电源)都由一条线来传voidsomefunc(void)输,没有辅助的数据同步信号,这时就只能由时序来解{⋯⋯;_nop_();析协议内容。这样就只有依靠对时序的严格要求,来保⋯⋯;障数据传输的准确性。}单总线协议的信号主要有:初始化时序(包括复位如果要延时64μs甚至640μs,那么不可能在程序脉冲和在线脉冲,是
4、主机与器件的联络信号)和读、写中重复上述_nop_(),虽然这并不会出错。可以利用它时序。单总线器件完全依靠对线上的时序来做出响应,来构建延时程序,精确定时的问题就变为延时程序的精这些有效的时序称作时隙,也有称作时间片的,是同一度问题。首先讨论空操作延时。词汇的不同翻译(见参考文献[2])。初始化时序时间裕度大,容易实现。读写脉冲对时3.1空操作延时及延时函数序要求相对严格,尤其在慢速的MCS-51下,指令的运注意到DS18B20最小时隙除大于1μs的外,最小行在μs级,读写时序在15μs的后一小部分,大约4μs,的就是15μs,而数据的读或写也包含在这
5、15μs中。不同批次的芯片会有少许差距。有的会允许你的时序有由于定时器的延时要对定时器进行初始化,不易得到小少许误差,有的则非常严格。的延时。只能用于复位脉冲,即在480~960μs之间的延时,程序实现接近960μs的延时。2C语言编译器TH0=-950/256;在用汇编语言编写程序时,很容易控制时间,因为TL0=-950%256;我们知道每条语句的执行时间,每段宏的执行时间以及TMOD=TMOD
6、0x01每段子程序加调用语句所消耗的时间。在单片机的C语TR0=1;言开发中,C语言编译器都对标准C作了针对单片机特定时器启动后,单片机可以作其它事情,如复位
7、看点的扩展。但对于不同的单片机,不同的C语言编译器门狗或LED扫描。在将源程序翻译成目标机器语言时,会有不同的编译方调用的短延时函数必须精确地受到控制,先作一个2004.10Microcontrollers&EmbeddedSystems67经验交流EXPERIENCEEXCHANGE几μs的延时实验程序,以观察它实际的延时时间。在NAMEDLY汇编时代常用的延时指令为:?PR?_delay3?DLYSEGMENTCODEMOVR7,DDLYPUBLIC_delay3DJNZR7,$RSEG?PR?_delay3?DLY产生最小4μs的延时,仿造的C程序
8、如下:_delay3:voiddelay1(ndly)DJNZR7,$;4μs{for(;ndly>0;ndly--);RET;4μs}END生成的汇编代码与DJNZ无关,是如下形式的,其嵌入汇编的方法如下:voiddelay4(unsignedcharvd)中无关的编译注释已删除。{#pragmaasmRSEG?PR?_delay1?DLY2DJNZR7,$;_delay1:#pragmaendasmUSING0}?C0006:MOVA,R7;2μs编译后的形式:SETBC;2μs?PR?_delay4?DLYSEGMENTCODESUBBA,#00H
9、;2μs?DT?_delay4?DLYSEGMENTDATAOVERLAYABL
此文档下载收益归作者所有