本文目录一览

1,51单片机定时器使用

51单片机定时器的GATE=1时,用外部INT0启动定时器,当INT0=0时, 定时器T1会停止计数,这个时候读取T1的值是可以计算出高电平的宽度的。
不会。

51单片机定时器使用

2,单片机的定时器问题

不是,你初始化中要打开开关中断的设置,如中断0为EX0=1就行了,一般建议你先打开总开关中断,后打开定时器中断。还有你初始化里面设定模式,如果是自动重装初值的中断程序中不用重装,其他要在中断程序中要重装初值。至于如果没有重装初值,我就没试过,你可以是下看看能不能进入中断。
不是,单片机每隔一个机器周期去检验有没有中断信号产生,如果有就进入中断程序 希望能给你帮助。
没有吧,它是在一直计时吧? 你没有触发中断,就没有中断呗

单片机的定时器问题

3,用51单片机设置定时器

;定时10S,就一个单片机最小系统了,线路图不用画了吧。ORG 00HAJMP MAINORG 0BHAJMP T0INTORG 30HMAIN:MOV TMOD,#01HMOV TH0,#3CHMOV TL0,#0B0HSETB EASETB ET0SETB TR0MAIN1:AJMP $T0INT: ;50ms定时中断一次MOV TH0,#3CHMOV TL0,#0B0HINC R0CJNE R0,#200,RTICPL P1.0 ;假设P1.0装一LED,那么每10s亮或灭一次MOV R0,#0RTI:RETIEND
做定时用一般采用16位模式,也就是tmod=0x11(10或01单独一个定时器的话),初值的计算是这样的: 假设时间是x毫秒,晶振为ymhz,那么: thn=(65536-1000*x*y/12)/256 tln=(65536-1000*x*y/12)%256之后就是trn=1(开启定时器) etn=1(开启定时器中断 ea=1就是这样,很简单的。

用51单片机设置定时器

4,单片机定时器 计数器的工作原理及如何实现定时 计数功能

原理: 16位的定时器/计数器实质上就是一个加1计数器,其控制电路受软件控制、切换。 当定时器/计数器为定时工作方式时,计数器的加1信号由振荡器的12分频信号产生,即每过一个机器周期,计数器加1,直至计满溢出为止。显然,定时器的定时时间与系统的振荡频率有关。因一个机器周期等于12个振荡周期,所以计数频率fcount=1/12osc。两个字节最大数据为65536(十进制),或者0FFFFH(十六进制)高字节为TH0=(65536-X)/256,就是除以256后的整数部分;低字节为TL0=(65536-X)%256,减去高字节后余下的部分;定时/计数器定时/计数器T0和T1分别是由两个8位的专用寄存器组成,即定时/计数器T0由TH0和TL0组成,T1由TH1和TL1组成。此外,其内部还有2个8位的特殊功能寄存器TMOD和TCON,TMOD负责控制和确定T0和T1的功能和工作模式,TCON用来控制T0和T1启动或停止计数,同时包含定时/计数器的状态。以上内容参考:百度百科-定时器中断
动画效仿定时器原理,生动有趣
定时\计数器的原理: 16位的定时器/计数器实质上就是一个加1计数器,其控制电路受软件控制、切换。 当定时器/计数器为定时工作方式时,计数器的加1信号由振荡器的12分频信号产生,即每过一个机器周期,计数器加1,直至计满溢出为止。显然,定时器的定时时间与系统的振荡频率有关。因一个机器周期等于12个振荡周期,所以计数频率fcount=1/12osc。如果晶振为12MHz,则计数周期为:T=1/(12×106)Hz×1/12=1μs 这是最短的定时周期。若要延长定时时间,则需要改变定时器的初值,并要适当选择定时器的长度(如8位、13位、16位等)。 当定时器/计数器为计数工作方式时,通过引脚T0和T1对外部信号计数,外部脉冲的下降沿将触发计数。计数器在每个机器周期的S5P2期间采样引脚输入电平。若一个机器周期采样值为1,下一个机器周期采样值为0,则计数器加1。此后的机器周期S3P1期间,新的计数值装入计数器。所以检测一个由1至0的跳变需要两个机器周期,故外部事年的最高计数频率为振荡频率的1/24。例如,如果选用12MHz晶振,则最高计数频率为0.5MHz。虽然对外部输入信号的占空比无特殊要求,但为了确保某给定电平在变化前至少被采样一次,外部计数脉冲的高电平与低电平保持时间均需在一个机器周期以上。 当CPU用软件给定时器设置了某种工作方式之后,定时器就会按设定的工作方式独立运行,不再占用CPU的操作时间,除非定时器计满溢出,才可能中断CPU当前操作。CPU也可以重新设置定时器工作方式,以改变定时器的操作。由此可见,定时器是单片机中效率高而且工作灵活的部件。 综上所述,我们已知定时器/计数器是一种可编程部件,所以在定时器/计数器开始工作之前,CPU必须将一些命令(称为控制字)写入定时/计数器。将控制字写入定时/计数器的过程叫定时器/计数器初始化。在初始化过程中,要将工作方式控制字写入方式寄存器,工作状态字(或相关位)写入控制寄存器,赋定时/计数初值。下面我们就提出的控制字的格式及各位的主要功能与大家详细的讲解。 控制寄存器 定时器/计数器T0和T1有2个控制寄存器-TMOD和TCON,它们分别用来设置各个定时器/计数器的工作方式,选择定时或计数功能,控制启动运行,以及作为运行状态的标志等。其中,TCON寄存器中另有4位用于中断系统。

5,怎样使用51单片机的定时器

1. 设定工作方式TMOD=..... 2. 装入初值 TH0=...TL0=....TH1=....TL1=..... 3.开启定时器中断和总中断ET0=1或ET1=1 EA=1 4.启动时器 TR0=1 TR1=1 5.写中断服务程序 其中 3和5可以没有
51单片机定时器的使用51单片机定时器/计时器的使用步骤:1、 打开中断允许位:对IE寄存器进行控制,IE寄存器各位的信息如下图所示:EA: 为0时关所有中断;为1时开所有中断ET2:为0时关T2中断;为1时开T2中断,只有8032、8052、8752才有此中断 ES: 为0时关串口中断;为1时开串口中断 ET1:为0时关T1中断;为1时开T1中断 EX1:为0时关1时开 ET0:为0时关T0中断;为1时开T0中断 EX0:为0时关1时开2、 选择定时器/计时器的工作方式:定时器TMOD格式CPU在每个机器周期内对T0/T1检测一次,但只有在前一次检测为1和后一次检测为0时才会使计数器加1。因此,计数器不是由外部时钟负边沿触发,而是在两次检测到负跳变存在时才进行计数的。由于两次检测需要24个时钟脉冲,故T0/T1线上输入的0或1的持续时间不能少于一个机器周期。通常,T0或T1输入线上的计数脉冲频率总小于100kHz。方式0:定时器/计时器按13位加1计数,这13位由TH中的高8位和TL中的低5位组成,其中TL中的高3位弃之不用(与MCS-48兼容)。13位计数器按加1计数器计数,计满为0时能自动向CPU发出溢出中断请求,但要它再次计数,CPU必须在其中断服务程序中为它重装初值。方式1:16位加1计数器,由TH和TL组成,在方式1的工作情况和方式0的相同,只是计数器值是方式0的8倍。11/3方式2:计数器被拆成一个8位寄存器TH和一个8位计数器TL,CPU对它们初始化时必须送相同的定时初值。当计数器启动后,TL按8位加1计数,当它计满回零时,一方面向CPU发送溢出中断请求,另一方面从TH中重新获得初值并启动计数。方式3:T0和T1工作方式不同,TH0和TL0按两个独立的8位计数器工作,T1只能按不需要中断的方式2工作。 在方式3下的TH0和TL0是有区别的:TL0可以设定为定时器/计时器或计数器模式工作,仍由TR0控制,并采用TF0作为溢出中断标志;TH0只能按定时器/计时器模式工作,它借用TR1和TF1来控制并存放溢出中断标志。因此,T1就没有控制位可以用了,故TL1在计满回零时不会产生溢出中断请求的。 显然,T0和T1设定为方式3实际上就相当于设定了3个8位计数器同时工作,其中TH0和TL0为两个由软件重装的8位计数器,TH1和TL1为自动重装的8位计数器,但无溢出中断请求产生。由于TL1工作于无中断请求状态,故用它来作为串口可变波特3、 为计数器赋值计数器初值计算TC=M?CTC:计数器初值,M:计数器模值(2k),C:把计数器计满的计数值 定时器初值计算T=(M?TC)T计数或TC=M?T/??计数M:模值,T计数:单片机时钟周期TCLK(ΦCLK的倒数)的12倍;TC为定时器的定时初值,T为欲定时的时间。TC=M?T×????????/12M:模值,ΦCLK:单片机时钟周期ΦCLK;TC为定时器的定时初值,T为欲定时的时间。 例如:单片机主脉冲频率ΦCLK为12MHz,最大定时时间为: 方式0时 TMAX = 213×1us = 8.192ms 方式1时 TMAX = 216×1us = 65.536ms 方式2和方式3 TMAX = 28×1us = 0.256ms4TR0:为0时,停T0计数;为1时,启T0计数22/3TF0:为0时,无T0中断(硬件复位);为1时,有T0溢出中断 TR1:为0时,停T1计数;为1时,启T1计数 TF1:为0时,无T1中断(硬件复位);为1时,有T1溢出中断 IE1:为0时,硬件复位;为1时 IT1:为0时,INT1电平触发(软件复位);为1时,INT1负边沿触发 IE0:为0时,硬件复位;为1时 IT0:为0时,INT0电平触发(软件复位);INT0负边沿触发5在C51的C语言中使用interrupt x来指定中断入口地址,x为中断号,例T0中断: void Time0_Int() interrupt 1 //定时器T0的中断入口程序
51单片机定时器的gate=1时,用外部int0启动定时器,当int0=0时, 定时器t1会停止计数,这个时候读取t1的值是可以计算出高电平的宽度的。
给你一个例子#include <reg51.h>void InitTimer0(void) TMOD = 0x01; TH0 = 0x0FC; TL0 = 0x18; EA = 1; ET0 = 1; TR0 = 1;}void main(void) InitTimer0(); while(1);}void Timer0Interrupt(void) interrupt 1 TH0 = 0x0FC; TL0 = 0x18; //把你的定时中断代码放在这里}

文章TAG:单片机  定时  定时器  51  单片机定时器  
下一篇