IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 【蓝桥杯单片机】第十四章 定时器/计数器(实验) -> 正文阅读

[嵌入式]【蓝桥杯单片机】第十四章 定时器/计数器(实验)

第一节????硬件解读

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

? ? ? ? ?

图片

? ? ? ? ? ? ? ? ?

?????? 从上图中,我们不难发现,一共有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:原创内容,禁止转载,禁止用于商业用途,违者必究。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-07-30 12:54:10  更:2021-07-30 12:54:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 9:39:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计