基于51单片机的外部中断实例

合集下载

用51单片机的外部中断来测频率

用51单片机的外部中断来测频率
+ (unsigned long)ov_counter * 0x10000 / 500; //计算脉冲宽度
}
}
void main(void)
{
TCCR1B=0x42; //初始化T/C1,1/8分频,上升沿触发捕捉
TIMSK=0x24; //允许T/C1溢出和捕捉中断
表5-1 T/C0计时精度和时宽(系统时钟4MHz)
分频系数 计时频率 最高计时精度(TCNT0=255) 最宽时宽(TCNT0=0)
1 4MHz 0.25us 64us
8 500KHz 2us 512us
unsigned int dis[6];
uchar con[]={0xfe,0xfd,0xfb,0xf7,0xef}; //共阳型数码管控制端
init();
delay(uvoid main()
{guandz();
uchar counter1;
sbit duan=P2^6; //74HC573的LE端 U5 LED的段选端
sbit wei=P2^7; //74HC573的LE端 U4 LED的位选端
unsigned int counter2,tmp;
uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; // 共阳型数码管0—9显示
}
else
display();
}
/计数器(Timer/counter)是单片机芯片中最基本的外围接口,它的用途非常广泛,常用于测量时间、速度、频率、脉宽、提供定时脉冲信号等。相对于一般8位单片机而言,AVR不仅配备了更多的定时/计数器接口,而且还是增强型的,功能非常强大。ATmega128一共配置了2个8位和2个16位,共4个定时/计数器,本小节重点对它的一些增强功能的应用做基本的介绍。

51单片机培训—C语言版外部中断

51单片机培训—C语言版外部中断

完 处理 引 P3.2 中 脚的 , 断了 主 我回 了 程序
P3.2脚信号引 发的中断程序
取反P0.7
取反P0.7,改变P0.7引脚上接的LED小灯亮灭状 态,实现LED小灯闪烁
中断程序返回
执行RETI从P3.2引脚中断服务子程序中返回主程序
程序清单
• 汇编语言程序

ORG 0000H • SJMP START • ORG 0003H • AJMP INTERRUPT0 • ORG 0030H ;---------------------------初始化---------------------START:MOV SP, #60H • MOV P0, #0FFH • CLR IT0 • SETB EX0 • SETB EA ;---------------------------主程序---------------------MAIN:SJMP MAIN ;-------------------中断子程序-----------------------INTERRUPT0:CPL P0.7 • RETI • END
EA 空 ET2 ES ET1 EX1 ET0 EX0
使能外部中断0(P3.2)
使能外部中断1(P3.3)
中断总使能
• • •
例如:想使用中断0(P3.2引脚输入的中断信号) MOV IE , #10000001B 或SETB EX0 IE=0X81; EX0=1;

SETB EA
EA=1;
TMOD的设置
查询法程序清单
• • • • • • • • • • • • • • • •

#include<reg51.h> void main() { TMOD=0X1; TH0=0X4C; TL0=0X0; TR0=1; while(1) { if(TF0==1) { P0=~P0; TF0=0; } } }

单片机外部中断实验

单片机外部中断实验

外部中断实验一、实验目的1.掌握外部中断技术的基本使用方法2.掌握中断处理程序的编写方法二、实验原理1.外部中断的初始化设置的三项内容:中断总允许即EA=1,外部中断允许即EXi=1(i=0或1),中断方式设置。

中断方式设置一般有两种方式:电平方式和脉冲方式.2.中断服务的关键:(1)保护进入中断时的状态。

堆栈有保护断点和保护现场的功能使用PUSH,在转中断服务程序之前把单片机中有关寄存单元的内容保护起来。

注:中断程序自动保护PC,对其做入栈操作(2)用POP指令恢复中断时的现场。

(先进后出)3.中断控制原理:中断控制是提供给用户使用的中断控制手段。

实际上就是控制一些寄存器,51系列用于此目的的控制寄存器有四个:TCON 、IE 、SCON 及IP。

TF1TR1TF0TR0IE1IT1IE0IT0TCON格式(中断控制字)TF1、TF0:定时器/计数器T的溢出中断请求标志位;TR1、TR0:计数器控制位TR1(TR0)=1启动定时器TR1(TR0)=0停止计数器IE1:外部中断请求1标志位;IT1:选择外部请求1;IE0:外部中断请求0标志位;IT0:IT0=0为低电平触发IT0=1为负跳变有效;复位后TCON被清零,中断请求被禁止。

SCON格式(触发方式中断控制字)TI:串行口的发送中断请求标志位。

发送1帧串行数据后,硬件自动为TI置1。

注:CPU不会为T1清零,需要在中断程序中用软件为TI清零RI:串行口接受中断请求标志位。

接收完1帧串行数据后,硬件自动为RI置1。

注:CPU不会为R1清零,需要在中断程序中用软件为RI清零三、实验内容参考实验程序(主程序为P1口输出跑马灯程序),编写中断子程序使得发生外部中断0,且为下降沿触发时,LED灯全亮。

中断结束后LED 继续接上次状态进行跑马灯闪烁。

注:注意保护现场。

且编译器不支持工作组寄存器名(R0-R7)入栈,需要对栈地址操作。

例:PUSH 06H (累加器支持左移右移不支持压栈出栈; 工作组寄存器不支持左移右移支持压栈出栈);把R6入栈 等同 PHSHU R6四、实验步骤1.使用单片机最小应用系统1模块,P1接发光二极管,INTO接单次脉冲输出端。

51单片机中断系统及应用

51单片机中断系统及应用
恢复现场的指令有POP。
(4)中断返回 中断服务程序返回指令必须是RETI。CPU 执行RETI时自动从SP中取回断点地址,继续执行主程序。
上一页 下一页
【例4-2】某中断系统使用作外部中断控制端,低电平触 发方式,设中断服务子程序名为EXINT0 ,试写出其初始化 程序。
ORG 0000H LJMP MAIN ORG 0003H LJMP EXINT0 ORG 0100H MAIN: …… CLR IT0 SETB EX0 SETB EA …… EXINT0:…… RETI …… END
上一页 下一页
1. 5个中断源
4.T1:定时器T1溢出中断请求。当T1工作在计数状态 时,计数脉冲从P3.5脚输入。当定时器T1产生溢出时, 定时器T1中断请求标志位(TCON.7)置位(由硬件自 动执行),请求中断处理。 5.RX/TX:串行中断请求。当接收或发送完一串行帧 时,内部串行口中断请求标志位RI(SCON.0)或TI (SCON.1)置位(由硬件自动执行),请求中断。串行 口应用时,一般是RX、TX同时使用,相互配合完成串 行数据传输工作。
中断计数流水灯电路
【项目任务】 本项目采用外部中断方式实现 0~9 循环计数和流
水灯控制电路。在单片机 I/O 口连接一个按键,当开关 断开时,单片机电路进行循环计数;当开关按下时,计 数停止,单片机控制流水灯点亮。当流水灯点亮两轮后, 计数按照中断时的计数值继续计数。
通过本项目设计制作,熟悉单片机中断的基本概念, 掌握MCS-51单片机中断系统的硬件结构、外部中断 的基本原理和应用。
平维持时间过长时,一个中断申请会引发多个中断,因此 必须采用措施撤消中断申请。
2. 第二级开关——中断允许和开放中断开关 五个中断源各有一个开关进行控制,通过软件对IE的

51单片机中断系统程序实例

51单片机中断系统程序实例

51单片机中断系统程序实例(STC89C52RC)51单片机有了中断,在程序设计中就可以做到,在做某件事的过程中,停下来先去响应中断,做别的事情,做好别的事情再继续原来的事情。

中断优先级是可以给要做的事情排序。

单片机的学习不难,只要掌握学习方法,学起来并不难。

什么是好的学习方法呢,一定要掌握二个要点:1. 要知道寄存器的英文全拼,比如IE = interrupt中断不知道全拼,要去猜,去查。

这样就可以理解为什么是这个名称,理解了以后就不用记忆了。

2. 每个知识点要有形像的出处比如看到TF0,脑子里马上要形像地定位到TCON寄存器的某位看到ET0, 马上要形像地定位到IE寄存器的第2位/tuenhai/独家揭秘:形像是记忆的最大技巧。

当人眼看到某个图时,是把视觉信号转化成电信号,再转化成人能理解的形像。

当我们回忆形像时,就是在重新检索原先那个视觉信号,并放大。

在学习过程中,不断练习检索、放大信号,我们的学习能力就会越来越强。

写程序代码时,也要把尽量把每行代码形像化。

51单片机内中断源8051有五个中断源,有两个优先级。

与中断系统有关的特殊功能寄存器有IE(中断允许寄存器)、IP(中断优先级控制寄存器)、中断源控制寄存器(如TCON、SCON的有关位)。

51单片机的中断系统结构如下图(注意,IF0应为TF0):8052有6个中断源,它比8051多一个定时器/计数器T2中断源。

8051五个中断源分别是:(1)51单片机外部中断源8051有两个外部中断源,分别是INT0和INT1,分别从P3.2和P3.3两个引脚引入中断请求信号,两个中断源的中断触发允许由TCON的低4位控制,TCON的高4位控制运行和溢出标志。

INT0也就是Interrupt 0。

在这里应该看一下你的51单片机开发板的电路原理图。

离开形像的记忆是没有意义的。

读到上面这句,你应该回忆起原理图上的连接。

任何记忆都转化为形像,这是学习的根本原理,我们通过学习单片机要学会这种学习方法,会让你一辈子受益无穷。

51单片机外部中断详解-(最新版)

51单片机外部中断详解-(最新版)

一.外部中断相关寄存器1.定时器/计数器控制寄存器控制寄存器(TCON)IT0:外部中断0触发方式控制位当IT0=0时,为电平触发方式(低电平有效)当IT0=1时,为边沿触发方式(下降沿有效)IT1:外部中断1触发方式控制位当IT1=0时,为电平触发方式(低电平有效)当IT1=1时,为边沿触发方式(下降沿有效)2.中断允许控制寄存器(IE)EX0:外部中断0允许位;EX1:外部中断1允许位;EA :CPU中断允许(总允许)位。

二.外部中断的处理过程1、设置中断触发方式,即IT0=1或0,IT1=1或02、开对应的外部中断,即EX0=1或EX1=1;3、开总中断,即EA=1;4、等待外部设备产生中断请求,即通过,口连接外部设备产生中断5、中断响应,执行中断服务函数三.程序编写要求:通过两位按键连接外部中断0和1,设定外部中断0为下降沿触发方式,外部中断1为低电平触发方式,按键产生中断使数字加减,用一位共阳极数码管来显示数值。

目的:感受外部中断对程序的影响,体会低电平触发和下降沿触发的区别。

#include<>#define uint unsigned int #define uchar unsigned char uchar code dat[] ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};uint num;void main(){EA=1; //开总中断IT0=1; //下降沿触发IT1=0; //低电平触发EX0=1; //外部中断0允许EX1=1; //外部中断1允许while(1){P0=dat[num%10];}}void plus() interrupt 0//外部中断0 {EX0=0;num++;EX0=1;}void minus() interrupt 2//外部中断1{EX1=0;num--;EX1=1;}。

51单片机外部中断实验

51单片机外部中断实验

实验6 外部中断实验(仿真部分)一、实验目的1. 学习外部中断技术的基本使用方法。

2. 学习中断处理程序的编程方法。

二、实验内容在INT0和INT1上分别接了两个可回复式按钮,其中INT0上的按钮每按下一次则计数加一,其中INT1上的按钮每按下一次则计数减一。

P1.0~ P1.3接LED灯,以显示计数信号。

三、实验说明编写中断处理程序需要注意的问题是:1.保护进入中断时的状态,并在退出中断之前恢复进入时的状态。

2.必须在中断处理程序中设定是否允许中断重入,即设置EX0位。

3.INT0和INT1分别接单次脉冲发生器。

P1.0~ P1.3接LED灯,以查看计数信号.四、硬件设计利用以下元件:AT89C51、BOTTON、CAP、CAP-POL、CRYSTAL、RES、NOT、LED-Yellow。

设计出如下的硬件电路。

晶振频率为12MHz。

五、参考程序框图开始设置有关中断控制寄存器开外中断INT0、INT1 设置P1.0~ 3初始状态显示循环等待中断INT0中断入口计数加一保护现场恢复现场中断返回主程序框图INT0中断处理程序框图实验6 外部中断实验(实验箱部分)1.实验目的认识中断的基本概念学会外部中断的基本用法学会asm和C51的中断编程方法2.实验原理图按键中断【硬件接法】P1.1控制LED,低电平点亮P3.3/INT1接按键,按下时产生低电平【运行效果】程序工作于中断方式,按下按键K2后,LED点亮,1.5秒后自动熄灭。

8051单片机有/INT0和/INT1两条外部中断请求输入线,用于输入两个外部中断源的中断请求信号,并允许外部中断源以低电平或下降沿触发方式来输入中断请求信号。

/INT0和/INT1中断的入口地址分别是0003H和0013H。

TCON寄存器(SFR地址:88H)中的IT0和IT1位分别决定/INT0和/INT1的触发方式,置位时为下降沿触发,清零时为低电平触发。

实际应用时,如果外部的中断请求信号在产生后能够在较短时间内自动撤销,则可以选择低电平触发。

实验二 51单片机外部中断实验报告

实验二 51单片机外部中断实验报告

实验二外部中断实验实验报告
一、实验内容
单片机外部中断0(P3.2)已与独立式键盘中KEY0连接,外部中断1(P3.3)已与KEY1连接,要求在无外部中断时最上面一位发光二极管(LED10)点亮。

请编程实现:当KEY0按下,外部中断0请求中断,控制发光二极管从上到下循环点亮3圈;当KEY1按下,外部中断1请求中断,控制发光二极管闪烁3次。

(要求外部中断1优先级高于外部中断0,即KEY1按下后能够打断流水灯的动作,当外中断1处理完后,恢复外中断0的处理,并且能从上次打断的那个LED开始循环)。

单片机与发光二极管的连接如图2-1所示,独立式键盘原理图如图2-2所示。

图2-1 单片机与发光二极管的连接原理图
2-2 独立式键盘原理图
三、硬件电路分析
1、阅读电路2-1简要分析如何使发光二极管点亮?
当LEDS0 为高电平时,三极管Q6导通,发光二极管的阳极为高电平,此时,当给发光二极管的阴极为低电平时,发光二极管两端存在电位差,发光二极管导通,则发光二极管点亮。

2、简要画出独立式按键电路(一个键),并分析其如何工作?
如图所示,当按键按下时,单片机IO处会由高电平变为低电平,单片机IO口在经过消抖处理之后仍然检测为低电平,则表明按键被按下。

四、程序设计
画出主程序流程图:
画出外部中断0流程图;
五、思考题
六、收获和体会。

51单片机中断程序例子

51单片机中断程序例子

51单片机中断程序例子1. 外部中断程序:外部中断是指由外部设备或外部信号触发的中断。

在51单片机中,通过设置中断允许位和中断优先级来实现对外部中断的响应。

例如,当外部设备发出一个信号时,单片机可以立即停止当前任务,转而执行外部中断程序。

外部中断程序的编写需要根据具体的外部设备和信号进行相应的处理,如读取设备状态、处理数据等。

通过外部中断程序,可以实现单片机与外部设备的互动和数据交换。

2. 定时器中断程序:定时器中断是指通过设置定时器的计数值和中断允许位,使得在指定的时间间隔内触发中断。

在51单片机中,可以通过定时器中断来实现定时任务的执行。

例如,可以设置一个定时器,在每隔一定的时间就触发中断,然后在中断程序中执行相应的任务,如数据采集、数据处理等。

通过定时器中断程序,可以实现定时任务的自动执行,提高系统的实时性和可靠性。

3.串口中断程序:串口中断是指通过串口通信接口接收或发送数据时触发的中断。

在51单片机中,可以通过设置串口中断允许位和中断优先级来实现对串口数据的中断处理。

例如,当接收到一个完整的数据包时,单片机可以立即停止当前任务,转而执行串口中断程序,对接收到的数据进行处理。

通过串口中断程序,可以实现单片机与外部设备的数据交换和通信。

4. ADC中断程序:ADC(模数转换器)中断是指在进行模数转换时触发的中断。

在51单片机中,可以通过设置ADC中断允许位和中断优先级来实现对模数转换结果的中断处理。

例如,当模数转换完成后,单片机可以立即停止当前任务,转而执行ADC中断程序,对转换结果进行处理和分析。

通过ADC中断程序,可以实现对模拟信号的采集和处理,用于实时监测和控制。

5. 外部中断优先级设置:在51单片机中,可以通过设置外部中断的中断优先级来确定中断的响应顺序。

中断优先级越高,优先级越高的中断会先被响应。

通过合理设置中断优先级,可以确保关键任务的及时响应和执行。

例如,当多个外部设备同时发出中断信号时,可以通过设置优先级,确保先响应优先级高的设备,保证系统的正常运行。

实验四 80C51单片机外中断实验

实验四 80C51单片机外中断实验

实验四80C51单片机外中断实验一实验目的:了解8051系列单片机的外中断基本工作原理。

掌握8051系列单片机外中断的用法。

二实验原理:中断是在执行正常程序的过程中转去执行临时的任务,此时CPU必须暂停现行的程序而转去处理更加紧急的事件,在处理完毕之后方可返回执行原来的程序。

在8051的中断里面,要涉及到一系列的诸如保护现场,中断响应,现场恢复,中断嵌套以及优先级等问题。

8051有5个中断源,它们分别是两个外部中断请求INT0(P3.2)和INT1(P3.3)、两个片内定时器/计数器溢出中断TF0和TF1,一个片内串行口中断请求TI或RI,这几个中断源由TCON和SCON两个特殊功能寄存器进行控制(如图4-1所示):表4-1TI是8051串行口的发送中断标志。

当串行口发送完一帧数据后请求中断由硬件置位,而清零必须由软件来完成。

RI是串行口接收中断标志。

当串行口接收完一帧数据后请求中断由硬件置位,也是由软件来清零。

8051的对中断的开放和屏蔽是由中断允许寄存器IE控制来实现的,IE的结构格式如图4-2所示。

其中任何一个位置一就是将相应的中断源打开,反之,为0则关闭。

这里EA为CPU的中断控制位,在使用任何一个中断源之前都必须将CPU的中断置1。

表4-28051有两个中断优先级,即高优先级和低优先级。

每个中断源都可设置为高或低中断优先级。

所以中断嵌套有两级,嵌套原则为:正在执行的中断服务程序可以被更高级的中断请求打断,但不能被同一级别或是更低级的中断请求中断。

两级中断通过中断优先级寄存器IP来设置。

IP的格式如图4-3所示,字节地址是B8H。

表4-38051CPU在每一个机器周期顺序检查每一个中断源,在机器周期的S6按优先级处理所有被激活的中断请求。

中断响应的主要内容就是由硬件自动形成转向与该中断源对应的服务程序入口地址。

这些中断源的服务程序入口地址如图4-4所示。

这里要注意的是,在中断服务子程序中,关键字interrupt后面的KeilC中断编号一定要正确。

第6章 51单片机的中断系统和外部中断

第6章 51单片机的中断系统和外部中断
L1 D6 D5 D4 D3 D2 D1 D0
C1 C2 R1
U1
30pF 19
R2
P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17 100
P1.0/T2 P1.1/T2EX P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 AT89C52
SW1
SW-SPST
SW2
SW-SPST
6.5 51单片机外部中断应用实例
6.5.2 低电平中断的应用
3、实例的应用代码
51单片机使用两个外部中断服务子程序来对外部中断0和外部中断1的 进行处理,在中断服务子程序中只做一件事情,就是控制对应的LED 翻转。
6.3 51单片机的中断服务子程序设计
中断服务函数需要使用关键字interrupt来进行定义,interrupt后面的参数 0~4表明了中断源,在实际使用中常常使用using来定义在中断服务函数中使 用的寄存器组,其参数可以为0~3,分别对应通用工作寄存器组0~组3, 可以减少压入堆栈的变量内容,从而简化中断服务函数的内容,以加快程序 执行的速度。 标准结构:void 函数名(void) interrupt 中断标号 using 寄存器编号 { 中断函数代码; } 51单片机中断源对应的中断标号按照内部优先级从高到低的顺序分配为 0~5,外部中断0对应的中断号是0,定时/计数器T2对应的中断号是5 。
第六章 51单片机的中断系统和外部中 断
6.1 51单片机的中断系统

51单片机的外部中断实验设计

51单片机的外部中断实验设计
51单片机的外部中断实验设计
51单片机的外设究竟该怎样理解?做以下实验。
实验1:外部中断0的实验地
实验程序:
#include
sbitled=P1;
voidmian(void)
{while(1){
if(IE0){
led=0;
}
else{
led=1;
}
}
}
实验结果:当杜邦线另一端接电源时,led灭;当接地时,led就亮
结论:无论配置与否,51单片机的外部中断这个外设都在工作着,不可
能禁止
实验2:定时器0的实验
实验程序:
#include
sbitled=P1;
voidmain(void)
{
TR0=1;
while(1){
if(TF0==1){
led=0;
}
}
}
实验结果:观察到led被点亮
结论:51单片机CPU控制定时/计数器0就靠的是TR0,当TR0为1
时,工作;为0时,停止。
当溢出时,就置TF0为1;反之,就为0。
外设就是CPU之外的一种设备,它帮助CPU充分实现它的功能。

浅谈51单片机2个外部中断的应用案例

浅谈51单片机2个外部中断的应用案例

浅谈51单片机2个外部中断的应用案例51单片机是一种常见的微控制器,具有丰富的外部中断功能。

在本文中,将浅谈51单片机中两个外部中断的应用案例,旨在帮助读者更好地理解和应用该功能。

外部中断是指通过外部信号触发单片机的中断执行程序。

51单片机具有2个外部中断引脚,分别是INT0和INT1,它们可以用于各种不同的应用。

下面将介绍两个典型的外部中断的应用案例。

1.停车场车位计数器停车场车位计数器可以利用51单片机的外部中断功能来实现。

假设停车场有3个车位,当车辆入场时,外部中断INT0触发,计数器加1;当车辆出场时,外部中断INT1触发,计数器减1、通过读取计数器的值,可以实时查看停车场内的剩余车位。

具体实现的步骤如下:1)初始化外部中断INT0和INT1,设置为下降沿触发。

