Keil C51精确延时程序设计
光标为当前程序的停止处,左侧的寄存器窗口可以看到一些寄存器名称及其值。可以通过设置断点的功能,每遇到断点,程序会自动停止在断点处。“sec”中数据的变化即为程序执行处到断点处所需的时间。对上述程序将断点设置在“P1=P1^0x01”代码处,然后点击全速运行可以得表2所示。本文引用地址:https://www.eepw.com.cn/article/170502.htm
从表2可以看出,delay函数执行的时间△t=2 391-389=2 002μs,与理论分析结果一样。
3 应用实例
DS18B20是一款单总线数字式温度传感器,对其控制必须按照严格的时序要求,有3个重要时序,分别是初始化、读以及写时序,时序图如图3所示。
由图3可知,涉及到延时程序的要求为:
初始化。(1)将总线低480~960μs,然后释放总线。(2)DS18B20等待15~60μs,然后返回低电平并持续60~240μs的存在脉冲。
写时序。(1)将总线置低电平并且持续15μs后发送数据的某一位。(2)延时60~120μs然后将总线拉高并持续至少1μs的时间后开始下一次发送。
读时序。(1)将总线置低电平,并且持续至少1μs,然后释放总线。(2)释放总线后15μs内读取并处理数据。(3)处理数据后延时,保证第一个步骤到延时结束时间至少60μs后为电阻上拉状态。
采用延时程序的设计方法,利用for循环编写delay函数和_nop_()函数控制DS18B20。
通过以上延时程序的控制方法,DS18B20稳定实现了温度采集。充分说明了高效的延时程序设计,在开发一些需要使用到延时程序时,可以先用Keil C51先设计好延时程序,然后利用以上方法进行分析计算,最后直接调用,可节省大量的时间、提高CPU的使用效率。
4 结束语
Keil C51具有强大的功能,只要利用合理,可以给开发者节省大量的时间,从而提高开发效率。另外在设计延时程序的时候,应该综合考虑各种延时程序的特点,以优化CPU的使用效率。
c语言相关文章:c语言教程
尘埃粒子计数器相关文章:尘埃粒子计数器原理 晶振相关文章:晶振原理 燃气报警器相关文章:燃气报警器原理
评论