找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 273|回复: 1
打印 上一主题 下一主题
收起左侧

大神们,想知道程序为什么无法实现六路抢答器的功能,谢谢

[复制链接]
跳转到指定楼层
楼主
  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. }
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:161164 发表于 2023-12-20 15:01 | 只看该作者
没报错吗?


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表