80C51单片机中断的编程使用方法介绍

发布者:SerendipitySoul最新更新时间:2024-03-13 来源: elecfans关键字:80C51  单片机  中断  编程 手机看文章 扫描二维码
随时随地手机看文章

1、单片机中断:

找了一张 80C51 单片机的图如下:

80C51单片机中断的编程使用方法介绍

其中,在 P3.2、P3.3 的位置,即 12 ,13 引脚处,标有 INT0 和 INT1,那两个引脚就是外部中断的输入。上面一个横杠代表低电平有效,给 P3.2、P3.3 赋值 0,就可以运行已经写好的中断服务程序。具体怎么用,还要熟悉一些中断寄存器的使用。

2、中断寄存器:

(1)、IE (Interrupt Enable):中断允许控制寄存器

80C51单片机中断的编程使用方法介绍

EA (IE.7):EA=0 时,所有中断禁止(即不允许中断)

EA=1 时,各中断的产生由个别的允许位决定

ET2 (IE.5):定时器 2 溢出中断允许(8052 用,博主用的 STC89C54RD+ 也有)

ES (IE.4):串口中断允许(ES=1 允许,ES=0 禁止,下同)

ET1 (IE.3):定时器 1 中断允许

EX1 (IE.2):外部中断 INT1 中断允许

ET0 (IE.1):定时器 0 中断允许

EX0 (IE.0):外部中断 INT0 中断允许

(2)、IP (Interrupt Priority):中断优先级控制寄存器

80C51单片机中断的编程使用方法介绍

PX0:外部中断 0 的中断优先级控制位,PX0=1,外部中断 0 被定义为高优先级中断;PX0=0,外部中断 0 定义为低优先级中断

PT0:定时器 T0 的中断优先级控制位,PT0=1,定时器 T0 被定义为高优先级中断;PT0=0,定时器 T0 定义为低优先级中断

PX1:外部中断 1 的中断优先级控制位,PX1=1,外部中断 1 被定义为高优先级中断;PX1=0,外部中断 1 定义为低优先级中断

PT1:定时器 T1 的中断优先级控制位,PT1=1,定时器 T1 被定义为高优先级中断;PT1=0,定时器 T1 定义为低优先级中断

PS:串口中断优先级控制位,PS=1,串口中断被定义为高优先级中断;PS=0,串口中断定义为低优先级中断

(暂时没用过,后续使用再更新)

(3)、TCON (Timer Control Register):定时器/计数器控制寄存器

这个寄存器在前面定时器里遇到过,再备份一下:

80C51单片机中断的编程使用方法介绍

TF:定时器溢出标志,计数器溢出时硬件自动置位,即 TF=1,进入中断后再由硬件自动清除(TF=0)

TR:计数器的控制位

TR=1:计数器开始工作

TR=0:计数器停止计数

IE:外部中断 INT 的请求标志

当单片机检测到 INT 引脚上有下降沿时,IE=1 申请中断,进入中断服务程序时,硬件自动清除 IE 标志

IT:外中断触发类型控制

IT=1 时,外中断信号的下降沿触发 IE 标志

IT=0 时,外中断信号的低电平触发 IE 标志

3、中断的编程使用:

使用中断,就是说当发生某些事件的时候,运行“中断服务程序”,使用方法如下:

void Timer0_ISR(void) interrupt 1 using 1

{

/* 此处编写中断服务的具体内容 */

}

语句 interrupt x using y 是指:此函数作为“x 号中断”的“中断服务程序”,并且使用“y 号寄存器组”“传递参数”。

首先要清楚:80C51 单片机有 5 个中断源:2 个外部中断、2 个定时器中断(定时器 0 和 定时器 1)、1 个串口中断(8052 有 6 个中断源,多了一个定时器 2 中断),x 即为“中断号”:

80C51单片机中断的编程使用方法介绍

上面的程序是定时器 0 的中断服务程序,因此是 interrupt 1;要是想按一个键进行中断,那么就是外部中断,因此是 interrupt 0 或者 interrupt 2。

