中断与定时计数

目录

一、实验目的

二、介绍

1、什么是中断

2、什么是定时器/计数器

三、外部中断、二级中断实现LED流水灯

1、1个按键实现P1接口高4位和低4位LED交替闪烁5次

2、2个按键实现P1接口中断返回

3、两个按键实现中断嵌套

四、定时器/计数器

1、Proteus仿真完成采用定时计数器控制LED灯每隔1s周期性亮灭

2、普中单片机板上完成采用定时计数器控制LED灯每隔1s周期性亮灭

3、采用计数器中断,实现按4次按钮开关后,P1口的8只LED闪烁不停


一、实验目的

深入了解AT89C51单片机中断原理。掌握外部中断、定时器/计数器中断的编程方式;了解中断响应、中断优先级、中断标志位复位等原理,掌握二级中断、中断嵌套的具体应用编程; 了解定时器/计数器的工作原理,掌握计数器初值计算方法,定时/计数中断服务的编程开发。

二、介绍

1、什么是中断

中断技术主要用于实时监测与控制,要求单片机能及时地响应中断请求源提出的服务请求,并快速响应与及时处理。当中断请求源发出中断请求时,如中断请求被允许,单片机暂时中止当前正在执行的主程序,转到中断服务处理程序处理中断服务请求,处理完中断服务请求后,再回到原来被中止的程序之处(断点),继续执行被中断的主程序。

2、什么是定时器/计数器

定时器模式是对系统时钟信号经12分频后的内部脉冲信号(机器周期)计数。由于系统时钟频率是定值,可根据计数值计算出定时时间。两个定时器/计数器属于增1计数器,即每计一个脉冲,计数器增1。计数器模式是对加在T0(P3.4)和T1(P3.5)两个引脚上的外部脉冲进行计数**三、在Proteus仿真软件上完成按键中断控制流水灯。

三、外部中断、二级中断实现LED流水灯

1、1个按键实现P1接口高4位和低4位LED交替闪烁5次

原理介绍:在单片机P1口上接有8只LED。在外部中断0输入引脚(P3.2)接一只按钮开关K1。要求将外部中断0设置为电平触发。程序启动时,P1口上的8只LED全亮。每按一次按钮开关K1,使引脚接地,产生一个低电平触发的外中断请求,在中断服务程序中,让低4位的LED与高4位的LED交替闪烁5次。然后从中断返回,控制8只LED再次全亮。

keil源码如图所示:

<reg51.h>是为基于MCS-51架构(如AT89C51)的单片机编程设计的头文件,包含了与该类单片机硬件特性紧密相关的定义和声明。#define uchar unsigned char是定义一个与unsigned char相同的数据类型uchar,简单来说就是简化数据类型unsigned char。Delay延迟函数通过没有空循环来消耗CPU的时间,以此达到延迟的效果。关键字interrupt后面的 n是中断号,对于AT89C51单片机,n的取值为0~4,编译器从8×n+3处产生中断向量。AT89S51中断源对应的中断号和中断向量如图所示:

关键字using后面的n用来选择4个工作寄存器区。using是一选项,如不选,中断函数中的所有工作寄存器内容将被保存到堆栈中。AT89C51的中断系统结构如图所示:

TCON寄存器标志位功能如下:TF1—定时器/计数器T1的溢出中断请求标志位。当启动T1计数后,T1从初值开始加1计数,当最高位产生溢出时,硬件 置TF1为“1”,向CPU申请中断,响应TF1中断时,TF1标志硬件自动清“0”,TF1也可由软件清“0”。TF0—定时器/计数器T0溢出中断请求标志位,与TF1类似。IE1—外部中断请求1中断请求标志位。IE0—外部中断请求0中断请求标志位,与IE1类似。IT1—选择外中断请求1为跳沿触发还是电平触发方式。电平触发方式,加到INT0脚上的外中断请求输入信号为低电平有效,并把IE1置“1”。转向中断服务程序时,则由硬件自动把IE1清“0”。跳沿触发方式,加到INT1脚上的外中断请求输入信号从高到低的负跳变有效,并把IE1置“1”。转向中断服务程序时,则由硬件自动把IE1清“0”。IT0—选择外中断请求0为跳沿触发方式还是电平触发方式,与IT1类似。当AT89C51复位后,TCON被清“0”,5个中断源的中断请求标志均为0。

P1=0x0f表示(00001111)P1端口高4位为低电位,低4位为高电位,根据Proteus连线图可知,高电位LED灭,低电位LED亮。P1=0xf0表示(11110000)P1端口高4位为高电位,低4位为低电位。P1=0表示(00000000)P1端口全亮。

SCON标志位功能如下:TI—串口发送中断请求标志位。CPU将1字节的数据写入串口的发送缓冲器SBUF时,就启动一帧串行数据的发送,每发送完一帧串行数据后,硬件使TI自动置“1”。CPU响应串口发送中断时,并不清除TI中断请求标志,TI标志必须在中断服务程序中用指令对其清“0”。RI—串行口接收中断请求标志位。在串口接收完一个串行数据帧,硬件自动使RI中断请求标志置“1”。CPU在响应串口接收中断时,RI标志并不清“0”,须在中断服务程序中用指令对RI清“0”。

