#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