2)将车位计数器初始化为0。

3)当接收到INT0中断信号时,车位计数器加14)当接收到INT1中断信号时,车位计数器减15)在主循环中,可以通过查询车位计数器的值来实时显示剩余车位数。

这个应用案例使得车辆管理变得更加智能化和便捷,方便停车场管理员实时了解停车位的使用情况。

2.控制智能家居设备智能家居设备的控制可以利用51单片机的外部中断功能来实现。

例如,当外部中断INT0触发时,可以控制家居设备的开关状态,比如打开或关闭灯光、电器等。

具体实现的步骤如下:1)初始化外部中断INT0,设置为下降沿触发。

2)在INT0中断服务程序中,判断当前设备的开关状态。

如果是关闭状态,则打开设备;如果是打开状态,则关闭设备。

3)在主循环中,可以通过查询当前设备的开关状态来实时显示设备状态。

这个应用案例使得智能家居设备的控制更加智能化和灵活,用户可以通过触发外部中断来实现对设备的远程控制。

总结:以上是两个常见的51单片机外部中断的应用案例。

通过合理应用外部中断功能,能够实现更多智能化、便捷化的功能,提高系统的可靠性和实用性。

希望本文能够对读者有所帮助,并激发更多的创意和思考。

51单片机外部中断INT0实例(汇编程序)

