|
发表于 2020-7-1 12:37:21
|
显示全部楼层
C程序没办法直接计算,要具体看生成的汇编程序
这里推荐一个本人很久前写的延时函数,C语言写的,延时飞常准
https://wenku.baidu.com/view/cafedacfa1c7aa00b52acb87
void delayms(unsigned char t)
{
unsigned char j;
unsigned char i;
do
{
j=3;
do
{
i=165;
do
{
--i;
}
while(i!=0);
--j;
}
while(j!=0);
--t;
}
while(t!=0);
}
该程序延时时基为1ms,所以最大延时时间是255ms
下面是反编译的汇编程序
C:0x0031 7E03 MOV R6,#0x03
C:0x0033 7DA5 MOV R5,#0xA5
C:0x0035 DDFE DJNZ R5,C:0035
C:0x0037 DEFA DJNZ R6,C:0033
C:0x0039 DFF6 DJNZ R7,delayms(C:0031)
C:0x003B 22 RET
延时时间计算公式如下:
((R5*2 + 2+1)*R6+2+1)R7
假设R7=1,上式为(165*2+3)*3+2+1 =1002us!!!!! |
|