标题:这个程序的定时器是怎么用的
只看楼主
kk权
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-5-20
结帖率:0
已结贴  问题点数:20 回复次数:2 
这个程序的定时器是怎么用的
#include<reg51.h>
 
sbit P0_0=P0^0;              //个位数字
 
sbit P0_1=P0^1;      //十位数字
 
void delay(int k);    //Tab为数码管显示值?存入一个数组内
 
unsigned char ge,shi,num,count;
 
unsigned char code Tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
 
void main()
 
{
 
       TMOD=0x1;       //T0,工作方式1                         这个为什么是0x1?
 
       TH0=0xb1;    //20ms定时                                  这个为什么是0xb1?
      
 
       TL0=0xe0;                                                    这个为什么是0xe0?

 
       TR0=1;        //开启T0定时器
 
       ET0=1;         //允许T0定时器中断
 
       EA=1;           //开启总中断允许
 
       P2=Tab[0];P0_0=0;P0_1=0;//显示00
 
       num=0;                  //被显示的数置0
 
       while(1)       //一直调用显示?等待T0中断修改显示数据
 
       {
 
              shi=num/10;        //取出十位数
              ge=num%10;         //取出个位数
 
              P0_0=1;P0_1=1;   //关闭显示
 
              P2=Tab[shi];     //P2口送出十位数据显示代码
 
              P0_0=0;          //打开十位显示
 
              delay(100);      //延时
 
              P0_0=1;                     //关闭显示
 
              P2=Tab[ge];      //P2口送出个位数据显示代码
 
              P0_1=0;          //打开个位显示
 
              delay(100);      //延时
 
              P0_1=1;          //关闭个位显示
 
       }
 
}
 
 
void time0(void) interrupt 1
 
{
 
      
       TL0=0xe0;
 
       count++;     //计数值+1
 
       if(count==10)    //加到50次即1秒
 
       {      count=0;
 
              num++;              //显示数据+1
 
              if(num==20)
 
              {      num=0;       }
                      }
 
}
 
 
void delay(int k)
 
{
 
       while(k--);
 
}
 
 
  
搜索更多相关主题的帖子: include 定时器 数码管 count 
2016-09-25 20:42
kk权
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-5-20
得分:0 
哪位大神帮帮忙,谢谢了,急需知道。。。。
2016-09-25 20:44
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:20 
首先了解定时器工作模式的设定,TMOD=0x1(等价0x01)是设置定时器0为工作模式1,定时器1为工作模式0(实际上并未使用定时器1)。设置TH0=0xb1、TL0=0xe0,是设置定时器溢出的时间,这个数值是由单片机的工作频率(时钟)确定的。

活到老,学到老! http://www. E-mail:hu-jj@
2016-09-26 21:17



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-469190-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.149313 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved