单片机C语言定时器如何调用

Python013

单片机C语言定时器如何调用,第1张

单片机中通过中断的方式来调用定时器

具体的调用方式可以参考通过如下程序:

程序功能:利用定时器进行定时,实现每秒中led闪烁一次

#include<reg52.h>

sbit led = P0^0

unsigned int num

void main(void)

{

TMOD = 0x00   // 工作方式0

TH0 = (8192 - 5000) / 32  // 12M晶振下定时5ms

TL0 = (8192 - 5000) % 32

EA = 1    // 开总中断

ET0 = 1    // 开定时器中断

TR0 = 1    // 启动定时器

while(1)

{

  if(num == 200)   // 定时1秒钟到

{

num = 0   // 计数器清零

led = ~led   // led灯取反,实现1秒闪烁一次

}

}

}

void timer() interrupt 1  // 定时器1工作与方式0

{

TH0 = (8192 - 5000) / 32  // 重装初值

TL0 = (8192 - 5000) % 32

num++  // 计数器加1

}

//-------------------

//

函数名称:

void

delay_s(uchar

t)

//

函数功能:

利用定时器延时t秒子程序

//-------------------

delay_s(uchar

t)

{

uchar

count,a

TMOD=0x10

//定时器1,模式1

TH0=(65536-50000)/256

//

定时为50ms

TL0=(65536-50000)%256

EA=1

ET1=1

TR1=1

while(1)

{

if(a==t)break

}

}

void

timer1()

interrupt

3

//定时器1

{

TR1=0

TH1=(65536-50000)/256

//

定时为50ms

TL1=(65536-50000)%256

count++

if(count==20)

//判断是否到1秒

{

count=0

a++

}

TR1=1

}