第六章 定时器和中断
单片机讲义1(第六章定时器计数器)
脚与T0的逻辑关系框图如下图所示。
定时器/计数器T0分为2 个独立的8位计数器:TL0和 TH0。 TL0使用T0的状态控制位 C/ T GATE、TR0、 INT0 ,而TH0被 固定为1个8位定时器(不能 为外部计数模式),并使用 定时器T1的状态控制位TR1 和TF1,同时占用定时器T1 的中断请求源TF1。
6.2.2 方式1
6.2.3 方式 2
6.2.4 方式 3
在方式3下,T1只作 波特率发生器。在这样 情况下,T1将TF1、TR1 资源出借给T0使用。因 此,在方式3下,T0可以 构成两个独立的计数器 结构,如图6-6(a)和 图6-6(b)所示。
TL0构成一个完整的8 位定时器/计数器,而 TH0则是一个仅能对 fOSC/12脉冲计数的8位 定时器。
(l)计算初值 初值的计算公式为: X 2 n
设:需要装入T0的初值为X,则有:
t f
osc
12
16
其中:n=13、16、8 (由计数器的的工作方 式来决定n 的取值)
∵X= 2
n
t . f osc 现 n 16 12
t 1 ms
f osc 6 M Hz
∴X= 2
∵ X= 2
n
t . f osc 12
现 n 16 f osc 6 M Hz t 100 ms
所以:X=15 536=3CB0H 因此:TH0=3CH, TL0=B0H
(3)10次计数的实现 对于中断10次计数,可使T0工作在定时方式,采用循环程序的方法实现。 (4)程序设计 ORG 0000H RESET:LJMP MAIN ;上电,转主程序入口MAIN 0RG 000BH ;T0的中断入口地址 LJMP IT0P ;转T0中断处理程序ITOP ORG 1000H MAIN: MOV SP,#60H ;设堆栈指针 M0V B,#0AH ;设循环次数10次
定时器和中断
定时器和中断的应用前景
工业自动化
定时器和中断在工业自动化领域具有广泛 的应用前景,如生产线控制、机器人控制
等。
智能交通
在智能交通领域,定时器和中断可以实现 交通信号灯的智能控制和车辆的自动化调
度。
智能家居
在智能家居领域,定时器和中断可以实现 家电的智能控制和自动化管理,提高生活 品质。
医疗设备
在医疗设备领域,定时器和中断可以实现 医疗设备的自动化控制和精确计时,提高 医疗设备的可靠性和安全性。
定义
中断是一种硬件或软件事件,它能够打断正在执行的程序,并将其控制权交给 中断处理程序。
作用
中断是计算机系统中非常重要的机制,它使得CPU能够响应各种突发事件,如 硬件故障、外部信号、定时器超时等,从而实现多任务并发处理和实时性要求。
中断的分类
硬件中断
由硬件设备产生的中断,如键 盘输入、时钟中断等。
中断
用于需要实时响应的场景,如键盘输 入、串口通信等。
04
定时器的应用
BIG DATA EMPOWERS TO CREATE A NEW
ERA
定时器的使用场景
01
02
03
04
时间基准和同步
用于提供稳定的时间基准,如 系统时钟。
任务调度
用于安排任务在特定时间执行 。
性能测试和测量
用于测量代码执行时间或系统 性能。
网络定时器
用于网络通信的定时器, 如用于数据包发送间隔控 制的定时器。
定时器的工作原理
硬件定时器工作原理
基于硬件电路的定时器通常由振荡器和计数器组成,振荡器产生固定频率的脉冲信号,计 数器对脉冲信号进行计数,当计数达到预设值时,产生中断或触发信号。
单片机第六章定时器
这种方式下,计数寄存器由13位组成,即THx高八位(作计数器)
和TLx的低5位构成。TLx的高3位未用。
计数时,TLx的低5位溢出后向THx进位,THx溢出后 将TFx置位,并向CPU申请中断。
用软件控制,置 l时,启动 T1;清0时,停止 T1。
TF0(TCON.5)——T0的溢出标志。
TR0(TCON.4)——T0的运行控制位。
用软件控制,置1时,启动T0;清 0时,停止 T0。
• IE1(TCON.3)——外部中断1中断请求标志位。
• IE0(TCON.1)——外部中断0中断请求标志位。
器之外,还可用作串行接口的波特率发生器。
6.2
定时器/计数器T0、T1
T0、T1 的内部结构简图示于图6-1中。从图中 可以看出,T0、T1由以下几部分组成:
• 计数器TH0、TL0和TH1、TL1;
•
•
特殊功能寄存器TMOD、TCON;
时钟分频器;
•
输入引脚T0、T1。
6.2.1 与定时器/计数器T0、T1有关的 特殊功能寄存器
⑵定时器/计数器T1
T0方式3时,T1可以工作在方式0、1、2三种方式 T1的结构如图6–6所示。 由于T0占用了原来T1的启动位TR1和溢出标志TF1, 所以此时T1溢出时不能置位溢出标志,不能申请中断, 其溢出信号送给串行口,此时T1作为波特率发生器。
T1的启停由写入方式字控制,当写入方式0/1/2 时,T1立即启动,写入方式3 时,立即停止工作。
分析:设置T0工作在方式2,计数功能,每记满100个外 部脉冲,从P1.0输出一个低电平脉冲信号(简化的打包 操作)。
单片机定时器中断原理
单片机定时器中断原理
单片机定时器中断原理是通过设定一个计时器寄存器和一个计数器寄存器来实现的。
当定时器开始计数时,计数器开始递增,当计数器的值达到预设值时,触发定时器中断。
首先,需要设置定时器的计时方式,例如可以选择计数器以固定的时间间隔递增,也可以选择以外部触发信号作为计数器递增的条件。
其次,需要设置计时器的预设值,即计数器需要达到的值,通常是根据所需的时间间隔来确定的。
最后,需要开启定时器中断使能位,使得当计数器达到预设值时,能够触发中断请求。
当定时器开始计数时,计数器开始递增。
一旦计数器的值等于预设值,定时器中断请求被触发,中断标志位被置位。
此时,单片机会检查中断使能位是否被设置,如果被设置,则响应中断请求,暂停当前正在执行的程序,跳转到中断服务程序中执行相应的操作。
中断服务程序可以根据需要做一些数据处理、状态更新等操作,然后再返回到主程序继续执行。
在中断服务程序中,通常会清除中断标志位,以便下次再次触发中断时能够正常响应。
同时,也可以根据需要重新设置定时器的预设值,实现周期性的定时中断。
通过定时器中断,可以实现定时任务的调度和实时操作的需求。
天脉(ACoreOS)操作系统培训第六章:异常、中断与定时器
启动(或)重启动看门定时器
STATUS wdStart (WDOG_ID wdId, int delay,
FUNCPTR pRoutine,int parameter )
wdId 看门狗ID,由创建wdCreate返回源自delay 延时的tick值
pRoutine 延时时间到时调用程序
23 parameter
wdStart() + semGive():更加健壮
28
查询警告
下列代码是正确的,只有当系统时钟频率是15Hz 的整数倍
void myWdISR() {
wdStart(myWdId,sysClkRateGet()/15,myWdISR,0); pollMyDevice(); }
为了防止系统在每个时钟tick开销过大,不能 够将系统时钟频率设置过高
中断的工作原理
10
中断处理示例-PowerPC
11
中断处理示例说明
PowerPC有单独的外部中断引脚。板级支持包 (BSP)可以支持外部中断控制器实现中断嵌套。
中断表中中断入口数量取决于BSP中中断控制器的 能力。目前中断向量表最多可支持256个。
外部中断的处理流程
保存CPU寄存器 从中断控制器中读取中断号 调用用户连接的中断处理程序(用户关心) 清中断控制器状态 12 恢复CPU寄存器并返回
fooDoWork()必须每 10秒运行,如果执行小 于10秒钟,看门狗重新 启动(fooISR()没有被 调用)。如果 fooDoWork()执行时间 超过10秒钟,则看门狗 程序fooISR()将被调用 处理紧急事件
停止看门狗
取消先前启动的看门狗 STATUS wdCancel (WDOG_ID wdId)
单片机中的中断与定时器的原理与应用
单片机中的中断与定时器的原理与应用在单片机(Microcontroller)中,中断(Interrupt)和定时器(Timer)是重要的功能模块,广泛应用于各种嵌入式系统和电子设备中。
本文将介绍中断和定时器的基本原理,并探讨它们在单片机中的应用。
一、中断的原理与应用中断是指在程序执行过程中,当发生某个特定事件时,暂停当前任务的执行,转而执行与该事件相关的任务。
这样可以提高系统的响应能力和实时性。
单片机中的中断通常有外部中断和定时中断两种类型。
1. 外部中断外部中断是通过外部触发器(如按钮、传感器等)来触发的中断事件。
当外部触发器发生状态变化时,单片机会响应中断请求,并执行相应的中断服务程序。
外部中断通常用于处理实时性要求较高的事件,如按键检测、紧急报警等。
2. 定时中断定时中断是通过定时器来触发的中断事件。
定时器是一种特殊的计时设备,可以按照设定的时间周期产生中断信号。
当定时器倒计时完成时,单片机会响应中断请求,并执行相应的中断服务程序。
定时中断常用于处理需要精确计时和时序控制的任务,如脉冲计数、PWM波形生成等。
中断的应用具体取决于具体的工程需求,例如在电梯控制系统中,可以使用外部中断来响应紧急停车按钮;在家电控制系统中,可以利用定时中断来实现定时开关机功能。
二、定时器的原理与应用定时器是单片机中的一个重要模块,可以用于计时、延时、频率测量等多种应用。
下面将介绍定时器的工作原理和几种常见的应用场景。
1. 定时器的工作原理定时器是通过内部时钟源来进行计时的。
它通常由一个计数器和若干个控制寄存器组成。
计数器可以递增或递减,当计数值达到设定值时,会产生中断信号或触发其他相关操作。
2. 延时应用延时是定时器最常见的应用之一。
通过设定一个合适的计时器参数,实现程序的精确延时。
例如,在蜂鸣器控制中,可以使用定时器来生成特定频率和持续时间的方波信号,从而产生不同的声音效果。
3. 频率测量应用定时器还可以用于频率测量。
第六章-STM32-定时器的使用-《基于ARM的单片机应用及实践--STM32案例式教学》课件
第六章 STM32 定时器的使用 通用定时器配置步骤
1)TIM3时钟使能 这里我们通过APB1ENR的第1位来设置TIM3的时钟,因为 Stm32_Clock_Init函数里面把APB1的分频设置为2了, 所以我们的TIM3时钟就是APB1时钟的2倍,等于系统时 钟(72M)。 2)设置TIM3_ARR和TIM3_PSC的值 通过这两个寄存器,设置自动重装的值及分频系数。这 两个参数加上时钟频率就决定了定时器的溢出时间。
计数器寄存器:TIMx_CNT 预分频器寄存器:TIMx_PSC 自动装载寄存器:TIMx_ARR
第六章 STM32 定时器的使用 通用寄存器时基单元 1)计数器寄存器:TIMx_CNT
16位的计数器,设定值从1~65535
第六章 STM32 定时器的使用 计数器模式 向上计数模式:计数器从0计数到设定的数值,然后 重新从0开始计数并且产生一个计数器溢出事件。
在定时器配置完了之后,因为要产生中断,必不可少的 要设置NVIC相关寄存器,以使能TIM3中断。
6)编写中断服务函数 编写定时器中断服务函数,通过该函数处理定时器 产生的相关中断。中断产生后,通过状态寄存器的 值来判断此次产生的中断属于什么类型。然后执行 相关的操作。
第六章 STM32 定时器的使用 通用寄存器时基单元
第六章 STM32 定时器的使用
2)预分频器寄存器:TIMx_PSC 预分频器可以讲计数器的时钟频率按1到65536之间的任 意值分频,它是一个16位寄存器。 这个寄存器带有缓冲区,它能够在工作时被改变。新的 预分频器参数在下一次更新事件到来时被采。
第六章 STM32 定时器的使用 预分频器寄存器在事件更新时采用
定时器的工作频率计算公式为 CK_CNT=定时器时钟/(TIMx_PSC+1) 其中CK_CNT表示定时器工作频率 TIMx_PSC表示分频系数
第六章 MCS-51单片机内部定时器
6.3.1 模式0及应用
在这种模式下,16位寄存器只用了13位。 其中,TL0的高3位未用,TH0占8位。当 TL0的低5位溢出时,向TH0进位。当TH0 溢出时,向中断标志位TF0进位,并申请中 断。 因此,可通过查询TF0 是否置位或考 察中断是否发生来判断定时器/计数器0的 操作完成与否。
(2)计算1ms定时T0的初值:
机器周期为(1/fOSC)×12=[1/(12×106)]×12=1μs, 设T0的 计数初值为X,则 (213-X)×1×10-6=1×10-3ms
X=213-1×10-3/(1×10) -6 =8192-1000=7192D=1110000011000
高8位: E0H 低5位: 18H
fosc=12MHz, 采用查询方式。
解:方波周期 T=1/100Hz=0.01s=10ms 用T1定时5ms 计数初值 X为: X=216-12×5×103/12=60536=EC78H 程序如下:
MOV TMOD, #10H ;T1模式1,定时方式
SETB TR1 LOOP:MOV TH1,#0ECH
例:晶振为12MHZ ,则计数周期为
T=12/(12*106)Hz =1微秒
最短的定时 周期
计数器工作方式:
当定时器/计数器为计数工作方式时,通过
引脚T0和T1对外部信号计数,外部脉冲的下降
沿触发计数
在每个机器周期的
采样过程:
S5P2期间采样引脚
当输入脉冲信号从1到0的负跳变时,计数器就 自动加1。 由于检测一个由1到0的跳变需要两 个机器周期,所以 计数的最高频率为振荡频 率的1/24。为了确保给定电平在变化前至少被 采样一次,外部计数脉冲的高低电平均需保持 一个机器周期以上。(占空比没有限制)
定时器中断原理
定时器中断原理
定时器中断原理是指通过计时器来计数,当计数值达到某个特定值时,触发中断信号,执行相应的中断处理程序。
定时器中断可以用于实现周期性的任务执行、计时、延时等功能。
定时器中断的原理主要包括以下几个步骤:
1. 配置定时器参数:首先,需要设置定时器的计数方式、计数范围和计数速度等参数。
这些参数决定了计时器的计数精度和溢出时间。
2. 启动定时器:一旦定时器配置完成,就可以启动定时器开始计数。
定时器会根据设定的计数方式和计数范围进行计时,每计数一次会增加计数器的值。
3. 监控计数器值:系统会不断地监控定时器的计数器值。
当计数器值达到预设的特定值时,即达到了预定的时间间隔,就会触发中断信号。
4. 中断处理程序:一旦中断信号触发,系统会跳转到预设的中断处理程序中执行。
中断处理程序可以是预先编写好的代码,用于实现特定的功能或任务。
5. 复位计数器:在中断处理程序执行完毕之后,需要将计数器复位。
复位计数器可以重新开始计数,以实现周期性的任务执行。
通过定时器中断原理,可以实现定时执行某个任务,比如周期
性地检查传感器数据、更新显示等;可以进行计时操作,比如测量某个事件的时间间隔;还可以实现延时功能,比如实现延时执行某个任务或操作。
总结来说,定时器中断原理就是通过计时器进行计数,当计数值达到特定值时触发中断信号,进而执行相应的中断处理程序,实现周期性的任务、计时和延时等功能。
c51单片机的定时器和中断
二、方式1 方式
方式1结构 图6-5 T0 (或T1) 方式 结构 或
三、方式2 方式
TMOD 申请 TCON 中断 D7 TF1 TR1 TF0 TR0 T1引脚 溢出 TL1 重装初值控制 TH1 8位 &
≥1
0 1
M0 M1 C/T
D4
1
1 0
机器周期
GATE D7
1 INT1引脚
D0
方式2结构 图6-6 T0 (或T1) 方式 结构 或
图6-3 方波硬件设计和仿真波形
(2)源程序 ) //中断方式 中断方式 #include "reg51.h" #include "stdio.h" Uart_Init(); sbit P1_1=P1^1; void main() { TMOD=0X01; // T0工作在方式 工作在方式1 工作在方式 TL0=0xB0; //给TL0置初值 给 置初值 TH0=0x3c; //给TH0置初值 给 置初值 ET0=1; //开串行口中断 开串行口中断 EA=1; TF0=0; TR0=1; //启动 启动T0 启动 while(1) ; //设置断点处 设置断点处 } void Int_T0() interrupt 1 using 2 { TL0=0xB0; TH0=0x3c; //重赋初值 重赋初值 P1_1=!P1_1; //定时时间到 定时时间到P1_1取反 定时时间到 取反 printf("Timer1 overflow in Mode 1\n");/* 定时 溢出后, 器0溢出后,输出提示信息 */ 溢出后 }
计数器控制寄存器TCON 三、定时/计数器控制寄存器 定时 计数器控制寄存器
定时器控制字TCON的格式如下。 位地址 位符号 8FH TF1 8EH TR1 8DH TF0 8CH TR0 8BH IE1 8AH IT1 89H IE0 88H IT0
定时器中断的工作原理
定时器中断的工作原理
定时器中断是一种常见的硬件中断机制,它可以在预设的时间间隔内自动触发中断,以便执行相应的中断服务程序。
其工作原理主要涉及以下几个方面:
1. 定时器的初始化:在使用定时器中断之前,需要先对定时器进行初始化设置。
通常需要配置定时器的时钟源、计数方式、计数周期等参数,以满足具体应用需求。
2. 定时器的计数:一旦定时器被初始化,它会开始按照预设的计数方式和周期进行计数。
通常情况下,定时器的计数值会不断递增,直到达到预设的上限值。
3. 中断触发:当定时器计数值达到预设的上限值时,就会自动触发中断。
此时,CPU会暂停当前的程序执行,转而跳转到预设的中断服务程序中执行相关的操作。
4. 中断服务程序:中断服务程序通常是针对特定中断类型编写的处理程序,用于处理中断事件并进行相应的操作。
在定时器中断中,中断服务程序通常会进行一些周期性的任务,例如更新系统时间、检查状态等。
5. 中断处理完成:当中断服务程序执行完毕后,CPU会返回到原先被中断的程序中继续执行。
此时,定时器又开始重新计数,直到下一次中断触发。
总之,定时器中断是一种非常有用的硬件中断机制,它可以帮助我们实现各种周期性的任务和操作。
理解定时器中断的工作原理对于
嵌入式系统和实时系统开发都非常重要。
第六章STM32 定时器的使用
}
}
步骤五:配置main函数,实现定时器控制跑马灯。
volatile u32 time;
int i=0;
int main(void) { SystemInit(); //配置系统时钟为72控制跑马灯(P190)
1.理解STM32通用定时器的结构和基本工作原理; 2.掌握STM32通用定时器初始化和操作方法; 3.理解中断概念; 4.掌握STM3中断服务程序的写法。
硬件设计 硬件连接图如下,实验板上stm32f103x处理器
通过配置GPIO实现如下功能:D3~D6轮流点亮,点亮时 间持续1秒。
软件设计 步骤一:添加库函数,以及操作函数。 添加相应库函数:
操作函数有:USER/main.c ;stm32f10x_it.c ;led.h; led.c ;timer.h;timer.c;TIM2_IRQHandler()。 步骤二:在timer.h函数中设置宏定义和函数声明:
void TIM2_NVIC_Config(void); void TIM2_Config(void);
TIN_TimBaseInitTypeDef TIM_TimeBaseStructure;
TIM_TimeBaseStructure.TIM_Period = (10000 - 1); //自动重装的计数值
TIM_TimeBaseStructure.TIM_Prescaler =7200-1 ; // 预分频系数
立即加载计数器(ARPE=0)
更新事件时加载计数器(ARPE=0)
6.2.2 计数器模式 1. 向上计数模式:计数器从0计数到设定的数值,然 后重新从0开始计数并且产生一个计数器溢出事件。
计数器时序图(内部时钟分频因子为1)
定时器中断流程图
定时器中断流程图定时器中断是指在特定时间间隔内触发的一种中断方式,它可以用来实现定时任务、定时采样等功能。
在嵌入式系统中,定时器中断是非常常见的应用场景,下面我们来看一下定时器中断的流程图。
首先,定时器中断的触发是由硬件定时器来完成的。
硬件定时器通常包括计数器、比较器和中断控制器等部分。
当计数器的值达到比较器设置的值时,就会触发中断请求,然后中断控制器会将中断信号发送给CPU。
接着,CPU在接收到定时器中断的中断请求后,会根据中断向量表找到对应的中断服务程序。
中断服务程序是由用户编写的,它通常包括中断处理函数和中断返回指令。
中断处理函数是用来处理定时器中断事件的,它可以执行一些特定的操作,比如更新定时器的计数值、执行定时任务等。
而中断返回指令则是用来结束中断服务程序,将CPU的控制权返回给原来的程序。
最后,当中断服务程序执行完毕后,CPU会继续执行原来的程序。
如果定时器中断是周期性的,那么硬件定时器会在下一个周期内再次触发中断请求,整个流程就会循环执行。
总的来说,定时器中断的流程图可以简单描述为,硬件定时器触发中断请求 -> CPU响应中断请求 -> 执行中断服务程序 -> 中断服务程序结束 -> CPU恢复原程序执行。
这样的流程图清晰地展现了定时器中断的工作原理和执行过程。
在实际应用中,定时器中断的流程图可以根据具体的硬件平台和软件需求进行定制和优化。
比如可以根据不同的定时任务设置不同的定时器中断周期,也可以通过中断嵌套或者优先级设置来实现多个定时器中断的协同工作。
因此,对于嵌入式系统开发人员来说,熟练掌握定时器中断的流程图和原理是非常重要的。
总之,定时器中断是嵌入式系统中常用的中断方式,它通过硬件定时器和CPU的配合,实现了定时任务的精确执行。
通过上面的流程图,我们可以清晰地了解定时器中断的工作流程,这对于嵌入式系统的开发和调试都具有重要的指导意义。
希望本文对您有所帮助,谢谢阅读!。
第六章 51系列单片机中断系统
51系列单片机的中断系统
本章主要介绍51系列单片机中断系统问题, 本章将介绍以下具体内容:
中断系统----中断源、中断方式 、中断控制寄 存器、中断响应、中断请求的撤除。
6.1
中断系统的概念
6.1.1 中断系统
中断应用在: 处理实时控制、故障自动诊断、计算机与 外围设备之间进行数据传送、进行人机对话等场合。 中断:是计算机的一种资源共享技术。中断技术就是解决这 种多项任务共享一个CPU资源的最好办法。
一般加装所示电路,并通过响应软件来撤销电平请求信号。
Q输出端
SD为置1端, 高电平有效 D端是逻辑输入端, 固定为低电平 CP为时钟输入端, 接外中断信号
当外中断请求发生时,将D端的低电平送到Q端,形成中断请求信 号。中断响应后,由软件对SD进行操作,将Q端恢复为高电平。 在中断服务程序中增加如下指令: (1) SETB P1.0 ; P1.0输出高电平,始终将Q端置1,永久封锁外中
中断请求标志
触发方 0 低电平 式选择 1 下降沿
定时控制寄存器TCON(字节地址88H)
外中断0 (1)请求标志 当CPU采样到INT0 (1)出现有效中断请求时,该 位由硬件自行设置为1,待中断响应后,该位自动清0。 该位一般为单片机硬件查询用,也可以软件查询。
8FH TF1
8EH TR1
8DH TF0
EA
ES
ET1
EX1
ET0 EX0
EA —— 中断允许总控制 位 (CPU开中断控制位) EA = 0 中断全部关闭 EA = 1 中断开启,各中 断由各自的控制位控制。
ET0(ET1) —— 定时器0(或 定时器1)中断允许控制位 ET0(ET1) = 0 定时器0 (或定时器1)中断禁止 ET0(ET1) = 1 定时器0 (或定时器1)中断允许
中断及定时器实验报告
中断及定时器实验报告中断及定时器实验报告引言:中断是计算机系统中一种重要的机制,它可以打破程序的顺序执行,响应外部事件的发生。
中断的引入使得计算机可以同时处理多个任务,提高了系统的效率和可靠性。
定时器是中断的一种常见应用,它可以在一定时间间隔内产生中断信号,实现定时任务的功能。
本实验旨在通过编程实现中断和定时器的功能,并测试其正确性和稳定性。
一、实验目的1. 学习中断的概念和原理;2. 掌握中断的编程方法和中断处理程序的编写;3. 理解定时器的工作原理和应用场景;4. 实现定时器的功能,并测试其正确性和稳定性。
二、实验过程1. 硬件准备在实验中,我们使用了一台基于8051单片机的开发板,通过连接外部电路和开发板的引脚,实现对定时器的控制。
2. 软件编程首先,我们需要在开发板上搭建一个简单的电路,包括一个LED灯和一个按钮。
然后,我们使用汇编语言编写中断处理程序,实现当按钮按下时,LED灯闪烁的功能。
具体的编程步骤如下:(1)设置中断向量表:将中断处理程序的地址存储到中断向量表中,以便系统在中断发生时能够正确地跳转到相应的处理程序;(2)初始化定时器:设置定时器的计数器初值和工作模式;(3)编写中断处理程序:当中断发生时,执行相应的处理程序。
在本实验中,我们编写了一个简单的中断处理程序,当按钮按下时,将LED灯的状态取反;(4)启用中断:使能中断,使得系统能够响应外部事件的发生。
3. 实验测试将编写的程序下载到开发板上,并连接相应的电路。
按下按钮,观察LED灯是否按照预期的频率闪烁。
通过调整定时器的计数器初值和工作模式,可以改变LED灯闪烁的频率。
三、实验结果经过多次实验测试,我们发现中断和定时器的功能正常,LED灯能够按照预期的频率闪烁。
通过改变定时器的计数器初值和工作模式,我们成功地实现了LED灯闪烁频率的调节。
实验结果表明,中断和定时器是一种有效的方法,可以实现对外部事件的及时响应和定时任务的精确控制。
第六章 AT89C51中断系统与定时
1 0 1 0
T1 TX RX
PS ES EA
1 0
自 然 优 先 级
中断 矢量地址 硬件查询 源允许
低 级 中 断 请 求
各中断 总允许 源允许
优先级
PC
1.中断源(5个) 向CPU发出中断请求的来源,或引起中断的原因称为中断源。 (1). 外部中断类 外部中断是由外部原因(如打印机、键盘、控制开关、外部故障)引起的, 可以通过两个固定引脚来输入到单片机内的信号,即外部中0(INT0)和外 部中断1(INT1)。 外部中断0(INT0)请求信号输入引脚为P3.2。当CPU检测到P3.2引脚上 出现有效的中断信号时,向CPU申请中断。 外部中断1(INT1)请求信号输入引脚为P3.3 。当CPU 检测到P3.3 引脚上出现有效的中断信号时,向CPU申请中断。 (2). 定时中断类 定时中断是由内部定时(或计数)溢出或外部定时(或计数)溢出引起的, 即定时器0(T0)中断和定时器1(T1)中断。 当定时器对单片机内部定时脉冲进行计数而发生计数溢出时,即表明定 时时间到,申请中断;或者当定时器对单片机外部计数脉冲进行计数而 发生计数溢出时,即表明计数次数到,申请中断。 片内定时/计数器T0溢出中断(TF0):当定时/计数器T0发生溢出时, 置位TF0,并向CPU申请中断。 片内定时/计数器T1溢出中断(TF1):当定时/计数器T1发生溢出时, 置位TF1,并向CPU申请中断。 (3). 串行口中断类 串行口中断是为接收或发送串行数据而设置的。 串行接口中断,包括RI 或TI。当发送或接收完一帧数据时,向CPU 申请中断。
D7 EA
D6 -
D5 -
D4 ES
D3 ET1
D2 EX1
D1 D0 ET0 EX0
定时器与中断
西安冰河机械电子工作室--暑期单片机培训 西安冰河机械电子工作室--暑期单片机培训 --
3、中断允许控制寄存器IE 中断允许控制寄存器IE
EX0(IE.0),外部中断0允许位; EX0(IE.0),外部中断0允许位; (IE.0) ET0(IE.1) 定时/计数器T0中断允许位; (IE.1), T0中断允许位 ET0(IE.1),定时/计数器T0中断允许位; EX1(IE.2) 外部中断0允许位; (IE.2), EX1(IE.2),外部中断0允许位; ET1(IE.3) 定时/计数器T1中断允许位; (IE.3), T1中断允许位 ET1(IE.3),定时/计数器T1中断允许位; ES(IE.4),串行口中断允许位; ES(IE.4),串行口中断允许位; (IE.7), CPU中断允许 总允许) 中断允许( EA (IE.7), CPU中断允许(总允许)位。
TF1(TCON.7): 溢出中断请求标志位。T1计数溢出时由硬件自 ( ):T1溢出中断请求标志位 ): 溢出中断请求标志位。 计数溢出时由硬件自 动置TF1为1。CPU响应中断后 响应中断后TF1由硬件自动清 。T1工作时,CPU 由硬件自动清0。 工作时 工作时, 动置 为 。 响应中断后 由硬件自动清 可随时查询TF1的状态。所以,TF1可用作查询测试的标志。TF1也可 的状态。 可用作查询测试的标志。 可随时查询 的状态 所以, 可用作查询测试的标志 也可 以用软件置1或清 或清0,同硬件置1或清 的效果一样。 或清0的效果一样 以用软件置 或清 ,同硬件置 或清 的效果一样。 TR1(TCON.6): 运行控制位。TR1置1时,T1开始工作;TR1置 ):T1运行控制位 开始工作; ( ): 运行控制位。 置 时 开始工作 置 0时,T1停止工作。TR1由软件置 或清 。所以,用软件可控制定时 停止工作。 由软件置1或清 时 停止工作 由软件置 或清0。所以,用软件可控制定时/ 计数器的启动与停止。 计数器的启动与停止。 TF0(TCON.5): 溢出中断请求标志位,其功能与 ):T0溢出中断请求标志位 类同。 ( ): 溢出中断请求标志位,其功能与TF1类同。 类同 TR0(TCON.4): 运行控制位,其功能与 ):T0运行控制位 类同。 ( ): 运行控制位,其功能与TR1类同。 类同
定时器、计数器、中断
例 假设允许片内定时器/计数器中断,禁止其他中断。试根据假 设条件设置IE的相应值。 根据题目要求,要允许内部定时器中断,就需要将IE寄存器的EA、 ET1、ET0置1,其他位清0,可分别通过字节寻址或者位寻址进行。 (1) 用字节操作指令: MOV IE,#8AH 或者, MOV A8H,#8AH (2) 用位操作指令: SETB ET0 ;定时器/计数器0允许中断 SETB ET1 ;定时器/计数器1允许中断 SETB EA ;CPU开中断
8BH IE1 8AH IT1 89H IE0 88H IT0
TCON (88H)
2.
SCON (98H)
串行口控制寄存器SCON
99H TI 98H RI
SCON中TI和RI的格式如图5.5所示。
3.
中断允许控制 IE
IE的格式如图5.6所示。
IE (A8H) AFH EA ACH ES ABH ET1 AAH EX1 A9H ET0 A8H EX0
1. 工作模式寄存器TMOD
TMOD (89H) D7 GATE D6
——
D5 M1
D4 M0
D3 GATE
D2
——
D1 M1
D0 M0
C/ T
C/ T
T1 控制位
T0 控制位
图6.2 TMOD 的位定义
2. 定时器控制寄存器TCON
TCON (88H) 8FH TF1 8EH TR1 8DH TF0 8CH TR0 8BH IE1 8AH IT1 89H IE0 88H IT0
TABLE:
TABLE1:
DB DB DB DB DB DB DB RET DB DB DB RET END
0FEH,0FDH,0FBH,0F7H 0EFH,0DFH,0BFH,07FH 0BFH,0DFH,0EFH,0F7H 0FBH,0FDH,0FEH,0FFH 0AAH,55H,0AAH,55H 0AAH,55H,0FFH 1BH 0FFH,00H,0FFH,00H,0FFH 00H,0FFH,00H,0FFH,00H 1BH
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如果定时器/计数器T0已工作在工作方式3,则定时器/计数器T1只能工作在方式0、 方式1或方式2下,因为它的运行拉制位TR1及计数溢出标志位 TF1已被定时器/计数器T0借用,如图6-7所示。
第三节 定时器/计数器的应用举例
一、方式0、方式1的应用
C /T /T 例6.2 选择T1方式0用于定时,在P3.7引脚输出周期为1ms的方波,晶振fosc= 6MHz。 解:根据题意,只要使P3.7每隔500µs取反一次即可得到1ms方波, C /T 因而T1的定时时间为500µs。将T1设为定时方式0:GATE=0,
(1)硬件设计 硬件设计见图6-3所示。
图6-8 1ms方波
例6.3 用AT89S51单片机产生“嘀、嘀、…”报警声从P3.7端口输出, 产生频率为1KHz, 1KHZ方波从P3.7输出0.2秒,接着0.2秒从P3.7输出电平信号, 如此循环下去,就形成所需的报警声了。 解:生活中常常到各种各样的报警声,例如“嘀、嘀、…”就是常见的一种声音报警声, 但对于这种报警声,嘀0.2秒钟,然后断0.2秒钟,如此循环下去, 假设嘀声的频率为1KHz,则报警声时序图如图6-9所示。
TH1
TL1
TH0
TL0
微处理器
内部总线
GATE IT1 TF1 TR1 TF0 TR0 IE1 IE0 IT0 C/T C/T M1 M0 M1 M0
TCON
GATE
TMOD
外部中断相关位
T1方式
T0方式
图6-1 TMOD、TCON与T0、T1的结构框图
2.定时/计数器工作原理 定时器工作前先装入初值,利用送数指令将初值装入TH0 和 TL0 或 TH1和TL1, 高位数装入TH0 和TH1,低位数装入 TL0 和 TL1。当发出启动命令后, 装初值寄存器开始计数,连续加1,每一个机器周期加1 一次,加到满值(各位全1)。 若再加1,则溢出,同时将初值寄存器清零。如果继续计数定时,则需要重新赋初值。
溢出 申请 中断 申请 中断 TCON TF1 TR1 TF0 TR0 D7 溢出 TH0 8位 T0引脚 1 TL0 8位 &
≥1
机器周期 TMOD 1 1 M0 M1 C/T 0 机器周期 GATE M0 1 M1 C/T GATE D7 D0
D0
INT0引脚
图6-7 T0方式3下的逻辑结构 2.T0工作方式3下的定时器/计数器T1
GATE D7
1 INT1引脚
D0
图6-4 T0(或T1)方式0结构
二、方式1
TMOD 申请 TCON 中断 D7 TF1 TR1 TF0 TR0 T1引脚 溢出 TH1 8位 TL1 8位 &
≥1
1 0
M0 M1 C/T
D4
1
1 0
机器周期
GATE D7
1 INT1引脚
D0
图6-5 T0 (或T1) 方式1结构
⑷ TR0-定时/计数器T0运行控制位。软件置位,软件复位。 与GATE有关,分两种情况: 当GATE = 0 时,若TR0 = 1,开启T0计数工作; 若TR0 = 0,停止T0计数。 当GATE = 1 时,若TR0 = 1 且/INT0 = 1时,开启T0计数; 若TR0 = 0 但 /INT0 = 0,则不能开启T0计数。 若TR0 = 0, 停止T0计数。 ⑸ IE1-外部中断1请求标志。IE1=1表明外部中断1向CPU申请中断。 ⑹ IT1-外部中断1触发方式选择位。当IT1=0,外部中断1为电平触发方式。 ⑺ IE0-外部中断0请求标志。IE0=1表明外部中断0向CPU申请中断。 ⑻ IT0-外部中断0触发方式选择位。当IT1=0,外部中断0为电平触发方式; IT1=1,外部中断0为边沿触发方式;其操作功能与IT1类似。
四、定时/计数器的初始化
1.定时器初始化的主要步骤 ⑴ 选择工作方式,即对TMOD 赋初值。 ⑵ 给定时器赋初值,即把初始常数装入TH0 TL0 或 TH1 TL1。 ⑶ 根据需要设置中断控制字 直接对中断允许寄存器IE 和 优先级寄存器 IP 设置。
⑷ 启动定时/计数器 ① 若已规定用软件启动(即GATE =0), 则可把TR0 或 TR1 置1 ② 若已规定由外中断端子电平启动(即GATE =1), 则需给外端子加启动电平。 2.定时器初值设定方法
图6-3 方波硬件设计和仿真波形
(2)源程序 //中断方式 #include "reg51.h" #include "stdio.h" Uart_Init(); sbit P1_1=P1^1; void main() { TMOD=0X01; // T0工作在方式1 TL0=0xB0; //给TL0置初值 TH0=0x3c; //给TH0置初值 ET0=1; //开串行口中断 EA=1; TF0=0; TR0=1; //启动T0 while(1) ; //设置断点处 } void Int_T0() interrupt 1 using 2 { TL0=0xB0; TH0=0x3c; //重赋初值 P1_1=!P1_1; //定时时间到P1_1取反 printf("Timer1 overflow in Mode 1\n");/* 定时 器0溢出后,输出提示信息 */ }
XTAL1 C1
振 荡 器
C2 XTAL2
÷12
C /T 0
加1计数器
TFx
中断
C /T 1
Tx端
控制信号
图6-2 定时/计数器的工作原理结构框图
二、定时/计数器工作方式控制寄存器 TMOD TMOD为T0、T1的工作方式控制寄存器,其格式如下。
C /T /T
定时器 T1
定时器T0
GATE
C/T
三、定时/计数器控制寄存器TCON
定时器控制字TCON的格式如下。
位地址
位符号
8FH
TF1
8EH
TR1
8DH
TF0
8CH
TR0
8BH
IE1
8AH
IT1
89H
IE0
88H
IT0
各位定义如下: ⑴ TF1-定时器T1溢出标志。当定时器T1计满溢出时,由硬件使TF1置“ 并且申请中断。进入中断服务程序后,由硬件自动清“0”,在查询方式下 ⑵ TF0-定时器T0溢出标志。当定时器T0计满溢出时,由硬件使TF0置“ 并且申请中断。进入中断服务程序后,由硬件自动清“0”,在查询方式 ⑶ TR1 —— 定时 / 计数器T1运行控制位。软件置位,软件复位。 与GATE有关,分两种情况: 当GATE = 0 时,若TR1 = 1,开启T1计数工作; 若TR1 = 0,停止T1计数。 当GATE = 1 时,若TR1 = 1 且/INT1 = 1时,开启T1计数; 若TR1 = 1 但 /INT1 = 0,则不能开启T1计数。 若TR1 = 0, 停止T1计数。
第六章 定时器和中断
河工科技
瓮嘉民制作
第六章 定时器和中断
第一节 定时器/计数器概述
第二节 定时器/计数器4种工作方式
第三节 定时器/计数器的应用举例 第四节 AT89S51单片机中断系统
第一节 定时/计数器概述
一、定时/计数器的结构和工作原理 1.定时/计数器的结构
T1引脚 T0引脚
机器周 期脉冲
=0,M1M0=00;T0不用可为任意方式,只要不使其进入方式3即可, 一般取0即可。TMOD各位设置如下:
GATE 0 0 M1 0 M0 0 GATE 0 0 M1 0 M0 0
故TMOD = 00H。系统复位后TMOD为0,所以不必对TMOD置初值。 下面计算500µs定时T1的初值: 机器周期 T机=12/fosc=12/(6×106)=2µs 设初值为X则:(213-X)×2×10-6 s =500×10-6 s X = 7942D=1111100000110B=1F06H 因为在作13位计数器用时,TL1高3位未用,应写0,X的低5位装入TL1的低5位, 所以TL1=06H;X的高8位应装入TH1,所以TH1=F8H。
(4)下载验证 本实验可以通过SP-28 USB下载验证,可以观察到VD2不停的亮灭。
第二节 定时/计数器4种工作方式
一、方式0
TMOD 申请 TCON 中断 D7 TF1 TR1 TF0 TR0 T1引脚 溢出 TH1 0 0 0 TL1 8位 5位 &
≥1
0 0
M0 M1 C/T
D4
1
1 0
机器周期
C /T /T
1KHz波形
电平信号
1KHz波形
电平信号
Байду номын сангаас
图6-9 报警声时序图 TMOD各位设置如下:
GATE 0 0 M1 0 M0 0 GATE 0 0 M1 0 M0 1
VCC
U1
8 7 6 5 4 3 2 1 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 P3.7/RD P3.6/WR P3.5/T1 P3.4/T0 P3.3/INT1 P3.2/INT0 P3.1/TXD P3.0/RXD 17 16 15 14 13 12 11 10
⑴ 根据定时长短,选择工作方式,设用M 表示最大计数值,则 各种方式计数最大值如下。 方式 0 M= 213=8192 方式 1 M= 216=65536 方式 2 M= 28=256 方式 3 M=28=256
⑵ 定时初值计算,设初值为X,最大计数值为M。 初值X与机器周期I机及定时时间T的关系为: (M-X)T机 = T (6-1) 其中:T机 =12个时钟周期 =12 /fOSC X = M - T/ T机 (6-2)
(3)M1、M0-工作方式选择位,其功能见表6-1。
表6-1 M1和M0 工作方式选择位 M1 0 0 1 1 M0 0 1 0 1 模式 0 1 2 3 说明 13位定时/计数器,高八位TH(7~0)+ 低五位TL