欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: [求助]一直不理解問(wèn)題出在哪(關(guān)于中斷的) [打印本頁(yè)]

作者: Gilgamesh    時(shí)間: 2012-4-5 01:18
標(biāo)題: [求助]一直不理解問(wèn)題出在哪(關(guān)于中斷的)

原本想實(shí)現(xiàn)的功能是:按按鍵1加一,按鍵2減一,按鍵三清零,按鍵4定時(shí)器定時(shí)一秒自動(dòng)加一,按鍵5燈全亮,蜂鳴器響,再按就關(guān)了,按鍵6為P3.2口是中斷,中斷一次實(shí)行流水燈程序

可問(wèn)題就出在當(dāng)按了中斷后,燈沒(méi)有執(zhí)行流水燈程序,反而數(shù)碼管依次輪流閃亮,燈只亮了兩展,不知道問(wèn)題出在哪

以下是本人的程序,求大俠指點(diǎn)!!!!謝謝啊!!!!!

 

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned int
#define led P2
uint code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};    //0,1,2,3,4,5,6,7,8,9
uint code btm[]={0xe7,0xc3,0x81,0x00} ;
uint code mtb[]={0x7e,0x3c,0x18,0x00} ;
sbit smg1=P1^0;
sbit smg2=P1^1;
sbit smg3=P1^2;
sbit smg4=P1^3;
sbit key1=P3^7;
sbit key2=P3^6;
sbit key3=P3^5;
sbit key4=P3^4;
sbit key5=P3^3;
sbit sb=P1^5;
uint ge,shi,bai,qian,num,tt;
uint count=0;
void dely(uint);
void display(uint);


 void ltr()
 {led=0x7f;
 for(count=0;count<8;count++)
 {
 led=led>>1;
    dely(500); 
 }
 return;
 }

 void rtl()
 {led=0xfe;
 for(count=0;count<8;count++)
 {
 led=led<<1;
 dely(500);
         }
   return;
 }

 void bothtomiddle()
 {led=0xff;
 for(count=0;count<5;count++)
 {led=btm[count];
 dely(500);

 }
 return;

 }
   
   void middletoboth()
   {led=0xff;
   for(count=0;count<5;count++)
   {led=mtb[count];
   dely(500);
   }
   return;
   }

 


  

void dely(uint t)
{   uint x,y;
   for(x=0;x<t;x--)
     for(y=0;y<110;y--)
      {}
         }

void init()         //初始化T0和INT0
{    EA=1;
    ET0=1;
     EX0=1;
    IT0=0;
     TMOD=0X01;
    TH0=(65536-45872)/256;
    TL0=(65536-45872)/256;
   
}

 

 

void keyscan()
{  
   if(key1==0)        //按鍵1加一
   {   
      dely(10);
      if(key1==0)
      {   num++;
       if(num==10000)
        {
         num=0;
         sb=0;
         dely(1000);
         sb=1;
         }
        while(!key1);
      }
   }
    
    
   if(key2==0)          //按鍵2減一 
   {   
      dely(10);
      if(key2==0)
      {   
       if(num==0)
        { 
         num=10000;
           sb=0;
         dely(1000);
         sb=1;
        }
         num--;
        while(!key2);
      }
   }

   if(key3==0)             //按鍵3清零作用
   { 
      dely(10);
      if(key3==0)
      {
       num=0;
      while(!key3);
         }
   }

   if(key4==0)
   {
        dely(10);
      if(key4==0)         //定時(shí)器工作
      {
           while(!key4);
           TR0=~TR0;
           }  
        
        }
   if(key5==0)            //按鍵5功能
   {      
      dely(10);
      if(key5==0)
      {
       while(!key5) ;
        dely(5);            //LED全亮,蜂鳴器響
        led=~led;
        sb=~sb;
        dely(100);
       
      }  
        
        }
}


void display(uint number)             //顯示數(shù)據(jù)函數(shù)
{      qian=number/1000;
     bai=number%1000/100;
     shi=number%100/10;
     ge=number%10;

     smg1=0;
     P0=table[qian];     
     dely(5);
     P0=0xff;
     smg1=1;

     smg2=0;
     P0=table[bai];
     dely(5);
     P0=0xff;
     smg2=1;

     smg3=0;
     P0=table[shi];     
     dely(5);
     P0=0xff;
     smg3=1;

     smg4=0;
     P0=table[ge];     
     dely(5);
     P0=0xff;
     smg4=1;


}

void zhongduan() interrupt 0        //中斷函數(shù)內(nèi)容
{   
   ltr();
   rtl();
   bothtomiddle();
   middletoboth();
   led=0xff;   
        }  

void main()               //主函數(shù)入口
{       num=0;
     init();           //初始化定時(shí)中斷函數(shù)
     while(1)
     {
         keyscan();
       display(num);
            }
}
            
void timet0() interrupt 1         //定義計(jì)數(shù)器功能
{ 
        TH0=(65536-45872)/256;
     TL0=(63336-45872)/256;
     tt++;
     if(tt==20)
     { 
       tt=0;
       num++;
       if(num==10000)
         {num=0;}
           }

}

 








歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1