单片机应用技术 (C语言版) 第7章 定时器/计数器

Slides:



Advertisements
Similar presentations
单片机 C 语言应用程序设计 主讲教师:廉哲 QQ: 电话: 办公室:综合楼 C318.
Advertisements

现代电子技术实验 ——综合实验之单片机部分
第六章 中 断 本章学习目标 掌握单片机中断系统 掌握单片机中断处理过程 掌握中断程序设计 理解中断使用过程中需要注意的问题.
单片机技术及应用 河南信息工程学校 电子工程系.
5.1 中断的概述 5.2 MCS - 51中断系统 5.3 中断系统的应用
主讲人:刘利 交通大学网络控制课程系列 上海交通大学机电控制研究所 交通大学网络控制课程系列 考试课、专业基础课、必修课
6 单片机的中断与定时系统 I/O设备必须通过I/O接口与计算机连接。 I/O接口的功能: 1.速度匹配: 锁存数据、传送联络信号。
项目二 中断应用系统设计 本项目学习目标: (1)制作一个单片机控制的彩灯电路。 (2) 理解中断的基本概念;
实验四 利用中规模芯片设计时序电路(二).
第4章 中断系统和定时/计数器 本章学习目标 : 理解中断概念,能正确描绘单片机中断响应过程
第5章 中断系统 5.1 中断的概念 5.2 MCS-51单片机的中断流程 5.3 MCS-51的中断响应条件和中断处理
KEIL C单片机设计与项目实践 课程主讲: 孙福成 张小义   王晓静 杨至辉 课件制作: 亢娟娜 王 淏.
§5.3 定积分的换元法 和分部积分法 一、 定积分的换元法 二、 定积分的分部积分法 三、 小结、作业.
单片机应用技术 项目二 电子打铃装置 第4讲 单片机的定时器/ 计数器 《单片机应用技术》精品课程组 湖北职业技术学院机电工程系.
單晶片MCS-51 C語言入門實習 第1章 微電腦與單晶片MCS-51架構 作者:董勝源.
微處理機原理與應用 Chapter 1 簡介 Chung-Min Wu, Ph.D
6.3 定时器/计数器的应用 初始化 初始化的内容如下:
第二部分 微机原理 第8章 单片机的 定时/计数器 主讲教师:喻红.
第6章 MCS - 51单片机内部定时器/ 计数器 及串行接口 6.1 定时器/计数器的结构及工作原理 6.2 方式和控制寄存器
第5章 定时计数技术 单片机控制系统中常常用到的定时与计数问题。 5.1 定时计数概述 5.2 MCS-51单片机的定时计数器.
6.1 中断系统和外中断 6.2 定时器/计数器 6.3 串行通信 本章小结.
第6章 MCS - 51单片机内部定时器/ 计数器 及串行接口 6.1 定时器/计数器的结构及工作原理 6.2 方式和控制寄存器
單晶片微電腦控制實習 使用計時中斷作走馬燈 計時器的基礎實習 國立大甲高工 電機科 2018年11月21日
第6章 定时器/计数器 (课时:8学时).
第七章 定时计数器与可编程 计数器阵列.
初始化串列通訊埠 在啟始串列傳輸介面時有以下3個步驟:假設傳輸的通訊協定為9600bps,傳送8個位元資料,沒有同位位元,1個停止位元。
第七章 定时/计数器.
第八章 数据通信.
时序逻辑电路实验 一、 实验目的 1.熟悉集成计数器的功能和使用方法; 2.利用集成计数器设计任意进制计数器。 二、实验原理
逆向工程-汇编语言
CPU结构和功能.
第2章 单片机系统组成原理 2.1 MCS-51单片机组成原理 2.2 单片机复位电路设计 2.3 MCS-51存储器配置
第5章 中断系统及其应用 ● 教学目标: 介绍中断、中断源、中断系统的概念 介绍MCS-51中断系统及中断控制
单元五 MCS-51单片机内部资源 5.1 任务九 单片机计数并显示 5.2 任务十 单片机流水灯控制 5.3 任务十一 两台单片机数据互传
主要内容 定时/计数器的工作原理模式 定时/计数器的工作方式 定时/计数器的应用
一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置. 一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置.
第五章 MCS-51中断与定时系统.
主要内容 定时/计数器的工作原理模式 定时/计数器的工作方式 定时/计数器的应用
中 断 王 静 阜阳师范学院 计算机与信息工程学院.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
得技通电子 问题 1.0 、选择题:本大题共15个小题,每小题1分,共15分,在每小题给出的四个选项中,只有一项符合题目要求,把所选项前的字母填在括号内。
第四章 MCS-51定时器/计数器 一、定时器结构 1.定时器结构框图
K60入门课程 02 首都师范大学物理系 王甜.
汽车单片机应用技术 学习情景1: 汽车空调系统的单片机控制 主讲:向楠.
实验四、TinyOS执行机制实验 一、实验目的 1、了解tinyos执行机制,实现程序异步处理的方法。
第2章 单片机硬件系统 教学内容 单片机内部结构 8051单片机引脚功能 单片机存储器结构 时钟电路与复位电路 单片机并行I/O口.
微机原理与接口技术 西安邮电大学计算机学院 杨锐.
第三章 MCS 51的硬件结构.
单片机原理及应用 实践部分 主讲人:刘 强 四川工商学院单片机教学团队 单片机原理及应用 实践部分 主讲人:刘 强
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年12月04日.
实验三 16位算术逻辑运算实验 不带进位控制的算术运算 置AR=1: 设置开关CN 1 不带进位 0 带进位运算;
长春理工大学 电工电子实验教学中心 数字电路实验 数字电路实验室.
实验二 带进位控制8位算术逻辑运算实验 带进位控制8位算术逻辑运算: ① 带进位运算 ② 保存运算后产生进位
5. 1 中 断 概 述 单片机接通电源后将循环执行我们编制好的程序(一般称为主程序),当有外部设备或内部部件要求CPU为其服务时,计算机将被迫“中断”主程序的执行,并记录下暂停处程序地址(断点地址),然后转去为外部设备服务,即执行中断服务程序;在中断程序执行完毕后自动返回被迫中断主程序的地址,继续执行原主程序。
汽车单片机应用技术 学习情景1: 汽车空调系统的单片机控制 主讲:向楠.
第7章 定时/计数器 教学目的:了解80C51系列单片机内部定时器/计数器的结构与工作原理;能够采用查询方式对定时器/计数器的4种工作模式编程、应用。 教学重点:1. 定时/计数器的工作原理; 2. 定时器方式1、2的编程、应用。 教学难点:1.定时/计数器控制寄存器的设置 2.定时初值的设置.
单片机原理及应用 实践部分 主讲人:刘 强 四川工商学院单片机教学团队 单片机原理及应用 实践部分 主讲人:刘 强
第4章 定时器与计数器 本章内容 定时器/计数器工作原理 定时器/计数器的工作方式 定时器/计数器的应用.
HSC高速输出例程 HORNER APG.
微算機(二) 's UART mode1 communication
定时中断与LED MCU起航 QQ:
6.1 定时器/计数器的结构及工作原理 定时器/计数器的结构 定时器/计数器T0、T1的逻辑结构如图6-1所示。
单片机原理与应用.
得技通电子 问题 三 判断题:.
单片机应用技术 (C语言版) 第6章 中断系统.
单片机应用技术 (C语言版) 第4章 C51程序设计入门
上节复习(11.14) 1、方式2、方式0的特点? 2、定时/计数器的编程要点? 3、实验5方案优化问题.
上节复习(11.7) 1、定时/计数器的基本原理? 2、定时/计数器的结构组成? 3、定时/计数器的控制关系?
第5章 80C51单片机的中断与定时 教学基本要求: (1)、了解单片机系统有关中断的概念; (2)、了解单片机定时器/计数器的功能;
第1章 微型计算机基础.
Presentation transcript:

