当前位置:   article > 正文

单片机入门:定时器/计数器应用_单片机对外部脉冲计数并定时控制

单片机对外部脉冲计数并定时控制

利用单片机内部定时器/计数器中断实现一个数码管的秒记数,重点学习定时器/计数器的工作方式以及其控制寄存器TMOD、TCON的功能,在程序实现过程中掌握定时器/计数器中断的一般步骤。

51单片机内部含有两个定时器/计数器,分别是T0和T1,在增强型51系列单片机中,如STC89C51RC,内部除了含有T0和T1外,还有T2定时器/计数器。定时器/计数器主要由于精确的定时,也可用于对外部脉冲进行计数以及为作为串行通信的波特发生器。定时/计数器不同的功能是通过对相关特殊功能寄存器的设置和程序设计来实现的。

为了获得1秒时间,T0中断需要发生200次。程序包含主函数,T0的初始化函数和T0中断服务函数,显示语句放在中断服务函数内,程序如下:

/************************************************************************************///利用定时器0中断,实现SEG0秒计数/************************************************************************************/#include<reg52.h>code unsigned char seven_seg[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};unsigned char cp,i;                  //声明全局变量void timer0_isr(void)  interrupt 1      // timer0中断服务函数{  TR0 = 0;                     //停止计数  TL0 = 0x78;                  //TL0重新预置,把63536转化为16进制后的低8  TH0 = 0xec;                  // TH0重新预置  TR0 = 0;                     //开始计数  cp++;                        // timer0中断1次,变量cp加1  if(cp == 200)                   //中断200次,时间刚好为1  {    cp = 0;    i ++;  }  P2 = 0xdf;            //P2输出数码管的位选信号,seg0  if(i == 10) i = 0;  P0 = seven_seg[i];              // P0输出显示数据  TR0=1;}void timer0_initialize(void)            // timer0中断初始化函数{  EA = 0;                       //设置中断允许寄存器IE中的 EA位,关闭中断总开关  TMOD = 0x01;                  //设置计时器模式控制寄存器,Time0工作在定时方式1,16为定时器  TR0 = 0;       //设置计时器控制寄存器TCON寄存器的TR0位为0,Timer0停止计数  TL0 = (65536 - 5000) % 256;   //设置定时器的低8位初值,计5000个机器周期脉冲就会溢出  TH0 = (65536 - 5000) / 256;; //设置定时器的高8位初值,假设单片机晶振为12MHz。                  //频率,单片机的机器周期为1微秒,Timer01微秒加1                  //计数,加满溢出变产生中断,从计数到中断刚好为5毫秒  PT0 = 1;                      //设置中断优先次序寄存器IP中的PT0位,Timer0中断优先  ET0 = 1;                      //设置中断允许寄存器IE中ET0的位,开启中断小开关  EA = 1;                       //打开中断总开关  TR0 = 1;                      //开始计数}void main (void){  timer0_initialize();          // timer0初始化,为中断做好准备  while (1);             //等待中断}

仿真原理图如下:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/637181
推荐阅读
相关标签
  

闽ICP备14008679号