char code seg7_table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
char code left_move_table[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
char code righ_move_table[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
char increase_RtoL_table[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
char increase2_LtoR_table[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};
char k=0;//一開始七段顯示在0
bit x;
int num=20;
char bdata flag;
sbit blink_flag=flag^0;
sbit left_move_flag=flag^1;
sbit right_move_flag=flag^2;
sbit increase1_flag=flag^3;
sbit increase2_flag=flag^4;
sbit chang_word_flag=flag^5;
sbit left_btn=P3^6;//left
sbit right_btn=P3^7;//right
void delay_1ms(int x)
{
int i,j;
for(i=0;i<x;i++)
for(j=0;j<114;j++)
;
}
void int_t0(void) interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num--;
if(num==0)
{
num=20;
if(blink_flag==1)
{
P2= seg7_table[k];
P1=0x00;delay_1ms(200);
P1=0xFF;delay_1ms(200);
}
else if(left_move_flag==1)
{
int i;
P2= seg7_table[k];
for(i=0;i<8;i++)
{
P1=~left_move_table[i];delay_1ms(200);
}
}
else if(right_move_flag==1)
{
int i;
P2= seg7_table[k];
for(i=0;i<8;i++)
{
P1=~righ_move_table[i];delay_1ms(200);
}
}
else if(increase1_flag==1)
{
int i;
P2= seg7_table[k];
for(i=0;i<8;i++)
{
P1=~increase_RtoL_table[i];delay_1ms(200);
}
}
else if(increase2_flag==1)
{
int i;
P2= seg7_table[k];
for(i=0;i<8;i++)
{
P1=~increase2_LtoR_table[i];delay_1ms(200);
}
}
else if(chang_word_flag==1)
{
int i;
x=0;
P2= seg7_table[k];
if(x==0)
{
for(i=0;i<100;i++)
{
P3=0xFE;P0=seg7_table[8];delay_1ms(4);
P3=0xFd;P0=seg7_table[1];delay_1ms(4);
P3=0xFb;P0=seg7_table[0];delay_1ms(4);
P3=0xF7;P0=seg7_table[2];delay_1ms(4);
}
x=1;
}
if(x==1)
{
for(i=0;i<100;i++)
{
P3=0xFE;P0=seg7_table[9];delay_1ms(4);
P3=0xFd;P0=seg7_table[0];delay_1ms(4);
P3=0xFb;P0=seg7_table[6];delay_1ms(4);
P3=0xF7;P0=seg7_table[0];delay_1ms(4);
}
x=0;
}
}
}
}
void init()
{
int i;
IE=0x82;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
for(i=0;i<2;i++)
{
P1=0x00;delay_1ms(200);
P1=0xFF;delay_1ms(200);
}
for(i=0;i<2;i++)
{
P3=0X00;P0=0x00;delay_1ms(200);
P3=0XFF;P0=0xFF;delay_1ms(200);
}
for(i=0;i<2;i++)
{
P2=0X00;delay_1ms(200);
P2=0XFF;delay_1ms(200);
}
}
main()
{
init();
P2=seg7_table[k];
while(1)
{
if (left_btn==0)
{
delay_1ms(20); while(left_btn!=1);delay_1ms(20);
k++;
if (k>9) k=0;
}
if (right_btn==0)
{
delay_1ms(20); while(right_btn!=1);delay_1ms(20);
k--;
}
if (k<0) k=9;
if(k==7 || k==8 || k==9)
{
P2=seg7_table[k];
flag=0;P0=0xFF;P2=0xFF;P1=0XFF;P2=0xFF;
}
if(k==1){ flag=0;blink_flag=1;}
if(k==2){ flag=0;left_move_flag=1;}
if(k==3){ flag=0;right_move_flag=1;}
if(k==4){ flag=0;increase1_flag=1;}
if(k==5){ flag=0;increase2_flag=1;}
if(k==6){ flag=0;chang_word_flag=1;}
}
}
沒有留言:
張貼留言