自动控制网—学习自动控制技术电气自动化技术从这里开始!
当前位置: 自动控制网 > 自动化 > 单片机 >

单片机中断系统实际应用

时间:2014-11-18 08:22来源:www.eadianqi.com 编辑:自动控制网
中断系统虽然是硬件系统,但必须有相应的软件配合才能正常工作。设计中断程序时要完成以下几个任务: 1.中断允许寄存器IE的设置。 2.中断优先级寄存器IP的设置。 3.若是外部中断源,还要设置中断请求的触发方式IT0或IT1。 4.编写中断服务程序,处理中断请求

中断系统虽然是硬件系统,但必须有相应的软件配合才能正常工作。设计中断程序时要完成以下几个任务:

自动控制网www.eadianqi.com版权所有

1.中断允许寄存器IE的设置。

自动控制网www.eadianqi.com版权所有

2.中断优先级寄存器IP的设置。 本文来自www.eadianqi.com

3.若是外部中断源,还要设置中断请求的触发方式IT0或IT1。 自动控制网www.eadianqi.com版权所有

4.编写中断服务程序,处理中断请求。

本文来自www.eadianqi.com

前3条一般放在主程序的初始化程序段中。由于各中断入口地址是固定的,且各中断入口地址之间相差8个字节。而程序又必须从起始地址0000H执行。所以,在0000H起始地址的几个字节中,经常用到无条件转移指令,跳转到主程序。中断服务程序稍长一点就超过8个字节,就有可能占用到其他中断的入口地址,影响其他中断源的中断。为此,一般在某一中断入口地址后,再利用一条无条件跳转指令,把中断服务程序放到远离其他中断入口地址的适当位置。常用的主程序结构如下:

本文来自www.eadianqi.com

ORG 0000H

自动控制网www.eadianqi.com版权所有

LJMP MAIN 自动控制网www.eadianqi.com版权所有

ORG 某一中断入口地址 自动控制网www.eadianqi.com版权所有

LJMP INT 自动控制网www.eadianqi.com版权所有

MAIN:主程序 自动控制网www.eadianqi.com版权所有

INT:服务程序 自动控制网www.eadianqi.com版权所有

注意:如果有多个中断源,就对应有多个“ORG 中断入口地址”,且必须从小到大依次排列。主程序中应依次对各中断源进行设置。 本文来自www.eadianqi.com

例1 设计一个程序,能够显示INT0引脚上所接按钮累计次数(设次数小于255次)。

本文来自www.eadianqi.com

设计主程序为显示程序,实时显示某一寄存器或存储单元(假设为寄存器R7)中的内容(这里可以将R7中的内容以二进制形式在P1口上显示出来)。利用INT0引脚上出现的负跳变为中断请求信号(外接一只单脉冲按钮实现),每中断一次,R7内容加1。

本文来自www.eadianqi.com

程序如下:ORG 0000H 本文来自www.eadianqi.com

AJMP MAIN        ;转主程序 自动控制网www.eadianqi.com版权所有

ORG 0003H 自动控制网www.eadianqi.com版权所有

AJMP INT0        ;转中断服务程序

自动控制网www.eadianqi.com版权所有

ORG 0030H

本文来自www.eadianqi.com

MAIN:MOV SP,#60H      ;设堆栈指针 自动控制网www.eadianqi.com版权所有

SETB IT0         ;设置INT0为边沿触发

自动控制网www.eadianqi.com版权所有

SETB EA          ;CPU开中断

本文来自www.eadianqi.com

SETB EX0         ;允许INT0中断

自动控制网www.eadianqi.com版权所有

MOV R7,#00H      ;计数器赋初值

本文来自www.eadianqi.com

L1:MOV P1,R7        ;送入P1口以二进制形式显示 自动控制网www.eadianqi.com版权所有

AJMP L1          ;实时显示 自动控制网www.eadianqi.com版权所有

INT0:INC R7           ;中断服务程序,每中断一次,计数器加1 自动控制网www.eadianqi.com版权所有

RETI             ;中断返回 本文来自www.eadianqi.com

本文已影响