51单片机外部中断INT0实例(汇编程序)

51单⽚机外部中断INT0实例(汇编程序);普中51开发板;单⽚机的P3.2(INT0)引脚与按键K3脚连接;⽤汇编语⾔实现:按⼀次K1外部中断INT0响应⼀次,LED显⽰值加1(⼗进制),;前提是共阴数码LED第⼀位,需要设定,由P0⼝控制。

ORG 0000HLJMP STARTORG 0003HLJMP INTT0ORG 0600HSTART: SETB EASETB EX0 ; 打开外部中断0SETB IT0 ; 跳变沿出发⽅式(下降沿)这个⽅法⽐较稳定;CLR IT0 ; 令中断0为电平触发,这个⽅式需要有延时程序,;否则,单⽚机处理速度快,按⼀下按键,;已经处理了很多个低电平中断了。

CLR P2.2 ;段位选择第⼀位CLR P2.3CLR P2.4CLR1: MOV R0,#00HDISPLAY: MOV DPTR,#TAB ;给字形表的初地址MOV A,R0 ;将要显⽰的数给A;/////////////////////////MOV B, A ;save a valueCLR CSUBB A, #10H ;如果已计数到15,说明⼀次循环结束MOV A, B ;load a valueJNC CLR1 ;C=1,重新开始,R0=00H,若等于0,回displayMOVC A,@A+DPTR ;在字形表中取数放到AMOV P0,A ;假设是P0⼝输出要显⽰的数据把A放到P0中SJMP DISPLAY ;循环显⽰等待中断INTT0: INC R0 ;中断中有按键着加1RETITAB: DB 3FH,06H,5BH,4FH,66H ;字形表0-15DB 6DH,7DH,07H,7FH,6FHDB 77H,7CH,39H,5EH,79H,71HEND。