单片机应用技术 (C语言版) 第7章 定时器/计数器 2019/5/21

第7章 定时器/计数器 目 录 7.1 定时器/计数器的结构及原理 7.2 定时器/计数器的控制 7.3 定时器/计数器的工作方式 第7章 定时器/计数器 目 录 7.1 定时器/计数器的结构及原理 7.2 定时器/计数器的控制 7.3 定时器/计数器的工作方式 7.4 定时器/计数器应用举例 2019/5/21

本章主要讨论MCS-51单片机定时器/计数器的逻辑结构和工作原理。内容主要有定时器T0、T1的逻辑结构,工作方式的选择和应用。 本章为单片机的主要内容,也是第8章串行口的学习的基础。 2019/5/21

89c51 有2个可独立控制的16位定时器/计数器: T0、T1 7.1 MCS-51 计数/定时器的原理 实质是计数器,脉冲每次下降沿,计数器加1. 计数脉冲来源于内部的晶振,由于周期极为准确,称定时器。 计数脉冲来源于外部引脚,由于周期一般不准确,称为计数器。 +1计数器 溢出 中断 脉冲 控制 开关 89c51 有2个可独立控制的16位定时器/计数器: T0、T1 计数(定时)周期:机器周期 2019/5/21

计数周期的计算: 12MHz晶振:每计一个数的时间为1uS。如:计100个数的时间为100uS。计50000个数的时间为50mS。 11 计数周期的计算: 12MHz晶振:每计一个数的时间为1uS。如:计100个数的时间为100uS。计50000个数的时间为50mS。 11.0592MHz晶振:每计一个数的时间为1.085uS。 2019/5/21

