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

voidDelay100ms(void)//22.1184MHz{unsignedchari,j,k;_nop_();_nop_();i=9;j=104;k=139;do... 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);
}
展开
 我来答
百度网友3fb99e8
2013-04-21 · TA获得超过451个赞
知道小有建树答主
回答量:640
采纳率:0%
帮助的人:262万
展开全部

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


w3180121
2013-04-19 · 知道合伙人数码行家
w3180121
知道合伙人数码行家
采纳数:793 获赞数:2403
单片机 C语言 电脑 液晶 没有 证书 我们只是一个团队

向TA提问 私信TA
展开全部
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
做而论道
高能答主

推荐于2018-03-28 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部
C 语言,是高级语言。

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

运行时间,取决于 CPU。

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

C 语言程序的运行时间,只能测试,不可计算。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
喝喝复呵呵
2013-04-19 · 超过10用户采纳过TA的回答
知道答主
回答量:48
采纳率:0%
帮助的人:23.7万
展开全部
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去试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式