单片机中断系统

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ROM和RAM指的都是半导体存储器,ROM是Read Only Memory的缩写,RAM是Random Access Memory的缩写。ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存。

FLASH存储器又称闪存,它结合了ROM和RAM的长处,不仅具备电子可擦除可编程(EEPROM)的性能,还不会断电丢失数据同时可以快速读取数据(NVRAM的优势),U盘和MP3里用的就是这种存储器。在过去的20年里,嵌入式系统一直使用ROM(EPROM)作为它们的存储设备,然而近年来Flash全面代替了ROM(EPROM)在嵌入式系统中的地位,用作存储Bootloader以及操作系统或者程序代码或者直接当硬盘使用(U盘)。

键盘中断实验

一、实验目的

键盘/按键是操作人员向单片机系统输入指令的基本工具,在前面的实验中我们已经多

次使用了按键。键盘/按键在编程时可以用查询或中断的方法来检测按键是否按下。其中,中断方式可以优化单片机的运行,并能快速做出反应,且可靠性较高。本实验要求大家用中断方式编写按键检测程序,该程序可以用于各种需要中断键盘/按键的场合。实验中需要掌握以下知识要点:

1.复习中断程序的编写格式及特殊功能寄存器的使用。

2.中断程序的编写格式。

3.中断程序的调试方法。

4.多个按键中,判断具体按下键的分析方法。

二、实验预备知识

1.中断程序的编写方法

普通的MSC-51 单片机有5 个中断源,每个中断有自己的中断程序入口,在汇编语言

中具有中断的程序编写格式如下:

ORG 0000H

SJMP MAIN

ORG 0003H ;INT0 中断入口

LJMP INT0IN

……

……

ORG 0030H ;主程序起始地址

MAIN:MOV IE ,#01H ;主程序部分

……

……

INT0IN:……;中断服务程序主体部分

……

RETI ;中断返回指令

END

中断程序的入口就是中断服务程序的首地址,MSC-51 系列单片机的各中断入口地址

是固定的。INT0 的中断入口是0003H,其中断服务程序就必须从0003H 单元开始,在实际编程中,为了不占用其它中断的入口,一般在入口处放一条跳转指令,而把中断服务程序主体放到其它地方。上面的程序就是采用的这种方法。

单片机在运行过程中,只有发生中断后才能运行中断服务程序,而不能直接运行到中

断程序中。单片机复位后,从0000H 单元开始运行程序,为了避免单片机直接运行到中断程序中,所以采用了SJMP MIAN 指令,跳过中断入口,进入主程序中。

程序中有中断程序时,主程序的起始地址应设置在中断入口区后面。在MSC-51 单片

机中,中断入口区是0003H~002FH。在以前的实验中没有用到中断,因此主程序的起始地

址可以是0000H。在主程序中要对中断进行设置并开中断。中断程序一般写在主程序的后面,但在主程序中不能直接跳转到中断程序中。

2.中断键盘的结构和使用

在使用按键的程序中,要判断按键是否按下,需要对按键所接的端口状态进行判断。

如果需要按键后立即响应,则程序要不停地查询端口状态,这样会大量占用单片机的运行时间,使其它程序的运行受到限制。在实际使用的单片机系统中,操作人员使用按键的次数和时间是非常有限的。在单片机系统中较多采用中断键盘,即:单片机平时不用查询按键状态,而在按键按下后产生中断,在中断程序中判断按键是否按下和哪个按键按下。简单中断键盘的电路如下:

图3-11 中断键盘电路图

没有按键按下时,键盘的INT 端为高电平,如果K1~K4 中任何一个按键按下,

INT 端变成低电平。把INT 端接单片机的INT0 或INT1 端就可以产生中断,在中

断程序中读入按键所接端口的状态,就可以判断出那个按键被按下。

3.中断键盘编程

以图3-11 的电路为例,假设按键接P1.0~P1.3,INT 端接INT0(P3.2),键盘中

断程序如下:

KEYBOARD:PUSH ACC ;保护现场

LCALL DELAY ;有键按下,调延时去抖动

MOV A ,P1 ;读入按键端口状态

ANL A ,#0FH ;屏蔽无效位

CPL A ;取反

JZ EXIT ;如果按键端口均为1,则退出

CJNE A ,#01H,NEXT ;判断是否是K1 按下

SJMP K1 ;执行K1 按下的操作

NEXT:CJNE A ,#02H,NEXT1 ;判断是否是K2 按下

SJMP K2

NEXT1:CJNE A ,#04H,NEXT2

SJMP K3

……

K1:……;K1 按下要执行的程序

……

SJMP EXIT

K2:……;K2 按下要执行的程序

……

EXIT:POP ACC ;恢复现场

RETI

在主程序中要根据所连接的中断端设置与该中断相关的特殊功能寄存器。

中断程序中要保护一些在主程序使用,并在中断程序中也被使用的存储单元的数据,

叫做“保护现场”。在退出中断时要恢复这些单元的内容,使主程序能接着中断前的状态运行,这种操作叫“恢复现场”。保护现场和恢复现场一般通过堆栈操作来实现,保护现场时将相关单元依次入栈,恢复现场时将它们按于入栈相反的顺序依次出栈。在实际编程中,那些单元的数据需要保护要根据需要而定。

4.中断程序的调试方法

在前面讲述中,当有按键按下时单片机应该执行一定的操作。当按下按键后如果没有

相关操作,则我们很难判断问题是出现在主程序还是中断服务程序。

调试中断程序时最好的方法是采用断点运行的方法。在中断服务程序的开始语句处设

置断点,如果主程序中中断设置正确,则按下按键以后程序就会在断点处停止,然后再通过单步运行检查中断服务程序。如果按下按键后程序不在断点处停止,说明该中断没有产生,主程序或硬件电路出了问题。

三、硬件连接

使用键盘显示模块,直接插在J12 和J13 上即可。根据电路图确定K1-K4 所连接的I/O 口和所使用的中断端。

四、实验内容

1.利用按键控制显示,要求按下K1 显示“1”,按下K2 显示“2”,按下K3 显示“3”,按下K4 显示“4”。

在按键显示模块的四个数码管的位选是P3.2~P3.5,在使用外中断时要占用P3.2 或

P3.3,因此显示时只能采用P3.4 和P3.5 作为位选。

相关文档
最新文档