#include<at89x52.h>
#define uchar unsigned char
#define uint unsigned int
sbit Ked1=P2^0;
sbit Ked2=P2^1;
sbit Ked3=P2^2;
sbit Ked4=P2^3;
sbit Ked5=P2^4;
uint tt=20;
uint count;
uint k,h,m,w;
uint model=0;
uint t=0;
uint f=0;
uchar a[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar b[8]={0x7e,0xbd,0xdb,0xe7,0x7e,0xbd,0xdb,0xe7};
uchar c[8]={0xf7,0xfb,0xfd,0xfe,0xef,0xdf,0xbf,0x7f};
uchar d[8]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
void delay_ms(uint x) //延时程序
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void huayang1()
{
if(f<8)
{
if(count>=tt)
{
count=0;
P0=b[f];
f++;
}
}
else
{
model=1;
}
}
void huayang2()
{
if(m<8)
{
if(count>=tt)
{
count=0;
P0=c[m];
m++;
}
}
else
{
model=2;
}
}
void huayang3()
{
if(w<8)
{
if(count>=tt)
{
count=0;
P0=d[w];
w++;
}
}
else
{
model=1;
}
}
void Key_velocity()
{
if(0==Ked1)
{
delay_ms(10);
if(0==Ked1)
{
while(0==Ked1);
tt=20;
}
}
if(0==Ked2)
{
delay_ms(10);
if(0==Ked2)
{
while(0==Ked2);
tt=80;
}
}
}
void Key_mode()
{
if(Ked3==0)
{
delay_ms(10);
if(Ked3==0)
{
model=0;
}
}
if(Ked4==0)
{
delay_ms(10);
if(Ked4==0)
{
model=1;
}
}
if(Ked5==0)
{
delay_ms(10);
if(Ked5==0)
{
model=2;
}
}
}
void main() //主函数
{
TMOD=0x01; //定时器0工作在方式1下
TH0=(65535-10000)/256;
TL0=(65535-10000)%256;
TR0=1;
ET0=1;
EX0=1;
EA=1;
while(1)
{
Key_velocity();
switch(model)
{
case 0:huayang1();break;
case 1:huayang2();break;
case 2:huayang3();break;
}
}
}
void int0() interrupt 0
{
Key_mode();
}
void timer_0() interrupt 1
{
TH0=(65535-10000)/256;
TL0=(65535-10000)%256;
count++;
}
|