单按键控制开关
#include<REG51.H>
#include<intrins.h>
sbit key=P2^0;
//ÑÓʱ
void ms(unsigned int t)
{
unsigned char a,i, j;
for(a=0;a<t;a++)
{
_nop_();
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
}
}
void main()
{
P0=0x00;
key=1;
while(1)
{
if(!key)
{
ms(10);
if(!key)
{
P0=~P0;
}
while(key==0);
}
}
}
单个开关控制多种模式
#include<REG51.H>
#include<intrins.h>
sbit key=P2^0;
unsigned char a,n;
unsigned char LEDM[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
void ms(unsigned int t)
{
unsigned char a,i, j;
for(a=0;a<t;a++)
{
_nop_();
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
}
}
void keyscan()
{
if(!key)
{
ms(10);
if(!key)
{
n++;
ms(5);
if(n>=4)
n=1;
if(key==0);
}
}
}
void main()
{
P0=0x00;
ms(10);
P0=0x55;
key=1;
n=1;
while(1)
{
switch(n)
{
case 1:
for(a=0;a<8;a++)
{
P0=~(0x01<<a);
ms(100);
keyscan();
}
break;
case 2:
for(a=0;a<8;a++)
{
P0=LEDM[a];
ms(100);
keyscan();
}
break;
case 3:
P0=0xAA;
keyscan();
break;
}
}
}