请问51单片机按键中断失效。

自己做了块板子,MCU是IAP15F2K61S2,其他的程序烧进去可以跑,但是外部中断0的
按键按上去没有反应,程序上应该没问题,软件仿真可行,并且大部分为源代码,上电后
测试过未按键,引脚的电压是5V,而按键按下别为0V,感觉也没有问题,但为什么程序
不响应?在线求大神解答。

0

6个回答

先下一个基础程序进去看看 确保硬件没有问题 有硬件不建议用仿真 仿真蛮容易忽略很多问题

0

你打开外部中断了没有,还是仔细检查下你的程序,在检查硬件是否能产生中断。

0

使能总中断》使能外部中断》中断函数》清除中断标志,一步都不可以少

0

还是贴一下程序吧 再就是单片机的板子上的电路有没有问题

0

软件检查:中断的各个环节是否都操作正确,如楼上所说,使能总中断--使能外部中断--设置优先级--中断函数--正确返回
硬件检查:在你对基本电平逻辑进行检查的基础上,下载一个单一检测程序,主程序只完成中断相关的初始化工作;中断服务程序做中断响应标识(特征值设置,或者蜂鸣器响一下之类的)

推荐用实际板子做单元调试,别依赖仿真环境。

0

1、中断时电平触发还是沿触发;
2、电平触发需要做中断抑制,否则一直有中断,可能跑死;
3、如果是沿触发,需要看下信号质量是否有台阶回勾;
4、中断是否挂上钩子了。

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
51单片机按键中断
51单片机按键中断代码,初始化:边沿触发方式下降沿,打开总的中断。
C51单片机——多个按键中断控制实现
C51单片机——多个按键中断控制实现 1.实现代码 /* * 2018-10-22 */ #include<STC15F2K60S2.h> #define uchar unsigned char #define uint unsigned int sbit KEY_1 = P3^2; sbit KEY_2 = P3^3; sbit KEY_3 = P1^7; sbit led_sel...
51单片机自学--外部中断0与按钮消抖效果及4个按钮共有消抖(二例)
/************************************************************************************** * 外部中断0与按钮消抖实验 * 实现现象:下载程序后按下s4按键可以对流水灯逐个点亮,观察按钮消抖效果。 注意事项:电路板上按钮及LED灯接法区别。...
单片机学习(五)利用中断按键计数(key)
概述 编辑 定时器中断是由单片机中的定时器溢出而申请的中断。 51单片机中有两个定时器T0和T1: TF0:定时器T0溢出中断请求。当定时器TO产生溢出时,TO中断请求标志TF0置1,请求中断处理。 TF1:定时器T1溢出中断请求。当定时器Tl产生溢出时,T1中断请求标志TF1置1,请求中断处理。 Stm32共有11个定时器: 1.两个高级定时器:TIM1、TIM8---------...
51单片机外部中断INT0实例(汇编程序)
;普中51开发板 ;单片机的P3.2(INT0)引脚与按键K3脚连接 ;用汇编语言实现:按一次K1外部中断INT0响应一次,LED显示值加1(十进制), ;前提是共阴数码LED第一位,需要设定,由P0口控制。 ORG 0000H LJMP START ORG 0003H LJMP INTT0 ORG 0600H START: SETB EA SETB EX0 ; 打开外...
51单片机外部中断的C51编程
51单片机外部中断的C51编程 相关知识: 1、51单片机的5大中断源:串行口中断、定时中断1、外部中断1、定时中断0、外部中断0; 2、中断源的编号: 串行口中断为4、定时中断1为3、外部中断1为2、定时中断0为1、外部中断0为0; 3、中断源的优先级:按以上顺序排列,串行口中断最低、外部中断0最高; 4、使用外部中断0和1,必须TCON寄存器设置其触发方式是低电平
51单片机自学--完美的单击、双击、长按、中断消抖
完整的单击、双击、长按代码。 工作原理:当有按钮第一次按下时,设置第一个标志An,当按钮第一次释放后,进入中断消抖延时计数,假如在计数范围内第二次按钮按下,设置第二标志Aa,这样就把单击和双击区分开,而且是可靠的逻辑标志,长按为大于1秒的判断. 中断消抖及按钮单击、双击、长按处理,双击在仿真中稳稳地检测到执行。 之前发布的矩阵按键也一样可以采用中断延时,不过时间应该更短,如50-100毫...
51单片机程序 时钟及按键中断
51单片机程序 实现时钟及按键中断的功能,通过protues仿真没问题的
51单片机中断详解(中)
一.外部中断相关寄存器1.定时器/计数器控制寄存器控制寄存器(TCON) IT0:外部中断0触发方式控制位 当IT0=0时,为电平触发方式(低电平有效) 当IT0=1时,为边沿触发方式(下降沿有效) IT1:外部中断1触发方式控制位 当IT1=0时,为电平触发方式(低电平有效) 当IT1=1时,为边沿触发方式(下降沿有效)2.中断允许控制寄存器(IE) EX0:外部中断0允许位
51单片机外设之——独立按键的检测(传统法一)
我刚开始学的单片机的时候,一直会热枕于一个操作——就是希望我自己能按一下键盘,让单片机去执行我想要的操作命令。但是就是被这种热枕所向往,以至于我一直没有去想它是怎么一个工作环境(一开始居然忘记联想到 C 语言的 if 条件语句!)。所以这里我以自身经历去奉劝大家,我们在憧憬于一件事的时候,不要忘记去力所能及的实现它! 接下来,我将分批次的把我对“按键”的理解记行分享。其中,按键的存在形式主要有两种
51单片机,按键控制流水灯,流水灯控制
51单片机控制流水灯,按键控制流水灯,内含完整C源代码和proteus仿真,本人已经经过实物测试,请放心下载
51 单片机扩充外部中断
//有个题目:http://zhidao.baidu.com/question/585378165.html//给出的电路如下图所示://图片链接://http://xiangce.baidu.com/picture/detail/684895d8e7d3b312ef1c7eb503c20233254a2475//要求://1.在 K2 或 K3 的中断服务期间,K1 的中断请求仍能被服务;//2
【单片机】51单片机时钟——利用中断
51单片机时钟——利用中断
【51单片机实验】中断嵌套--IP引脚的使用
中断是单片机中很重要的一部分,IP引脚的预备知识在“按键实验”的博客里已经说过,暂不赘述。 实验内容:依次按下两个按键,根据设置的优先级不同,实现中断的嵌套即是:按下A键,实现A功能,再按下B键,由于B键引脚优先级高于A键,产生中断,实现B功能,完成后,返回实现A功能。
51单片机外部中断流水灯(汇编语言)
设计一个外部中断触发流水灯系统:当外部中断来临时,启动流水灯,即从P2口的LED循环点亮。可以从protues中看到结果
51单片机 矩阵键盘 中断扫描
名称:矩阵键盘依次输入控制 使用行列逐级扫描 中断方式 内容:如计算器输入数据形式相同 从右至左 使用行列扫描方法 中断方式可以有效提供cpu工作效率,在有按键动作时才扫描,平时不进行扫描工作
51单片机通过一个按键实现暂停与恢复
51单片机通过一个按键实现暂停与恢复
51单片机用定时器进行按键去抖
C语言编写的51单片机按键去抖程序,不是延时去抖,是定时器去抖。
STC8951单片机的外部中断
以程序为例: #include<reg52.h> sbit led=P3^0; void main() { IT0=1; //设置外部中断0的触发方式为下降沿 EX0=1; //开启外部中断0 //中断的设置,首先设置中断的触发方式,再设置开启终端,最后开启总中断。 IT1=1; //设置外部中断1的触发方式为下降沿 //顺序保证...
单片机C51-键盘 中断扫描
单片机C51学习 单片机C51-键盘 中断扫描
【51单片机学习过程记录】3独立按键
声明:【51单片机学习过程记录】全是我自己学习、实践所记录的过程,我只是菜鸟,所有论点和观点仅代表我个人,不能确定是这个技术的真理。我的目的是学习和有可能成为可以向别人分享的经验,因此有错误我会虚心接受,并认真改正。 aa原理图分析 1 独立按键为 K1 K2 K3 K4,按键左端接地,右端接单片机引脚,分别是P3^4---P3^7, 也就是说当按键按下时,使引脚拉
51单片机:中断实现按键按一下数码管从00加到99循环(C语言)
51单片机:中断实现按键按一下数码管从00加到99循环(C语言) 题目要求: 在51单片机上通过C语言编写代码,使用中断,按键按一下数码管上面的数字从00开始加1,实现00——99的循环 准备工作: keil建立工程 proteus仿真验证 代码如下: /* *功能:用中断实现开关控制实现每按一次,数码管数字加一, *实现00-99的循环 */ #include<reg52.h&gt...
51单片机按键消抖
抖动是机械按键存在的现象,是必须要进行处理的。一般处理有两种方式:一种是硬件消抖,另一种是软件消抖。硬件消抖不仅会增加开发成本,而且有时不稳定。一般都会选择软件消抖。  因为单片机最重要的是测试状态,而不是测试过程。一般不会选择通过状态延时来消抖,而是通过定时循环测试按键的状态来消抖.下面是针对51单片机的独立按键写的一个通过定时器来消抖的程序:#include<reg52.h>sbi...
51单片机独立按键程序
#include"reg52.h" typedef unsigned char u8; typedef unsigned int u16; sbit led=P2^0; sbit ke=P3^1; void delay(u16 i) { while(i--); } void anjian() { if(ke==0)//判断按键是否被按下 { delay(1000);//消
写了一个 51单片机外部中断程序
/*以下是能在keilC 中变异的源码,直接粘贴过去就行,外部中断0(INT0)和外部中断1都有(INT1)*/ /*程序很简单,但是对新手来说还是很实用的*/ /*******************************************************************/ /*
单片机编程:开关输入采用中断的方式还是轮询好?
开关输入采用中断的方式还是轮询好?这个问题或许已经讨论了很多年了吧,正因为如此,答案就很明了了,既然被争论,说明两种方式各有各的优点和不足。下面分开谈谈我的一些看法。 1、对于中断。采用中断的方式的好处是响应及时,不会错过每个中断信息,但是正因为中断如此的敏感,导致了其的不足,我们知道,一般的开关都是有抖动的,按一次开关,其实会抖动很多次,这样就会造成中断很多次,而其实你所预想本应该只有一次,如...
51单片机外部中断编程实例2
作者:江苏科技大学 机械工程学院 赵长金   1、51单片机的5大中断源:串行口中断、定时中断1、外部中断1、定时中断0、外部中断0;2、中断源的编号: 串行口中断为4、定时中断1为3、外部中断1为2、定时中断0为1、外部中断0为0;3、中断源的优先级:按以上顺序排列,串行口中断最低、外部中断0最高;4、使用外部中断0和1,必须TCON寄存器设置其触发方式是低电平触发(0)
51单片机的中断与定时计数器尝试
这是我的第一篇有关51单片机的博客,主要记录我的学习历程与中间遇到的问题,如有错漏请指出。
51单片机--按键控制
本代码为51单片机按键中断控制,仅供51单片机初学者参考。
51单片机之矩阵按键
2018/3/18单片机1.说在前面1.今天从图书馆借到了一本51单片机的基础教程,从其中看到了一些关于单片机的基础知识1-1:单片机是在一块硅片上集成微处理器,储存器以及各种输入输出接口,所以被称为单片微型计算机,简称单片机1-2:通俗的来说,单片机就是一块集成芯片,但是有一些特殊的功能,通过在不同时间控制芯片输出高低电平从而输出不同的电平,控制和引脚相连的外围电路的电气情况对于我的单片机板子S...
矩阵键盘的中断模式
矩阵键盘扫描会占用MCU大量的时间,为了节约时间使程序运行更加流畅,一般实用中断方式进行矩阵键盘的扫描工作。 上图中从上往下前8个管脚连接单片机的8个I/O,最后一个连接单片机的外部中断管脚,用来触发中断。
51单片机(AT89C52)外部中断程序
#include #define uchar unsigned char #define uint unsigned int #define DELAY 1000 void delay(uint z) //1ms { uint x,y; for(x=z;x>0;x--) for(y=111;y>0;y--); } void main() { uchar i,dt;
51单片机计时器中断
单片机中,中断算是一个比较重要的部分,在51单片机中有八种中断方式 ,其中常用的的有五种,分别是外部中断0,计时器中断0,外部中断1,计时器中断1,和串口中断。今天主要介绍的是计时器中断。     51单片机给我们提供了2个计时器中断,分别是计时器0和计时器1,他们对应的优先级分别是1和3,开启计时器并允许其中断后,计时器会从给定的初始值开始,每个指令周期加1,直到加到65535,再加一时计时器
(学习笔记)手把手教你学51单片机:中断与数码管动态显示
一、c语言的数组 1.1数组的基本概念 数组是具有相同数据类型的有序数据的组合,一般来讲数组定义后满足以下三个条件: (1)具有相同的数据类型 (2)具有相同的名字 (3)在存储器中是被连续存放的 1.2数组的声明 数据类型 数组名【数组长度】; (1)同一个数组中的元素具有相同的数据类型。 (2)数组名必须为字母、数字、下划线组成且第一个字符必须是字母或者下划线。 (3)数组...
51单片机:利用定时器中断写一个简易加法计算器,按键消抖算法很好。
此加法计算器很简单,且有很多不完善的地方,但逻辑性很强 此函数主要分为两部分: 1、        主函数部分:主函数的作用主要是识别哪一个按键被按下,并且根据被按下的按键,执行相应的状态!比如按下等号键就把两次加数累加起来显示出来   首先主函数调用KeyDriver函数进行判断是否有按键被按下,并检测哪一个按键被按下, 然后接着调用KeyAction函数,判断哪一个按键被按下,并执行
关于51单片机外部中断的触发方式
51单片机有两个外部中断申请输入端:INT0 和 INT1。51单片机的外部中断,分为低电平触发和下降沿触发。在单片机内部,分别由控制位 IT0 和 IT1 来控制。复位时,IT0/1 都为 0,即默认为低电平触发。一般来说,外设第一次向单片机申请外部中断时,单片机使用那种触发方式,并无什么差别。但是,返回主程序后,如果外部申请信号仍然是低电平,就有区别了。在采用低电平触发时,单片机执行了一条主程
基于51单片机的c语言编写的计算器程序(4x4按键)
c语言编写的基于51单片机的计算器程序(4x4按键);0~9十个数字键,加减乘除四个键,等号按键和清零按键。实现长度最长为6位数的加、减、乘、除,可根据自己的硬件,进行改写,增加计算数字的长度。
基于51单片机矩阵键盘的实现(含仿真原理图)
包含线反转法和扫描法两种矩阵键盘的实现,含proteus仿真原理图及完整代码,可运行实现
51单片机:利用外部中断实现按键按一下数码管数字加1直到加到99,另一个按键实现清零
51单片机:利用外部中断实现按键按一下数码管数字加1直到加到99,另一个按键实现清零 题目要求: 利用外部中断实现按键按一下数码管数字加1,实现00-99的循环,另一个按键实现清零,不管数码管数字是多少,该按键按下数码管显示00 准备工作: keil建立工程 proteus仿真验证 代码如下: /* *功能:开关key1控制实现每按一次,数码管数字加1,实现00-99的循环 *开关key2...
51单片机【中断】学习知识点汇总
文章一直在修改,之前学了外部中断和定时/计数器中断,对中断设置流程感觉比较清晰。学串行通信时,又用到中断,而且多了几步设置,回头看时又把前面学的寄存器符号弄混了。现在按自己的思路从头把流程和各种符号梳理一下。外部中断外部中断的设置程序比较简单,分为三步选择用外部中断0还是外部中断1,并通过请求控制位选择中断引起原因为P3.2脚的低电平或下降沿信号          //IT0=1/0或者 IT1=...
文章热词 设计制作学习 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 python按键脚本教程 长江师范学院大数据