几个基本概念 1、计数器的容量:容量一般用二进制的位数表示。 2、加1计数器:每来一个脉冲,计数数值加1。 3、计数器溢出:计数器计数达到容量的最大值时,再来一个脉冲,计数值将回到0,重新计数,且相应的标志位置1,称为“溢出”。 4、计数初值:计数器开始计数的值。 2019/5/21

7.1.2 MCS-51定时/计数器的结构 2019/5/21

两个16位的可编程定时器/计数器:定时器/计数器0、1。 每个定时器有两部分构成:THx和TLx MCS-51定时/计数器结构说明: 两个16位的可编程定时器/计数器:定时器/计数器0、1。 每个定时器有两部分构成:THx和TLx 特殊功能寄存器TMOD和TCON ,主要对T0和T1进行控制。 引脚P3.4、P3.5,输入计数脉冲。 特殊功能寄存器之间通过内部总线和控制逻辑电路连接起来。 2019/5/21

MCS-51定时/计数器的工作原理 定时器/计数器T0、T1 的内部结构简图如下图所示。 C/T=0 中断请求 振荡器 T H x ( 8 位 ) TLx Tx 12 分频 TFx C/T=1 控制 TRx 2019/5/21

计数信号由片内振荡电路提供,振荡脉冲12分频送给计数器,每个机器周期计数器值增1。 从上图可以看出: 定时器的实质是一个加1计数器。 C/T =0 ,为定时器方式。 计数信号由片内振荡电路提供,振荡脉冲12分频送给计数器,每个机器周期计数器值增1。 2019/5/21

计数信号由Tx引脚(P3.4、P3.5)输入,每输入一有效信号,相应的计数器中的内容进行加1。 C/T =1 ,为计数方式。 计数信号由Tx引脚(P3.4、P3.5)输入,每输入一有效信号,相应的计数器中的内容进行加1。 控制信号TRx=1时,定时器启动。 当定时器由全1加到全0时计满溢出,从0开始继续计数,TFx=1 ,向CPU申请中断。 2019/5/21

7.2.2 T0、T1的控制寄存器TCON 7.2 定时器/计数器的控制 TF1、TF0:T1、T0的溢出标志位 计数溢出,TFx=1。 7.2 定时器/计数器的控制 7.2.2 T0、T1的控制寄存器TCON TCON (88H) D7 D6 D5 D4 D3 D2 D1 D0 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 定时器的控制寄存器 TF1、TF0:T1、T0的溢出标志位 计数溢出,TFx=1。 中断方式:自动清零; 查询方式:软件清零。 2019/5/21

