51单片机外部0中断变成外部1中断,程序怎么修改

51单片机外部0中断变成外部1中断,程序怎么修改,第1张

基本上是把寄存器和函数里是0的改成1

函数名()interrupt 0 {} //对应外部中断0;----》函数名()interrupt 1 {} //对应外部中断1;

EX0---》EX1 等!!

首先两个中断是否都打开了,也就是EX0、EX1是否都等于1;

另外看看触发方式:IT0、IT1是什么置;

再看看你是否真的触发了,硬件上确认没有问题?

第四,你将两个中断函数后面using n ,使n不同,使用不同的工作组试试。

外部中断可以设置为低电平触发和下降沿触发,一旦满足条件,进入中断程序。一般用来检测按键或者一些外部的电平信号

定时器中断是计时进入中断,就是每隔一段时间进一次中断。也可用来检测按键。一个人按键假如最快的速度是05秒一次,你每隔025S进中断判断一下按键是不是被按下了,就永远不会漏掉。如果你一直放在主循环里执行按键检测程序,会造成单片机资源的浪费,也就是阻塞程序。

外部中断执行过程中,只要定时中断能产生并且能进入定时中断子程序,定时器就可以计数,这跟你设置的中断优先级有关系。你的这段程序里好像没有体现中断优先级。如果定时器中断的优先级高于外部中断,这样就可以,否则就不行。

举个简单的例子:执行中断好比一位老师讲课,没有设置中断优先级(默认设置)的犹如两个班的学生,老师讲课当然要按顺序一个一个来讲。但是如果设置了中断优先级,那么优先级高的就会被优先处理,当正在讲课(正在处理优先级低的任务)时突然校长在门外敲门找老师(校长的优先级比较高),所以老师就会停止给学生讲课去处理校长的事情,等处理完了再回来继续给学生讲课。

估计是干扰造成的,一般设置成为下降沿触发比较好,若设置为电平触发需保证中断响应后,中断信号应及时搞撤消,防止一次 *** 作,多次进入中断

具体你的中断程序,不知有什么意义,我看逻辑也有点乱,低电平触发后,关中断,若低电平已撤消,高电平来到,则延时20ms后开中断退出,  若高电平显现后又在20ms内消失,则再延时20ms后,进入反复检测的死循环中, 若低电平未撤消,则也进入反复检测的死循环中,其作用大概就是低电平程序停止,直到出现可靠的高电平后恢复运行,倒不如直接检测低电平,低电平进入中断,然后反复检测是否还是低电平,若一直是低电平,就执行延时,偶尔出现的干扰高电平会被过滤掉,若真正出现高电平,则自动退出 这样程序更简单更容易控制

void counter(void) interrupt 0

{

while(P3_2==0)

 {

delay1ms(20);//延时长则抗高电平干扰能力强

 }

程序抗低电平干扰能力比较弱,但根据你的意图:要可靠的高电平主程序才恢复运行

那么,换名话说,偶尔出现的低电平也会也会使主程序暂时中断,然后自动恢复,也应该是合理的了

的。

一般的单片机触发方式有两种:低电平触发IT0=0(或中断1的IT1=0)和下降沿触发IT1=1。

IT0或IT1不设置也行,默认为0即低电平触发,只要中断IO管脚输入电平为0,即低电平触发进入中断,但前提是EA=1而且ET0=1(EA为打开总中断,ET0是允许进入中断函数),这个时候会停止主函数,转而进入中断函数处理,处理完中断函数后返回原来停止的地址继续执行主函数。

你所说的INTERRUPT 1是中断1,不关IT的事,说明了你同时还打开了ET1=1,自己检查下

方法类似,补写程序如下:

#include

#define

uint

unsigned

int

#define

uchar

unsigned

char

sbit

led=p0^0;

sbit

led1=p0^1;

void

delay1ms

(uint

z)

{

uint

x,y;

for

(x=z;x>0;x--)

for

(y=110;y>0;y--);

}

void

exter()

interrupt

2

{

delay1ms(600);

led=0;

delay1ms(200);

led=1;

}

void

exter0()

interrupt

0

{

delay1ms(600);

led1=1;

delay1ms(200);

led1=0;

}

main()

{

ea=1;

//开总中断

ex1=1;

//开外部中断1

ex0=1;

//开外部中断0

it1=0;

//外部中断边沿触发,下降沿触发

it0=0;

//外部中断0边沿触发,下降沿触发

}

以上就是关于51单片机外部0中断变成外部1中断,程序怎么修改全部的内容,包括:51单片机外部0中断变成外部1中断,程序怎么修改、51单片机,c 语言 为什么写2个外部中断程序,就会有一个不工作呢不是同时按的,不用考虑优先级、大神们,外部中断服务函数,5以上怎么用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10219333.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存