8.蓝桥杯开发板定时器计数器中断

目录:

                一.定时器计数器连接框图

                        二.寄存器说明

                                三.写代码

                                        四.源码

一:定时器计数器连接框图,框图来源于网络

二:相关寄存器说明

      (1)TCON:控制定时器/计数器的启动,停止,中断以及外部中断的触发方式等

                1.定时器/计数器的控制:

                           TCON中的TR0=1(或者TR1=1)时相应的定时器开始计时,

                           置0时,定时器停止计数

                2.中断控制:

                           TCON中的TF0和TF1是定时器0和定时器1的溢出中断标志位

                           当定时器计数溢出时,相应标志位会被置1,发送中断请求

                3.外部中断触发方式控制:

                             TCON中的IT0和IT1用于设置外部中断0和外部中断1的触发方式

                             IT0=0时,触发方式是低电平触发

                             IT0=1时,是下降沿触发

                     我们常用下降沿触发方式   

                4.TMOD:定时器模式寄存器,可以设置16种模式

                                工作方式:

                                               (1) 方式0位13位定时/计数器

                                                (2)方式1为16位定时/计数器

                                                (3)方式2位自动重装初值8位定时/计数器

                                                (4)方式3仅适用于定时器0,可以将其拆分位两个

                                                         独立的8位计数器

                5.TH0,TL0和TH1,TL1寄存器:

                        (1)分别是定时器0和定时器1的高八位和低八位

                        (2)存放定时器/计数器的初值

                        (3)当计满溢出时触发相应中断     

                        (4)计算公式:

                                                TH0=(65535-定时的时间)/256;

                                                TL0= (65535-定时的时间)%256;

                                                例如:想要1ms产生一次定时中断中断

                                                        TH0=(65535-1000)/256;

                                                        TL0= (65535-1000)%256;

                6.AUXR寄存器:

                        (1)用于设置定时器工作模式,选择时钟源等

                        (2)如果不设置默认12T工作模式

           

三.写代码 :

        定时器初始化:

                        (1)配置定时器工作模式

                      (2)设置初值TH,TL

                      (3) 中断标志位置0

                      (4)定时器0计时开始TR0=1

                      (5)写中断函数(就是普通函数后面加中断号)

四.源码:

#include "reg52.h"
#include "LED.h"
int i=0;
int a=0;
void Timer_init()
{

TMOD=0x01;

//1ms产生一次中断	
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
TF0=0;
TR0=1;
	
ET0=1;
EA=1;
}

void Timer0() interrupt 1
{
i++;
if(i>=1000)//定时1s
{
	i=0;
	a=1;
}
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
}
void main()
{
	bit x;
	Timer_init();

	while (1)
	{
		if(a)
		{
			a=0;
			x=~x;
			if(x)
			{
			LED(5);
			}

			else
			{
			LED(0);
			}
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值