找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

C语延时分析----51系列单片机

[复制链接]
admin 发表于 2012-8-24 12:39:24 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
C语写的,单片机AT89S52,编译器KEIL2。
无聊的东西。

有错请大家指出啊,谢谢。

/****************C语*******************/
void delay(uint delaytime)
{
while(delaytime--);
}

/****************汇编******************/

C:0x0840 EF MOV A,R7 //1个机器周期
C:0x0841 1F DEC R7 //1个机器周期
C:0x0842 AC06 MOV R4,0x06 //1个机器周期
C:0x0844 7001 JNZ C:0847 //2个机器周期
C:0x0846 1E DEC R6 //1个机器周期
C:0x0847 4C ORL A,R4 //1个机器周期
C:0x0848 70F6 JNZ delay(C:0x0840) //2个机器周期
C:0x084A 22 RET //2个机器周期
/**************************************/
运行时间(周期):
8*[(R7+1)+256*R6]+1*R6+2
平均时间约为8个机器周期
占用资源:ACC,R4,R6,R7


/**************************************/



/****************C语*******************/
void delay(uint delaytime)
{
while(--delaytime);
}

/****************汇编******************/

C:0x0840 EF MOV A,R7 //1个机器周期
C:0x0841 1F DEC R7 //1个机器周期
C:0x0842 7001 JNZ C:0845 //2个机器周期
C:0x0844 1E DEC R6 //1个机器周期
C:0x0845 14 DEC A //1个机器周期
C:0x0846 4E ORL A,R6 //1个机器周期
C:0x0847 70F7 JNZ delay(C:0x0840) //2个机器周期
C:0x084A 22 RET //2个机器周期
/**************************************/
运行时间(周期):
6*(R7+256*R6)+1*R6+2
平均时间约为6个机器周期
占用资源:ACC,R6,R7


/**************************************/




/****************C语*******************/
void delay(uint delaytime)
{
for(;delaytime==0;--delaytime);
}

/****************汇编******************/

C:0x0840 EF MOV A,R7 //1个机器周期
C:0x0841 4E ORL A,R7 //1个机器周期
C:0x0842 7007 JNZ C:084B //2个机器周期
C:0x0844 EF MOV A,R7 //1个机器周期
C:0x0845 1F DEC R7 //1个机器周期
C:0x0846 70F8 JNZ delay(C:0x0840) //2个机器周期
C:0x0848 1E DEC R6 //1个机器周期
C:0x0849 80F5 SJMP delay(C:0x0840) //2个机器周期
C:0x084B 22 RET //2个机器周期
/**************************************/
运行时间(周期):
4+8*(R7+256*R6)+3*R6+2
平均时间约为8个机器周期
占用资源:ACC,R6,R7


/**************************************/
void delay(uint delaytime)
{
for(;delaytime==0;delaytime--);
}
同上一样 for(;delaytime==0;--delaytime);。
/**************************************/


所以延时程序里面个人感觉while(--delaytime);不错,但是是3的倍数。
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-11-23 17:07 , Processed in 0.060970 second(s), 11 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表