⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 music.c

📁 我以前课设编的电子琴程序
💻 C
📖 第 1 页 / 共 2 页
字号:
        msc++;
    }
    ET0=0;                           //播放结束,关T1中断
    PIN_MSC=1;                       //关输出
//    temp_TH1=0xff;
//    temp_TL1=0xea;                 //关输出(输出超声波)
//    ET0=1;                         //开T0定时器中断
//    TMOD=0x51;                     //T0:16位定时器、T1:16位计数器
}
//---------------------------------------------------------------------------//
/*******************歌曲模式*****************************/					   



bit Press_Flag;

bit Power_ON_Flag;
//延时程序
void delay(void)
{for(a=200;a>0;a--)
  for(b=20;b>0;b--);
  } 

//音乐的开关
void door(void)
{ if(P1_1==0)
   { 
   	 delay();
     if(P1_1==0) EA=!EA;
	 while(P1_1==0);
     }
}

//行和列的扫描程序
void scan(  uchar temp[],uchar exchang[])
{   P2=0x0f;
	  if(P2!=0x0f)
	    {delay();
		  if(P2!=0x0f)
		     {
 			    Press_Flag = 1;
				Cnt = 0;		   	    
		  		for(c=0,d=0;c<8;c++)
			     { 
					P2=exchang[c];
				    delay();
					if(P2!=exchang[c])
					  { temp[d]=c;
				        if(d==1)break;   
					     d=d+1;
					  }
				  }
				 EA=1;
			 }
	    }
  }


//中断程序
void t1(void) interrupt 3 using 0
{  TH1=HTH1;
   TL1=LTL1;
   P1_0=~P1_0;
}
void keyscan(void) 
{
 if(P1_1==0)
 {
 	delay();
	if(P1_1==0)
	{
		while(P1_1==0);
	   keycount++;
	   if(keycount>=2)      keycount=0;
	}
 }
 
}


/**********************矩阵键盘模块*************************/

void MatrixKeyScan(void)
{
  P2=0x7f;
  if(P2!=0x7f)
  {
   delay();
   if(P2!=0x7f)
    {
	 switch(P2)

 {  case 0x77:key=7;break;
	case 0x7b:key=4;break;
    case 0x7d:key=1;break;
	case 0x7e:key=0;break;
  }
//P0=~key;
   }
   }
  P2=0xbf;
  if(P2!=0xbf)
  {
   delay();
   if(P2!=0xbf)
    {
	 switch(P2)
	  {case 0xb7:key=8;break;
	   case 0xbb:key=5;break;
           case 0xbd:key=2;break;
	   case 0xbe:key=13;break;
          }
//     P0=~key;
    }
   }
  P2=0xdf;
  if(P2!=0xdf)
  {
   delay();
   if(P2!=0xdf)
    {
	 switch(P2)
	  {case 0xd7:key=9;break;
	   case 0xdb:key=6;break;
      case 0xdd:key=3;break;
   case 0xde:key=14;break;
     }
 //    P0=~key;
    }
   }
  P2=0xef;
  if(P2!=0xef)

{
   delay();
   if(P2!=0xef)
    {
	 switch(P2)
	  {case 0xe7:key=10;break;
	   case 0xeb:key=11;break;
           case 0xed:key=12;break;
	   case 0xee:key=15;break;
          }
//     P0=~key;
    }
   } 
 }    
 /**********************矩阵键盘模块*************************/



 //主程序
void main(void)
{ 
 while(1)
 { 
	keyscan();
	if(keycount==0)
	{
	    Power_ON_Flag = 1;
  		TMOD=0x10;
  		TR1=1;
  		ET1=1;
  		PT1=1;
  		EA=0;     
 	    while(keycount==0)
 	    {  
	    door();	 
        scan(temp,exchang);
	    HTH1=table[temp[0]][temp[1]-4]/256;
        LTL1=table[temp[0]][temp[1]-4]%256;
        TR1=1;
        if(EA==1)  P0=light[temp[0]][temp[1]-4];
		Cnt ++; 
		if (Press_Flag&&(Cnt==5000))
		{			
			Press_Flag = 0;
			EA = 0;
		}
		keyscan(); 	
	   }
	} 

	if(keycount==1)
	{
		//    设置定时器--------------------------------------
       TMOD   =  0x11;                // TMOD: 定时器1:模式1:16位;定时器2:模式1:16位   //
       //        TCON   =  0x50;       // TCON: 定时器 1运行;      定时器 2运行         //
        //    设置并开启中断: 
        IP  = 0x08;            //中断优先寄存器IP:|D7_x |x|x  
      //|PS|PT1|PX1|PT0|D0_PX0|//
        IE  = 0x88;             //中断允许寄存器
		EA=1;

		PT1=0;
		ET1=0;
		key=0;				   
		
	   //IE:|D7_EA|x|ET2|ES|ET1|EX1|ET0|D0_EX0|// 
	   while(keycount==1)
	   {
	   
	   MatrixKeyScan();
	   switch(key)
	   {
	   		case 1:	    music_play(music_tab1);key=0;break;
			case 2:   	music_play(music_tab2);key=0;break;
			case 3: 	music_play(music_tab3);key=0;break;
			case 12:	music_play(music_tab4);key=0;break;
			default :break;
	   }
//	   music_play(music_tab1);
//     music_play(music_tab2);
//     music_play(music_tab3);
//     music_play(music_tab4);
	   keyscan();
	   }
	   EA=0;
	   key=0;
	}

/*	MatrixKeyScan();
	if(key==1)       {P0_0=0;key=0;}
	if(key==2)       {P0_1=0;key=0;}
	if(key==3)       {P0_2=0;key=0;}
	if(key==4)       {P0_3=0;key=0;}  
	if(key==5)       {P0_3=0;key=0;}  
	if(key==6)       {P0_3=0;key=0;}  
	if(key==7)       {P0_3=0;key=0;} 
	if(key==9)       {P0_3=0;key=0;} 
		if(key==10)       {P0_3=0;key=0;}
			if(key==11)       {P0_3=0;key=0;}
				if(key==12)       {P0_3=0;key=0;}
					if(key==13)       {P0_3=0;key=0;}	*/
  }
}
   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -