/*单片机中止反响 */
//==声明区=====================================================================================================#include#define uint unsigned int#define uchar unsigned charvoid delay(uint a);bit c,b;//==主程序区===================================================================================================void main(){EA=1;//翻开总中止EX0=1;//翻开外部中止0IT0=0;//将中止0设置为电平触发IT1=0;//将中止0设置为电平触发EX1=1;//翻开外部中止1while(1){P1=0xfe;//关掉INT0里边的LEDP0=0xff;//关掉INT1里边的数码管P0=0x00;P2=0xf8;P1=0xfe;while(1); }}//=子程序区=====================================================================================================void delay(uint a){uint b,c;for(b=a;b>0;b--)for(c=110;c>0;c--);}void Int0() interrupt 0//外部中止0的服务子程序不用在声明区声明的{uint a;a=10;while(a--)//这儿不能用while(1)假如不是的话当外部中止现已成了高电平,但无法跳出中止服务子程序{P0=0x00;P2=0xf8;P1=0xff;delay(1000);P1=0x00;delay(1000);}}void Int1() interrupt 2//外部中止1 的服务子程序也是不用在声明区声明的。 {delay(1);c=P3^3;if(c==0){delay(1);if(c==0){uint a;a=10;while((a--))//这儿不能用while(1)假如不是的话当外部中止现已成了高电平,但无法跳出中止服务子程序{P1=0xff;P2=0xf8;P0=0x3f;delay(1000);P2=0xf9;P0=0x00;delay(1000);P2=0xf8;P0=0x06;delay(1000);P2=0xf8;P0=0x5b;delay(1000);P2=0xf8;P0=0x4f;delay(1000);P2=0xf8;P0=0x66;delay(1000);P2=0xf8;P0=0x6d;delay(1000); }} }}
/*程序功用是第一个LED亮的,P3^2口是低电平是进入中止程序,中止完成功用是八个LED一同闪耀。P3^3口是低电平是进入外部中止1,外部中止1的程序完成是,第一个数码管显现0,1,2,3,4,5.但我还没有弄理解为什么0和1转化的时分有一个时间距离而我们的延时都是相同,但是在显现就不相同了。程序完成在中止完毕今后INT0的8个LED仍是在点亮的,INT1的最终的一个数码管仍是点亮的,由于没有在主程序里边关掉LED和数码管。留意我的开发板P0口是接数码管(是共阴极的)P2口是74HC138,P1口是LED*/