TR1、TR0:T1、T0启停控制位。 置1,启动定时器; 清0,关闭定时器。 IE1、IE0:外部中断1、0请求标志位 IT1、IT0:外部中断1、0触发方式选择位 2019/5/21

TMOD不能位寻址 7.2.1 T0、T1 工作方式寄存器TMOD 功能:确定定时器的工作方式。 其格式如图所示: (89H) D7 D6 D5 D4 D3 D2 D1 D0 GATE C/T M1 M0 定时器工作方式寄存器TMOD GATE——外部门控制位。 GATE=0,不使用外部门控制计数器 GATE=1,使用外部控制门。 TRx=1, P3.2(P3.3)=1时,启动定时器。 2019/5/21

C/T——定时或计数方式选择位 。 C/T=0时,为定时器 C/T=1时,为计数器 计数器时采样过程:CPU在每机器周期S5P2期间,输入信号进行采样。若前一机器周期采样值为1,下一机器周期采样值为0,则计数器增1,随后的机器周期S3P1期间,新的计数值装入计数器。 2019/5/21

补充(P128 7.4节) 由于检测一个从1---0的下降沿需要2个机器周期,因此被检测的外部输入脉冲的频率<=1/24×振荡频率。 例如:单片机晶振12MHz,则被检测的外部输入脉冲最高为500Hz。 P134 3(2) 2019/5/21

M1、M0——工作方式选择位。 如下表所示: 表7-1 定时器/计数器的工作方式 M1 M0 工作模式 功 能 模式0 13位定时器/计数器 表7-1 定时器/计数器的工作方式 M1 M0 工作模式 功 能 模式0 13位定时器/计数器 1 模式1 16位定时器/计数器 模式2 8位自动重装定时器/计数器 模式3 定时器0:TL0为8位定时器/计数器,TH0为8位定时器。 定时器1:停止使用 2019/5/21

注:方式0是为了与早期的MCS-48系列单片机兼容,现在不必使用,采用方式1替代方式0。 2019/5/21

7.3 定时器T0、T1的工作方式 2、 M1M0=01时,选择模式1。 T0的结构:16位定时器/计数器。 2019/5/21

(一次中断)定时时间=(216-定时初值)×机器周期 (一次中断)最大定时时间:216×机器周期 TL0:存放计数初值的低8位。 TH0: 存放计数初值的高8位; (一次中断)定时时间=(216-定时初值)×机器周期 (一次中断)最大定时时间:216×机器周期 注意:每次计满溢出后,计数器都复位为0,要进行新一轮的计数还需重新赋初值。(即方式1的初值不能保存住,每次都要重新赋初值) 举例方式1 2019/5/21

#include <reg51.h> sbit LED=P1^0; unsigned char t; void main() { TMOD=0x10; //设置定时器1工作在方式1 TH1=(65536-50000)/256; TL1=(65536-50000)%256; //设置定时初值 TR1=1; //启动定时器1 2019/5/21

重新赋初值 EA=1; ET1=1;//允许定时器1中断 while(1); } void timer1( ) interrupt 3 { TH1=(65536-50000)/256; TL1=(65536-50000)%256; t++; if(t==20) { LED=~LED; t=0; 编号 n 所代表的中断源 外部中断0 1 定时/计数器0 2 外部中断1 3 定时/计数器1 4 串口 重新赋初值 2019/5/21

方式1要进行新一轮计数,还需重新设置计数初值,不仅导致编程麻烦,而且影响定时时间精度。 有没有一种方式可以避免方式1的缺陷?? 2019/5/21

3、 M1M0 =10时,选择模式2。(8位自动重装定时器/计数器) 振荡器 12 分频 T ( P 3 . 4 ) TR TF 中断 GATE + & C / = 1 TL 8 位 TH 2 2019/5/21

