找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 952|回復(fù): 1
收起左側(cè)

大神們,想知道程序?yàn)槭裁礋o(wú)法實(shí)現(xiàn)六路搶答器的功能,謝謝

[復(fù)制鏈接]
ID:1105312 發(fā)表于 2023-12-20 14:40 | 顯示全部樓層 |閱讀模式
  1. #include<reg51.h>

  2. #define uchar unsigned char
  3. #define uint unsigned int
  4.       
  5. uchar duan[]={0x06,0x5B,0x4F,0x66,0x6D,0x7D};                        
  6. uchar wei[]={0x80,0x40,0x20,0x10,0x08,0x04};                        
  7. uchar flag=1;                                
  8.                                                                     
  9. sbit k1=P3^0;
  10. sbit k2=P3^1;
  11. sbit k3=P3^2;
  12. sbit k4=P3^3;
  13. sbit k5=P3^4;
  14. sbit k6=P3^5;
  15. sbit fuwei=P3^6;
  16. sbit beep=P2^0;

  17. void Delay7ms()               
  18. {
  19.         unsigned char i, j;

  20.         i = 82;
  21.         j = 179;
  22.         do
  23.         {
  24.                 while (--j);
  25.         } while (--i);
  26. }


  27. void delay(uint i)
  28. {
  29.         while(i--);
  30. }

  31. void PaoMa()                        
  32. {
  33.         uint i,j;
  34.         for(i=0;i<6;i++)
  35.         {
  36.                 for(j=0;j<6;j++)
  37.                 {
  38.                         if(flag==0)break;
  39.                         P0=~wei[j];
  40.                         P1=duan[i];
  41.                         delay(10000);
  42.                 }
  43.         }
  44. }

  45. void SMG_XS(uint i)               
  46. {
  47.                 uchar j,m=10;
  48.                 for(j=0;j<3;j++)
  49.                 {
  50.                         while(m--)
  51.                         {
  52.                                 beep=1;
  53.                                 delay(10);
  54.                                 beep=0;
  55.                                 delay(10);
  56.                         }
  57.                         P1=duan[i];
  58.                         P0=0x03;
  59.                         delay(60000);
  60.                 }
  61.                 for(j=0;j<6;j++)
  62.                 {
  63.                         while(m--)
  64.                         {
  65.                                 beep=1;
  66.                                 delay(10);
  67.                                 beep=0;
  68.                                 delay(10);
  69.                         }
  70.                         P0=0xff;
  71.                         delay(50000);
  72.                         P1=duan[i];
  73.                         P0=~wei[i];
  74.                         delay(50000);
  75.                 }
  76. }

  77. void int0()                                                                                                                        
  78. {
  79.         TMOD=0X01;                                                                                                               
  80.         TH0=-50000/256;                                                                                                
  81.         TL0=-50000%256;
  82.         ET0=1;                                                                                                                                
  83.         TR0=1;                                                                                                                                
  84.         EA=1;
  85. }

  86. void int0_zd() interrupt 1
  87. {
  88.         TH0=-50000/256;                                                                                               
  89.         TL0=-50000%256;
  90.                 if(fuwei==0)
  91.                 {Delay7ms();
  92.                         if(fuwei==0)
  93.                         {
  94.                                 flag=1;                        
  95.                                 while(!fuwei);
  96.                         }
  97.                 }
  98.                
  99.                 if(flag==1)
  100.                 {
  101.                 if(k1==0)
  102.                         {Delay7ms();
  103.                                 if(k1==0)
  104.                                 {
  105.                                         flag=0;                                       
  106.                        
  107.                                         SMG_XS(0);         
  108.                                         while(!k1);
  109.                                 }
  110.                         }
  111.                        
  112.                         if(k2==0)
  113.                         {Delay7ms();
  114.                                 if(k2==0)
  115.                                 {
  116.                                         SMG_XS(1);
  117.                                        
  118.                                         flag=0;                                       
  119.                                 }
  120.                         }
  121.                        
  122.                         if(k3==0)
  123.                         {Delay7ms();
  124.                                 if(k3==0)
  125.                                 {
  126.                                         SMG_XS(2);
  127.                               
  128.                                         flag=0;                                       
  129.                                 }
  130.                         }
  131.                        
  132.                         if(k4==0)
  133.                         {Delay7ms();
  134.                                 if(k4==0)
  135.                                 {
  136.                                          SMG_XS(3);
  137.                                        
  138.                                         flag=0;                                       
  139.                                 }
  140.                         }
  141.                        
  142.                         if(k5==0)
  143.                         {Delay7ms();
  144.                                 if(k5==0)
  145.                                 {
  146.                                         SMG_XS(4);
  147.                                        
  148.                                         flag=0;                                       
  149.                                 }
  150.                         }
  151.                        
  152.                         if(k6==0)
  153.                         {Delay7ms();
  154.                                 if(k6==0)
  155.                                 {
  156.                                         SMG_XS(5);
  157.                                        
  158.                                         flag=0;                                       
  159.                                 }
  160.                         }
  161.                 }
  162. }

  163. void main()
  164. {
  165.         int0();                        
  166.         while(1)
  167.         {
  168.                 if(flag==1)
  169.                 {
  170.                         PaoMa();
  171.                 }
  172.         }
  173. }
復(fù)制代碼


回復(fù)

使用道具 舉報(bào)

ID:161164 發(fā)表于 2023-12-20 15:01 | 顯示全部樓層
沒報(bào)錯(cuò)嗎?
2023-12-20_150027.png

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表