当前位置: 首页 > article >正文

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。
上述步骤可以通过一个小工具软件来计算:
代码如下所示:
#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灯。	
	 }


}



http://www.kler.cn/a/523494.html

相关文章:

  • Linux——网络(tcp)
  • Go反射指南
  • JavaScript函数中this的指向
  • Spring事务和事务传播机制
  • 不只是mini-react第二节:实现最简fiber
  • java小白日记32(注解)
  • FaceFusion
  • Java set 方法和static 方法的用途
  • ELF动态信息
  • 读书笔记:《华为突围ERP封锁全纪实》
  • wordpress代码结构解析
  • macbook安装go语言
  • 系统架构设计中的需求分析与建模
  • 【deepseek】deepseek-r1本地部署-第一步:下载LM Studio
  • 万字长文总结前端开发知识---JavaScriptVue3Axios
  • 请举例用js实现数组的排序?
  • 4.贪心算法
  • “开源AI智能名片2+1链动模式S2B2C商城小程序源码”在市场推广中的应用与策略
  • 深拷贝、浅拷贝、移动语义
  • Leetcode — 罗马数字转整数
  • leetcode 1343. 大小为 K 且平均值大于等于阈值的子数组数目
  • 虚幻基础07:蓝图接口
  • 2025春招,Netty面试题汇总
  • Vue.js 深度解析:响应式、虚拟 DOM 与编译优化的艺术
  • 一文了解性能优化的方法
  • 自定义数据集,使用 PyTorch 框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测