c语言实现:
WAVE仿真器,处理器89c51,晶振12MHz.
#include<define.h>
#include<AT89X51.H>
#include<global.h>
void delay(int time);
int time;
main()
{delay(1); //us延时
delay(10);
delay(50);
}
void delay(int time)
{do {time--;
}while(time>1);
}********delay(1); 实际用时18us
*********delay(5); 实际用时54us
*********delay(10); 实际用时114us
*********delay(50); 实际用时594us
*********delay(100); 实际用时1194us
汇编实现:
延时时间常数(十进制)保存在R2中,处理器89c51,晶振12MHz,WAVE仿真器
ORG 0000H
JMP MAIN
ORG 0100h
MAIN:
MOV r2,#1
CALL DELAYUS
ljmp main
DELAYUS: NOP ;10us延时DELAYUS
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R2,DELAYUS
RET******************计数值R2=1时,CALL DELAYUS用时14uS
******************计数值R2=5时,CALL DELAYUS用时54uS
******************计数值R2=10时,CALL DELAYUS用时104uS
******************计数值R2=50时,CALL DELAYUS用时504uS
******************计数值R2=100时,CALL DELAYUS用时1004uS
通过以上对比,可以发现,在微秒级延时方面:汇编程序远比C程序准确。
所以在对延时要求苛刻的程序编写时,我选用汇编延时程序。对于延时没有严格要求时,我们尽可以享受C语言带给我们编程的方便。
文章评论(0条评论)
登录后参与讨论