51单片机开发:定时器中断

目标:利用定时器中断,每隔1s开启/熄灭LED1灯。

外部中断结构图如下图所示,要使用定时器中断T0,须开启TE0、ET0。:

系统中断号如下图所示:定时器0的中断号为1。

定时器0的工作方式1原理图如下图所示:GATE低电平且TR0为1时,定时器中断即可生效,无需INT0给信号。

通过M0、M1可设置定时器的工作方式,如下图所示:

定时器的初始值:定时器的寄存器为TH0和TL0,在工作方式1下,值累加至65536时溢出,触发定时器中断。因此,设定初值应为: 65536-机器周期的计数。

例如:
振荡周期=1/12us;
状态周期=1/6us;
机器周期=1us;
定时1ms就是1000个机器周期,初值为:65536-1000=64536=0xfc18。
上述步骤可以通过一个小工具软件来计算:

代码如下所示:

cpp 复制代码
#include "reg52.h"

typedef unsigned char u8;
typedef unsigned int u16;


sbit LED1 = P2^0;//LED对应的端口


//定时器中断初始配置
void time0_init(){
	TMOD = 0x01;//工作方式为1
	TH0 = 0xFC;//初始值高字节
	TL0 = 0x18;//初始值低字节
	ET0 = 1;//定时器0中断允许
	EA = 1;//打开总中断。
	TR0 = 1;//打开定时器
}


void main(){
  time0_init();
  while(1){
	
  }
}


void time0_task()interrupt 1{ //中断号为1
	 static u16 i=0;

    //重新设定初始值
	 TH0 = 0xFC;
	 TL0 = 0x18;

	 i++;
	 if(i==1000){//1s时间
	 	i=0;
	 	LED1 = !LED1;//点亮/熄灭LED1灯。	
	 }


}
相关推荐
fie888917 小时前
基于51单片机的航模遥控器6通道接收机程序
单片机·嵌入式硬件·51单片机
bu_shuo17 小时前
嵌入式硬件工程师VS单板硬件工程师
嵌入式硬件·电子工程师·单板硬件
llilian_1618 小时前
选择北斗导航卫星信号模拟器注意事项总结 北斗导航卫星模拟器 北斗导航信号模拟器
功能测试·单片机·嵌入式硬件·测试工具·51单片机·硬件工程
Yyq1302086968218 小时前
MH2457,‌国产 32 位屏驱 MCU‌芯片,支持‌1080P 高清显示‌与‌以太网通信‌,广泛应用于两轮车仪表盘及工控屏等领域
单片机·嵌入式硬件
爱吃程序猿的喵19 小时前
南邮计科电工电子实验B《RLC串联谐振电路》实验报告
单片机·嵌入式硬件
独小乐19 小时前
009.中断实践之实现按键测试|千篇笔记实现嵌入式全栈/裸机篇
linux·c语言·驱动开发·笔记·嵌入式硬件·arm
XINVRY-FPGA19 小时前
XC7VX690T-2FFG1157I Xilinx AMD Virtex-7 FPGA
arm开发·人工智能·嵌入式硬件·深度学习·fpga开发·硬件工程·fpga
bubiyoushang88821 小时前
利用STM32实现Modbus通信(RTU从机方案)
stm32·单片机·嵌入式硬件
cmpxr_1 天前
【单片机】常用设计模式
单片机·嵌入式硬件·设计模式
杰杰桀桀桀1 天前
4*4无时延矩阵键盘(非阻塞)--附代码链接
stm32·单片机·嵌入式硬件·矩阵·计算机外设·无时延矩阵键盘