定时器程序应用

时间:2023-03-13来源:佚名

  了解了定时器相关的寄存器,那么我们下面就来做一个定时器的程序,巩固一下我们学到的内容。我们这节课的程序先使用定时器0,在使用定时器的时候,需要以下几个步骤:

  第一步:设置特殊功能寄存器TMOD,配置好工作模式;

  第二步:设置计数寄存器TH0和TL0的初值;

  第三步:设置TCON,通过打开TR0位来让定时器开始计数。

  第四步:判断TCON寄存器的TF0位,监测定时器溢出情况。

  写程序之前,我们要先来学会计算如何用定时器定时时间。我们的晶振是11.0592M,时钟周期就是1/11059200,机器周期就是12/11059200,我们假如要定时20ms,就是0.02秒,要经过x个机器周期得到0.02秒,我们来算一下x*12/11059200=0.02,得到x= 18432。那么我们现在16位的定时器溢出值是65536,我们可以这样,先给TH0和TL0一个初值,让他们经过18432个机器周期后刚好溢出,溢出后我们可以通过检测TF0位得知,就刚好是0.02秒。这个初值y = 65536 - 18432 = 47104,转成16进制就是0xB800,那么就是TH0 = 0xB8,TL0 = 0x00。

  那0.02秒我们已经定时出来了,细心的同学会发现,我们如果初值直接给一个0x0000,一直到65536溢出,定时器定时值最大也就是71ms左右,那么我们想定时更长时间怎么办呢?用你小学学过的逻辑,倍数关系就可以解决此问题。

  那好了,我们下面就用程序来实现以下这个功能。

#include //包含寄存器的库文件

sbit LED = P0^0;

sbit ADDR0 = P1^0;

sbit ADDR1 = P1^1;

sbit ADDR2 = P1^2;

sbit ADDR3 = P1^3;

sbit ENLED = P1^4;

void main()

{

unsigned char counter = 0;

ENLED = 0; ADDR0 = 0; ADDR1 = 1;

ADDR2 = 1; ADDR3 = 1; LED = 1; //74HC138和LED灯初始化部分

TMOD = 0x01; //设置定时器0为模式1

TH0 = 0xB8;

TL0 = 0x00; //定时值初值

TR0 = 1; //打开定时器0

while(1)

{

if(1 == TF0) //判断定时器0是否溢出

{

TF0 = 0;

TH0 = 0xB8; //一旦溢出后,重新赋值

TL0 = 0x00;

counter ;

if(50 == counter) //判断定时器0溢出是否达到50次

{

counter = 0; //counter清0,重新计数

LED = !LED; //LED取反操作,0-->1,1-->0

}

}

}

}

  程序都有注释,不难理解,这里要解释一个地方,就是两次if判断,细心的同学会发现,if(1 == TF0)这句,我把1写前边,这个地方我推荐新手按照我这样来写,因为如果我们写if(TF0 == 1),作为新手来说,不小心丢掉一个’=’号后,写成if(TF0 = 1),这样实际上在语法上是可以通过的,我们用的Keil4还会出一个警告说明一下,Keil以前的版本以及一些其他软件,可能根本不会出任何错误或者警告提示,但是这样产生的Hex文件下载到单片机里边,程序就错了,大家可以改改试试看。

  本程序实现的结果是我们板子上最右边的小灯点亮持续一秒,熄灭持续一秒,也就是以0.5HZ的频率进行闪烁。

相关阅读

高压开关柜的种类及常见故障有哪些

  高压开关柜 是电力系统中重要的电气设备。电力系统故障的原因之一是开关柜运行状态恶化。那么高压开关柜常见的故障是什么呢?    1.高压开关柜的类型及发展   (1)户外式及...
2023-06-27
高压开关柜的种类及常见故障有哪些

电工知识分享,两台200smartPLC如何进行数据交换

原材料:两台200smartPLC及其供电模块,三条网线,一个交换机,一台电脑。实际做项目的时候,两台PLC的数据交换不需要交换机。 将两台PLC的电源接好,PLC的以太网端口分别连接至交换...
2023-04-04
电工知识分享,两台200smartPLC如何进行数据交换

模组电源原理图设计指南

在模组的外围电路设计中,合理的供电设计是保障模组正常运行的前提。本文将从电源电路设计、电容设计以及供电控制电路设计等方面阐述模组外围电路设计的注意事项。 一、电源电...
2023-06-07
模组电源原理图设计指南

水电工人没按这2点布水电线,不要给钱!不然5年内必重装!

我们买房都是为了安居乐业的,如果因为装修不当而导致出现的麻烦,特别是需要改动墙面或地板的,就失去了为了舒适生活而装修的意义,所以正确的装修布局是很重要的。新房布水...
2023-06-11
水电工人没按这2点布水电线,不要给钱!不然5年内必重装!

电动机保护器电路的工作原理附元器件选择要求

本文介绍了电动机保护器的电路原理,电动机保护器电路由电源电路、电流检测电路和保护控制电路组成,以及电动机保护器的核心元器件选择要求,下面与电工之友小编一起来看下。...
2023-06-26
电动机保护器电路的工作原理附元器件选择要求

热销商品

304不锈钢连胶条喉箍R型固定夹管夹U型电缆电线连胶条卡箍橡胶减

304不锈钢连胶条喉箍R型固定夹管夹U型电缆电线连胶条卡箍橡胶减震,是一种高效、耐用的管路连接解决方案。该产品采用高品质304不锈钢材料,具有优异的耐腐蚀性和强度...
0.29

电焊机焊把线电焊线国标电缆线16 25 35 50 70平方纯铜焊把线

电焊机焊把线(电焊线)是焊接作业中的关键连接线,采用国标纯铜导体,导电性能优异、电阻低、发热少,确保电流稳定传输。常见规格包括16、25、35、50、70平方毫米,适用于不...
3.8

塑料镊子 黑色平头弯头尖头扁嘴圆头塑料防静电镊子 碳纤维镊子

塑料镊子是一种轻便、耐腐蚀且防静电的精密工具,广泛应用于电子、医疗、实验室及精密装配等领域。黑色款式多采用碳纤维增强塑料材质,兼具高强度与导电性,有效防止静...
0.6

阻燃尼龙编织网管 PET伸缩网套管 电脑机箱电线避震蛇皮管 10米

阻燃尼龙编织网管(PET伸缩网套管)是一种高性能电线保护套管,采用环保PET材料经精密编织而成,具有优异的阻燃、耐磨、抗拉伸及柔韧性能。其独特的蛇皮状结构可自由伸缩...
4.01

萝卜头螺丝刀磁性两用伸缩螺丝刀一字十字梅花平口短小改锥

萝卜头螺丝刀是一款多功能、便携实用的手动工具,集一字、十字、梅花(星型)等多种刀头于一体,采用磁性设计,可牢固吸附螺丝,提升操作效率。其独特的伸缩结构让刀头可灵活...
3.28

网站栏目