我是靠谱客的博主 沉默大侠,最近开发中收集的这篇文章主要介绍【蓝桥杯单片机】第十四章 定时器/计数器(实验),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

第一节    硬件解读

关于定时器,又称计数器,是单片机内部的计时的独立的系统。关于它的引脚,我们可以在原理图里面查到。

         

图片

                 

       从上图中,我们不难发现,一共有5个中断源,引脚分别是P3.2,P3.3,P3.6,P3.7和P3.0;一共有2个定时器,引脚分别是P3.4和P3.5。与上一章的得到的结论一摸一样。

       本章将先讲解定时器,关于中断的讲解,将放在按键部分。

第二节    程序编写

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

对于上述程序,重点是定时器的初始化与定时器服务函数。

图片

在定时器初始化函数中,第一个寄存器是TMOD,该寄存器信息如下图所列。可以看出,2个定时/计数器有4种操作模式,通过TMOD的M1和M0选择。高四位bit控制T1,低四位bit控制T0。所以定时器T0有4种工作方式;TMOD =0x00(工作方式0),TMOD = 0x01(工作方式1),TMOD = 0x02(工作方式2),TMOD = 0x03(工作方式3)。定时器T1也有4种工作方式;TMOD =0x00(工作方式0),TMOD = 0x10(工作方式1),TMOD = 0x20(工作方式2),TMOD = 0x30(工作方式3)。但是需要注意的是,如果定时器T0用方式1,T1用方式2,那TMOD = 0x21(高位T1,低位T0)。这就是为什么在TMOD寄存器中没有直接赋值,使用语句“TMOD &= 0xf1; //用定时器0工作方式1”可以保留高位的定时器T1的工作模式,即使本程序中没有用到T1定时器。

图片

TR0:T0定时使能开关,TR0 = 1,开始工作;TR0 = 1,停止工作。

ET0:T0定时器中断开关,定时时间一到,就会跑去中断程序。ET0=1,中断使能;ET0=0失能。

EA :中断总开关,你可以想象成电路的总电闸,EA=1,中断使能;EA=0,中断失能。

TH0,TL0 : T0定时器计数寄存器,组成16位的计数,0x0000--0xFFFF(0--65535),只要TH0和TL0=0xFFFF(65535),程序就会跑去中断(计数)程序,在中断(计数)程序中,我们要重新给TH0,TL0重新赋值的。假如说,我们定时50毫秒,TH0,TL0对应着什么值呢?上面我们说了,TH0,TL0,组成的16位计数器计数范围是 0--65535 。50ms = 50 000us,我们只要让 TH0和TL0 从(65535 - 50000)开始计数,TH0,TL0就会不停的+1,直到TH0,TL0=65535,就是计数了50000次,时间就是过了50ms。我们只要在中断(计数)程序里面,重新赋值给TH0,TL0=(65535 - 50000),定时器就会不停得每50ms中断一次了。

所以,TH0=(65535-50000)/256;TL0 =(65535-50000)%256 ;

好吧,T0程序例子,定时20ms的程序 :

TMOD = 0x00;//工作方式0

TR0 = 1;//开始工作

ET0=1;//中断使能

TH0=(65535-20000)/256;

TL0 = (65535-20000)%256 ;

说完了T0,T1该怎么办?我开始的时候说了,T0,T1是一对双胞胎。大家把上面T0例子程序稍加该动即可:

TMOD = 0x00;//工作方式0

TR1 = 1;//开始工作

ET1=1;//中断使能

TH1=(65535-20000)/256;

TL1=(65535-20000)%256;

上面是所有关于定时器初始化函数的内容,如果大家不明白可以私聊微信公众号管理员。

接下来就是定时器服务函数了。这个函数里面的TH0与TL0与定时器初始化的是一模一样的,该函数最难的是这个函数的命名规范,该函数命名规范如下:

函数类型函数名interrupt n
中断号    中断源           中断向量
  0     外部中断0           0003H
  1     定时器/计数器0      000BH
  2     外部中断1           0013H
  3     定时器/计数器1      001BH

  4     串行口              0023H

第三节    实验现象

实验要求:

       1:USB1插上电脑。

       2:J13选择”IO”模式。

       3:打开开发板开关S3。

实验现象:

       1:L9作为电源指示灯,常量。

       2:数码管显示"12-00-00",并每秒加1

注意事项:

       1:数码管有残影,属于正常现象。

图片

往期精彩

【1】撞上电子1000粉丝福利

【2】免责声明

【3】蓝桥杯电子组教程汇总

【4】【蓝桥杯单片机】第十二章 数码管(终极篇)

【5】【蓝桥杯单片机】第十三章 中断系统与定时器/计数器(理论)

图片

声明:

1:撞上电子公众号秉持着免费的服务,永远的开源这一宗旨,为广大电子或电子相关专业的大学生提供比赛教程。

2:免费领取比赛资料,资料请联系人工客服。

3:其他平台:微信公众号:撞上电子

4:原创内容,禁止转载,禁止用于商业用途,违者必究。

最后

以上就是沉默大侠为你收集整理的【蓝桥杯单片机】第十四章 定时器/计数器(实验)的全部内容,希望文章能够帮你解决【蓝桥杯单片机】第十四章 定时器/计数器(实验)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部