微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 单片机中断应用程序

单片机中断应用程序

时间:11-29 来源:互联网 点击:
/*单片机中断反应 */
//==声明区=====================================================================================================#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*/

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top