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

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;//工作方式为1TH0 = 0xFC;//初始值高字节TL0 = 0x18;//初始值低字节ET0 = 1;//定时器0中断允许EA = 1;//打开总中断。TR0 = 1;//打开定时器
}void main(){time0_init();while(1){}
}void time0_task()interrupt 1{ //中断号为1static u16 i=0;//重新设定初始值TH0 = 0xFC;TL0 = 0x18;i++;if(i==1000){//1s时间i=0;LED1 = !LED1;//点亮/熄灭LED1灯。	}}

http://www.lryc.cn/news/530076.html

相关文章:

  • 【HarmonyOS之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(二)
  • 算法【混合背包】
  • WordPress eventon-lite插件存在未授权信息泄露漏洞(CVE-2024-0235)
  • 基于微信小程序的医院预约挂号系统设计与实现(LW+源码+讲解)
  • C++初阶 -- 手撕string类(模拟实现string类)
  • 【Postman接口测试】Postman的安装和使用
  • miniconda学习笔记
  • 区块链项目孵化与包装设计:从概念到市场的全流程指南
  • JavaScript的基本组成
  • [Linux]从零开始的STM32MP157 U-Boot移植
  • 【Unity3D】实现横版2D游戏——攀爬绳索(简易版)
  • 【llm对话系统】大模型 Llama 源码分析之 LoRA 微调
  • 算法随笔_35: 每日温度
  • 嵌入式硬件篇---CPUGPUTPU
  • STM32 PWM驱动舵机
  • 设计心得——平衡和冗余
  • webrtc协议详细解释
  • 动手学强化学习(四)——蒙特卡洛方法
  • 网络原理(3)—— 传输层详解
  • 2025美赛美国大学生数学建模竞赛A题完整思路分析论文(43页)(含模型、可运行代码和运行结果)
  • Elasticsearch的开发工具(Dev Tools)
  • Python-基于PyQt5,pdf2docx,pathlib的PDF转Word工具
  • 小程序-视图与逻辑
  • UE5制作视差图
  • 海浪波高预测(背景调研)
  • 代码随想录算法训练营第四十二天-动态规划-股票-188.买卖股票的最佳时机IV
  • Gradle配置指南:深入解析settings.gradle.kts(Kotlin DSL版)
  • 软件工程经济学-日常作业+大作业
  • 论文阅读(三):微阵列数据的图形模型和多变量分析
  • 【大模型LLM面试合集】大语言模型架构_MHA_MQA_GQA