关键字 using,用来指定中断服务程序使用的“寄存器组”。用法是:using 后跟一个 0 到 3 的数,对应着 4 组工作寄存器。一旦指定工作寄存器组,默认的工作寄存器组就不会被压栈,这将节省 32 个处理周期,因为入栈和出栈都需要 2 个处理周期。这一做法的缺点是所有调用中断的过程都必须使用指定的同一个寄存器组,否则参数传递会发生错误。顺便一提,默认使用 0 号寄存器组,即:不写 using y 就会默认 using 0,因为主程序使用 0 号寄存器组做参数传递。

补充:中断入口地址:

80C51单片机中断的编程使用方法介绍


关键字:80C51  单片机  中断  编程 引用地址:80C51单片机中断的编程使用方法介绍

上一篇:基于80C51单片机的多功能肌电测量仪设计
下一篇:以80C51单片机为例讲述单片机如何运行

推荐阅读最新更新时间:2024-11-04 08:07

用C51编写单片机延时函数
参考了 51单片机 Keil C 延时程序的简单研究 ,自己也亲身测试和计算了一些已有的延时函数。 这里假定单片机是时钟频率为12MHz,则一个机器周期为:1us. 参考了 51单片机 Keil C 延时程序的简单研究 后,我们可知道, 在Keil C中获得最为准确的延时函数将是 void delay(unsigned char t) { while(--t); } 反汇编代码如下: 执行DJNZ指令需要2个机器周期,RET指令同样需要2个机器周期,根据输入t,在不计算调用delay()所需时间的情况下,具体时间延时如下: t Delay Time (us) 1 2 1+2 =4
[单片机]
用C51编写<font color='red'>单片机</font>延时函数
用在系统可编程模拟器件实现双二阶型滤波器
数字在系统可编程(ISP)技术和复杂可编程器件(CPLD)在电子工业领域已得到了广泛的应用。Lattice公司最近推出的在系统可编程模拟电路(in system programmability Programmable Analog Circuits),简称ispPAC,允许设计者使用EDA开发软件、利用计算机设计和修改模拟电路,进行电路特性模拟,最后通过编程电缆将设计方案下载至芯片中。 在系统可编程电路提供三种可编程性能:(1)可编程功能,即具有对模拟信号进行放大、转换、滤波等功能;(2)可编程互联,即能把器件中的多个功能块进行互联,对电路进行重构,具有百分之百的电路布通率;(3)可编程特性,即能调整电路的
[模拟电子]
Windows9x/NT及2000下中断驱动程序的统一化处理
摘要: 针对Windows9x/NT及Windows2000操作系统,利用Windriver工具包,实现了在多种操作系统下对硬件中断驱动程序进行统一化处理,保证了程序在不同的操作系统下良好的移植性矣兼容性,并给出了用C语言编写的程序实例。 关键词: Windows9x/NT/2000 虚拟设备驱动程序(VxD) Windriver工具包 中断驱动程序的统一化处理 Windows以其友好的图形用户界面,使得它不仅成为办公管理首选的操作系统,也日益受到工程技术人员的关注,逐渐取代DOS而成为主流的工程应用控制平台。但是,Windows系统为了保证平台的安全与完
[嵌入式]
自制AVR单片机ISP下载线
单片机编程器的作用是将调试好的程序烧写到单片机的存储器中。本文介绍的AVR单片机ISP下载线的成本只有10元左右,非常适合初学者自制。 AVR单片机的程序可以使用串行在线编程(ISP)方式下载写入,即可直接在电路板上进行程序的烧写和修改,所需的装置就是一根ISP下载线。 本文介绍的ISP下载线使用计算机的并口对单片机编程.不仅支持AVR单片机,也支持对51单片机中AT89S系列单片机的编程。 一、下载线电路 下载线的电路见图1。该下载线是STK200/300型的下载线。74HC244是8缓冲器电路,用来作计算机并口和单片机的缓冲隔离。图1中的LPT连接到计算机的并口,作计算机上的下载软件和单片机进行通信的接口。LPT的④
[单片机]
自制AVR<font color='red'>单片机</font>ISP下载线
MCS-51单片机P0端口的结构及工作原理
P0 端口 8 位中的一位结构图见下图: 图片1 由上图可见, P0 端口由锁存器、输入缓冲器、切换开关、一个与非门、一个与门及场效应管驱动电路构成。再看图的右边,标号为 P0.X 引脚的图标,也就是说 P0.X 引脚可以是 P0.0 到 P0.7 的任何一位,即在 P0 口有 8    P0端口8位中的一位结构图见下图: XMLNAMESPACE PREFIX = O / XMLNAMESPACE PREFIX = V / 由上图可见,P0端口由锁存器、输入缓冲器、切换开关、一个与非门、一个与门及场效应管驱动电路构成。再看图的右边,标号为P0.X引脚的图标,也就是说P0.X引脚可以是P0.0到P0.7的任何
[单片机]
MCS-51<font color='red'>单片机</font>P0端口的结构及工作原理
PIC16C54单片机简介及其在神经刺激器中的应用
一、概述 生命系统中的神经、肌肉都是可兴奋组织,对于外界一定的刺激会发生反应,这种反应表现为神经冲动、肌肉收缩、血管张弛等等。 外周神经刺激器就是用于外科手术麻醉过程中,通过刺激外周神经引起病人的肌肉颤搐来观察肌松药效的一种仪器。如果麻醉不深,用刺激器刺激前臂的尺神经,会引起姆指的内收动作;如果麻醉进入深度,则姆指的内收动作就会消失。 外周神经刺激器的刺激脉搏宽是200us,电流强度在10mA--60mA分六档可调,它具有四种不同的工作方式: (1)单刺激(TWH)。刺激周期为1秒, (2)四次成串刺激(TOF)。刺激周期为15秒, (3)双重强直刺激(DBS)。刺激周期为15秒,(4)强直刺激后计数(PTC)。频率为
[单片机]
PIC16C54<font color='red'>单片机</font>简介及其在神经刺激器中的应用
STM32系列单片机在进入main函数前都在干些什么?
在刚开始学习单片机的时候,一直以为程序启动后就直接进入到了main函数,但是随着学习的深入才发现,程序在进入main函数前其实还要干好多事情。现在就来分析一下,STM32系列单片机程序在进入main函数前都在干些什么? 单片机上电后,程序首先跳转到地址0处,此时主堆栈指针MSP的初值也为0。然后单片机产生了复位信号,主堆栈指针加1,由于单片机内核为32位,所以地址增加一位,实际上是增加了32位,也就是增加了4个字节。此时MSP指针就指向了复位向量。而Cortex-M内核处理器的向量表可以重新定位,所以此时程序就会跳转到复位向量重新映射的地址处。 通过上面的两个图可以看到,通过复位向量的重映射后,MSP指针就会跳转到复位
[单片机]
STM32系列<font color='red'>单片机</font>在进入main函数前都在干些什么?
专题2-通过按键玩中断\2440按键中断编程lesson2
1、程序优化 修改Makefile 把main.c里面的mmu代码复制到mmu.c并修改如下 main.c的修改 由于在bootloader当中一般不会使用MMU,所以 main.c 加入led.c文件 makefile 2440中断源初始化 打开开发板底板与核心板原理图 底板 比如K1对应EINT1,然后到核心板去搜EINT1 然后去2440芯片手册去找到GPF这一组IO口 创建一个button.c,加入到makefile里面去button.o 按键初始化 编写button.c文件 #define GPFCON (volatile unsigned long *)0x56000050
[单片机]
专题2-通过按键玩<font color='red'>中断</font>\2440按键<font color='red'>中断</font><font color='red'>编程</font>lesson2
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved