173 2438 5004
KEROS加密芯片——品牌直销 | 免费样品 | 技术支持
当前位置:网站首页 > 资讯中心 正文 资讯中心

单片机用定时器0延时函数

htxw 2023-03-15 资讯中心 22 ℃

怎么写段单片机延时函数?要用定时器!

1、首先分析您的程序,

void

delay()

{

int

i;

if(1

==

TF0)//if(TF0==1),查询定时器溢出标志位

{

TF0=0;

i=10000;//定时溢出时给i赋值1000

TH0=0xDC;TL0=0x00;

i--;//i=999,如果还没有减到0时定时器又溢出,则i永远不会减到0!!!!所以您的这段程序不应该行不通!!

}

while(1)

{

if(i==0)

break

;

}

}

2、建议做法

(1)定义一个全局变量用于作定时计数如unsigned

char

n;

(2)定时器采用以某一时间基准(10ms)中断方式,每中断一次中断处理程序里n++;

(3)在延时函数中对n进行操作,如延时1s即1000ms则:

void

delay_1s()

{

while(n100);//如果n100,即还没有到1s就等待

n=0;如果1s时间到则清零n,退出子程序

}

当然这样定时精度可能需要调整,但思路可以试试。

求用C编写一个51单片机的延时函数,用T0定时器。

#include

reg51.h

#define

uchar

unsigned

char

sbit

LED=P1^0;

uchar

time;

void

InitTimer0(void)

{

TMOD

=

0x01;

//定时器0,工作方式1

TH0

=

0x3c;

TL0

=

0xb0;

//50ms中断一次

EA

=

1;

ET0

=

1;

TR0

=

1;

}

void

main(void)

{

InitTimer0();

while(1);

//

分号,表示在此一直循环执行,等待中断。相当于汇编的

AJMP

$

}

void

Timer0Interrupt(void)

interrupt

1

{

TH0

=

0x3c;

TL0

=

0xb0;

time++;

if(time==20)

//中断20次,1s

{

time=0;

LED=!LED;

//P1.0上的LED1s亮灭一次

}

}

单片机怎么用定时器替代延时函数?

1、首先分析您的程序,

void

delay()

{

int

i;

if(1

==

tf0)//if(tf0==1),查询定时器溢出标志位

{

tf0=0;

i=10000;//定时溢出时给i赋值1000

th0=0xdc;tl0=0x00;

i--;//i=999,如果还没有减到0时定时器又溢出,则i永远不会减到0!!!!所以您的这段程序不应该行不通!!

}

while(1)

{

if(i==0)

break

;

}

}

2、建议做法

(1)定义一个全局变量用于作定时计数如unsigned

char

n;

(2)定时器采用以某一时间基准(10ms)中断方式,每中断一次中断处理程序里n++;

(3)在延时函数中对n进行操作,如延时1s即1000ms则:

void

delay_1s()

{

while(n100);//如果n100,即还没有到1s就等待

n=0;如果1s时间到则清零n,退出子程序

}

当然这样定时精度可能需要调整,但思路可以试试。

51单片机调用定时器0做延时函数,求教,怎么才能做到用定时器的延时!

你要搞懂中断的含义,如果你想中断延时 有个方法可以使用下

当中断产生的时候,进入中断服务函数处理中断程序时,你可以延时你想要延时的时间。处理完毕再回到原程序,这样就达到了延时的目的,不过这是画蛇添足。

如果你是想一段时候后让MCU做什么事,那就是定时用法了,与延时没什么关系。

中断服务函数越简单越好

怎么写段单片机延时函数?要用定时器!

1、首先分析您的程序,

void

delay()

{

int

i;

if(1

==

TF0)//if(TF0==1),查询定时器溢出标志位

{

TF0=0;

i=10000;//定时溢出时给i赋值1000

TH0=0xDC;TL0=0x00;

i--;//i=999,如果还没有减到0时定时器又溢出,则i永远不会减到0!!!!所以您的这段程序不应该行不通!!

}

while(1)

{

if(i==0)

break

;

}

}

2、建议做法

(1)定义一个全局变量用于作定时计数如unsigned

char

n;

(2)定时器采用以某一时间基准(10ms)中断方式,每中断一次中断处理程序里n++;

(3)在延时函数中对n进行操作,如延时1s即1000ms则:

void

delay_1s()

{

while(n100);//如果n100,即还没有到1s就等待

n=0;如果1s时间到则清零n,退出子程序

}

当然这样定时精度可能需要调整,但思路可以试试。

单片机用定时器0延时函数的介绍到此就结束了,感谢您耐心阅读,谢谢。

本文标签:单片机用定时器0延时函数

<