单片机原理 中断实验-单片机原理-实验报告

单片机原理 中断实验-单片机原理-实验报告

宁德师范学院计算机系实验报告(2014—2015学年第2学期)课程名称单片机原理实验名称中断实验专业计算机科学与技术(非师)年级12级学号B********** 姓名王秋指导教师杨烈君实验日期2015.5.21实验步骤、实验结果及分析:1、使用Proteus ISIS 7 Professional应用程序,建立一个.DSN文件2、在“库”下拉菜单中,选中“拾取元件”(快捷键P),分别选择以下元件:AT89C51、LED-YELLOW、BUTTON、7SEG-MPX8-CA-BLUE、RESPACK-8。

3、构建仿真电路4、创建一个Keil应用程序:新建工程项目文件;为工程选择目标器件(AT89C52);为工程项目创建源程序文件并输入程序代码;保存创建的源程序项目文件;把源程序文件添加到项目中。

5、把程序经过编译后生成的HEX文件添加到仿真电路中的处理器中(编辑元件→文件路径)程序代码:1.实现单按键控制Led灯闪烁#include"reg51.h"#define uchar unsigned charsbit Led1=P1^0; uchar Mode=0;void delay(int x) //定义时间间隔{while(x--);}void button_Cotrol() //根据按键模式执行相应的代码{if(Mode==0)Led1=0;if(Mode==1){Led1=~Led1;delay(1000);}}void int0() interrupt 0 //外中断0的中断编号为0{Mode=(Mode+1)%2; //更改按键模式}void main(){Led1=0; //置初值EA=1; //开放总中断EX0=1; //允许使用外中断0IT0=1; //选择负跳变来触发外中断while(1)button_Cotrol();}图1 单按键控制Led灯闪烁while(1)button_Cotrol();}图2 单按键多功能识别,控制4路Led灯闪烁3.实现0-99的计数器效果,按一下数值加1#include"reg51.h"#define uchar unsigned char#define disp_null 10sbit key=P3^2;uchar code tab[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; //共阳数码管显示0~9的段码表uchar DispBuf[8];uchar sec=0;void delay(int x) //定义时间间隔{while(x--);}void PutTime(){DispBuf[7]=sec%10;while(1){P1=0x00;display();}}图3 0-99的计数器效果,按一下数值加1注:1、报告内的项目或设置,可根据实际情况加以补充和调整2、教师批改学生实验报告应在学生提交实验报告10日内。

