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

51单片机的定时器

[复制链接]
gaosmile 发布时间:2020-7-29 12:58
一、定时器/计数器简介
- n: D3 c' V3 W$ R
设置等待时间,到达等待时间之后执行指定的硬件操作。
+ I' L4 j+ g, g定时器最基本的功能就是定时,比如说定时发送串口数据,定时采集AD数据,如果将定时器和IO结合起来就可以实现非常丰富的功能,可以测量输入信号的脉冲宽度,可以产生PWM方波,定时器产生PWM控制电机状态是工业控制的普通。
* K2 }. I, |6 v; `; Q1 K) [5 y# }4 l2 F
二、定时器/计数器相关寄存器介绍
8 ^9 {) H3 z  G/ ]6 Q
1、计数寄存器TH和HL
7 P* m8 @  y8 o& r  b5 ^5 pT/C是16位的,计数寄存器由TH高8位和TL低8位构成。: a( p  L/ _6 ]& L: t3 o5 O
对应T/C0为TH0和TL0, 对应T/C1为TH1和TL1,定时器/计数器的初始值通过TH0/TL0和TH1/TL1设置。; ?: l* g/ X+ q8 t$ X
2、定时器/计数器控制寄存器TCON
% D/ b% q$ @/ a( S6 B 微信图片_20200729124833.jpg
6 |  H0 T" u% R2 d3、T/C的方式控制寄存器TMOD
# r  D6 X5 g+ d6 ]7 O1 A 微信图片_20200729124835.jpg
. Z' ~$ R  z1 o! L; ~6 x 微信图片_20200729124838.jpg 2 X% f& M8 x$ A5 A( H- H
( m2 ^/ ~1 |! W0 ~/ }8 F5 k0 o
三、定时器的计数初始值计算
" }+ ^( K$ h1 [0 h& D2 M6 U) X
微信图片_20200729124841.jpg
' b6 v; d- F( r
四、中断源及中断信号

; h7 {( ]: M0 I9 N2 o+ ?- a
微信图片_20200729124844.jpg

; J* Y  r6 L2 l. Q  s: U8 L0 l
五、参考代码
  1. * ^( h  L1 K8 V: o
  2. /****************************************************** $ \, c; W6 c) t
  3. 功能描述:LED会循环点亮1秒,熄灭1秒。6 a2 a5 X- [/ L- H( I# T7 B
  4. 使用单片机内部定时器可实现准确延时    + H/ [# O% \4 H. j) }' {) K$ }
  5. ******************************************************/
    ( Q# S. o- B+ A. ^6 V7 e" N
  6. #include "reg52.h"
    2 _- \/ T7 W  X9 W/ R6 R" M
  7. //此文件中定义了单片机的一些特殊功能寄存器/ ?; b& G: O% E( h, L$ _
  8. typedef unsigned int u16; //对数据类型进行声明定义& J6 p4 N6 G4 A5 N! G5 I# L
  9. typedef unsigned char u8;, }, E2 L+ i+ I
  10. sbit led=P2^0;      //定义P20口是led
    3 u3 d  @2 F& Z7 F# }% d, z

  11. : L4 M' ~7 A6 [# [7 m
  12. void Timer0Init()
    - R( v- X% a) Z- \: X
  13. {
    / h6 n) Z( B* m- \
  14.   TMOD|=0X01; //选择为定时器0模式,工作方式1(16位),仅用TR0打开启动
    1 W( s/ R& T: z' ~8 l$ S$ i8 P8 C: u
  15.   TH0=0XFC;   //给定时器赋初值,定时1ms  高8位$ ]/ y1 b8 q9 ^  n  k  P# J( W+ Q
  16.   TL0=0X18;   // 低8位(可用软件计算,公司参考上面)
    7 R0 A1 |6 t! @- q2 U& I
  17.   ET0=1;      //允许定时器0中断
    " ~* `  `% C# k- G
  18.   EA=1;       //打开总中断1 w  U) R; }% c& {( z$ v
  19.   TR0=1;      //打开定时器0,启动T/C0运行9 I: O! f" j" x$ Q
  20. }
    " c4 w: t( p% h, M/ o! D/ R

  21. . T$ t" j  n6 q; x+ {+ l' u; ]& M! v
  22. void main()+ e# ]% E. N1 B& k8 E" L
  23. {
      ]3 J6 P( D  c' f
  24.   Timer0Init();
    6 U" i% ~$ f9 m, m. Q' W
  25.   while(1);' M! @+ O( V+ L$ c3 X
  26. }! h8 |9 [4 U+ W$ N  i

  27. - {0 M7 Q% e, W- ]5 B' a
  28. void Timer0() interrupt 1    //1是中断号
    + D! K4 k  Q- e# F5 \1 `
  29. {$ i5 k5 W" P; N
  30.   static u16 i;5 b0 b# g' a* Q/ g% M7 _7 \
  31.   TH0=0XFC;    //计数器寄存高8位重新载入
    7 c2 t, _" W# n- m3 e6 `
  32.   TL0=0X18;    //计数器寄存低8位重新载入  e( g$ c" s. K7 L8 h8 L
  33.   i++;
    8 b, V& Q, M3 W6 \* U
  34.   if(i==1000)
    & [; G  w/ a& h9 c( D
  35.   {" [3 i7 `$ z* [: s: _
  36.     i=0;6 o8 \9 m8 V. a# {% Q
  37.     led=~led;
    ( J2 p* A' O2 |8 g' }* ~
  38.   }
    # p  W2 h  b2 S  m- x6 H5 A
  39. }
复制代码

! a$ Q7 Q' C0 r# ^' e4 `
赞 收藏 评论0 发布时间:2020-7-29 12:58

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版