计算机单片机延时方法电脑C语言.docx

计算机单片机延时方法电脑C语言.docx

ID:61698532

大小:22.09 KB

页数:16页

时间:2021-03-10

计算机单片机延时方法电脑C语言.docx_第1页
计算机单片机延时方法电脑C语言.docx_第2页
计算机单片机延时方法电脑C语言.docx_第3页
计算机单片机延时方法电脑C语言.docx_第4页
计算机单片机延时方法电脑C语言.docx_第5页
资源描述:

《计算机单片机延时方法电脑C语言.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、计算机单片机延时方法电脑C语言您需要登录后才可以回帖登录

2、注册发布单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能集成到一块硅片上构成的一个小而完善的微型计算机系统,在C语言的编程之中,我们怎样达到一个延时效果?快来看看的单片机延时的方法吧。1使用定时器/计数器实现精确延时单片机系统一般常选用11.0592MHz、12MHz或6MHz晶振。第一种更容易产生各种标准的波特率,后两种的一个机器周期分别为1μs和2μs,便于精确延时。本程序中假设使

3、用频率为12MHz的晶振。最长的延时时间可达216=65536μs。若定时器工作在方式2,则可实现极短时间的精确延时;如使用其他定时方式,则要考虑重装定时初值的时间(重装定时器初值占用2个机器周期)。在实际应用中,定时常采用中断方式,如进行适当的循环可实现几秒甚至更长时间的延时。使用定时器/计数器延时从程序的执行效率和稳定性两方面考虑都是最佳的方案。但应该注意,C51编写的中断服务程序编译后会自动加上PUSHACC、PUSHPSW、POPPSW和POPACC语句,执行时占用了4个机器周期;如程序中还有计数值加1语句,则又会占用1个机器周期。这些语句所消耗的时间在

4、计算定时初值时要考虑进去,从初值中减去以达到最小误差的目的。2软件延时与时间计算在很多情况下,定时器/计数器经常被用作其他用途,这时候就只能用软件方法延时。下面介绍几种软件延时的方法。2.1短暂延时可以在C文件中通过使用带_NOP_()语句的函数实现,定义一系列不同的延时函数,如Delay10us()、Delay25us()、Delay40us()等存放在一个自定义的C文件中,需要时在主程序中直接调用。如延时10μs的延时函数可编写如下:voidDelay10us(){_NOP_();_NOP_();_NOP_();_NOP_();_NOP_();_NOP_()

5、;}Delay10us()函数中共用了6个_NOP_()语句,每个语句执行时间为1μs。主函数调用Delay10us()时,先执行一个LCALL指令(2μs),然后执行6个_NOP_()语句(6μs),最后执行了一个RET指令(2μs),所以执行上述函数时共需要10μs。可以把这一函数当作基本延时函数,在其他函数中调用,即嵌套调用[4],以实现较长时间的延时;但需要注意,如在Delay40us()中直接调用4次Delay10us()函数,得到的延时时间将是42μs,而不是40μs。这是因为执行Delay40us(),先行了一次LCALL指令(2μs),然后开始行

6、第一个Delay10us(),行完最后一个Delay10us(),直接返回到主程序。依此推,如果是两嵌套用,如在Delay80us()中两次用Delay40us(),也要先行一次LCALL指令(2μs),然后行两次Delay40us()函数(84μs),所以,延86μs。言之,只有最内的函数行RET指令。指令直接返回到上函数或主函数。如在Delay80μs()中直接用8次Delay10us(),此的延间为82μs。通修改基本延函数和适当的合用,上述方法可以不同的延。2.2在C51中嵌套程序段延在C51中通理指令#pragmaasm和#pragmaendasm可以

7、嵌套言句。用写的言跟在#pragmaasm之后,在#pragmaendasm之前束。如:#pragmaasm⋯言程序段⋯#pragmaendasm延函数可置入口参数,可将参数定unsignedchar、int或long型。根据参数与返回的,参数和函数返回位于R7、R7R6、R7R6R5中。在用注意以下几点:◆#pragmaasm、#pragmaendasm不允嵌套使用;◆在程序的开头应加上预处理指令#pragmaasm,在该指令之前只能有注释或其他预处理指令;◆当使用asm语句时,编译系统并不输出目标模块,而只输出汇编源文件;◆asm只能用小写字母,如果把asm

8、写成大写,编译系统就把它作为普通变量;◆#pragmaasm、#pragmaendasm和asm只能在函数内使用。将汇编语言与C51结合起来,充分发挥各自的优势,无疑是单片机开发人员的最佳选择。2.3使用示波器确定延时时间利用示波器来测定延时程序执行时间。方法如下:编写一个实现延时的函数,在该函数的开始置某个I/O口线如P1.0为高电平,在函数的最后清P1.0为低电平。在主程序中循环调用该延时函数,通过示波器测量P1.0引脚上的高电平时间即可确定延时函数的执行时间。方法如下:sbitT_point=P1^0;voidDly1ms(void){unsignedin

9、ti,j;while(1

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。