STC89C52单片机定时器2

STC89C52单片机定时器2,第1张

/*使用的是12MHz晶振*/

#include<reg52.h>

#define

uchar

unsigned

char

#define

uint

unsigned

int

sbit

wave

=

P0^1

//设P0.1接受外部脉冲

uint

count

=

0

uint

f

void

inti()

//初始化

{

TMOD

=

0x21

//选T1工作方式2定时,计数器T0工作方式1计数

ET1

=

1

//开T1定扰森瞎时器中断

TH1

=

-250

//装初值

TL1

=

-250

TH0

=

0

TL0

=

0

TR1

=

1

//开定时器

TR0

=

1

//开计数器

EA

=

1

//开总中断

}

void

main()

{

inti()

//定时器初始化

while(1)

}

void

timeer()

interrupt

3

//定时器T1中断

{

if

(count

++==

4000)

//定时1s,1s采集刷新一缓空次数据

{

f

=

TH0*256

+

TL0

//外部信号频春樱率计算(即一秒内收到的脉冲数)

}

}

至于显示函数就不写了,很简单自己加到主函数里就行啦

/* 这个STC-ISP带这个工具手乱耐的*/

/* 定时器0是不能做陪纳波特率发生器的,下面定时器2晶毕春振11.059200MHz时,供参考*/

void UartInit(void) //[email protected]

{

SCON = 0x50 //8位数据,可变波特率

AUXR |= 0x01 //串口1选择定时器2为波特率发生器

AUXR |= 0x04 //定时器2时钟为Fosc,即1T

T2L = 0xE0 //设定定时初值

T2H = 0xFE //设定定时初值

AUXR |= 0x10 //启动定时器2

}

void init(void)

{

RCAP2H=0x1F// T2定时器初值

RCAP2L=0x00

ET2=1 //饥答 允许T2定时器中断

TR2=1// 启动T2定时器

EA=1 // 开总中陆慎断烂悉慧

}

/***T2***中***断***函***数***/

void Timer2_Server(void) interrupt 5

{

TF2=0

...........

..........

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/12493296.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存