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

51单片机的定时器

[复制链接]
gaosmile 发布时间:2020-7-29 12:58
一、定时器/计数器简介
. k5 K9 C9 k8 n% C7 K0 O
设置等待时间,到达等待时间之后执行指定的硬件操作。
! ~/ p: g; r  T6 n9 {1 L定时器最基本的功能就是定时,比如说定时发送串口数据,定时采集AD数据,如果将定时器和IO结合起来就可以实现非常丰富的功能,可以测量输入信号的脉冲宽度,可以产生PWM方波,定时器产生PWM控制电机状态是工业控制的普通。
/ Z5 U1 \, Q. S) E7 o* ?, a. x' p. _2 y3 Q8 }; D5 a# f, G
二、定时器/计数器相关寄存器介绍

2 l) `% r( Y9 x  P' X1 d1、计数寄存器TH和HL2 T, g* e1 Z5 \; G, ?2 I
T/C是16位的,计数寄存器由TH高8位和TL低8位构成。" v, P! _4 k: T! r3 C+ I: \
对应T/C0为TH0和TL0, 对应T/C1为TH1和TL1,定时器/计数器的初始值通过TH0/TL0和TH1/TL1设置。
& E% m8 e0 Y3 K& w5 o# p3 ^( o2、定时器/计数器控制寄存器TCON* }& _5 P# Z( h' X7 M( z' X: R; R
微信图片_20200729124833.jpg : u( Q' q  W- |7 y$ |
3、T/C的方式控制寄存器TMOD
! G3 O" [' o9 z$ G- K: x* B 微信图片_20200729124835.jpg 2 Z- S/ g- F0 d
微信图片_20200729124838.jpg
; i8 J& P/ N( e0 y, b% r! [! P1 ^! J  x8 g* ]7 B$ g
三、定时器的计数初始值计算
8 a- D0 }5 |  L' X, u7 x
微信图片_20200729124841.jpg

2 \, G; F& m% y9 k* K4 B  e" G$ x
四、中断源及中断信号

/ ?1 I1 A( Q# x
微信图片_20200729124844.jpg
$ l) M7 o3 o' D( ^( p. s: e
五、参考代码
  1. 4 @3 t- J+ M( C7 S) b; B
  2. /****************************************************** ; F; R9 L' Y2 [8 \2 }) ?  F6 l' R
  3. 功能描述:LED会循环点亮1秒,熄灭1秒。
    ' h, g2 A0 o+ t2 Z1 s4 K
  4. 使用单片机内部定时器可实现准确延时   
    9 ~" B% g! i% J
  5. ******************************************************/
    # D) D7 C* U4 J% C5 r2 q
  6. #include "reg52.h" 9 j* \' Q+ ^" y9 `
  7. //此文件中定义了单片机的一些特殊功能寄存器4 `- U3 M3 {" m2 i1 S7 ?* f* [
  8. typedef unsigned int u16; //对数据类型进行声明定义
    8 k& a0 G2 R+ n$ x3 B
  9. typedef unsigned char u8;3 f- b% |( ?/ E5 l5 Z; K" m
  10. sbit led=P2^0;      //定义P20口是led
    8 M7 I- ]( Z9 \; g, _

  11. , [2 }! K! K* ^7 x- {% O
  12. void Timer0Init()
    % m2 a& U5 W! W9 {
  13. {2 x& s  Z9 n% `; f
  14.   TMOD|=0X01; //选择为定时器0模式,工作方式1(16位),仅用TR0打开启动, @7 D5 u, c! P
  15.   TH0=0XFC;   //给定时器赋初值,定时1ms  高8位3 Y4 T) K7 P, O: A; B
  16.   TL0=0X18;   // 低8位(可用软件计算,公司参考上面)
    , W  ~0 ?& S9 O* {; ]' m; Q. Q1 i
  17.   ET0=1;      //允许定时器0中断
    1 n8 \" x' d! X: S9 Y7 ]' n
  18.   EA=1;       //打开总中断. s8 P( x2 O8 a& E' a4 F# O3 i
  19.   TR0=1;      //打开定时器0,启动T/C0运行
    5 m/ o  g* w# p! L0 [
  20. }
    , S- V* t6 y- d) t6 g( Q

  21. * L- }0 {( A1 g& D3 `9 Y1 _5 x4 ~
  22. void main()5 D' S1 u4 O8 n5 v! F3 [! y* n
  23. {; f% H0 }. h: {+ B- u
  24.   Timer0Init();
    2 b/ C8 m; q# C5 t; N. {
  25.   while(1);
    4 D6 i. p/ s; x; J5 u3 s, l
  26. }
    : G+ ^0 U% P5 L2 q# d1 f+ C8 x7 B  p% w
  27. : A5 d* q( ?7 |' `
  28. void Timer0() interrupt 1    //1是中断号  U+ W& R" T0 M# z6 \( h
  29. {! @- D4 H7 y1 ?8 \1 v8 }, ^
  30.   static u16 i;
    ( j) B7 G4 e" D  z. \
  31.   TH0=0XFC;    //计数器寄存高8位重新载入
    ! Y* P$ Z% p5 u" E1 c
  32.   TL0=0X18;    //计数器寄存低8位重新载入
    . e& O# h9 t% a2 l! o
  33.   i++;
    ( X% J4 {' o& C
  34.   if(i==1000)! H# j$ a4 T6 i5 |$ T
  35.   {, K+ d; a; P- @: K
  36.     i=0;
    4 U7 f) N3 ~. X* \
  37.     led=~led;& h, {& O; z+ ?9 q1 u
  38.   }; I* ^3 R1 W% k) I
  39. }
复制代码
- ^  v) Z! u" R) w
收藏 评论0 发布时间:2020-7-29 12:58

举报

0个回答

所属标签

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