单片机的外部中断的电平触发,触发中断,为什么数码...
我想问的是当我用指拨开关使P3.2置低电平,那么这个程序应该只在中断程序运行数码管应该不会在改变,可实际上数码管却在缓慢从0到F变化,这是问什么?
#include<reg52.h>#define uint unsigned int#define uchar unsigned charvoid delay(uint a);sbit dula=P2^6;sbit wela=P2^7;sbit d1=P1^0;void main(){ uchar i; uchar code temp[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71, }; EA=1; EX0=1; IT0=0; wela=1; P0=0xf0; wela=0; for(i=0;i<16;i++) { d1=1; dula=1; P0=temp[i]; dula=0; delay(82); }}void delay(uint a){ uint x,y; for(x=500;x>0;x--) for(y=a;y>0;y--);}void exter0() interrupt 0{ d1=0;}
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uint a);
sbit dula=P2^6;
sbit wela=P2^7;
sbit d1=P1^0;
void main()
{
uchar i;
uchar code temp[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,
};
EA=1;
EX0=1;
IT0=0;
wela=1;
P0=0xf0;
wela=0;
for(i=0;i<16;i++)
{
d1=1;
dula=1;
P0=temp[i];
dula=0;
delay(82);
}
}
void delay(uint a)
{
uint x,y;
for(x=500;x>0;x--)
for(y=a;y>0;y--);
}
void exter0() interrupt 0
{
d1=0;
}
低电平触发,当执行完中断后会回到主程序,然后再次触发,执行中断,所以数码管缓慢变化
楼上正解
对的,触发中断回到主程序
你给中断程序里加个延时很长的函数 你看数码管还变化布
外部中断没有改变主函数的进程啊,他原来怎么样中断后还是一样的。