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

51单片机-定时器中断

1、使用定时器,该做哪些工作

初始化程序应完成如下工作:

  • 对TMOD赋值,以确定T0和T1的工作方式。
  • 计算初值,并将其写入TH0、TL0或TH1、TL1。
  • 中断方式时,则对EA赋值,开发定时器中断。
  • 使用TR0或TR1置为,启动定时/计数器定时或计数。
#include "reg52.h"

typedef unsigned char u8;
typedef unsigned int u16;

sbit led = P2^0;
/**
   初始定时器
   定时1ms=1000us
   2^16-1000+1,0xFC18
  
*/
void Timer0Init()
{
   TMOD |= 0X01; // 0000 0001
   TH0=0XFC;
   TL0=0X18;
   ET0=1; // IE寄存器打开T0的中断
   EA=1; //打开总中断
   TR0=1; //开始定时器中断
}

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


void Time0() interrupt 1
{
  static u16 i;
   // 方式一:需要重新装载,方式二:不需要
   TH0=0XFC;
   TL0=0X18;
  i++; //每次经过1ms,进行累加
  if(i==1000){  //1s
     i=0;  //就要清零,防止溢出
     led=~led;
  }
}

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

相关文章:

  • DeepSeek学习教程 从入门到精通pdf下载:快速上手 DeepSeek
  • 【SQL实验】触发器
  • 说一下HashMap的底层原理
  • ZLMediakit开源视频服务器——配置到本地服务器
  • 简识Kafka集群与RocketMQ集群的核心区别
  • Vue3大文件分片上传,断点续传TS语法(核心思路)
  • PyTorch 深度学习框架中 torch.cuda.empty_cache() 的妙用与注意事项
  • 阿里云SLB负载均衡的ALB和NLB有啥区别?一个是7层一个是4层
  • C++ 设计模式-策略模式
  • Docker基于Ollama本地部署大语言模型
  • 使用大语言模型(Deepseek)构建一个基于 SQL 数据的问答系统
  • Django+Vue3全栈开发实战:从零搭建博客系统
  • 为什么Redis不支持回滚?
  • 自签SSL实现https
  • PHP房屋出租出售高效预约系统小程序源码
  • Linux:互斥
  • 硬核技术组合!用 DeepSeek R1、Ollama、Docker、RAGFlow 打造专属本地知识库
  • `AdminAdminDTO` 和 `userSession` 对象中的字段对应起来的表格
  • Linux 磁盘管理命令:LVM命令列表
  • 一、初始爬虫