#include<STC12C5A60S2.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define L P0
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 L7=P0^6;
sbit L8=P0^7;
sbit BEE=P1^4;
void delayms(uint time)
{
uint i,j;
for(i=0;i<time;i++)
for(j=0;j<930;j++);
}
void Delay(uint time)
{
uint i;
for(i = time;i> 0;i --);
}
void Playmusic()
{
uint a=0,b,c;
uchar code SONG_TONE[]= {212,212,190,212,159,169,212,212,190,212,142,159,212,212,106,126,159,169,190,119,119,126,159,142,159,0};
uchar code SONG_LONG[]= {90,30,120,120,120,240,90,30,120,120,120,240, 90,30,120,120,120,120,120,90,30,120,120,120,240,0};
while(SONG_LONG[a]!=0||SONG_TONE[a]!=0)
{
for(b=0;b<SONG_LONG[a]*20;b++) {BEE=~BEE; for(c=0;c<SONG_TONE[a]/3;c++); }
delayms(10);a++;
}
}
void main()
{
uchar key;uchar temp = 0xFE,i = 0,flag = 0;
uint j,k;
uint g=1;
uchar code SONG_TONE[]= {212,212,190,212,159,169,212,212,190,212,142,159,212,212,106,126,159,169,190,119,119,126,159,142,159,0};
uchar code SONG_LONG[]= {9,3,12,12,12,24,9,3,12,12,12,24, 9,3,12,12,12,12,12,9,3,12,12,12,24,0};
while(1)
{
P3=0xf0;
if(key!=0xf0)
{delayms(50);
if(key!=0xf0)
{
key=P3&0xf0;
P3=0x0f;
key|=P3;
}
}
switch(key)
{case 0xe7:L=0x00;delayms(1);L=0xff;delayms(1);BEE=0;delayms(100);BEE=1;break;
case 0xd7:
L=0x7e;delayms(100);L=0xff;L1=0;L8=0;delayms(100);L1=1;L8=1;delayms(100);L2=0;L7=0;delayms(100);L2=1;L7=1;delayms(100);
L3=0;L6=0;delayms(100);L3=1;L6=1;delayms(100);L4=0;L5=0;delayms(100);L4=1;L5=1;delayms(100);
L3=0;L6=0;delayms(100);L3=1;L6=1;delayms(100);L2=0;L7=0;delayms(100);L2=1;L7=1;delayms(100);
L1=0;L8=0;delayms(100);L1=1;L8=1;delayms(50);//對撞之後改變的開始
L8=0;delayms(50);L7=0;delayms(50);L2=0;delayms(100);L8=1;delayms(50);L7=1;delayms(50);L2=1;delayms(50);
L6=0;delayms(50);L5=0;delayms(50);L3=0;delayms(100);L6=1;delayms(50);L5=1;delayms(50);L3=1;delayms(100);
L4=0;delayms(50);L3=0;delayms(50);L5=0;delayms(100);L4=1;delayms(50);L3=1;delayms(50);L5=1;delayms(50);
L5=0;delayms(50);L6=0;delayms(50);L2=0;delayms(100);L5=1;delayms(50);L6=1;delayms(50);L2=1;delayms(50);
L7=0;delayms(50);L8=0;delayms(50);L1=0;delayms(100);L7=1;delayms(50);L8=1;delayms(50);L1=1;delayms(50);//第二次開始
L8=0;delayms(50);L7=0;delayms(50);L6=0;delayms(50);L1=0;delayms(50);L8=1;delayms(50);L7=1;delayms(50);
L6=1;delayms(50);L1=1;delayms(50);
L5=0;delayms(50);L4=0;delayms(50);L3=0;delayms(50);L2=0;delayms(50);L5=1;delayms(50);L4=1;delayms(50);
L3=1;delayms(50);L2=1;delayms(50);
L1=0;delayms(50);L2=0;delayms(50);L3=0;delayms(50);L4=0;delayms(50);L5=0;delayms(50);L6=0;delayms(50);
L7=0;delayms(50);L8=0;delayms(50);L=0xff;delayms(1);BEE=0;delayms(50);BEE=1;break;
case 0xb7:if(key==0xb7)
{
if(flag == 0)
{
L = temp;
delayms(500);
temp=_crol_(temp,1);
i++;
if(i == 7){flag = 1;BEE=0;delayms(100);BEE=1;};
}
else
{
L = temp;
delayms(500);
temp=_cror_(temp,1);
i--;
if(i == 0){flag = 0;BEE=0;delayms(100);BEE=1;};
}
};break;
case 0x77: if(key==0x77)
{
for(j = 0;j <300;j ++)
{
for(k=0;k<10;k++)
{
L = 0xaa;
Delay(j);
L = 0x55;
Delay(300-j);
}
}
for(j =300;j > 0;j--)
{
for(k=0;k<10;k++)
{
L = 0xaa;
Delay(j);
L = 0x55;
Delay(300-j);
}
}
};break;
case 0xc3: if(key=0xc3)
{
for(j = 0;j <300;j ++)
{
for(k=0;k<10;k++)
{
L = 0xff;
Delay(j);
L = 0x7e;
Delay(300-j);
}
}
for(j =300;j > 0;j--)
{
for(k=0;k<10;k++)
{
L = 0xff;
Delay(j);
L = 0x7e;
Delay(300-j);
}
}
for(j = 0;j <300;j ++)
{
for(k=0;k<10;k++)
{
L = 0xff;
Delay(j);
L = 0xbd;
Delay(300-j);
}
}
for(j =300;j > 0;j--)
{
for(k=0;k<10;k++)
{
L = 0xff;
Delay(j);
L = 0xbd;
Delay(300-j);
}
}
for(j = 0;j <300;j ++)
{
for(k=0;k<10;k++)
{
L = 0xff;
Delay(j);
L = 0xdb;
Delay(300-j);
}
}
for(j =300;j > 0;j--)
{
for(k=0;k<10;k++)
{
L = 0xff;
Delay(j);
L = 0xdb;
Delay(300-j);
}
}
for(j = 0;j <300;j ++)
{
for(k=0;k<10;k++)
{
L = 0xff;
Delay(j);
L = 0xe7;
Delay(300-j);
}
}
for(j =300;j > 0;j--)
{
for(k=0;k<10;k++)
{
L = 0xff;
Delay(j);
L = 0xe7;
Delay(300-j);
}
}
for(j = 0;j <300;j ++)
{
for(k=0;k<10;k++)
{
L = 0xff;
Delay(j);
L = 0xdb;
Delay(300-j);
}
}
for(j =300;j > 0;j--)
{
for(k=0;k<10;k++)
{
L = 0xff;
Delay(j);
L = 0xdb;
Delay(300-j);
}
}
for(j = 0;j <300;j ++)
{
for(k=0;k<10;k++)
{
L = 0xff;
Delay(j);
L = 0x7e;
Delay(300-j);
}
}
for(j =300;j > 0;j--)
{
for(k=0;k<10;k++)
{
L = 0xff;
Delay(j);
L = 0xbd;
Delay(300-j);
}
}
for(j = 0;j <300;j ++)
{
for(k=0;k<10;k++)
{
L = 0xff;
Delay(j);
L = 0x7e;
Delay(300-j);
}
}
for(j =300;j > 0;j--)
{
for(k=0;k<10;k++)
{
L = 0xff;
Delay(j);
L = 0x7e;
Delay(300-j);
}
}
};break;
case 0xa5: if(key==0xa5)
{
BEE=0;
Playmusic();
delayms(500);
BEE=1;
}
}
}
}
51單片機作業
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.