#include "reg52.h"
sbit S7=P3^0;
sbit S6=P3^1;
sbit S5=P3^2;
sbit S4=P3^3;
sbit L1=P0^0;
sbit L2=P0^1;
sbit L3=P0^2;
sbit L4=P0^3;
sbit L5=P0^4;
sbit L6=P0^5;
sbit YMQ_A=P2^5;
sbit YMQ_B=P2^6;
sbit YMQ_C=P2^7;
void DelayK(unsigned char t)
{
while(t--);
}
unsigned char xuanze=0;
void InitHC138(unsigned char n)
{
switch(n)
{
case 4:
YMQ_C=1;
YMQ_B=0;
YMQ_A=0;
break;
case 5:
YMQ_C=1;
YMQ_B=0;
YMQ_A=1;
break;
case 6:
YMQ_C=1;
YMQ_B=1;
YMQ_A=0;
break;
case 7:
YMQ_C=1;
YMQ_B=1;
YMQ_A=1;
break;
}
}
void ScanKeys()
{
if(S7==0)
{
DelayK(100);
if(S7==0)
{
if(xuanze==0)
{
L1=0;
xuanze=1;
}
else if(xuanze==1)
{
L1=1;
xuanze=0;
}
while(S7==0);
DelayK(100);
}
}
if(S6==0)
{
DelayK(100);
if(S6==0)
{
if(xuanze==0)
{
xuanze=2;
L2=0;
}
else if(xuanze==2)
{
xuanze=0;
L2=1;
}
while(S6==0);
DelayK(100);
}
}
if(S5==0)
{
DelayK(100);
if(S5==0);
{
if(xuanze==1)
{
L3=0;
while(S5==0);
L3=1;
}
if(xuanze==2)
{
L5=0;
while(S5==0);
L5=1;
}
}
}
if(S4==0)
{
DelayK(100);
if(S5==0);
{
if(xuanze==1)
{
L4=0;
while(S4==0);
L4=1;
}
if(xuanze==2)
{
L6=0;
while(S4==0);
L6=1;
}
}
}
}
void main()
{
InitHC138(4);
while(1)
{
ScanKeys();
}
}