‘壹’ 有关单片机定时器的使用和定时器的介绍
导语:单片机,其实就是一种用于集成电路中的芯银塌片,而单片机的定时器是一个电子元件,它是一个稳定的计数器,是由单片机本身提供的。它也是察搏羡单片机上的一个连接部件,可以用来编程。定时器还有一个功能显而易见就是可以用来定时,同时,它也可以用来统计一些脉冲信号。下面就来介绍下单片机定时器的使用的相关内容。
定时器的结构
定时器是由两个寄存器组成的,其中一个寄存器是用来确定计数器的工作形式和功能的,另外一个计时器是用来控制单片机的启动和停止的,同时它也是设置溢出的一个标志。
计数过程
每来一个脉冲计数器加1,当加到计数器为全1(即FFFFH)时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON中TF0或TF1置1,向CPU发出中断请求(定时器/计数器中断允许时)。如果定时器/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。
定时应用
用作定时器:此时设置为定时器模式,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。计数值N乘以机器周期Tcy就是定时时间t。
计数运用
用作计数器:此时设置为计数器模式,外败拍部事件计数脉冲由T0或T1引脚输入到计数器。每来一个外部脉冲,计数器加1。但单片机对外部脉冲有基本要求:脉冲的高低电平持续时间都必须大于1个机器周期。
定时器的使用
定时器的使用主要分为五个步骤,首先是要打开中断的可以允许的位置,主要是对IE寄存器的控制,然后选择定时器的工作的形式,定时器的一个格式是TMOD的形式,主要有四种方式。第一种计数的方式是十三位加一的形式,第二种是十六位加一的计数器,第三种的定数器被分解成两部分,一个是八位的寄存器,另外一个是八位的计数器。第三步就是要为定时器进行赋值,首先定时器的初值是等于计数器模值减去计数器记满的招满值,而定时器的初值是等于模值减去预定时的时间与单片机时钟周期的十二倍。接下来就是启动计时器,当TRO为0的时候,停止TO开始计数,而TRO值为1的时候,就启动TO进行计数。当TFO为0的时候,没有TO的中断,这时是没有硬件复位,而当值为1的时候有TO溢出中断的情况。当TR1为0的时候,停止TI进行计数,而值为1的时候开启T1进行计数。
当TF1为0的时候,没有T1的中断,为1的时候会出现T1的溢出中断情况。当IE1的值为0的时候时,出现硬件的复位而当其值为1的时候出现中断。当IT1的值为0的时候INT1出现电平触发的情况,也就是软件复位,而当值为1的时候,INT1的负边沿会出现触发的情况。当IE0的值为0时会出现硬件复位,而当IEO的值为1的时候,INT0上会有中断的情况。当IT0的值为0时,INT0会发生电平触发,也就是软件复位,同时INT0的负边沿触发。最后一步就是计数器中断入口程序。
定时器/计数器的工作方式
方式0为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。
方式1的计数位数是16位,由TL0(TL1)作为低8位、TH0(TH1)作为高8位,组成了16位加1计数器。
方式2为自动重装初值的8位计数方式。
在方式2下,当计数器计满255(FFH)溢出时,CPU自动把TH的值装入TL中,不需用户干预。因此特别适合于用作较精确的脉冲信号发生器。
方式3只适用于定时器/计数器T0,定时器T1方式3时相当于TR1=0,停止计数。
工作方式3将T0分成为两个独立的8位计数器TL0和TH0。
总而言之,定时器的使用可以为单片机的功能增加一些性能上的增强。所以,合理的运用定时器将会帮助我们使用单片机。以上就是有关单片机定时器的使用的相关内容,希望能对大家有所帮助!
土巴兔在线免费为大家提供“各家装修报价、1-4家本地装修公司、3套装修设计方案”,还有装修避坑攻略!点击此链接:【https://www.to8to.com/yezhu/zxbj-cszy.php?to8to_from=seo__m_jiare&wb】,就能免费领取哦~
‘贰’ 单片机定时器做的时钟,定时不准。
单片机定时器做时钟,确切的说在环境温度变化不大的前提下,可以调整的很准,毕竟它是基于MHz级的晶振的,提两点建议,1】建议使用12MHz晶振;2】请注意对于不同的编程,定时器赋值时,如果需要50ms定时则绝不一定是赋值50000,也不一定是循环20次就是1S;你琢磨下这里的道理,你就明白了,具体方法是,找一个比较准的时钟,比如在线时钟,每10小时记录一次找出规律,细细调整,毕竟它是在微秒范围内进行调整,你肯定行的,祝成功。
‘叁’ 51单片机的定时器用作定时方式是
51单片机的定时器用作缓厅定时方式是一个时钟周期加1。根据查询相关公开信息显示,51单片机的定时器用作定时方式是由内部时钟频率定时,一个时钟周期加1。51单片机是对兼容英特尔8051指令系统的单片机的统称,51单片机广泛应用于家用电器、汽车激庆、工业测控、通信设备中,因为51单片机的指令系统、内部扰铅隐结构相对简单,所以国内许多高校用其进行单片机入门教学。
‘肆’ 单片机定时器时钟设计程序,急求
#include<reg51.h>
#define uchar unsigned char
uchar code ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0-9
unsigned char sec=0,min=0,hour=12,scanled;
unsigned char key,flashbit,mode,time;
unsigned char disdat[6];
sbit led=P1^0;
void delay(unsigned int x)
{
unsigned int i,j;
for(i=0;i<x;i++)
for(j=0;j<120;j++);
}
void dischg()
{
disdat[0]=sec%10;
disdat[1]=sec/10;
disdat[2]=min%10;
disdat[3]=min/10;
disdat[4]=hour%10;
disdat[5]=hour/10;
}
void flash()
{
switch(flashbit)
{
case 0:break;
case 1:
disdat[4]=0x10;
disdat[5]=0x10;
delay(50);
dischg();
delay(80);
break;
case 2:
disdat[2]=0x10;
disdat[3]=0x10;
delay(50);
dischg();
delay(80);
break;
case 3:
disdat[0]=0x10;
disdat[1]=0x10;
delay(50);
dischg();
delay(80);
break;
default:break;
}
}
void t0isr() interrupt 1 //秒计时
{
TH0=0x3c;
TL0=0xb0;
time++;
switch(mode)
{
case 0:
if(time==20)
{
time=0;
sec++;
if(sec>59)
{
sec=0;
min++;
if(min>59)
{
hour++;
if(hour>23)hour=0;
}
}
}
break;
case 1:
if(time==20)
{
time=0;
if(sec>0)sec--;
else if(min>0){sec=59;min--;}
else if(hour>0){sec=59;min=59;hour--;}
else {hour=0;min=0;sec=0;}
}
break;
}
dischg();
}
void t1isr() interrupt 3 //显示
{
TH1=0xec;
TL1=0x78;
switch(scanled)
{
case 0:
P2=0x01;
P0=~ledtab[disdat[5]];
break;
case 1:
P2=0x02;
P0=~ledtab[disdat[4]];
break;
case 2:
P2=0x04;
P0=~ledtab[disdat[3]];
break;
case 3:
P2=0x08;
P0=~ledtab[disdat[2]];
break;
case 4:
P2=0x10;
P0=~ledtab[disdat[1]];
break;
case 5:
P2=0x20;
P0=~ledtab[disdat[0]];
break;
default:break;
}
scanled++;
scanled%=6;
}
main()
{
TMOD=0x11;
TH0=0x3c;
TL0=0xb0;
TH1=0xec;
TL1=0x78;
EA=1;
TR1=1;
ET0=1;
ET1=1;
sec=0;
min=0;
hour=12;
flashbit=0;
scanled=0;
time=0;
mode=0;
dischg();
while(1)
{
flash();//闪烁
// led=1;
if((P3&0x0f)!=0x0f){
key=P3&0x0f;
while((P3&0x0f)!=0x0f);
led=0;
delay(10);
key|=0xf0;
switch(~key)
{
case 0x01: //p3.1选择调时、分、秒
TR0=0;
flashbit+=1;
if(flashbit>3){flashbit=0;TR0=1;}
break;
case 0x02: //p3.2调数
if(flashbit==0)break;
if(flashbit==1)
{
hour++;
if(hour>23)hour=0;
}
if(flashbit==2)
{
min++;
if(min>59)min=0;
}
if(flashbit==3)
{
sec++;
if(sec>59)sec=0;
}
break;
case 0x04: //选择正/倒
TR0=0;
mode++;
mode&=0x01;
if(mode==0){sec=0;min=0;hour=0;}
dischg();
break;
case 0x08: //启动/暂停
TR0=~TR0;
break;
default:break;
}
}
}
}
‘伍’ 单片机定时器怎么实现时间计时越细越好
定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。
加1计数器输入的计数脉冲有两个来源,一个是由系统的时钟振荡器输出脉冲经12分频后送来;一个是T0或T1引脚输入的外部脉冲源。每来一个脉冲计数器加1,当加到计数器为全1时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON中TF0或TF1置1,向CPU发出中断请求(定时/计数器中断允许时)。如果定时/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。
可见,由溢出时计数器的值减去计数初值才是加1计数器的计数值。
•设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。计数值N乘以机器周期Tcy就是定时时间t。
‘陆’ 单片机的时钟源和定时器有什么区别
时钟源也就是晶振了,就是一个产生固定频率脉冲的器件,单片机的定时器是一个可以编程控制的功能模块,其本身是不能输出脉冲的。
‘柒’ 51单片机的定时器的时间怎么算
51单片机1个机器周期=12个时钟周期,频率为12MHZ,则一个机器周期为1US,具体到定时器程序就是,假如你想定1MS,那么单片机每次加一个一,就要过1US,那么1MS就要加1000次,所以用65535-1000=64535;再把64535换成16进制为FC17,把FC付给TH0,17给TLO,即可定时1MS,因为65535他就溢出进入中断。
‘捌’ 请问如何使用单片机定时器制作一个以00-00-00为初始的24小时制时钟
程序比较长,可用定时器定时50mS,累积20次,即1S,秒加1,60S后分加1,秒清0,60分后,小时加1,分清0 ,24小时后小时清0,这些都在定时器中断程序中完成,主程序只管显示时 分 秒即可。
‘玖’ 单片机定时器定时的时间怎么算
单片机的定时时间的计算公式=计数值(定时值)* 机器周期= 计数值(定时值)* 12 / 晶振频率。
上面的两个等号是等价的,因为,单片机的机弊顷器周期=12秒/晶振频率,因此两个公式通用。
完成一个基本租桐陆操作所需要的时间称为机器周期。一般,轮渗一个机器周期由 若干个S周期(状态周期)组成。80C51系列单片机一个机器周期由6个S周期组成。一个S周期(状态周期),由2个时钟周期组成。
若干个机器周期,组成了指令周期。根据指令不同,所需的机器周期数也不同。
(9)单片机定时器时钟扩展阅读
几种典型指令;
1、单字节周期指令(比如 INC A)
2、双字节单周期指令(比如 ADD A,#data)
3、单字节双周期指令 (比如 INC DPTR)
4、单字节双周期指令 (比如MOVX A @DPTR)