keil延时500毫秒程序怎么算(keil中想要延时3秒怎么写)

51单片机延时问题 延时函数与实际时间相差5倍?

你所说的情况未能复现。500毫秒无问题。

你在你的第17行打断点,看看每个周期的情况。

一个keil c51延时程序,晶振频率11.0592MHz,延时怎么算的,延时多少?

1.一个keil c51延时程序,晶振频率11.0592MHz

delay(unsigned int z)

{

unsigned int x,y;

for(x=z;x0;x--)

for(y=110;y0;y--);

}

延时时间为t=z微秒=0.001*z秒

2.也可以用定时/计数器

void time0() interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

tt++;

}

当tt=20时刚好是1秒

在KEIL软件中建立51单片机工程,要求每隔500ms点亮上题中1个led灯,依次完成8个led灯点亮过程

#include reg52.h

//点亮八位共阳

unsigned char led=0xfe; //8个bit位的数

unsigned int counter=0;

void time_init()

{

TMOD=0x01;//定时器0,工作模式1,16位定时器

TH0=0xb4;

TL0=0x00; //定时器初始值46080,定时50ms;

EA=1;//开总中断

ET0=1;//开定时器中断

TR0=1;//运行定时器

}

void main()

{

time_init();

for(;;)

{

P1=led;

}

}

void time_inter() interrupt 1

{

IT0=1;//清除中断标志

TH0=0xb4;

TL0=0x00;

counter++;

if(counter==10) //500ms延时

{

counter=0;

led=led1;//点亮下一个灯

}

}

//点亮八位共阴

/*

unsigned char led=0x01,led1=0x01; //8个bit位的数

unsigned int counter=0;

void time_init()

{

TMOD=0x01;//定时器0,工作模式1,16位定时器

TH0=0xb4;

TL0=0x00; //定时器初始值46080,定时50ms;

EA=1;//开总中断

ET0=1;//开定时器中断

TR0=1;//运行定时器

}

void main()

{

time_init();

for(;;)

{

P1=led;

}

}

void time_inter() interrupt 1

{

IT0=1;//清除中断标志

TH0=0xb4;

TL0=0x00;

counter++;

if(counter==10) //500ms延时

{

counter=0;

led1=led;

led1=led11;//点亮下一个灯

led=led|led1;

}

}

*/

个人自写,亲试有效。欢迎交流

361知讯网

本文链接:http://pdidw.com/keil/19731.html

发表评论

评论列表

还没有评论,快来说点什么吧~