89c51单片机延时问题,怎么求出延时是100ms,求详细回答。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了89c51单片机延时问题,怎么求出延时是100ms,求详细回答。相关的知识,希望对你有一定的参考价值。

void Delay100ms(void) //22.1184MHz

unsigned char i, j, k;
_nop_();
_nop_();
i = 9;
j = 104;
k = 139;
do

do

while (--k);
while (--j);
while (--i);

怎么算就不说了 有个很好的软件可以直接计算延时 中断波特率等


参考技术A 22.1184MHZ z=1时精确延时1ms)
void delay_1ms(uint z)

uint x,y;
for(x=z; x>0; x--)
for(y=1696; y>0; y--);
//你自己设置一下数值 这个延时相对来说 比较精确了 要是要相对精确 那就得用定时器了

定时器T0 工作方式1 晶振频率22.1184MHz
定时器最大定时时间(us):32768
定时器最小定时时间(us):0.5

【1ms精确定时C51代码】
void T0_init(void) //定时器初始化

TMOD |= 0x01;
TH0 = 0xf8; //设置定时器计数初值,定时1000us
TL0 = 0x33;
IE |= 0x82; //打开总中断
TR0 = 1; //启动定时器


void T0_intservice(void) interrupt 1 //定时器

TH0 = 0xf8; //重装载定时器计数初值
TL0 = 0xcc;
//其他处理程序 定时器你会用很明白就看懂了 ;
追问

1/22.1184M * 12 *1696 *1000=0.92ms约 1ms 是这样算吗

追答

en

参考技术B C 语言,是高级语言。

经过编译,可通用在不同的 CPU 上。

运行时间,取决于 CPU。

C 语言本身,根本就没有时间概念。

C 语言程序的运行时间,只能测试,不可计算。
参考技术C void delay(uint z)

uint x,y;
for(x=110;x>0;x--)
for(y=z;y>0;y--);

这个是11.0592hz晶振的,z=1是大概是1ms,我不知道你后面注释的那个是不是你的晶振,你只要给相应z的值就好了,具体多少你可以试试追问

1MS怎么算啊

追答

用那个编写的软件keil去试

单片机50ms延时代码

1 void delay50ms(int n){
2     int i,j;
3     for(i=0;i<=n;i++)
4       for(j=0;j<10000;j++);
5 }

 

以上是关于89c51单片机延时问题,怎么求出延时是100ms,求详细回答。的主要内容,如果未能解决你的问题,请参考以下文章

单片机中delay函数精确延时多少ms?

stm32中Delay()函数延时的时间是怎么计算的?

请问51单片机定时器延时的调用是怎么调用的我有点不明白,谢谢

单片机ms延迟函数无缘无故的错误

51单片机C语言中delay函数是怎么定义和使用的?

C语言怎么写延时函数,精确到毫秒