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

51单片机第23步_定时器1工作在模式0(13位定时器)

重点学习51单片机定时器1工作在模式0的应用

在51单片机中,定时器1工作在模式0,它和定时器0一样,TL1占低5位,TH1占高8位,合计13位,也是向上计数

1、定时器1工作在模式0

1)、定时器1工作在模式0的框图:

2)、定时器1输入时钟:

TMOD寄存器的bit6(C/T)=0,定时器输入时钟为CPU时钟经过12分频后得到的。

TMOD寄存器的bit6(C/T)=1,定时器输入时钟为来自T1引脚(P3.5),我们也可以理解为计数脉冲。

3)、定时器1启动:

、当TMOD寄存器的bit7(GATE)=0时,将TR1=1,则会启动定时器1

、当TMOD寄存器的bit7(GATE)=1时,给INT1引脚(P3.3)施加高电平,同时TR1=1,则会启动定时器1

4)、定时器1溢出标志TF1建立的条件

TH1和TL1从装载的初始值开始计数,直到TH1和TL1从0x1FFF变成0x2000时产生溢出,此时定时器1的溢出标志TF1=1;

5)、定时器1产生中断条件

定时器1的溢出标志TF1=1

定时器1的中断使能位ET1=1

总中断使能位EA=1

只有这3个条件同时满足,定时器1才会进入到中断服务程序。

6)、定时器1工作在模式0的初始化程序

#define T1_Load_Value       (0x2000-3000)  //配置T0为3000us中断一次;

//函数功能: 定时器1工作在模式0的初始化;

void timer1_initializtion(void)

{

TMOD &= 0x0F;//清除高4位

//TMOD寄存器的bit6(C/T)=0,定时器输入时钟为CPU时钟经过12分频后得到的

//配置Timer1为方式0(13位定时器)

//设置GATE1=0,即不允许外部INT1脚控制Timer1;

  TL1=T1_Load_Value&0x1F;     //手动装载最低5位值;

  TH1=T1_Load_Value>>5;       //手动装载剩下的8位值;

  TR1=1;                //当GATE1=0时,TR1=1,表示启动T1开始工作;

  ET1=1;                //允许Timer1中断;

  EA=1;                 //开总中断允许位;

}

//函数功能: Timer1的中断服务函数,每3000us中断一次;

void timer1_interrupt_program() interrupt using 1

{ TL1=T1_Load_Value&0x1F;     //手动装载最低5位值;

  TH1=T1_Load_Value>>5;       //手动装载剩下的8位值;

  ///其它处理程序///

}

void main(void)

{ timer1_initializtion(); //定时器1工作在模式0的初始化;

  while(1);

    {

}

}

相关文章:

  • 【设计模式】【行为型模式】【责任链模式】
  • NAS—网络附加存储
  • mysqldump全备份之后,如何只恢复一个库或者一个表
  • 中画幅巡检相机-SHARE 100M A10
  • Oracle中常用内置函数
  • 如何使用PHP和Selenium快速构建自己的网络爬虫系统
  • mac上使用finder时候,显示隐藏的文件或者文件夹
  • IPython脚本加载秘籍:探索脚本魔法的艺术
  • MySQL 重新初始化实例
  • 【高考志愿】医学
  • Chapter9 更复杂的光照——Shader入门精要学习笔记
  • C盘清理和管理
  • charls抓包工具 mumu模拟器抓包apk
  • Kotlin中的类
  • 真的假不了,假的真不了
  • .pyc 想到的一些问题
  • 【剑指offer】让抽象问题具体化
  • 345-反转字符串中的元音字母
  • Angular 2 DI - IoC DI - 1
  • Just for fun——迅速写完快速排序
  • Median of Two Sorted Arrays
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • Python3爬取英雄联盟英雄皮肤大图
  • sessionStorage和localStorage
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • supervisor 永不挂掉的进程 安装以及使用
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 前端之Sass/Scss实战笔记
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 一个SAP顾问在美国的这些年
  • 优化 Vue 项目编译文件大小
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • 选择阿里云数据库HBase版十大理由
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (13)Hive调优——动态分区导致的小文件问题
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (第一天)包装对象、作用域、创建对象
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .gitignore文件使用
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .net 后台导出excel ,word
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .NetCore部署微服务(二)
  • .net连接MySQL的方法