标签:
写了半天掉线了。。。
不写了上定义。。。
首先要弄中断设置 ,中断原理图如下:
以 设置INT0为例:IT0=1;EX0=1;
最后打开总中断 EA=1;
如图 :
2个外部中断分别接 p3.2 p3.3 即开关K3 K4 ,也就是说按开关K3转到外部中断0程序,按开关K4转到外部中断1程序
/******************************************************************************* * 实 验 名 : 外部中断实验 * 使用的IO : 外部中断0使用P3.2 外部中断1使用P3.3 LED使用P2 * 实验效果 : 按K3 LED左移 按K4 LED右移 * 注 意 : *******************************************************************************/ #include <reg52.h> #include <intrins.h> #define GPIO_LED P2 #define GPIO_DIG P0 #define GPIO_KEY P1 #define uint unsigned int #define uchar unsigned char void Delay10ms(); void IntConfiguration(); sbit K3=P3^2; sbit K4=P3^3; sbit LSA=P2^2; sbit LSB=P2^3; sbit LSC=P2^4; uchar code DIG_CODE[17]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; uchar Value=0; void main() { uint n=10; IntConfiguration(); GPIO_LED=0xfe; while(1) { if(Value) GPIO_LED=_crol_(GPIO_LED,1); else GPIO_LED=_cror_(GPIO_LED,1); while(n--)Delay10ms(); n=10; } } void Delay10ms() { uchar i=38,j=130; while(i--) while(j--); } void IntConfiguration() { //设置INT0 IT0=1; EX0=1; //设置INT1 IT1=1; EX1=1; //打开总中断 EA=1; } void Int0() interrupt 0 { Delay10ms(); if(K3==0) Value=1; } void Int1() interrupt 2 { Delay10ms(); if(K4==0) Value=0; }
标签:
原文地址:http://blog.csdn.net/qq_16255321/article/details/42774001