51单片机C语言精确延时程序(超级准)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

51单片机C语言精密延时程序

程序如下:

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!!!!!

以上程序使用的晶振是12MHz,如果使用的是其他频率的晶振只需计算出1ms的机器周期

数,代入5*2 + 2+1)*R6+2+1,选择合适的R5,R6即I,j的值就行了。

相关文档
最新文档