基于51单片机的外部中断实例

基于51单片机的外部中断实例

51单片机一般有两个外部中断输入端,并允许外部中断源以低电平或负边沿两种触发方式输入中断请求信号。

本例就是利用一只按钮,在按下时产生的负边沿触发外部中断。

1 硬件设计将一只按钮接在外部中断输入0(12脚),八支发光二极管分别接在P0.0~P0.7,其电路如下图所示。

⒉软件设计通过按下按钮SW触发外部中断,从而改变发光二极管D1~D8的亮、灭,当第一次按下按钮时,只有D1发光二极管亮;第二次按下按钮时,只有D2发光二极管亮;第三次按下按钮时,只有D3发光二极管亮;……第八次按下按钮时,只有D8发光二极管亮;第九次按下按钮时,D1~D8发光二极管全亮;第十次按下按钮时,D1~D8发光二极管全都不亮;第十一次按下按钮时,只有D1发光二极管亮;按钮SW触发外部中断,从而控制D1~D8亮灭的详细C51程序如下。

/***************外部中断****************/#include <reg51.h>unsigned char count=0; //外部中断计数unsigned char F0=0;main(){F0=0;IE=0X81;//打开外部中断0和总中断使能或者(EX0=1;EA=1)IT0=1; //标志位清零,开中断 ,边沿激活(或者TCON|=0X01)while(1){while(F0==0);switch(count%10){case(0): P0=0XFF;break;case(1): P0=0XFE;break;case(2): P0=0XFD;break;case(3): P0=0XFB;break;case(4): P0=0XF7;break;case(5): P0=0XEF;break;case(6): P0=0XDF;break;case(7): P0=0XBF;break;case(8): P0=0X7F;break; case(9): P0=0X00;break; }F0=0;}}void int_int0() interrupt 0 //外部中断{count++;F0=1;}。

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

