c51怎么写延时程序??

来源:百度知道 编辑:UC知道 时间:2024/06/10 10:56:19
c51怎么写延时程序??要怎么计算??
不是用定时器

用汇编语句写循环,看每个指令的周期是多少

循环一次要多少个指令,加上前后的几个,就是总的延时

网上有关于这方面的讨论的帖子的

举个例子
延迟500uS

unsigned char i;
for(i=248;i>0;i--);

相当于
BUF: MOV R7,#0xF8 ;0xF8=248
DJNZ R7,BUF

第一条指令要用2个机器周期
第二条指令要用2个机器周期
2+2*248约等于500个机器周期

先在主函数声明一下:
void TIME(uint t);

子程序很简单:
void TIME(uint t)
{
while(--t);
}
单片机晶振为12MHZ,
如需“延时100ms”,将“t”赋值“50”
即 TIME(50);