欢迎来到天天文库
浏览记录
ID:40819302
大小:94.00 KB
页数:8页
时间:2019-08-08
《单片机精确延时计算和中断定时》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、单片机精确延时计算和定时中断一.延时1.10ms延时程序(for循环嵌套)*********************************************************************文件名称:voiddelay_10ms()功能:10ms延时参数:单片机晶振12MHz*********************************************************************voiddelay_10ms(){unsignedinti,j;for(i=0;i<10;i++){for(j=0;j<124;j++);}}
2、for循环执行时间为7个机器周期,“;”一个机器周期,每次调用for循环2个机器周期。则执行本段延时程序是内循环时间t1=(7+1)*124+2个机器周期,其中“7”执行for循环指令时间;“1”为执行“;”等待一个机器周期时间;“124”为for循环次数;“2”为每次调用for循环指令的时间。外循环t2=t1*10+(7+2)*(10+1),其中“10”为for循环次数;“7+2”为一次for循环指令调用和执行时间;“10+1”为调用for循环次数,10为执行次数,1为最后一次判断for循环是否继续的时间。所以本程序延时t=(((7+1)*124)+2)*10+(7+2
3、)*(10+1)=10039=10.039ms≈10ms。注意,每次调用for循环需要2个机器周期的调用时间,执行for循环判断需要7个机器周期的执行时间。程序运行到第一个断点所用时间0.00038900s,运行到第二个断点所用时间为0.01042800s,则执行delay_10ms()函数所用时间为0.010428-0.000389=0.010039s10.039ms≈10ms。2.10μs短暂延时*********************************************************************文件名称:voiddelay10μs
4、()功能:10μs延时参数:单片机晶振12MHz,机器周期1μs*********************************************************************voiddelay10μs(){_NOP_();_NOP_();_NOP_();_NOP_();_NOP_();_NOP_();}函数中共用了6个_NOP_()语句,每个语句执行时间为1μs。主函数调用delay10μs()时,先执行一个LCALL指令(2μs),然后执行个_NOP_()语句(6μs),最后执行了一个RET指令(2μs),所以执行上述函数时共需要10μs。可
5、以把这一函数当作基本延时函数,在其他函数中调用,即嵌套调用,以实现较长时间的延时;但需要注意,如在delay40μs()中直接调用4次delay10μs()函数,得到的延时时间将是42μs,而不40μs。这是因为执行delay40μs()时,先执行了一次LCALL指令(2μs),然后开始执行第一个delay10μs(),执行完最后一个delay10μs()时,直接返回到主程序。依此类推,如果是两层嵌套调用,如在delay80μs()中两次调用delay40μs(),则也要先执行一次LCALL指令(2μs),然后执行两次delay40μs()函数(84μs),所以,实际延时
6、时间为86μs。简言之,只有最内层的函数执行RET指令。该指令直接返回到上级函数或主函数。如在delay80μs()中直接调用8次delay10μs(),此时的延时时间为82μs。通过修改基本延时函数和适当的组合调用,上述方法可以实现不同时间的延时。二.定时中断:1.定时器/计数器:8051单片机有2个16为定时器/计数器(8052有3个),它可设置为计数方式,对外部事件(脉冲)进行计数;也可以设置为定时方式,对标准时钟脉冲进行定时计时。它有4中工作方式,定时和计数范围可以通过软件编程进行设定。一旦定时或计数到位,就会立即向CPU发送中断请求,CPU根据定时或计数结果对外
7、设实行控制。单片机具有5~8个中断源,2级中断优先级。它可接收外部中断请求、定时器/计数器中断请求和串行口中断请求。对紧急事件的实时控制、故障自动处理、单片机与外设之间的数据传输、人机对话等。定时器/计数器的核心是两个16位的加法计数器,T0,T1分别由两个8位的特殊功能寄存器TH0,TL0和TH1,TL1构成。定时器/计数器工作方式控制器TMOD,字节地址89H:GATEC/T非M1M0GATEC/T非M1M0
8、定时器/计数器T1
9、定时器/计数器T0
10、GATE:GATE为0时,定时器/计数器由软件控制位TRx(x为0或1)来
此文档下载收益归作者所有