#include<reg52.h>
#define uc unsigned char
sbit key1=P3^2;
sbit key2=P3^3;
void delay(uc c)
{
uc a,b;
for(;c>0;c--)
for(a=38;a>0;a--)
for(b=130;b>0;b--);
}
void aa() interrupt 0
{
// 右移
uc k=0x80,l=0;
for(l=0;l<8;l++)
{
P2=~k;
k>>=1;
delay(20);
}
delay(1);
while(key2==0);
delay(1);
IE0=0;
}
void ss() interrupt 2
{
//左移
uc i=1,j=0;
for(j=0;j<8;j++)
{
P2=~i;
i<<=1;
delay(20);
}
delay(1);
while(key1==0);
delay(1);
IE1=0;
}
void main()
{
IT1=1; // 下降沿触发
EX1=1; // 中断允许
IT0=1; // 下降沿触发
EX0=1; // 中断允许
PX0=1; // 设置优先级
EA=1; // 开总中断
while(1)
{
}
}
此程序主要是体现在不同优先级下设置中断的效果
- 接线: P2接led模块
- key1接P3^2
- key2接P3^3