51单片机一般有两个外部中断输入端,并允许外部中断源以低电平或负边沿两种触发方式输入中断请求信号。

本例就是利用一只按钮,在按下时产生的负边沿触发外部中断。

1 硬件设计
将一只按钮接在外部中断输入0(12脚),八支发光二极管分别接在P0.0~P0.7,其电路如下图所示。

⒉软件设计
通过按下按钮SW触发外部中断,从而改变发光二极管D1~D8的亮、灭,当第一次按下按钮时,只有D1发光二极管亮;第二次按下按钮时,只有D2发光二极管亮;第三次按下按钮时,只有D3发光二极管亮;……第八次按下按钮时,只有D8发光二极管亮;第九次按下按钮时,D1~D8发光二极管全亮;第十次按下按钮时,D1~D8发光二极管全都不亮;第十一次按下按钮时,只有D1发光二极管亮;
按钮SW触发外部中断,从而控制D1~D8亮灭的详细C51程序如下。

/***************外部中断****************/
#include <reg51.h>
unsigned char count=0; //外部中断计数
unsigned char F0=0;
main(){
F0=0;
IE=0X81;//打开外部中断0和总中断使能或者(EX0=1;EA=1)
IT0=1; //标志位清零,开中断 ,边沿激活(或者TCON|=0X01)
while(1)
{
while(F0==0);
switch(count%10){
case(0): P0=0XFF;break;
case(1): P0=0XFE;break;
case(2): P0=0XFD;break;
case(3): P0=0XFB;break;
case(4): P0=0XF7;break;
case(5): P0=0XEF;break;
case(6): P0=0XDF;break;
case(7): P0=0XBF;break;case(8): P0=0X7F;break; case(9): P0=0X00;break; }
F0=0;
}
}
void int_int0() interrupt 0 //外部中断
{
count++;F0=1;
}。

相关文档
最新文档