T0的结构: TL0:8位的定时器/计数器; TH0:8位预置寄存器,用于保存初值。 工作过程:当TL0计满溢出时,TF0置1,向CPU发出中断请求;同时引起重装操作(TH0的计数初值送到TL0),进行新一轮计数。 2019/5/21

注:(1)方式2具有自动重装初值的功能,但是由于是8位计数器,最大计数值为256,所以一次中断的最大定时时间为28×机器周期。 (一次中断)定时时间: (28-定时初值)×机器周期 (2)在模式2能够满足计数或定时要求时,尽可能使用模式2。 方式2举例 2019/5/21

#include <reg51.h> sbit P1_0=P1^0; void main( ) { 方式2: #include <reg51.h> sbit P1_0=P1^0; void main( ) { TMOD=0x02; //选择工作模式 TL0=0x06; TH0=0x06; //为定时器赋初值 EA=1; ET0=1; //允许定时0中断 TR0=1; //启动定时器0 while(1); //等待中断 } void time0( ) interrupt 1 P1_0=~P1_0; 方式2具有自动重装初值功能 不用重新赋初值 2019/5/21

4、定时器/计数器工作方式的选择方法 (1)首先确定计数值N (2)确定工作方式 原则是尽可能地选择模式2 2019/5/21

7.5 定时器/计数器C51编程 一、定时器的初始化步骤 2、设置定时器的计数初值。 设置THx和TLx。 1、确定工作方式,设置TMOD。 2、设置定时器的计数初值。 设置THx和TLx。 3、中断设置:设置IE(EA,ETx)。 4、启动定时器。设置TCON(TRx) 可以使用位操作指令。 2019/5/21

方式1:(一次中断)定时时间: (216-定时初值)×机器周期 方式2:(一次中断)定时时间: (28-定时初值)×机器周期 方式1:(一次中断)定时时间: (216-定时初值)×机器周期 方式2:(一次中断)定时时间: (28-定时初值)×机器周期 所以要确定定时初值 2019/5/21

二、 定时/计数器初值的计算 计数初值:C= 2n -N n:8/16 定时初值:C= 2n - t/T T:机器周期=12/晶振频率 如:晶振为12MHz时, T=1us 举例:单片机晶振12MHz,定时50ms,采用定时器0方式1,试计算初值,并装入TH0,TL0中。 2019/5/21

方法1: 初值: C=65536-50000=15536 =3CB0H ∴ TH0=3CH, TL0=B0H 2019/5/21

方法2 初值: TH0=(65536-N)/256; TL0=(65536-N)%256; N=t/T(计数个数)。 若采用的晶振为11 方法2 初值: TH0=(65536-N)/256; TL0=(65536-N)%256; N=t/T(计数个数)。 若采用的晶振为11.0592MHz, T=1.09s,则定时50ms时,N=45872 2019/5/21

三、 定时器的应用举例 例1 单片机系统晶振频率为12MHz,利用定时器T0的方式2使P1.0口输出周期为0.2ms的方波信号。 三、 定时器的应用举例 例1 单片机系统晶振频率为12MHz,利用定时器T0的方式2使P1.0口输出周期为0.2ms的方波信号。 分析:每隔0.1ms改变一次P1.0的输出状态,即形成方波。 1、初值计算: 在方式2下:C= 28-100=156=9CH 2019/5/21

