定时器使用


前置知识学习

计时器溢出会进入对应的中断系统


一、定时器是什么?

定时器是设置一个中断条件,当达成时,跳出主程序,优先处理中断程序。

即利用了中断系统,中断系统可以保护计算机

二、使用步骤

 //主函数

#include <REGX52.H> 
#include "Timer0.h"
#include "key.h"
#include <INTRINS.H>

unsigned char KeyNum , LEDMOD;

void main()
{
	P2 = 0xFE;//1111 1110
	Timer0_Init();
	while(1)
	{
		KeyNum = Key();
		if(KeyNum)
		{
//			if(KeyNum == 1) P2_0 = ~P2_0;
//			if(KeyNum == 2) P2_1 = ~P2_1;
//			if(KeyNum == 3) P2_2 = ~P2_2;
//			if(KeyNum == 4) P2_3 = ~P2_3;
			//按下k1,左移;按下k2~4;右移。
			if(KeyNum == 1)
				LEDMOD = 1;
			if(KeyNum >= 2)
				LEDMOD = 0;
			
		}
	}
}

static unsigned int T0Count;	//若不是静态变量,执行一次函数后,被销毁

void Timer0_Routine () interrupt 1		//发生中断,则进入该子块
{
	static unsigned int T0Count;	//若不是静态变量,执行一次函数后,被销毁
	/*
	给定时器重新赋初值
	结果是,每 1ms 进入一次中断系统
	否则,溢出后值清零,从 0 计到 65535
	TH0 = 64535 / 256;
	TL0 = 64535 % 256;
	*/
	TL0 = 0x18;		//设置定时初值
	TH0 = 0xFC;		//设置定时初值
	T0Count++;
	if(T0Count >= 500)	//此处千万不能在判断语句外点亮LED,否则LED一直亮
	{
		T0Count = 0;
		//如下实现流水灯 //a =_crol_ (a,1)  a左移一位 0x01->0x04->0x08;而且,0x80(1000 0000)->0x01(0000 0001).同理,_cror_为右移
		
		if(LEDMOD == 1)
		{P2 =_crol_(P2,1);}
		if(LEDMOD == 0)
		{P2 =_cror_(P2,1);}
		
	}
}
#include <REGX52.H>


/* *
   * @brief 定时器0初始化  1毫秒@12.000MHz
   * @param 无
   * @retval 无
   */

void Timer0_Init(void)
{
	//AUXR &= 0x7F;		//定时器时钟12T模式  这个得去掉
	TMOD &= 0xF0;		//设置定时器模式
	TMOD |= 0x01;		//设置定时器模式
	TL0 = 0x18;		//设置定时初值
	TH0 = 0xFC;		//设置定时初值
	TF0 = 0;		//清除TF0标志
	TR0 = 1;		//定时器0开始计时
	//如下得自己补充
	ET0 = 1;	//允许中断
	EA = 1;	//允许总中断
	PT0 = 0;	//中断优先级为0
}


/*定时器中断函数模板
void Timer0_Routine () interrupt 1
{
	static unsigned int T0Count;
	TL0 = 0x18;		//设置定时初值
	TH0 = 0xFC;		//设置定时初值
	T0Count++;
	if(T0Count >= 1000)
	{
		T0Count = 0;
		
	}
}
*/


总结

单片机的学习一定要看懂电路图与单片机手册中各个系统的使用。

定时器:通过设置时间溢出条件,使程序进入中断系统,当然了,中断程序应为较为短小精干的程序,大块程序不适合放入其中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值