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

📄 text1.c

📁 电子琴设计 其中包含乐普编辑
💻 C
字号:
/********************************************************************************


********************************************************************************/
#include <AT89X51.H>

unsigned char code table[]={0x3f,0x06,0x5b,0x4f,
                       0x66,0x6d,0x7d,0x07,
                       0x7f,0x6f,0x77,0x7c,
                       0x39,0x5e,0x79,0x71};


unsigned int code tab[]={0,65058,65110,
                         65157,65178,65217,65252,
                         65283,63628,63835,64021,
                         64103,64260,64400,64524};

void Delay1ms(unsigned int count)
{
unsigned int i,j;
for(i=0;i<count;i++)
for(j=0;j<120;j++);
}

unsigned char STH0,STL0;
		 
unsigned char temp;

unsigned char key;
unsigned char i,j;




void main(void)
{
  
  TMOD=0x01;
  ET0=1;
  TR0=0;
  EA=1;

  while(1)
    {
      P3=0xff;
      P3_4=0;
      temp=P3;
      temp=temp & 0x0f;
      if (temp!=0x0f)
        {
          for(i=50;i>0;i--)
          for(j=200;j>0;j--);
          temp=P3;
          temp=temp & 0x0f;
          if (temp!=0x0f)
            {
              temp=P3;
              temp=temp & 0x0f;              
              switch(temp)
                {
                  case 0x0e:
                    key=4;//7

                    STH0=tab[key]/256;
                    STL0=tab[key]%256;	  			     			 
                    TR0=1;                    
					P0=table[key];
              
                    while(temp!=0x0f)
                     {
                       temp=P3;
                       temp=temp & 0x0f;              
                     }
					TR1=0; 

                    break;
                  case 0x0d:
                    key=5;//8

                    STH0=tab[key]/256;
                    STL0=tab[key]%256;	  			     			 
                    TR0=1; 

					P0=table[key];
         
                    while(temp!=0x0f)
                     {
                       temp=P3;
                       temp=temp & 0x0f;              
                     }
                    TR0=0; 
                    break;

                  case 0x0b:
                    key=6;//9

                    STH0=tab[key]/256;
                    STL0=tab[key]%256;	  			     			 
                    TR0=1; 
    				P0=table[key];
         
                    while(temp!=0x0f)
                     {
                       temp=P3;
                       temp=temp & 0x0f;              
                     }

                    TR0=0; 
                    break;
                  case 0x07:
                    key=7;//10

                    STH0=tab[key]/256;
                    STL0=tab[key]%256;	  			     			 
                    TR0=1; 
    				P0=table[key];
            
                    while(temp!=0x0f)
                     {
                       temp=P3;
                       temp=temp & 0x0f;              
                     }
                    TR0=0; 
                    break;
                }//第二个if对应的括号结束

            }//第一个if对应的括号结束
        }///////////////////////////////////

      P3=0xff;
      P3_5=0;
      temp=P3;
      temp=temp & 0x0f;
      if (temp!=0x0f)
        {
          for(i=50;i>0;i--)
          for(j=200;j>0;j--);
          temp=P3;
          temp=temp & 0x0f;
          if (temp!=0x0f)
            {
              temp=P3;
              temp=temp & 0x0f;              
              switch(temp)
                {
                  case 0x0e:
                    key=0;//4

                    STH0=tab[key]/256;
                    STL0=tab[key]%256;	  			     			 
                    TR0=1; 
            
                    P0=table[key];
					
			       while(temp!=0x0f)
                     {
                       temp=P3;
                       temp=temp & 0x0f;              
                     }
                    TR0=0; 
                    break;
                  case 0x0d:
                    key=1;//5

                    STH0=tab[key]/256;
                    STL0=tab[key]%256;	  			     			 
                    TR0=1; 	
		
    				P0=table[key];
         
                    while(temp!=0x0f)
                     {
                       temp=P3;
                       temp=temp & 0x0f;              
                     }

                    TR0=0; 	
                    break;
                  case 0x0b:
                    key=2;//6

                    STH0=tab[key]/256;
                    STL0=tab[key]%256;	  			     			 
                    TR0=1; 	

					P0=table[key];
           
                    while(temp!=0x0f)
                     {
                       temp=P3;
                       temp=temp & 0x0f;              
                     }
                    TR0=0; 	
                    break;
                  case 0x07:
                    key=3;//11
                    STH0=tab[key]/256;
                    STL0=tab[key]%256;	  			     			 
                    TR0=1; 
					P0=table[key];
            
                    while(temp!=0x0f)
                     {
                       temp=P3;
                       temp=temp & 0x0f;              
                     }
                    TR0=0; 
                    break;
                }//第二个if对应的括号结束
             
            }//第一个if对应的括号结束
        }///////////////////

      P3=0xff;
      P3_6=0;
      temp=P3;
      temp=temp & 0x0f;
      if (temp!=0x0f)
        {
          for(i=50;i>0;i--)
          for(j=200;j>0;j--);
          temp=P3;
          temp=temp & 0x0f;
          if (temp!=0x0f)
            {
              temp=P3;
              temp=temp & 0x0f;              
              switch(temp)
                {
                  case 0x0e:
                    key=8;//1
                    STH0=tab[key]/256;
                    STL0=tab[key]%256;	  			     			 
                    TR0=1; 
					P0=table[key];
          
                    while(temp!=0x0f)
                     {
                       temp=P3;
                       temp=temp & 0x0f;              
                     }
                    TR0=0; 
                    break;
                  case 0x0d:
                    key=9;//2
                    STH0=tab[key]/256;
                    STL0=tab[key]%256;	  			     			 
                    TR0=1; 
					P0=table[key];
           
                    while(temp!=0x0f)
                     {
                       temp=P3;
                       temp=temp & 0x0f;              
                     }
                    TR0=0; 
                     break;
                  case 0x0b:
                    key=10;//3
                    STH0=tab[key]/256;
                    STL0=tab[key]%256;	  			     			 
                    TR0=1; 
					P0=table[key];
            
                    while(temp!=0x0f)
                     {
                       temp=P3;
                       temp=temp & 0x0f;              
                     }
                    TR0=0; 
                    break;
                  case 0x07:
                    key=11;//12
                    STH0=tab[key]/256;
                    STL0=tab[key]%256;	  			     			 
                    TR0=1; 
					P0=table[key];
            
                    while(temp!=0x0f)
                     {
                       temp=P3;
                       temp=temp & 0x0f;              
                     }
                    TR0=1; 
                    break;
                }//第二个if对应的括号结束

            }//第一个if对应的括号结束
        }///////////////////////////////////////////

      P3=0xff;
      P3_7=0;
      temp=P3;
      temp=temp & 0x0f;
      if (temp!=0x0f)
        {
          for(i=50;i>0;i--)
          for(j=200;j>0;j--);
          temp=P3;
          temp=temp & 0x0f;
          if (temp!=0x0f)
            {
              temp=P3;
              temp=temp & 0x0f;              
              switch(temp)
                {
                  case 0x0e:
                    key=12;//0
                    STH0=tab[key]/256;
                    STL0=tab[key]%256;	  			     			 
                    TR0=1; 
					P0=table[key];
          
                    while(temp!=0x0f)
                     {
                       temp=P3;
                       temp=temp & 0x0f;              
                     }
                    TR0=0; 
                    break;
                  case 0x0d:
                    key=13;//13
                    STH0=tab[key]/256;
                    STL0=tab[key]%256;	  			     			 
                    TR0=1; 
					P0=table[key];
               
                    while(temp!=0x0f)
                     {
                       temp=P3;
                       temp=temp & 0x0f;              
                     }
                    TR0=0; 	             
                    break;
                  case 0x0b:
                    key=14;//14
                    STH0=tab[key]/256;
                    STL0=tab[key]%256;	  			     			 
                    TR0=1; 		
					P0=table[key];

                      
                    while(temp!=0x0f)
                     {
                       temp=P3;
                       temp=temp & 0x0f;              
                     }
                    TR0=0; 	           
                    break;
                  case 0x07:
                    key=15;//15

                   	P0=table[key];
                    while(temp!=0x0f)
                     {
                       temp=P3;
                       temp=temp & 0x0f;              
                     } 
                    break;
                }

            }//第二个if对应的括号结束
        }//第一个if对应的括号结束
    }///////////////////
}//主函数的结束括号

void timer1(void) interrupt 1
{
  TH0=STH0;
  TL0=STL0;
  P1_0=~P1_0;
  TR0=1;       ///当有键按下的时候定时器一开始记按键时间
}

⌨️ 快捷键说明

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