你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

51单片机的定时器

[复制链接]
gaosmile 发布时间:2020-7-29 12:58
一、定时器/计数器简介

设置等待时间,到达等待时间之后执行指定的硬件操作。
定时器最基本的功能就是定时,比如说定时发送串口数据,定时采集AD数据,如果将定时器和IO结合起来就可以实现非常丰富的功能,可以测量输入信号的脉冲宽度,可以产生PWM方波,定时器产生PWM控制电机状态是工业控制的普通。

二、定时器/计数器相关寄存器介绍

1、计数寄存器TH和HL
T/C是16位的,计数寄存器由TH高8位和TL低8位构成。
对应T/C0为TH0和TL0, 对应T/C1为TH1和TL1,定时器/计数器的初始值通过TH0/TL0和TH1/TL1设置。
2、定时器/计数器控制寄存器TCON
微信图片_20200729124833.jpg
3、T/C的方式控制寄存器TMOD
微信图片_20200729124835.jpg
微信图片_20200729124838.jpg

三、定时器的计数初始值计算

微信图片_20200729124841.jpg

四、中断源及中断信号

微信图片_20200729124844.jpg

五、参考代码

  1. /******************************************************
  2. 功能描述:LED会循环点亮1秒,熄灭1秒。
  3. 使用单片机内部定时器可实现准确延时   
  4. ******************************************************/
  5. #include "reg52.h"
  6. //此文件中定义了单片机的一些特殊功能寄存器
  7. typedef unsigned int u16; //对数据类型进行声明定义
  8. typedef unsigned char u8;
  9. sbit led=P2^0;      //定义P20口是led

  10. void Timer0Init()
  11. {
  12.   TMOD|=0X01; //选择为定时器0模式,工作方式1(16位),仅用TR0打开启动
  13.   TH0=0XFC;   //给定时器赋初值,定时1ms  高8位
  14.   TL0=0X18;   // 低8位(可用软件计算,公司参考上面)
  15.   ET0=1;      //允许定时器0中断
  16.   EA=1;       //打开总中断
  17.   TR0=1;      //打开定时器0,启动T/C0运行
  18. }

  19. void main()
  20. {
  21.   Timer0Init();
  22.   while(1);
  23. }

  24. void Timer0() interrupt 1    //1是中断号
  25. {
  26.   static u16 i;
  27.   TH0=0XFC;    //计数器寄存高8位重新载入
  28.   TL0=0X18;    //计数器寄存低8位重新载入
  29.   i++;
  30.   if(i==1000)
  31.   {
  32.     i=0;
  33.     led=~led;
  34.   }
  35. }
复制代码

收藏 评论0 发布时间:2020-7-29 12:58

举报

0个回答

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版