8051外中断使用
- 格式:doc
- 大小:66.00 KB
- 文档页数:6
8051微控制器的中断执行流程如下:
1.当一个外部或内部中断源被触发时,8051微控制器会响应中断请求。
2.控制器将当前正在执行的指令存储到堆栈中,以便在中断处理完毕后返回
到原来的执行点。
3.控制器将中断向量地址加载到程序计数器( PC)中,跳转到相应的中断服
务程序 ISR)的起始地址。
4.在进入中断服务程序之前,控制器会保存当前寄存器的值,以便在退出中
断服务程序后恢复原始状态。
5.在中断服务程序中,微控制器执行相应的操作,例如读取或写入数据、控
制外设等。
6.中断服务程序执行完毕后,控制器从堆栈中恢复寄存器的值,返回到原来
被中断的程序执行点。
7.如果中断允许位被设置为允许,控制器会清除对应的中断标志位,以便允
许下一次该中断的发生。
通过以上步骤,8051微控制器能够响应并处理外部或内部的中断请求,保证程序的实时性和响应性。
8051单片机引脚工作原理8051单片机一共有40个引脚,分为四组:P0、P1、P2、P3、其中,P0端口有8个引脚(P0.0~P0.7),P1和P3端口各有8个引脚(P1.0~P1.7和P3.0~P3.7),P2端口有6个引脚(P2.0~P2.7),其中P2.6和P2.7还具有额外的功能。
P0端口可以被用来作为输入或输出端口。
当P0.0~P0.7的任意一个引脚被配置为输入时,该引脚将具有高阻抗状态(即输入模式)。
当P0.0~P0.7的任意一个引脚被配置为输出时,该引脚将具有一个逻辑电平(即输出模式)。
在输入模式下,引脚可以通过电阻连接到VCC或GND,以确定其逻辑电平。
在输出模式下,引脚的逻辑电平可以通过软件编程来控制。
P1端口也可以用作输入或输出端口。
它的工作原理与P0端口相似。
需要注意的是,在一些特殊的功能模式下,P1端口的一些引脚可能不可用,这主要是因为这些引脚被用来连接外部设备或其他功能。
P2端口有6个引脚(P2.0~P2.7)。
P2.0和P2.1用于连接外部中断输入引脚(INT0和INT1)。
当有外部信号触发INT0或INT1引脚时,单片机会相应地执行中断服务程序。
P2.2~P2.7的引脚具有两种不同的功能:如果设置为低电平,它们将成为外部总线的低字节(L0~L5),如果设置为高电平,它们将成为外部总线的高字节(H0~H5)。
P3端口也有8个引脚(P3.0~P3.7)。
其中,P3.0~P3.3是普通的IO口引脚,可以用作输入或输出。
P3.4~P3.7具有特殊功能。
P3.4和P3.5用于连接内部定时/计数器的输入引脚(T0和T1)。
P3.6和P3.7是特殊功能引脚,用于连接外部中断输入引脚(INT2和INT3)。
除了上述端口外,8051单片机还具有一个特殊的引脚,即RST(复位)引脚。
当复位引脚为低电平时,单片机将被复位,并重新启动。
通过编程,可以控制单片机引脚的工作模式和逻辑电平。
具体来说,单片机引脚的工作模式可以设置为输入(高阻抗)或输出,逻辑电平可以设置为高电平或低电平。
第一部分系统介绍一、系统概述1)、微处理器:i80c31,它的P1口、P3口皆对用户开放,供用户使用。
2)、时钟频率:6.0MHz3)、存储器:程序存储器与数据存储器统一编址,最多可达64k,板载ROM(监控程序27C256)12k;RAM1(程序存储器6264)8k供用户下载实验程序,可扩展达32k;RAM2(数据存储器6264)8k供用户程序使用,可扩展达32k。
(RAM程序存储器与数据存储器不可同时扩至32k,具体与厂家联系)。
(见图1-1:存储器组织图)。
在程序存储器中,0000H----2FFFH为监控程序存储器区,用户不可用,4000H----5FFFH为用户实验程序存储区,供用户下载实验程序。
数据存储器的范围为:6000H----7FFFH,供用户实验程序使用。
注意:因用户实验程序区位于4000H-----5FFFH,用户在编写实验程序时要注意,程序的起始地址应为4000H,所用的中断入口地址均应在原地址的基础上,加上4000H。
例如:外部中断0的原中断入口为0003H,用户实验程序的外部中断0的中断程序入口为4003H,其他类推,见表1-1。
4)、可提供的对8051的基本实验为了提高微机教学实验质量,提高实验效率,在该系统的实验板上,除微处理器外、程序存储器、数据存储器外,还增加了8255并行接口、8250串行控制器、8279键盘、显示控制器、8253可编程定时器、A/D、D/A转换、单脉冲、各种频率的脉冲发生器、输入、输出电路等模块,各部分电路既相互独立、又可灵活组合,能满足各类学校,不同层次微机实验与培训要求。
可提供的实验如下:(1)、8051P1口输入、输出实验(2)、简单的扩展输入、输出实验(3)、8051定时器/计数器实验(4)、8051外中断实验(5)、8279键盘扫描、LED显示实验(6)、8255并行口输入、输出实验(7)、8253定时器/计数器实验(8)、8259中断实验(9)、串行口通讯实验(10)、ADC0809 A/D转换实验(11)、DAC0832 D/A转换实验(12)、存储器扩展实验(13)、交通灯控制实验FFFFH用户I/O区CFEFH系统I/O区,CFBFH用户I/O区7FFFHRAM2用户实验程序区供用户下载实验程序4FFFHRAM1用户实验程序数据区2FFFHROM系统监控程序区0000H图1:存储器系统组织图中断名称 8051原中断程序入口用户实验程序响应程序入口外中断0 0003H 4003H定时器0中断 000BH 400BH外中断1 0013H 4013H定时器1中断 001BH 401BH串行口中断 0023H 4023H表1-1:用户中断程序入口表5)、资源分配本系统采用可编程逻辑器件(CPLD)EPM7128做地址的编译码工作,可通过芯片的JTAG接口与PC机相连,对芯片进行编程。
单片机中断实现按键一、引言在嵌入式系统中,往往需要通过外部输入设备如按键来与系统进行交互。
为了能够及时响应按键操作,避免忙等的情况发生,通常会使用中断技术来实现按键的检测和处理。
本文将介绍如何使用中断来实现按键检测,并具体以8051单片机作为示例进行说明。
二、中断基础知识在单片机中,中断是一种由硬件触发的特殊事件,当一些中断条件满足时,单片机会暂停当前任务,跳转到中断服务程序中执行对应的处理代码,待中断处理结束后再返回到原来的任务中。
中断的触发方式一般有两种:外部触发中断和内部触发中断。
对于按键这种外部输入设备,一般通过外部触发中断来实现。
三、实现原理1、按键电路:按键通常由一个导电片和两个触点组成,平时靠两个触点之间的弹簧将导电片与触点隔开,当按下按键时,弹簧压缩,导电片与触点接触形成通路。
为了能够检测按键操作,需要将按键引脚连接到单片机的外部中断引脚上。
2、中断设置:在单片机的程序中,需要设置好相应的中断向量表和中断服务程序。
中断向量表是一个存放中断服务程序地址的表格,当中断触发时,单片机会根据中断号从中断向量表中找到相应的中断服务程序地址并跳转到该地址执行对应代码。
3、中断触发条件:在按键电路中,按键的两个触点状态变化(从断开到接通或从接通到断开)时会产生干扰信号,为了避免干扰,通常会使用软件消抖技术。
当按键被按下,并经过一段时间的消抖后,会产生一个稳定的按键信号,此时可以检测到按键变化,并触发相应的中断。
四、实现步骤1、硬件连接:将按键引脚连接到单片机的外部中断引脚上。
2、中断设置:在单片机的程序中,需要设置中断的相关寄存器,包括中断向量表和中断控制寄存器。
中断向量表保存中断服务程序的入口地址,中断控制寄存器用于设置中断触发条件和中断优先级等参数。
3、中断服务程序:编写中断服务程序,在按键中断触发时执行对应的处理代码。
中断服务程序一般需要包括中断触发条件的判断和处理代码的执行。
4、主程序:在主程序中调用中断服务程序,并添加相应的处理代码,实现按键操作的具体功能。
《单片机原理及应用》习题一、填空1、MCS-51单片机访问外部存储器时,利用 ALE 信号锁存来自 P0 口的低8位地址信号。
2、MCS-51系统中,当PSEN 信号有效时,表示从P0口稳定地读入了 低8位地址 。
3、通常单片机上电复位时PC=0000H ,SP= 07H ;而工作寄存器则缺省采用第 00 组,这组寄存器的地址范围是从 00H~07H 开始。
4、MCS-51单片机的存储器从物理结构上可划分 4 个空间,从逻辑上分别可划分 3 个空间。
5、MCS-51单片机8031中有 2 个16位的定时/计数器,可以被设定的工作方式有 4 种。
6、MCS-51有 5 中断源,有 2 中断优先级,优先级由软件填写特殊功能寄存器 加以选择。
7、当/EA 接地时,MCS-51单片机将从_ 外部程序的存储器_____的地址0000H 开始执行程序。
8、中断请求信号有 电平 触发和 边沿 触发两种触发方式。
9、用串行口扩展并行口时,串行接口的工作方式应选为 0 。
10. MCS -51复位后·CPU 从 0000 H 单元开始执行程序。
·SP 的内容为 07 H , 第一个压入堆栈的数据将位于 片内 RAM 的 08 H 单元。
·SBUF 的内容为 不定 。
·ADDC A , #54H 指令执行后 , PSW 寄存器的内容将等于 01 H 。
11. 8051AH·片内设置有4KB 的ROM , 当EA 端保持高电平时 , PC (程序计数器)值超过 OFF H时 , 将自动转向执行外部程序存储器的程序。
·可做通用I/O 的至少有_P1_口的8条I/O 线。
_P0_口作地址/数据总线, 传送地址码的_低_8位 , _P2 口作地址总线 , 传送地址码的高__8位。
12.存储器组织·8051片内RAM 有 128 个字节 , 片外RAM 寻址范围为 64K 个字节。
一、实验目的1. 理解中断和定时器的基本概念及工作原理。
2. 掌握51单片机中断系统和定时器的配置方法。
3. 学会使用中断和定时器实现特定功能,如延时、计数等。
4. 培养动手实践能力和问题解决能力。
二、实验原理中断是计算机系统中的一种机制,允许CPU在执行程序过程中,暂停当前程序,转去执行另一个具有更高优先级的程序。
51单片机具有5个中断源,包括两个外部中断(INT0、INT1)、两个定时器中断(定时器0、定时器1)和一个串行口中断。
定时器是51单片机内部的一种计数器,可以用于产生定时中断或实现定时功能。
51单片机有两个定时器,即定时器0和定时器1。
定时器可以工作在模式0、模式1、模式2和模式3。
三、实验内容及步骤1. 实验内容一:外部中断实验(1)实验目的:掌握外部中断的使用方法,实现按键控制LED灯的亮灭。
(2)实验步骤:- 使用Keil for 8051编译器创建项目。
- 根据电路原理图连接电路。
- 编写程序,配置外部中断,实现按键控制LED灯的亮灭。
2. 实验内容二:定时器中断实验(1)实验目的:掌握定时器中断的使用方法,实现LED灯闪烁。
(2)实验步骤:- 使用Keil for 8051编译器创建项目。
- 根据电路原理图连接电路。
- 编写程序,配置定时器中断,实现LED灯闪烁。
3. 实验内容三:定时器与外部中断结合实验(1)实验目的:掌握定时器与外部中断结合使用的方法,实现按键控制LED灯闪烁频率。
(2)实验步骤:- 使用Keil for 8051编译器创建项目。
- 根据电路原理图连接电路。
- 编写程序,配置定时器中断和外部中断,实现按键控制LED灯闪烁频率。
四、实验结果与分析1. 外部中断实验:成功实现了按键控制LED灯的亮灭。
当按下按键时,LED灯亮;松开按键时,LED灯灭。
2. 定时器中断实验:成功实现了LED灯闪烁。
LED灯每隔一定时间闪烁一次,闪烁频率可调。
3. 定时器与外部中断结合实验:成功实现了按键控制LED灯闪烁频率。
外部中断实验总结一、实验目的本次实验旨在通过外部中断的方式,实现对单片机的中断响应,并掌握中断程序设计方法。
二、实验原理外部中断是指由单片机外部硬件引脚产生的中断信号,当引脚电平发生变化时,单片机会立即停止当前执行的程序,跳转到相应的中断服务程序中执行。
在本次实验中,我们使用了8051单片机的INT0和INT1两个外部中断引脚。
三、实验器材1. 8051单片机开发板2. 电脑(用于编写和下载程序)3. LED灯4. 按钮开关四、实验步骤1. 编写程序:首先需要编写一个可以响应外部中断的程序。
我们可以通过设置相应寄存器来使单片机响应INT0和INT1两个引脚上的信号。
例如,在P3口接入一个按键开关,并将其与INT0引脚相连,则当按键被按下时,INT0引脚会被拉低,从而触发一个外部中断。
此时单片机会跳转到相应的ISR(Interrupt Service Routine)函数中执行。
2. 烧录程序:将编写好的程序烧录到8051芯片上。
这可以通过专门的烧录器或者通过串口下载实现。
在烧录程序之前,需要将引脚连接好,并确定中断触发方式(上升沿触发或下降沿触发)。
3. 测试程序:将LED灯连接到单片机的某个IO口上,以便测试程序是否可以正常响应外部中断。
当按下按钮开关时,LED灯应该会亮起。
五、实验结果通过本次实验,我们成功地实现了对8051单片机的外部中断响应,并掌握了中断程序设计方法。
在实验过程中,我们还学习了如何使用按键开关和LED灯来测试程序的正确性。
六、实验总结本次实验是一项非常基础的单片机实验,但是它对于初学者来说非常重要。
通过这个实验,我们不仅学会了如何编写一个简单的中断服务程序,还学会了如何使用按键开关和LED灯来测试程序的正确性。
这些知识对于今后的单片机编程工作都非常有帮助。
同时,在本次实验中我们也遇到了一些问题,例如引脚连接不正确等等,在解决这些问题的过程中也增加了我们对单片机原理和电路设计方面的认识。
第1篇一、实验目的1. 理解中断的概念和作用。
2. 掌握单片机中断系统的基本原理和配置方法。
3. 学会编写中断服务程序,实现外部中断和定时器中断的应用。
4. 通过实验加深对中断系统在实际应用中的理解。
二、实验原理中断是计算机系统中一种重要的机制,它允许CPU在执行程序过程中,响应某些外部或内部事件,从而暂停当前程序的执行,转而处理这些事件。
单片机的中断系统主要包括外部中断和定时器中断两种类型。
三、实验环境1. 单片机:80C512. 开发环境:Keil for 80513. 仿真软件:Proteus4. 实验电路:外部按钮电路、LED灯电路、定时器电路四、实验内容1. 外部中断实验(1)实验目的:学习外部中断的工作原理,掌握外部中断的配置和编程方法。
(2)实验步骤:a. 创建80C51固件项目,并在Keil中编写程序。
b. 配置外部中断源,设置中断优先级。
c. 编写外部中断服务程序,实现LED灯的闪烁。
d. 在Proteus中搭建实验电路,并进行仿真测试。
(3)实验结果:当按下按钮时,LED灯闪烁,松开按钮后LED灯熄灭。
2. 定时器中断实验(1)实验目的:学习定时器中断的工作原理,掌握定时器中断的配置和编程方法。
(2)实验步骤:a. 创建80C51固件项目,并在Keil中编写程序。
b. 配置定时器工作模式,设置定时时间。
c. 编写定时器中断服务程序,实现LED灯的闪烁。
d. 在Proteus中搭建实验电路,并进行仿真测试。
(3)实验结果:定时器中断触发后,LED灯闪烁,达到设定时间后停止闪烁。
五、实验分析1. 外部中断实验分析通过外部中断实验,我们了解了外部中断的工作原理和配置方法。
在实验中,我们设置了外部中断源,并编写了中断服务程序,实现了LED灯的闪烁。
这表明外部中断可以有效地响应外部事件,并执行相应的操作。
2. 定时器中断实验分析通过定时器中断实验,我们掌握了定时器中断的配置和编程方法。
PSW(P rogram State Word)程序状态字控制寄存器程序状态寄存器PSW是计算机系统的核心部件—控制器的一部分,可位寻址,字节地址为D0H,单元地址是D0H~D7H。
PSW寄存器结构各Bit D7D6D5D4D3D2D1D0 PSW CY AC F0RS1RS0OV USR P 位地址D7H D6H D5H D4H D3H D2H D1H D0H各控制位功能介绍如下:1)CY:进位标志位,作用有两种:(1)算术运算中进位或借位时,CY=1。
(2)作为布尔代数位处理的累加器。
2)AC:辅助进位标志位,算术运算时低半字节有进位或借位时,AC=1。
3)F0:通用标志位4)RS1:寄存器组选择位高位,RS1与RS0选择四组工作寄存器,每组分别为8个寄存器(R0~R7),如RS1=0、RS0=0,则R0~R7对地址为00H~07H,如RS1=0、RS0=1,则R0~R7对地址为08H~0FH,四组寄存器地址从00H~1FH。
5)RS0:寄存器组选择位低位。
6)OV:溢出标志位,当进行正负号数值的加减运算时,如结果超出7位或2的补码(+27至-128)时,OV=17)USR:用户定义标志位,保留。
8)P:奇偶标志位,当累加器中有奇数个1,则P=1;偶数个1,则P=0.在串行传输时可用来检测传送是否有错。
PCON(Power Control Register)寄存器PCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器,在CHMOS型单片机中,除SMOD位外,其他位均为虚设的,SMOD是串行口波特率倍增位,当SMOD=1时,串行口波特率加倍。
系统复位默认为SMOD=0。
单元地址是87H,其结构格式如下:PCON电源管理寄存器结构各Bit D7D6D5D4D3D2D1D0 PCON SMOD------------------GF1GF0PD IDL各控制位功能介绍如下:1)SMOD:该位与串口通信有关。
2.4 实验四外部中断实验2.4.1 实验目的与要求通过本实验加深对8051单片机中断系统的理解,学习外部中断的基本使用方法及相关编程。
要求:①用单次脉冲申请中断,在中断处理程序中使P1.0的输出状态发生反转,并通过发光二极管观察P1.0的电平。
②模拟交通信号灯控制。
2.4.2 8051单片机中断系统简介8051单片机有5个中断源,有两个中断优先级,高优先级的中断源可以中断低优先级的服务程序,反之不行。
当两个同样级别的中断申请同时到来时,则按一个固定的查寻次序来处理中断响应。
8051单片机的5个中断源及其优先级次序如表2-6所示。
表2-6 8051单片机的中断源8051单片机没有专门的开中断和关中断指令,中断的开放和关闭是由特殊功能寄存器IE来实现两级控制的。
所谓两级控制是指在寄存器IE中有一个总允许位EA,当EA=0时,就关闭了所有的中断申请,CPU不响应任何中断申请。
而当EA=1时,对各中断源的申请是否开放,还要看各中断源的中断允许位的状态。
中断允许寄存器IE的地址为A8H,其中各位都可以位寻址,位地址为A8H~AFH。
总允许位EA和各中断源允许位在IE寄存器中的分布如下:D7 D6 D5 D4 D3 D2 D1 D0其中各控制位的含义如下:EA:中断总允许位。
EA=0时,CPU关闭所有的中断申请,只有EA=1时,才能允许各个中断源的中断申请,但还要取决于各中断源中断允许控制位的状态。
ES:串行口中断允许位。
ES=1,串行口开中断,ES=0,串行口关中断。
ET1:定时/计数器T1的溢出中断允许位。
ET1=1允许T1溢出中断,ET1=0则不允许T1溢出中断。
EX1:外部中断1(INT1)的中断允许位。
ET1=1允许外部中断1申请中断,EX1=0则不允许中断。
ET0:定时/计数器T0的溢出中断允许位。
ET0=1允许中断,ET0=0不允许中断。
EX0:外部中断0(INT0)的中断允许位。
EX0=1允许中断,EX0=0不允许中断。
8051单片机在复位时,IE各位的状态都为“0”,所以CPU是处于关中断的状态。
对于串行口来说,其中断请求在被响应之后,CPU不能自动清除中断标志,在这些情况下要注意用指令来实现中断的开放或关闭,以便进行各种中断处理。
8C51单片机的中断优先级控制比较简单,每个中断源的优先级别由特殊功能寄存器IP 来管理。
IP寄存器的地址为B8H,格式如下:其中各位的含义如下:PS:串行口中断优先级控制位。
PT1:定时器/计数器T1中断优级控制位。
PX1:外部中断INT1中断优先级控制位。
PT0:定时器/计数器T0中断优先级控制位。
PX0:外部中断INT0中断优先级控制位。
IP寄存器中若某一个控制位置“1”,则相应的中断源就规定为高优先级中断,反之,若某一个控制位置“0”,则相应的中断源就规定为低优先级中断。
IP寄存器的地址为B8H,其中各控制位也是可以位寻址的,位地址为B8H-BCH。
外部中断触发方式通过特殊功能寄存器TCON(地址为88H)控制,TCON中各控制位分布如下:D7 D6 D5 D4 D3 D2 D1 D0其中各控制位的含义如下:IT0:选择外中断INT0的中断触发方式。
IT0=0为电平触发方式,低电平有效。
IT0=1为负边沿触发方式,INT0脚上的负跳变有效。
IT0的状态可以用指令来置“1”或清“0”。
IE0:外中断INT0的中断申请标志。
当检测到INT0上存在有效中断申请时,由硬件使IE0置位。
当CPU转向中断服务程序时,由硬件清“0”IE0中断申请标志。
IT1:选择外中断INT1的触发方式(功能与TI0类似)。
IE1:外部中断INT1的中断申请标志(功能与IE0 类似)。
TF0:定时/计数器T0溢出中断申请标志。
当T0溢出时,由内部硬件将TF0置“1”,当CPU转向中断服务程序时,由硬件将TF0清“0”,从而清除T0的中断申请标志。
TF1:定时器1溢出中断申请标志(功能与TF0相同)。
可见定时/计数器溢出中断和外部中断的申请标志,在CPU响应中断之后能够自动撤除。
8051单片机在接收到中断源发来的中断申请以后,先把这些申请锁定在各自的中断标志位中,然后在下一个机器周期按表2-5规定的内部优先顺序和中断优先级分别来查询这些标志,并在一个机器周期之内完成检测和优先排队。
响应中断的条件有三个:(1)必须没有同级或更高级别的中断正在得到响应,如果有的话,则必须等CPU为它们服务完毕,返回主程序并执行一条指令之后才能响应新的中断申请。
(2)必须要等当前正在执行的指令执行完毕以后,CPU才能响应新的中断申请。
(3)若正在执行的指令是RETI(中断返回)或是任何访问IE寄存器或IP寄存器的指令,则必须要在执行完该指令以及紧随其后的另外一条指令之后才可以响应新的中断申请。
CPU响应中断后将自动跳转到中断源的入口地址开始执行程序,每个中断源都有其固定的入口地址,它们的处理过程也有所区别。
一般情况下,中断处理包括两个部分:一是保护现场,二是为中断服务。
所谓保护现场就是将需要在中断服程序中使用而又不希望破坏其中原来内容的工作寄存器压入堆栈中保护起来,等中断服务完成后再从堆栈中弹出以恢复原来的内容。
通常需要保护的寄存器有PSW、A以及其他工作寄存器。
在编写中断服务程序时,要注意以下几点:(1)各中断源的入口地址之间仅相隔8个单元,如果中断服务程序的长度超过8个地址单元时,应在中断入口地址处安排一条转移指令,转到其他有足够空余存储器单元的地址空间。
(2)若在执行当前中断服务程序时需要禁止更高级中断源,则要用软件指令关闭中断,在中断返回之前再开放中断。
(3)在保护和恢复现场时,为了不使现场信息受到破坏或造成混乱,保护现场之前应关中断,若需要允许高级中断,则应在保护现场之后再开中断。
同样在恢复现场之前也应先关中断,恢复现场之后再开中断。
(4)及时清除那些不能被硬件自动清“0”的中断请求标志,以免产生错误的中断。
4.4.3 实验内容1 采用外部中断INT0触发P1.0的输出状态反转在实验系统上如图2.28和表2-7所示连线。
P1.0接LED灯, INTO(P3.2)端接单脉冲发生器。
执行如下程序,每按一次单脉冲按钮,注意观察LED的状态。
本例中断服务程序长度仅7个字节,可以直接从入口地址开始编写,如果中断服务程序较长,则应在中断入口放一条长转移指令,跳转到真正的服务程序地址。
图2.28实验程序清单如下。
ORG 0000H ;复位入口LJMP STARTORG 0003H ;外部中断INT0入口INT0: ;INT0中断服务程序PUSH PSW ;保护现场CPL P1.0 ;取反P1.0POP PSW ;恢复现场START:CLR P1.0MOV TCON, #01H ;外部中断INT0, 下降沿触发MOV IE, #81H ;开中断LJMP $END2 采用外部中断模拟交通信号灯控制本实验模拟交通信号灯控制,一般情况下正常显示,有急救车到达时,两个方向交通信号灯全红,以便让急救车通过。
设急救车通过路口时间为10秒,急救车通过后,交通恢复正常,采用单脉冲申请外部中断,表示有急救车通过。
在实验系统上如表2-8所示连线,P1.0~P1.5接LED灯, INTO(P3.2)端接单脉冲发生器。
执行如下程序,每按一次单脉冲按钮,注意观察LED的状态。
实验程序清单如下。
FLASH EQU 0 ;LED状态STOP EQU 1SR EQU P1.0 ;南北红灯SY EQU P1.1 ;南北黄灯SG EQU P1.2 ;南北绿灯ER EQU P1.3 ;东西红灯EY EQU P1.4 ;东西黄灯EG EQU P1.5 ;东西绿灯ORG 0000H ;复位入口LJMP STARTORG 0003H ;外部中断INT0入口SETB STOP ;南北, 东西均红灯RETISTART: MOV SP, #70MOV IE, #81H ;开中断SETB SR ;南北, 东西均红灯CLR SYCLR SGSETB ERCLR EYCLR EGCLR STOPLOOP: JB STOP, ALLREDSETB SR ;南北红灯, 东西绿灯 CLR SYCLR SGCLR ERCLR EYSETB EGMOV A, #20CALL DELAYJB STOP, ALLREDSETB SR ;南北红灯, 东西黄灯闪 CLR SYCLR SGCLR ERCLR EYCLR EGCLR FLASHMOV R7, #9LOOP1: MOV C, FLASHMOV EY, CMOV A, #1CALL DELAYCPL FLASHDJNZ R7, LOOP1JB STOP, ALLREDCLR SR ;南北绿灯, 东西红灯 CLR SYSETB SGSETB ERCLR EYCLR EGMOV A, #20CALL DELAYCLR SR ;东西红灯, 南北黄灯闪 CLR SYCLR SGSETB ERCLR EYCLR EGCLR FLASHMOV R7, #9LOOP2: MOV C, FLASHMOV SY, CMOV A, #1CALL DELAYCPL FLASHDJNZ R7, LOOP2LJMP LOOPALLRED:SETB SRCLR SYCLR SGSETB ERCLR EYCLR EGCLR STOPMOV A, #10CALL DELAYDELAY: MOV R1, #80H ; 延时子程序 MOV R0, #0DELAYLOOP:JB STOP, EXITDELAYDJNZ R0, DELAYLOOPDJNZ R1, DELAYLOOPDJNZ ACC, DELAYEXITDELAY:RETEND。