若晶振频率为12MHZ,设计一个100ms的延时程序

 我来答
zhengzaigreat1
2015-03-14
知道答主
回答量:16
采纳率:0%
帮助的人:9.3万
展开全部
直接用定时器啊, 很精确。通过软件延时优化项改变了,时间久不精确了。使用定时器1来延时
static unsigned char flag=0;//用来标记计时到100ms
void InitT0(void)
{
TMOD &=0XF0;
TMOD |= 0X01;
TH0 = -(50000/256);
TL0 = -(50000u%256);
ET0 = 1; //中断允许
TR0 = 1; // 运行定时器
}
void ISR_T0() interrupt 1 //定时为50ms中断一次
{
TH0 = -(50000/256);
TL0 = -(50000u%256);
flag ++;
}
50MS执行一次中断,执行俩次中断函数 精确延时100ms
在需要延时100ms的函数中判断flag即可。
天云小店
推荐于2018-03-08 · TA获得超过2.8万个赞
知道大有可为答主
回答量:3281
采纳率:91%
帮助的人:781万
展开全部
void delay(uint xms)
{
uint x,y;
for(x=xms;x>0;x--)
for(y=110;y>0;y--);
}
这个是延时Xms delay(100)就可以延时100ms
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2015-03-14
展开全部
12M晶振普通51单片机。
void delay(void) //误差 0us
{
unsigned char a,b,c;
for(c=19;c>0;c--)
for(b=20;b>0;b--)
for(a=130;a>0;a--);
}
包准。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式