2、C语言程序: void main ( ) { TMOD=0x02; //T0工作在方式2 TL0=0x9c; //装入计数(重装)初值 #include <reg51.h> sbit p1_0=P1^0; //进行位定义 void main ( ) { TMOD=0x02; //T0工作在方式2 TL0=0x9c; //装入计数(重装)初值 TH0=0x9c; EA=1; //允许定时器1中断 ET0=1; //开中断 TR0=1 ; //启动定时器1 while(1); } 2019/5/21

IE (A8H) D7 D6 D5 D4 D3 D2 D1 D0 EA — ES ET1 EX1 ET0 EX0 中断允许寄存器 2019/5/21

void time0 ( ) interrupt 1 { p1_0=~p1_0; //取反,产生方波 } 编号 n 所代表的中断源 外部中断0 1 定时/计数器0 2 外部中断1 3 定时/计数器1 4 串口 2019/5/21

例2 设单片机晶振频率为12MHz,用定时器/计数器0编程实现从P1.0输出周期为500μs的方波。 分析: 定时时间: 方波周期为500μs,定时250μs。 方式选择: 定时器0可以选择方式1和2。方式2最大的定时时间为256μs,满足250μs的定时要求,选择方式2。 2019/5/21

(1)初值计算 C=256-250/1 C=6;则TH0=TL0=6 (2)程序: A:采用中断处理方式的程序 : 2019/5/21

#include <reg51.h> sbit P1_0=P1^0; void main( ) { TMOD=0x02; //选择工作模式 TL0=0x06; TH0=0x06; //为定时器赋初值 EA=1; ET0=1; //允许定时0中断 TR0=1; //启动定时器0 while(1); //等待中断 } void time0( ) interrupt 1 { P1_0=~P1_0; 2019/5/21

while (1) While(!TF0); B:采用查询方式处理的程序: # include <reg51.h> sbit P1_0=P1^0; void main() { TMOD=0x02; TL0=0x06; TH0=0x06; TR0=1; while (1) { if(TF0==1) //查询计数溢出 TF0=0; P1_0=~P1_0; } While(!TF0); 2019/5/21

例3 利用定时器精确定时1s控制LED以秒为单位闪烁。已知fosc=12MHz。 分析:定时器/计数器在定时方式下,各个方式最大定时时间分别为: 方式1=65536×12/fosc=65.536ms 方式2=256×12/fosc=0.256ms 2019/5/21

定时时间为50ms,当50ms的定时时间到,中断一次,用变量记住中断次数,连续中断20次,正好1S,调用亮灯函数; 选择方式1。 定时时间为50ms,当50ms的定时时间到,中断一次,用变量记住中断次数,连续中断20次,正好1S,调用亮灯函数; 再连续定时20次,调用灭灯函数。循环工作,即达到1s闪烁1次的效果。 2019/5/21

#include <reg52.h> sbit LED=P2^0; unsigned char t; void main() { 2、程序设计: C语言程序: #include <reg52.h> sbit LED=P2^0; unsigned char t; void main() { LED=0; //定义灯的初始状态为灭 TMOD=0x10; //设置定时器1工作在方式1 TH1 =(65536-50000)/256; TL1=(65536-50000)%256; //设置定时初值 TR1=1; //启动定时器1 2019/5/21

中断服务程序中不要写过多处理语句 EA=1; ET1=1; //允许定时器1中断 while(1); } void timer1() interrupt 3 { TH1 =(65536-50000)/256; TL1=(65536-50000)%256; t++; if(t==20) { LED=~LED; t=0; 编号 n 所代表的中断源 外部中断0 1 定时/计数器0 2 外部中断1 3 定时/计数器1 4 串口 中断服务程序中不要写过多处理语句 2019/5/21

四、 计数器的应用举例 每按一次按键,计数器加1,用液晶显示出来

void main( ) { uint x; TMOD=0x06; TL0=0; TH0=0; TR0=1; LcdInt( ); delay(5); while(1) x=TH0*256+TL0; write_zs(5,x); } 2019/5/21

本章首先总体简单介绍了MCS-51单片机定时器/计数器的结构、工作原理和相关的寄存器。 本章小结 本章首先总体简单介绍了MCS-51单片机定时器/计数器的结构、工作原理和相关的寄存器。 然后重点研究了MCS-51单片机定时器/计数器T0、T1的不同工作方式的结构和工作原理。 最后应用实例,讨论了各个定时器/计数器不同工作方式的应用。 2019/5/21

本章小结(续) MCS-51单片机定时器/计数器是单片机中非常重要、应用非常多的部件,单片机是否用得灵活、是否能够充分发挥单片机的功能与作用,与定时器/计数器是否掌握应用得好关系密切。 2019/5/21