您的位置 首页 电源

51单片机学习笔记(三)_定时器和计数器

注:定时器与计数器原理与使用方法相似、此处计数器知识为基础普及、后面详讲2个定时器(寄存器)、定时器0、定时器1、(计数器0、计数器1)TMOD…

注:守时器计数器原理与运用办法类似、此处计数器常识为根底遍及、后边详讲

2个守时器(寄存器)、守时器0、守时器1、(计数器0、计数器1)

TMOD:守时器/计数器形式操控寄存器 详见百度百科TMOD

  • 每经过一个机器周期、寄存器+1
  • TF:守时器溢出标志。溢出时主动置1。中止时硬件清零不然有必要软件清零。
  • TR:守时器运转操控位。置1开端计时、清零中止计时。
  • C/T:该位为0时用作计时器、该位为1时用作计数器。

溢出时时刻-开端计时时刻=预设守时时刻

一个机器周期共有12个振动脉冲周期

若设守时为0.02s,则:

12*(65535-X)/11059200=0.02s

守时器作“加1”次数:X=47104=0xB800次 时刻为0.02s

运用守时器的办法

1、设置特别功用寄存器TMOD,使之作业在需求的状况。
2、设置计数寄存器的初值,准确设定好守时时刻。
3、设置特别功用寄存器TCON,经过翻开TR来让守时器进行作业。

4、判别寄存器TCON的FT0位、检测守时器溢出状况。

假定咱们运用守时器0、守时为0.02s,两个寄存器计时

TMOD=0x01; TMOD=0x01,指的是选用T0方法,将M1置0,M0置1,是方法一的守时器

高八位寄存器TH0=0xB8、低八位寄存器TL0=0x00

C程序完成1s钟守时

#include typedef unsigned char uint8;typedef unsigned int uint16;sbit led=P1^0;uint8 counter;void main(){TMOD=0x01;TH0=0xb8;TL0=0x00;TR0=1; led=1;counter=0;while(1){if(TF0==1){   //假如到达溢出 0.02s后溢出TF0=0;	 //软件清零TH0=0xB8;   //重置计数基数TL0=0x00;counter++;  //溢出一次计次数}if(counter==50){   //0.02s*50=1scounter=0;	  //清零led=~led; //取反使P1^0亮灭}}}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/263711.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部