標(biāo)題: 為什么按鍵沒(méi)反應(yīng),跳不出去 附單片機(jī)程序 [打印本頁(yè)]

作者: HXLYYDS    時(shí)間: 2021-12-12 15:45
標(biāo)題: 為什么按鍵沒(méi)反應(yīng),跳不出去 附單片機(jī)程序
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. sbit K1 = P3^4;
  6. sbit K2 = P3^5;
  7. sbit K3 = P3^6;
  8. sbit K4 = P3^7;
  9. uchar count0=0;
  10. uchar count1=0;
  11. uchar count3=0;
  12. uchar i=0;
  13. uchar m;
  14. uchar code LED0[]={0XAA,0XFF};
  15. uchar code LED1[]={0X55,0XFF};
  16. void Init_Timer0 (void)
  17. {
  18.         TH0=0x3c;                                
  19.         TL0=0xb0;                                
  20.         ET0=1;                                       
  21.         TR0=1;
  22.         P1=LED0[0];
  23.   while(1)
  24.         {        
  25.          if(TF0==1)
  26.          {
  27.           TF0=0;
  28.                 TH0=0x3c;                                
  29.           TL0=0xb0;        
  30.     count0++;         
  31.          }
  32.          if(count0==20)
  33.          {
  34.                 count0=0;
  35.           i++;
  36.                 i=i%2;
  37.                 P1=LED0[i];      
  38.          }
  39.    if(K2==0||K3==0||K4==0) break;
  40.         }
  41. }
  42. void Init_Timer1 (void)
  43. {
  44.         
  45.         TH1=0x3c;                                
  46.         TL1=0xb0;                        
  47.         ET1=1;                                       
  48.         TR1=1;         
  49.         P1=LED1[0];  
  50.   while(1)
  51.         {        
  52.          if(TF1==1)
  53.         {
  54.           TF1=0;
  55.                 TH1=0x3c;                                
  56.           TL1=0xb0;        
  57.     count1++;         
  58.          }
  59.          if(count1==20)
  60.          {
  61.                 count1=0;
  62.                  i++;
  63.                  i=i%2;
  64.                 P1=LED1[i];      
  65.          }
  66.         
  67.   }         
  68. }
  69. void Init_Timer3 (void)
  70. {
  71.         TH0=0x3c;                                
  72.         TL0=0xb0;                                
  73.         ET0=1;                                       
  74.         TR0=1;
  75.         P1=0x00;
  76.   while(1)
  77.         {        
  78.          if(TF0==1)
  79.         {
  80.           TF0=0;
  81.                 TH0=0x3c;                                
  82.           TL0=0xb0;        
  83.     count3++;         
  84.          }
  85.          if(count3==20)
  86.                    {
  87.                                 count3=0;
  88.                                 P1=~P1;      
  89.                          }
  90.                
  91.                  }
  92.          
  93. }
  94. void main(void)
  95. {
  96.         EA=1;
  97.         TMOD=0x11;
  98.   if(K1==0)
  99.          {
  100.            m=1;
  101.          }      
  102.         if(K2==0)
  103.          {
  104.            m=2;
  105.          }  
  106.   if(K3==0)        
  107.    {
  108.                  m=3;
  109.          }        
  110.          if(K4==0)        
  111.    {
  112.                  m=4;
  113.          }
  114. switch(m)
  115.         {
  116.                 case 1:Init_Timer0();break;
  117.                 case 2:Init_Timer1();break;
  118.                 case 3:Init_Timer3();break;
  119.                 case 4:P1=0xff;break;
  120.         }         
  121. }
復(fù)制代碼

作者: 188610329    時(shí)間: 2021-12-12 17:33
你不覺(jué)得,你的代碼來(lái)講, 你還沒(méi)按   按鍵   , 程序就已經(jīng)結(jié)束了么?

當(dāng)然, 就算改了那里, 也是一次性的按鍵, 進(jìn)入到按鍵的模塊后,也就出不來(lái)了.

建議,先學(xué)編成邏輯, 再開(kāi)始寫代碼.
作者: HXLYYDS    時(shí)間: 2021-12-12 17:38
188610329 發(fā)表于 2021-12-12 17:33
你不覺(jué)得,你的代碼來(lái)講, 你還沒(méi)按   按鍵   , 程序就已經(jīng)結(jié)束了么?

當(dāng)然, 就算改了那里, 也是一次性的按 ...

問(wèn)題已解決了,要把if(K2==0||K3==0||K4==0) break;這一段提到循環(huán)的第一行




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