|
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit key1=P3^4;
sbit key2=P3^5;
sbit key3=P3^6;
void delay();
uint temp,flag,k,aa,num,time;
void main()
{
temp=0xfe;
P1=temp;
P3=0xff;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
time=20;
while(1)
{
if(flag)
{
if(k<=7)
{
flag=0;
temp=_crol_(temp,1);
P1=temp;
k++;
}
if(k>7)
{
flag=0;
temp=_cror_(temp,1);
P1=temp;
k++;
}
if(k==15)
k=0;
if(k==7)
k=8;
}
}
}
void delay(uint z)//1毫秒延時(shí)函數(shù)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void timer0()interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
aa++;
num++;
if(aa==2)
{
aa=0;
if(key1==0||key2==0||key3==0)
{
delay(5);//消抖
if(key1==0) //再次檢測(cè)
{
time=20;
num=0;
}
if(key2==0) //再次檢測(cè)
{
time=100;
num=0;
}
if(key3==0) //再次檢測(cè)
{
time=300;
num=0;
}
while(!key1);//按鍵未返回,一直死循環(huán)
delay(5);
while(!key1);
}
}
if(num==time)
{
flag=1;
num=0;
}
} |
|