标题: 求解,怎样在程序中使k2可以起停程序 [打印本页]

作者: herolxm    时间: 2016-12-14 21:17
标题: 求解,怎样在程序中使k2可以起停程序
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit K1=P3^2;
sbit beep=P3^7;
sbit K2 = P1^0;
uchar i;  
uchar song_Index=0,Tone_Index=0;
uchar*song_Tone,*song_Time;  
const LED_tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xBF,0xFF};  
uint code Tone_tab[]={62018,62401,62491,62895,63184,63441,63506,63773,63965,64137,64215,64360,64488,64603,64654,64751,64836,64876,64948,65012,65067,65535};  
uchar code song1_Tone[]={11,9,11,14,12,14,12,11,11,7,8,9,8,7,8,11,9,11,14,13,12,14,11,11,7,8,9,6,7, 12,14,14,13,12,13,14,12,13,14,12,12,11,10,7,8,11,9,11,14,13,12,14,11,11,8,9,10,6,7,0xff};  
uchar code song1_Time[]={4,2,2,8,4,2,2,8,4,2,2,4,2,2,12,4,2,2,4,2,4,4,8,4,2,2,4,2,12,4,4,8,4,2,2,8,2,2,2,2,2,2,2,2,16, 4,2,2,4,2,4,4,8,4,2,2,4,2,12,0xff};  
uchar code song2_Tone[]={ 7,8,9,7,7,8,9,7,9,10,11,9,10,11, 11,12,11,10,9,7,11,12,11,10,9,7,7,4,7,7,4,7,0Xff};  
uchar code song2_Time[]={4,4,4,4,4,4,4,4,4,4,8,4,4,8,2,2,2,2,4,4,2,2,2,2,4,4,4,4,8,4,4,8,0xff};  
uchar code song3_Tone[]={ 7,7,7,8,9,9,9,9,10,11,12,12,11,10,9,11,11,8,9,7, 7,7,7,8,11,9,9,9,10,11,12,12,11,10,9,11,11,8,9,7,0xff};  
uchar code song3_Time[]={ 2,2,2,2,4,2,2,2,2,4,2,2,2,2,4,2,2,2,2,4, 2,2,2,2,4,2,2,2,2,4,2,2,2,2,4,2,2,2,2,5,0Xff};  


void delayms(uint ms)  {    uchar a;   while(ms--)   
{     
for(a=230;a>0;a--);   
}   
}     
void int0() interrupt 0   
{      
  delayms(100);  
   if(INT0==0)   
   {TR0=0;   song_Index++;   
   }   
   if(song_Index==1)   
   {      
   song_Tone=song2_Tone;     
   song_Time=song2_Time;     
   }      
   if(song_Index==2)     
   {      
   song_Tone=song3_Tone;      
   song_Time=song3_Time;}

   if(song_Index==3)   
   {     
   song_Tone=song1_Tone;      
   song_Time=song1_Time;     
   song_Index=0;     
   }     
   TR0=1;   
    i=0;     
        }
       
             
        void Timer0() interrupt 1      
        {         
        TH0=Tone_tab[Tone_Index]/256;   
         TL0=Tone_tab[Tone_Index]%256;   
          beep=~beep;   
           }     
     void display(void)     
           {P0=LED_tab[song_Index];   
            }     
     void int_init(void)   
                {     
                TMOD=0x01;   
                ET0=1;   
                EX0=1;   
                IT0=1;   
                EA=1;   
                TR0=0;   
                }
               
                  
                void main (void)      
                {
                 int_init();      
                 song_Tone=song1_Tone;      
                 song_Time=song1_Time;     
                 while(1)     
                 {        
                 display();   
                 Tone_Index=song_Tone[i];   
                 if(Tone_Index==0xFF)   
                 {   
                 i=0;   
                 TR0=0;   
                 }   
                 TR0=1;     
                 delayms(song_Time[Tone_Index]*60);   
                 TR0=0;   
                 i++;     
                  }   
                   }






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1