51單片機作業

#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;
						 
						 }
	
	
	
	
	}
	}
}


發佈了33 篇原創文章 · 獲贊 13 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章