注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

信息 灵感 创新

I? =Information,Inspiration,Innovation

 
 
 

日志

 
 
关于我

we are 5. Mathematics, Computation, Programming, Engineering, and Making fun of life.

网易考拉推荐

51单片机中断:计时器  

2013-11-15 18:37:13|  分类: C51(C&ASM) |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

这个是使用了两种中断:计时器中断和外部中断实现,用于精度为0.1s的计时器,时间范围为0-9.9s,带有暂停、恢复功能,以及复位功能。

电路原理图和代码如下:

51单片机中断:计时器 - Lemniscate - 信息,灵感,创新

 代码:

/*
 计时器中断,七段码管计时9.9秒
*/
#include<reg52.h>
//定义共阴极七段码管的数字0~9,以及小数点、空白、全显示
#define SEG0 0x3f
#define SEG1 0x06
#define SEG2 0x5b
#define SEG3 0x4f
#define SEG4 0x66
#define SEG5 0x6d
#define SEG6 0x7d
#define SEG7 0x07
#define SEG8 0x7f
#define SEG9 0x6f
#define SEGDOT 0x80
#define SEGFULL 0xff
unsigned char digits[]={SEG0,SEG1,SEG2,SEG3,SEG4,SEG5,SEG6,SEG7,SEG8,SEG9};
unsigned char timer=0;
unsigned char second;
sbit RESET=P3^7;
void delay(unsigned int i)
{
   unsigned int m,n;
   for(m=i;m>0;m--)
   for(n=125;n>0;n--);
}

void main()
{
   EA=1;
   EX0=1;
   TMOD=0x01;
   ET0=1;
   IT0=1;
   second=0;
   //全亮,检查七段码管是否正常工作
   P0=SEGFULL;
   P2=SEGFULL;
   delay(100);
   P0=SEG0|SEGDOT;
   P2=SEG0;
   TR0=0;//刚开始暂停,手动启动计时器
   while(1)
   {        
       //监视是否复位
       if(RESET==0)
       {
           delay(10);
           if(RESET==0)//消抖
           {
               TR0=0;
               TH0=0xee;
               TL0=0x00;
               second=0;
               P0=SEG0|SEGDOT;//带有小数点
               P2=SEG0;
           }
       }
   }
}

//外部中断0控制计时暂停或者启动
void int0() interrupt 0 using 0
{
  TR0=~TR0;
}

//定时器0中断控制时间递增
void time0() interrupt 1 using 1
{
   TR0=0;
   TH0=0xee;
   TL0=0x00;//5ms一次,因此20*5=100ms=0.1s
   timer++;
   if(timer==20)
   {
       timer=0;
       second++;
       P0=digits[second/10]|SEGDOT;//带有小数点
       P2=digits[second%10];
   }
   if(second==99)
   {
       TR0=0;//到了9.9秒就停止计时
       second=0;
   }
   else
       TR0=1;
}
  评论这张
 
阅读(1022)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016