八、定时器的基本原理与应用

 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6KGM5LiN5Zyw5LiK,size_20,color_FFFFFF,t_70,g_se,x_16

定时器:计数信号来源(周期性)内部时钟脉冲

计数器:计数信号来源(非周期性)外部输入信号

16位  65535us

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6KGM5LiN5Zyw5LiK,size_20,color_FFFFFF,t_70,g_se,x_16

 TH0 = 0xd8;或者 TH0 = (65535 - 10000) / 256;
 TL0 = 0xef; 或者 TL0 = (65535 - 10000) % 256;

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6KGM5LiN5Zyw5LiK,size_20,color_FFFFFF,t_70,g_se,x_16

不能寻址:只能 一次性写给

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6KGM5LiN5Zyw5LiK,size_20,color_FFFFFF,t_70,g_se,x_16

中断号:

0     外部中断0:INT0

1     定时/计数器0:TF0

2     外部中断1:INT1

3     定时/计数器1:TF1

4     串口中断:R1/T1

 利用定时/计数器T0模式1实现间隔定时,每隔1秒L1指示灯闪烁一下,也就是点亮0.5秒,熄灭0.5秒;每隔10秒L8指示灯闪烁一下,即点亮5秒,熄灭5秒

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6KGM5LiN5Zyw5LiK,size_20,color_FFFFFF,t_70,g_se,x_16

 0.5S = 500ms (16位 65535us = 65.5ms)

定时一次50ms,定时10次。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6KGM5LiN5Zyw5LiK,size_20,color_FFFFFF,t_70,g_se,x_16

#include "reg52.h"

sbit L1 = P0^0;
sbit L8 = P0^7;

sbit HC138_A = P2^5;
sbit HC138_B = P2^6;
sbit HC138_C = P2^7;

void InitHC138()//选LED
{
	HC138_C = 1;
	HC138_B = 0;
	HC138_A = 0;
}

//*****************************************************************
void InitTimer0()//初始化定时器0(中断)
{
	TMOD = 0X01;
	TH0 = (65535 - 50000) / 256;
	TL0 = (65535 - 50000) % 256;//定时50ms = 50000us
	
	ET0 = 1;//打开定时器中断
	EA = 1;//打开总中断
	TR0 = 1;//启动定时器
}

unsigned char count = 0;
unsigned char count1 = 0;//设两个计数

void ServiceTimer0() interrupt 1//中断服务函数(中断号为1)
{
	TH0 = (65535 - 50000) / 256;
	TL0 = (65535 - 50000) % 256;//没有自动重装功能,每次需赋初值
	
	count++;//10次50ms
	count1++;//100次50ms
	if (count == 10)//0.5s = 500ms = 10*(50ms)定时10次
	{
		L1 = ~L1;
		count = 0;
	}
	if (count1 == 100)//5s = 5000ms = 100*(50ms)定时100次
	{
		L8 = ~L8;
		count1 = 0;
	}
}

//*****************************************************************

void main()
{
	InitHC138();
	InitTimer0();
	while(1)
	{
		
	}
}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

行不地上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值