定时器的基本原理 您所在的位置:网站首页 计时器原理图画法视频 定时器的基本原理

定时器的基本原理

2024-06-23 06:50| 来源: 网络整理| 查看: 265

一、定时器概念:

1.能够对内部时钟信号或外部输入信号进行计数,数值达到设定要求时,向CPU发起中断请求,完成外部程序的运行。

2.本质就是进行计数,选择内部时钟脉冲,作为计数器时,技术信号的来源选择非周期脉冲信号。

二、过程:

C51具有两个定时器/计数器T0和T1,16位的加法计数器,由低8位和高8位THx两个寄存数值为65535个技术脉冲。

技术脉冲的来源有两个:

(1)系统时钟振荡器输出的12分频。

(2)T0或T1引脚输入的外部脉冲信号。

每接收到一个计数脉冲,计数器就会加1,当计数值累计至全为1时(8位255,13位8191,16位65535),再输入一个计数脉冲,计数器便会溢出回零,并且计数器的溢出是TCON寄存器的TF0或TF1位置1,同时向内核提出中断请求。如果定时/计数器工作于定时模式,则表示间隔定时时间到,如果工作与计数模式,则表示计数值已满。     假设单片机的外部晶振为12MHz,那么,经过12分频后输入计数器的计数脉冲为1MHz,即每个脉冲的周期为1us。因此定时器T0的16位工作模式最大的定时时间为65535us,65.5ms。如果要定时10ms的话,计数器就不能够从0开始计数了,必须给它一个计数初值。怎么计算这个初值呢?    要定时10ms,则相当于计数10000个脉冲后计数器的值就到达65535了,那么开始计数的这个地方就是计数初值。

三、编程思路:

定时/计数器的程序设计中,通常有两个函数:初始化函数和中断服务函数。

初始化函数中,一般情况下有:

a.配置工作模式,即对TMOD寄存器编程。

b.计算初始化值,即对THx和TLx寄存器进行赋值。

c.定时器/计数器中断,对ET0或ET1置1.

d.打开总中断,EA=1。

e.启动定时器,即TR0或TR1置1.

中断服务函数中有:

如果不是自动重装模式,需要对THx和TLx重新进行赋值;进行间隔定时达到逻辑处理越少越好。

代码如下:

#include "reg52.h" sbit L1 = P0^0; sbit L8 = P0^7; void SeclectHC573() { P2 = (P2 & 0x1f | 0x80); } //**** void InitTimer0() { TMOD = 0x01; TH0 = (65535 - 50000) / 256; TL0 = (65535 - 50000) % 256; ET0 = 1; EA = 1; TR0 = 1; } unsigned char count = 0; //这里我们可以在定义一个unsigned型的count1变量,但是为了代码的简洁,我们只需要定义一个即可 //unsigned char count1 = 0; void ServiceTimer0() interrupt 1 { TH0 = (65535 - 50000) / 256; TH0 = (65535 - 50000) % 256; count++; if(count % 10 == 0) { L1 = ~ L1; //count = 0; } if(count == 100) { L8 = ~L8; count = 0; } } //*** void main() { SeclectHC573(); InitTimer0(); while(1) { } }



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有