东北石油大学电子科学与技术专业生产实习
if(KEY!=0x0f) {
KEY=0X0F;
switch(KEY) //扫描行 { }
KEY=0XF0;
switch(KEY) //扫描列 { }
while((a<50) && (KEY!=0xf0)) //松手检测 { }
switch(KeyValue) {
case(0):A1=~A1;break; case(1):A2=~A2;break; case(2):A3=~A3;break; case(3):A4=~A4;break; case(4):A5=~A5;break; case(5):A6=~A6;break; case(6):A7=~A7;break; case(7):A8=~A8;break;
14
case(0X07): KeyValue=0;break; case(0X0b): KeyValue=4;break; case(0X0d): KeyValue=8;break; case(0X0e): KeyValue=12;break;
case(0X70): KeyValue=KeyValue+3;break; case(0Xb0): KeyValue=KeyValue+2;break; case(0Xd0): KeyValue=KeyValue+1;break; case(0Xe0): KeyValue=KeyValue;break;
Delay10ms(1); a++;
//选择需要亮的灯
东北石油大学电子科学与技术专业生产实习
}
}
default:break;
}
if (A1==0xff) //保存数据
(LED1=LED1|0x80); else if(A1==0x00)
(LED1=LED1&0x7f);
if (A2==0xff)
(LED1=LED1|0x40);
else if(A2==0x00)
if (A3==0xff)
(LED1=LED1|0x20);
(LED1=LED1&0xbf);
else if(A3==0x00)
if (A4==0xff)
(LED1=LED1|0x10);
(LED1=LED1&0xdf);
else if(A4==0x00)
if (A5==0xff)
(LED1=LED1|0x08);
(LED1=LED1&0xef);
else if(A5==0x00)
if (A6==0xff)
(LED1=LED1|0x04);
(LED1=LED1&0xf7);
else if(A6==0x00)
15
东北石油大学电子科学与技术专业生产实习
(LED1=LED1&0xfb);
if (A7==0xff)
(LED1=LED1|0x02);
else if(A7==0x00)
(LED1=LED1&0xfd);
if (A8==0xff) (LED1=LED1|0x01); else if(A8==0x00)
(LED1=LED1&0xfe);
LED=LED1;
if(k2==0) { Delay10ms(1); if(k2==0) {
k=0;
LED=LED1;
};
}; if(k4==0) { Delay10ms(1); if(k4==0) {
k=0;
kongzhi2();
};
};
16
东北石油大学电子科学与技术专业生产实习
} }
void kongzhil(void) {int m=1; LED1=LED,LED=0x00; while(m) { if(k3==0) { Delay10ms(1); if(k3==0) {
m=0,LED=LED1;
};
}
}
}
void kongzhi2(void) { LED1=0x00; LED=0x00; A1=0; A2=0; A3=0; A4=0; A5=0; A6=0; A7=0; A8=0; }
void timer0() interrupt 1 {
17
东北石油大学电子科学与技术专业生产实习
TH0=(65536-50000)/256; TL0=(65536-50000)%6; x++;
if(x==6) //6*50MS=300MS { x=0;
P0=LED;
LED = _crol_(LED,1);
//if(++i==8) i=0; }
}
void Delay10ms(unsigned int c) {
unsigned char a, b;
for (;c>0;c--) { for (b=38;b>0;b--) {
for (a=130;a>0;a--);
}
}
}
18
东北石油大学电子科学与技术专业生产实习
指导教师评语及成绩评定: 成绩: 指导教师签字:
年 月 日
19