-nop- c语言_nop_,关于单片机C51中c语言函数?

实现延时通常有两种方法:一种是硬件延时,要用到定时器/计数器,这种方法可以提高CPU的工作效率,也能做到精确延时;另一种是软件延时,这种方法主要采用循环体进行 。
1 使用定时器/计数器实现精确延时
单片机系统一般常选用11.059 2 MHz、12 MHz或6 MHz晶振 。第一种更容易产生各种标准的波特率,后两种的一个机器周期分别为1 μs和2 μs,便于精确延时 。本程序中假设使用频率为12 MHz的晶振 。最长的延时时间可达216=65 536 μs 。若定时器工作在方式2,则可实现极短时间的精确延时;如使用其他定时方式,则要考虑重装定时初值的时间(重装定时器初值占用2个机器周期) 。
在实际应用中,定时常采用中断方式,如进行适当的循环可实现几秒甚至更长时间的延时 。使用定时器/计数器延时从程序的执行效率和稳定性两方面考虑都是最佳的方案 。但应该注意,C51编写的中断服务程序编译后会自动加上PUSH ACC、PUSH PSW、POP PSW和POP ACC语句,执行时占用了4个机器周期;如程序中还有计数值加1语句,则又会占用1个机器周期 。这些语句所消耗的时间在计算定时初值时要考虑进去,从初值中减去以达到最小误差的目的 。
【-nop-c语言_nop_,关于单片机C51中c语言函数?】2 软件延时与时间计算
在很多情况下,定时器/计数器经常被用作其他用途,这时候就只能用软件方法延时 。下面介绍几种软件延时的方法 。
2.1 短暂延时
可以在C文件中通过