dwlovework 发表于 2011-7-25 13:21:31

贡献一个精确计算延时的方法把(STC的1T单片机)

有时候程序中需要精确的计算延时时间,比如在读写DS18B20的时候,就需要精确的延时。
网上也有很对关于如何精确计算延时的帖子,但是关于STC的比较少。
下面的是我自己理解的。说的不对请大家指正
首先,延时us级别的函数C如下:
void Delay15us(unsigned char n)
{
        unsigned char i;
        do{
                for(i=0;i<9;i++);
                n--;
          }while(n);
}
查看生成的汇编代码:
L1:CLR A
MOV R6,A
L2:INC R6
CJNE R6,#0X09,L2
DJNZ R7,L1
RET
然后查询STC单片机的手册的指令周期的除上述的程序需要的指令周期为:*T
需要注意的是这个T为单片机的机器周期,这里没有12分频。STC的单片机的机器周期都是1/Fos.有个寄存器可以设置其实周期为传统的51机器周期指的仅仅是定时器的周期。而不是指令周期,这里大家需要注意下
页: [1]
查看完整版本: 贡献一个精确计算延时的方法把(STC的1T单片机)