中断允许寄存器IE中各位的功能如下:EA—中断允许总开关控制位。EA=0,所有的中断请求被屏蔽。EA=1,所有的中断请求被开放。ES—串行口中断允许位。ES=0,禁止串行口中断。ES=1,允许串行口中断。ET1—定时器/计数器T1溢出中断允许位。ET1=0,禁止T1溢出中断。ET1=1,允许T1溢出中断。EX1—外部中断1中断允许位。EX1=0,禁止外部中断1中断。EX1=1,允许外部中断1中断。ET0—定时器/计数器T0的溢出中断允许位。ET0=0,禁止T0溢出中断。ET0=1,允许T0溢出中断。EX0—外部中断0中断允许位。EX0=0,禁止外部中断0中断。EX0=1,允许外部中断0中断。优先级IP功能类似,1为高优先级,0为低优先级。

将keil文件编译生成的.hex文件添加进Proteus仿真软件中的AT89C51中,操作如图所示:

在未按下按键时,Proteus仿真演示如图:

在按下按键后,Proteus仿真演示如图:

在完成5次交替闪烁后,Proteus仿真会回到未按下按键时8个LED全亮的状态

2、2个按键实现P1接口中断返回

原理介绍:在单片机P1口上接有8只LED。在外部中断0输入引脚(P3.2)接有一只按钮开关K1。在外部中断1输入引脚(P3.3)接有一只按钮开关K2。要求K1和K2都未按下时,P1口的8只LED呈流水灯显示,仅K1(P3.2)按下再松开时,上下各4只LED交替闪烁10次,然后再回到流水灯显示。如果按下再松开K2(P3.3)时,P1口的8只LED全部闪烁10次,然后再回到流水灯显示。

keil源码如图所示:

再将keil文件编译生成的.hex文件添加进Proteus仿真软件中的AT89C51芯片内,最开始Proteus演示如图所示:

再按下上面的按键K1后,Proteus仿真演示如图所示:

P1接口高4位和低4位LED交替闪烁10次后又会重新回到最初开始的单个LED交替闪烁阶段。此时再按下下面的按键K2,Proteus仿真演示如图所示:

此时,P1口的8只LED全部闪烁10次,然后再回到流水灯显示。

3、两个按键实现中断嵌套

原理介绍:要求K1和K2都未按下时,P1口8只LED呈流水灯显示,当按一下K1时,产生一个低优先级外中断0请求(跳沿触发),进入外中断0中断服务程序,上下4只LED交替闪烁。此时按一下K2时,产生一个高优先级的外中断1请求(跳沿触发),进入外中断1中断服务程序,使8只LED全部闪烁。当显示5次后,再从外中断1返回继续执行外中断0中断服务程序,即P1口控制8只LED,上、下4只LED交替闪烁。设置外中断0为低优先级,外中断1为高优先级。

keil源码如图所示:

再将keil文件编译生成的.hex文件添加进Proteus仿真软件中的AT89C51芯片内,最开始Proteus演示如图所示:

此时按下上面的开关K1,P1接口的高低各4位LED灯交替闪烁,再按下下面的按键K2,P1接口8只LED全部闪烁,当显示5次后,回到高低各4只LED交替闪烁,Proteus仿真演示如图所示:

四、定时器/计数器

1、Proteus仿真完成采用定时计数器控制LED灯每隔1s周期性亮灭

原理介绍:在AT89C51的P1口上接有8只LED,采用T0方式1的定时中断方式,使P1口外接的8只LED每1s闪亮一次。

keil源码如图所示:

再将keil文件编译生成的.hex文件添加进Proteus仿真软件中的AT89C51芯片内,最开始Proteus演示如图所示:

Keil仿真中的虚拟逻辑仪对LED管脚P1.0进行波形观察,结果如图所示:

2、普中单片机板上完成采用定时计数器控制LED灯每隔1s周期性亮灭

keil源码如图所示:

在普中单片机上演示如图所示:

3、采用计数器中断,实现按4次按钮开关后,P1口的8只LED闪烁不停

keil源码如图所示:

再将keil文件编译生成的.hex文件添加进Proteus仿真软件中的AT89C51芯片内,点击最右边的按键4次后Proteus演示如图所示:

  • 14
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在MCS-51单片机中,定时器/计数器在工作方式1下,被称为13位定时/计数器。它包含一个8位计数器和一个5位可编程预分频器。 在工作方式1下,定时器/计数器以一个外部时钟源作为输入进行计数。时钟信号的频率由TCLK的频率决定。每当定时器/计数器的计数值达到2^13(8192)时,它会发出一个中断请求(TIF)。该中断请求可以被单片机中断系统响应,执行相应的中断服务程序。 在工作方式1下,定时器/计数器可以用于测量外部信号的频率。当设置为计数模式时,它可以记录外部信号的脉冲数量。 为了开始定时器/计数器的计数,在TCON寄存器中的TR1位(T1的控制位)应被设置为1。如果TR1位设置为0,定时器/计数器将停止计数。 当定时器/计数计数溢出时,它会将TCON寄存器中的TF1位(T1的溢出标志位)置位。该位在溢出时自动被硬件清零。可以通过检查该位的状态来判断定时器/计数器是否溢出。 通过设置定时器模式寄存器(TMOD)中的GATE1位,可以选择使定时器/计数器继续计数,即使没有外部时钟源输入。通过设置CT1位,可以在计数器模式和定时器模式之间切换。 总而言之,在MCS-51单片机中,工作方式1下的定时器/计数器可用于计时、触发中断和测量外部信号的频率。根据需要,可以通过设置不同的控制位和寄存器来实现各种应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值