| |
|
开发:
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】蓝桥杯电子组教程汇总 【5】【蓝桥杯单片机】第十三章 中断系统与定时器/计数器(理论) 声明: 1:撞上电子公众号秉持着免费的服务,永远的开源这一宗旨,为广大电子或电子相关专业的大学生提供比赛教程。 2:免费领取比赛资料,资料请联系人工客服。 3:其他平台:微信公众号:撞上电子 4:原创内容,禁止转载,禁止用于商业用途,违者必究。 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年11日历 | -2024/11/25 18:53:14- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |